aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/rt2x00/rt2400pci.c3
-rw-r--r--drivers/net/wireless/rt2x00/rt2500pci.c3
-rw-r--r--drivers/net/wireless/rt2x00/rt2500usb.c3
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00mac.c7
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c3
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c3
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(&reg, RXCSR0_DROP_NOT_TO_ME, 290 rt2x00_set_field32(&reg, RXCSR0_DROP_NOT_TO_ME,
291 !(filter_flags & FIF_PROMISC_IN_BSS)); 291 !(filter_flags & FIF_PROMISC_IN_BSS));
292 rt2x00_set_field32(&reg, RXCSR0_DROP_TODS, 292 rt2x00_set_field32(&reg, 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(&reg, RXCSR0_DROP_VERSION_ERROR, 1); 295 rt2x00_set_field32(&reg, 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(&reg, RXCSR0_DROP_NOT_TO_ME, 291 rt2x00_set_field32(&reg, RXCSR0_DROP_NOT_TO_ME,
292 !(filter_flags & FIF_PROMISC_IN_BSS)); 292 !(filter_flags & FIF_PROMISC_IN_BSS));
293 rt2x00_set_field32(&reg, RXCSR0_DROP_TODS, 293 rt2x00_set_field32(&reg, 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(&reg, RXCSR0_DROP_VERSION_ERROR, 1); 296 rt2x00_set_field32(&reg, RXCSR0_DROP_VERSION_ERROR, 1);
296 rt2x00_set_field32(&reg, RXCSR0_DROP_MCAST, 297 rt2x00_set_field32(&reg, 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(&reg, TXRX_CSR2_DROP_NOT_TO_ME, 337 rt2x00_set_field16(&reg, TXRX_CSR2_DROP_NOT_TO_ME,
338 !(filter_flags & FIF_PROMISC_IN_BSS)); 338 !(filter_flags & FIF_PROMISC_IN_BSS));
339 rt2x00_set_field16(&reg, TXRX_CSR2_DROP_TODS, 339 rt2x00_set_field16(&reg, 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(&reg, TXRX_CSR2_DROP_VERSION_ERROR, 1); 342 rt2x00_set_field16(&reg, TXRX_CSR2_DROP_VERSION_ERROR, 1);
342 rt2x00_set_field16(&reg, TXRX_CSR2_DROP_MULTICAST, 343 rt2x00_set_field16(&reg, 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}
258EXPORT_SYMBOL_GPL(rt2x00mac_add_interface); 265EXPORT_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(&reg, TXRX_CSR0_DROP_NOT_TO_ME, 342 rt2x00_set_field32(&reg, TXRX_CSR0_DROP_NOT_TO_ME,
343 !(filter_flags & FIF_PROMISC_IN_BSS)); 343 !(filter_flags & FIF_PROMISC_IN_BSS));
344 rt2x00_set_field32(&reg, TXRX_CSR0_DROP_TO_DS, 344 rt2x00_set_field32(&reg, 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(&reg, TXRX_CSR0_DROP_VERSION_ERROR, 1); 347 rt2x00_set_field32(&reg, TXRX_CSR0_DROP_VERSION_ERROR, 1);
347 rt2x00_set_field32(&reg, TXRX_CSR0_DROP_MULTICAST, 348 rt2x00_set_field32(&reg, 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(&reg, TXRX_CSR0_DROP_NOT_TO_ME, 354 rt2x00_set_field32(&reg, TXRX_CSR0_DROP_NOT_TO_ME,
355 !(filter_flags & FIF_PROMISC_IN_BSS)); 355 !(filter_flags & FIF_PROMISC_IN_BSS));
356 rt2x00_set_field32(&reg, TXRX_CSR0_DROP_TO_DS, 356 rt2x00_set_field32(&reg, 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(&reg, TXRX_CSR0_DROP_VERSION_ERROR, 1); 359 rt2x00_set_field32(&reg, TXRX_CSR0_DROP_VERSION_ERROR, 1);
359 rt2x00_set_field32(&reg, TXRX_CSR0_DROP_MULTICAST, 360 rt2x00_set_field32(&reg, TXRX_CSR0_DROP_MULTICAST,
360 !(filter_flags & FIF_ALLMULTI)); 361 !(filter_flags & FIF_ALLMULTI));