diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2400pci.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500pci.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2500usb.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00.h | 2 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00dev.c | 13 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt61pci.c | 4 | ||||
-rw-r--r-- | drivers/net/wireless/rt2x00/rt73usb.c | 4 |
7 files changed, 20 insertions, 15 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c index 7b2a85ade135..e3cac0f26d7b 100644 --- a/drivers/net/wireless/rt2x00/rt2400pci.c +++ b/drivers/net/wireless/rt2x00/rt2400pci.c | |||
@@ -1497,8 +1497,8 @@ static void rt2400pci_configure_filter(struct ieee80211_hw *hw, | |||
1497 | * - Some filters are set based on interface type. | 1497 | * - Some filters are set based on interface type. |
1498 | */ | 1498 | */ |
1499 | *total_flags |= FIF_ALLMULTI; | 1499 | *total_flags |= FIF_ALLMULTI; |
1500 | if (changed_flags & FIF_OTHER_BSS || | 1500 | if (*total_flags & FIF_OTHER_BSS || |
1501 | changed_flags & FIF_PROMISC_IN_BSS) | 1501 | *total_flags & FIF_PROMISC_IN_BSS) |
1502 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; | 1502 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; |
1503 | if (is_interface_type(intf, IEEE80211_IF_TYPE_AP)) | 1503 | if (is_interface_type(intf, IEEE80211_IF_TYPE_AP)) |
1504 | *total_flags |= FIF_PROMISC_IN_BSS; | 1504 | *total_flags |= FIF_PROMISC_IN_BSS; |
diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c index 63a7b3cdf0cd..5d982316b854 100644 --- a/drivers/net/wireless/rt2x00/rt2500pci.c +++ b/drivers/net/wireless/rt2x00/rt2500pci.c | |||
@@ -1830,8 +1830,8 @@ static void rt2500pci_configure_filter(struct ieee80211_hw *hw, | |||
1830 | */ | 1830 | */ |
1831 | if (mc_count) | 1831 | if (mc_count) |
1832 | *total_flags |= FIF_ALLMULTI; | 1832 | *total_flags |= FIF_ALLMULTI; |
1833 | if (changed_flags & FIF_OTHER_BSS || | 1833 | if (*total_flags & FIF_OTHER_BSS || |
1834 | changed_flags & FIF_PROMISC_IN_BSS) | 1834 | *total_flags & FIF_PROMISC_IN_BSS) |
1835 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; | 1835 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; |
1836 | if (is_interface_type(intf, IEEE80211_IF_TYPE_AP)) | 1836 | if (is_interface_type(intf, IEEE80211_IF_TYPE_AP)) |
1837 | *total_flags |= FIF_PROMISC_IN_BSS; | 1837 | *total_flags |= FIF_PROMISC_IN_BSS; |
diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c index 973f653ecfc2..3dbd381f1428 100644 --- a/drivers/net/wireless/rt2x00/rt2500usb.c +++ b/drivers/net/wireless/rt2x00/rt2500usb.c | |||
@@ -1602,8 +1602,8 @@ static void rt2500usb_configure_filter(struct ieee80211_hw *hw, | |||
1602 | */ | 1602 | */ |
1603 | if (mc_count) | 1603 | if (mc_count) |
1604 | *total_flags |= FIF_ALLMULTI; | 1604 | *total_flags |= FIF_ALLMULTI; |
1605 | if (changed_flags & FIF_OTHER_BSS || | 1605 | if (*total_flags & FIF_OTHER_BSS || |
1606 | changed_flags & FIF_PROMISC_IN_BSS) | 1606 | *total_flags & FIF_PROMISC_IN_BSS) |
1607 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; | 1607 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; |
1608 | if (is_interface_type(intf, IEEE80211_IF_TYPE_AP)) | 1608 | if (is_interface_type(intf, IEEE80211_IF_TYPE_AP)) |
1609 | *total_flags |= FIF_PROMISC_IN_BSS; | 1609 | *total_flags |= FIF_PROMISC_IN_BSS; |
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h index 82dfcd95bb26..9bb5fb964a21 100644 --- a/drivers/net/wireless/rt2x00/rt2x00.h +++ b/drivers/net/wireless/rt2x00/rt2x00.h | |||
@@ -410,8 +410,6 @@ struct rt2x00lib_ops { | |||
410 | */ | 410 | */ |
411 | void (*config_mac_addr) (struct rt2x00_dev *rt2x00dev, __le32 *mac); | 411 | void (*config_mac_addr) (struct rt2x00_dev *rt2x00dev, __le32 *mac); |
412 | void (*config_bssid) (struct rt2x00_dev *rt2x00dev, __le32 *bssid); | 412 | void (*config_bssid) (struct rt2x00_dev *rt2x00dev, __le32 *bssid); |
413 | void (*config_packet_filter) (struct rt2x00_dev *rt2x00dev, | ||
414 | const unsigned int filter); | ||
415 | void (*config_type) (struct rt2x00_dev *rt2x00dev, const int type); | 413 | void (*config_type) (struct rt2x00_dev *rt2x00dev, const int type); |
416 | void (*config) (struct rt2x00_dev *rt2x00dev, const unsigned int flags, | 414 | void (*config) (struct rt2x00_dev *rt2x00dev, const unsigned int flags, |
417 | struct ieee80211_conf *conf); | 415 | struct ieee80211_conf *conf); |
diff --git a/drivers/net/wireless/rt2x00/rt2x00dev.c b/drivers/net/wireless/rt2x00/rt2x00dev.c index f25475318c9b..1e07c3938cb3 100644 --- a/drivers/net/wireless/rt2x00/rt2x00dev.c +++ b/drivers/net/wireless/rt2x00/rt2x00dev.c | |||
@@ -276,11 +276,18 @@ static void rt2x00lib_packetfilter_scheduled(struct work_struct *work) | |||
276 | { | 276 | { |
277 | struct rt2x00_dev *rt2x00dev = | 277 | struct rt2x00_dev *rt2x00dev = |
278 | container_of(work, struct rt2x00_dev, filter_work); | 278 | container_of(work, struct rt2x00_dev, filter_work); |
279 | unsigned int filter = rt2x00dev->interface.filter; | ||
280 | |||
281 | /* | ||
282 | * Since we had stored the filter inside interface.filter, | ||
283 | * we should now clear that field. Otherwise the driver will | ||
284 | * assume nothing has changed (*total_flags will be compared | ||
285 | * to interface.filter to determine if any action is required). | ||
286 | */ | ||
287 | rt2x00dev->interface.filter = 0; | ||
279 | 288 | ||
280 | rt2x00dev->ops->hw->configure_filter(rt2x00dev->hw, | 289 | rt2x00dev->ops->hw->configure_filter(rt2x00dev->hw, |
281 | rt2x00dev->interface.filter, | 290 | filter, &filter, 0, NULL); |
282 | &rt2x00dev->interface.filter, | ||
283 | 0, NULL); | ||
284 | } | 291 | } |
285 | 292 | ||
286 | /* | 293 | /* |
diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c index 5d31ced11149..588b22b16419 100644 --- a/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c | |||
@@ -2389,8 +2389,8 @@ static void rt61pci_configure_filter(struct ieee80211_hw *hw, | |||
2389 | */ | 2389 | */ |
2390 | if (mc_count) | 2390 | if (mc_count) |
2391 | *total_flags |= FIF_ALLMULTI; | 2391 | *total_flags |= FIF_ALLMULTI; |
2392 | if (changed_flags & FIF_OTHER_BSS || | 2392 | if (*total_flags & FIF_OTHER_BSS || |
2393 | changed_flags & FIF_PROMISC_IN_BSS) | 2393 | *total_flags & FIF_PROMISC_IN_BSS) |
2394 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; | 2394 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; |
2395 | if (is_interface_type(intf, IEEE80211_IF_TYPE_AP)) | 2395 | if (is_interface_type(intf, IEEE80211_IF_TYPE_AP)) |
2396 | *total_flags |= FIF_PROMISC_IN_BSS; | 2396 | *total_flags |= FIF_PROMISC_IN_BSS; |
diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c index 5fa697bfaa14..6d1635b5cd07 100644 --- a/drivers/net/wireless/rt2x00/rt73usb.c +++ b/drivers/net/wireless/rt2x00/rt73usb.c | |||
@@ -1856,8 +1856,8 @@ static void rt73usb_configure_filter(struct ieee80211_hw *hw, | |||
1856 | */ | 1856 | */ |
1857 | if (mc_count) | 1857 | if (mc_count) |
1858 | *total_flags |= FIF_ALLMULTI; | 1858 | *total_flags |= FIF_ALLMULTI; |
1859 | if (changed_flags & FIF_OTHER_BSS || | 1859 | if (*total_flags & FIF_OTHER_BSS || |
1860 | changed_flags & FIF_PROMISC_IN_BSS) | 1860 | *total_flags & FIF_PROMISC_IN_BSS) |
1861 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; | 1861 | *total_flags |= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS; |
1862 | if (is_interface_type(intf, IEEE80211_IF_TYPE_AP)) | 1862 | if (is_interface_type(intf, IEEE80211_IF_TYPE_AP)) |
1863 | *total_flags |= FIF_PROMISC_IN_BSS; | 1863 | *total_flags |= FIF_PROMISC_IN_BSS; |