aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/rt2x00/rt2400pci.c4
-rw-r--r--drivers/net/wireless/rt2x00/rt2500pci.c4
-rw-r--r--drivers/net/wireless/rt2x00/rt2500usb.c4
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h2
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00dev.c13
-rw-r--r--drivers/net/wireless/rt2x00/rt61pci.c4
-rw-r--r--drivers/net/wireless/rt2x00/rt73usb.c4
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;