mac80211: don't check sdata_running in vif notifier
authorEliad Peller <[email protected]>
Mon, 12 Dec 2011 13:30:04 +0000 (15:30 +0200)
committerJohn W. Linville <[email protected]>
Tue, 13 Dec 2011 20:34:15 +0000 (15:34 -0500)
The ip address of the vif can be set even before the
vif is up. requiring the vif to be up in the vif
notifier makes the notifer ignore this event, which
causes wrong arp filter configuration later on.

Reported-by: Eyal Shapira <[email protected]>
Signed-off-by: Eliad Peller <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
net/mac80211/main.c

index 1455836257185dcf24262df66db79276caad2213..0a0d94ad9b08374fe90e0f653da4d4b352e8f6c9 100644 (file)
@@ -393,9 +393,6 @@ static int ieee80211_ifa_changed(struct notifier_block *nb,
        sdata = IEEE80211_DEV_TO_SUB_IF(ndev);
        bss_conf = &sdata->vif.bss_conf;
 
-       if (!ieee80211_sdata_running(sdata))
-               return NOTIFY_DONE;
-
        /* ARP filtering is only supported in managed mode */
        if (sdata->vif.type != NL80211_IFTYPE_STATION)
                return NOTIFY_DONE;
@@ -424,7 +421,7 @@ static int ieee80211_ifa_changed(struct notifier_block *nb,
        }
        bss_conf->arp_addr_cnt = c;
 
-       /* Configure driver only if associated */
+       /* Configure driver only if associated (which also implies it is up) */
        if (ifmgd->associated) {
                bss_conf->arp_filter_enabled = sdata->arp_filter_state;
                ieee80211_bss_info_change_notify(sdata,