diff options
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2400pci.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500pci.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00mac.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 3 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.c | 3 |
6 files changed, 17 insertions, 5 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c index a6e9c89c802a..9abdfb84697c 100644 --- a/drivers/net/wireless/rt2x00/rt2400pci.c +++ b/drivers/net/wireless/rt2x00/rt2400pci.c | |||
@@ -290,7 +290,8 @@ static void rt2400pci_config_filter(struct rt2x00_dev *rt2x00dev, | |||
290 | rt2x00_set_field32(®, RXCSR0_DROP_NOT_TO_ME, | 290 | rt2x00_set_field32(®, RXCSR0_DROP_NOT_TO_ME, |
291 | !(filter_flags & FIF_PROMISC_IN_BSS)); | 291 | !(filter_flags & FIF_PROMISC_IN_BSS)); |
292 | rt2x00_set_field32(®, RXCSR0_DROP_TODS, | 292 | rt2x00_set_field32(®, RXCSR0_DROP_TODS, |
293 | !(filter_flags & FIF_PROMISC_IN_BSS)); | 293 | !(filter_flags & FIF_PROMISC_IN_BSS) && |
294 | !rt2x00dev->intf_ap_count); | ||
294 | rt2x00_set_field32(®, RXCSR0_DROP_VERSION_ERROR, 1); | 295 | rt2x00_set_field32(®, RXCSR0_DROP_VERSION_ERROR, 1); |
295 | rt2x00pci_register_write(rt2x00dev, RXCSR0, reg); | 296 | rt2x00pci_register_write(rt2x00dev, RXCSR0, reg); |
296 | } | 297 | } |
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c index 1bdb873b65f2..54c9a75b549b 100644 --- a/drivers/net/wireless/rt2x00/rt2500pci.c +++ b/drivers/net/wireless/rt2x00/rt2500pci.c | |||
@@ -291,7 +291,8 @@ static void rt2500pci_config_filter(struct rt2x00_dev *rt2x00dev, | |||
291 | rt2x00_set_field32(®, RXCSR0_DROP_NOT_TO_ME, | 291 | rt2x00_set_field32(®, RXCSR0_DROP_NOT_TO_ME, |
292 | !(filter_flags & FIF_PROMISC_IN_BSS)); | 292 | !(filter_flags & FIF_PROMISC_IN_BSS)); |
293 | rt2x00_set_field32(®, RXCSR0_DROP_TODS, | 293 | rt2x00_set_field32(®, RXCSR0_DROP_TODS, |
294 | !(filter_flags & FIF_PROMISC_IN_BSS)); | 294 | !(filter_flags & FIF_PROMISC_IN_BSS) && |
295 | !rt2x00dev->intf_ap_count); | ||
295 | rt2x00_set_field32(®, RXCSR0_DROP_VERSION_ERROR, 1); | 296 | rt2x00_set_field32(®, RXCSR0_DROP_VERSION_ERROR, 1); |
296 | rt2x00_set_field32(®, RXCSR0_DROP_MCAST, | 297 | rt2x00_set_field32(®, RXCSR0_DROP_MCAST, |
297 | !(filter_flags & FIF_ALLMULTI)); | 298 | !(filter_flags & FIF_ALLMULTI)); |
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index f5c18f011e93..28fdf191e956 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -337,7 +337,8 @@ static void rt2500usb_config_filter(struct rt2x00_dev *rt2x00dev, | |||
337 | rt2x00_set_field16(®, TXRX_CSR2_DROP_NOT_TO_ME, | 337 | rt2x00_set_field16(®, TXRX_CSR2_DROP_NOT_TO_ME, |
338 | !(filter_flags & FIF_PROMISC_IN_BSS)); | 338 | !(filter_flags & FIF_PROMISC_IN_BSS)); |
339 | rt2x00_set_field16(®, TXRX_CSR2_DROP_TODS, | 339 | rt2x00_set_field16(®, TXRX_CSR2_DROP_TODS, |
340 | !(filter_flags & FIF_PROMISC_IN_BSS)); | 340 | !(filter_flags & FIF_PROMISC_IN_BSS) && |
341 | !rt2x00dev->intf_ap_count); | ||
341 | rt2x00_set_field16(®, TXRX_CSR2_DROP_VERSION_ERROR, 1); | 342 | rt2x00_set_field16(®, TXRX_CSR2_DROP_VERSION_ERROR, 1); |
342 | rt2x00_set_field16(®, TXRX_CSR2_DROP_MULTICAST, | 343 | rt2x00_set_field16(®, TXRX_CSR2_DROP_MULTICAST, |
343 | !(filter_flags & FIF_ALLMULTI)); | 344 | !(filter_flags & FIF_ALLMULTI)); |
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c index a0adf5a04aa0..dc70e7aedfff 100644 --- a/drivers/net/wireless/rt2x00/rt2x00mac.c +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c | |||
@@ -253,6 +253,13 @@ int rt2x00mac_add_interface(struct ieee80211_hw *hw, | |||
253 | */ | 253 | */ |
254 | rt2x00lib_config_intf(rt2x00dev, intf, conf->type, intf->mac, NULL); | 254 | rt2x00lib_config_intf(rt2x00dev, intf, conf->type, intf->mac, NULL); |
255 | 255 | ||
256 | /* | ||
257 | * Some filters depend on the current working mode. We can force | ||
258 | * an update during the next configure_filter() run by mac80211 by | ||
259 | * resetting the current packet_filter state. | ||
260 | */ | ||
261 | rt2x00dev->packet_filter = 0; | ||
262 | |||
256 | return 0; | 263 | return 0; |
257 | } | 264 | } |
258 | EXPORT_SYMBOL_GPL(rt2x00mac_add_interface); | 265 | EXPORT_SYMBOL_GPL(rt2x00mac_add_interface); |
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index 0d2e6f7dd692..c5c625143335 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
@@ -342,7 +342,8 @@ static void rt61pci_config_filter(struct rt2x00_dev *rt2x00dev, | |||
342 | rt2x00_set_field32(®, TXRX_CSR0_DROP_NOT_TO_ME, | 342 | rt2x00_set_field32(®, TXRX_CSR0_DROP_NOT_TO_ME, |
343 | !(filter_flags & FIF_PROMISC_IN_BSS)); | 343 | !(filter_flags & FIF_PROMISC_IN_BSS)); |
344 | rt2x00_set_field32(®, TXRX_CSR0_DROP_TO_DS, | 344 | rt2x00_set_field32(®, TXRX_CSR0_DROP_TO_DS, |
345 | !(filter_flags & FIF_PROMISC_IN_BSS)); | 345 | !(filter_flags & FIF_PROMISC_IN_BSS) && |
346 | !rt2x00dev->intf_ap_count); | ||
346 | rt2x00_set_field32(®, TXRX_CSR0_DROP_VERSION_ERROR, 1); | 347 | rt2x00_set_field32(®, TXRX_CSR0_DROP_VERSION_ERROR, 1); |
347 | rt2x00_set_field32(®, TXRX_CSR0_DROP_MULTICAST, | 348 | rt2x00_set_field32(®, TXRX_CSR0_DROP_MULTICAST, |
348 | !(filter_flags & FIF_ALLMULTI)); | 349 | !(filter_flags & FIF_ALLMULTI)); |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index b3c846223432..796cf2990b72 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -354,7 +354,8 @@ static void rt73usb_config_filter(struct rt2x00_dev *rt2x00dev, | |||
354 | rt2x00_set_field32(®, TXRX_CSR0_DROP_NOT_TO_ME, | 354 | rt2x00_set_field32(®, TXRX_CSR0_DROP_NOT_TO_ME, |
355 | !(filter_flags & FIF_PROMISC_IN_BSS)); | 355 | !(filter_flags & FIF_PROMISC_IN_BSS)); |
356 | rt2x00_set_field32(®, TXRX_CSR0_DROP_TO_DS, | 356 | rt2x00_set_field32(®, TXRX_CSR0_DROP_TO_DS, |
357 | !(filter_flags & FIF_PROMISC_IN_BSS)); | 357 | !(filter_flags & FIF_PROMISC_IN_BSS) && |
358 | !rt2x00dev->intf_ap_count); | ||
358 | rt2x00_set_field32(®, TXRX_CSR0_DROP_VERSION_ERROR, 1); | 359 | rt2x00_set_field32(®, TXRX_CSR0_DROP_VERSION_ERROR, 1); |
359 | rt2x00_set_field32(®, TXRX_CSR0_DROP_MULTICAST, | 360 | rt2x00_set_field32(®, TXRX_CSR0_DROP_MULTICAST, |
360 | !(filter_flags & FIF_ALLMULTI)); | 361 | !(filter_flags & FIF_ALLMULTI)); |