aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2007-11-15 19:49:11 -0500
committerJohn W. Linville <linville@tuxdriver.com>2007-11-20 16:20:30 -0500
commitb52f2198ac889561d341c6990d669a671f93f450 (patch)
tree7455ca159f383f4a359d74a3dd5c08fcf8d216a1
parentd9f8bcbf67a0ee67c8cb0734f003dfe916bb5248 (diff)
mac80211: fix ieee80211_set_multicast_list
I recently experienced unexplainable behaviour with the b43 driver when I had broken firmware uploaded. The cause may have been that promisc mode was not correctly enabled or disabled and this bug may have been the cause. Note how the values are compared later in the function so just doing the & will result in the wrong thing being compared and the test being false almost always. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--net/mac80211/ieee80211.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/net/mac80211/ieee80211.c b/net/mac80211/ieee80211.c
index e0ee65a969bc..c38e2cd4f7a7 100644
--- a/net/mac80211/ieee80211.c
+++ b/net/mac80211/ieee80211.c
@@ -366,8 +366,8 @@ static void ieee80211_set_multicast_list(struct net_device *dev)
366 366
367 allmulti = !!(dev->flags & IFF_ALLMULTI); 367 allmulti = !!(dev->flags & IFF_ALLMULTI);
368 promisc = !!(dev->flags & IFF_PROMISC); 368 promisc = !!(dev->flags & IFF_PROMISC);
369 sdata_allmulti = sdata->flags & IEEE80211_SDATA_ALLMULTI; 369 sdata_allmulti = !!(sdata->flags & IEEE80211_SDATA_ALLMULTI);
370 sdata_promisc = sdata->flags & IEEE80211_SDATA_PROMISC; 370 sdata_promisc = !!(sdata->flags & IEEE80211_SDATA_PROMISC);
371 371
372 if (allmulti != sdata_allmulti) { 372 if (allmulti != sdata_allmulti) {
373 if (dev->flags & IFF_ALLMULTI) 373 if (dev->flags & IFF_ALLMULTI)