mac80211: don't check sdata_running in vif notifier
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 <eyal@wizery.com> Signed-off-by: Eliad Peller <eliad@wizery.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
0d392e938b
commit
53d69c399a
|
@ -393,9 +393,6 @@ static int ieee80211_ifa_changed(struct notifier_block *nb,
|
||||||
sdata = IEEE80211_DEV_TO_SUB_IF(ndev);
|
sdata = IEEE80211_DEV_TO_SUB_IF(ndev);
|
||||||
bss_conf = &sdata->vif.bss_conf;
|
bss_conf = &sdata->vif.bss_conf;
|
||||||
|
|
||||||
if (!ieee80211_sdata_running(sdata))
|
|
||||||
return NOTIFY_DONE;
|
|
||||||
|
|
||||||
/* ARP filtering is only supported in managed mode */
|
/* ARP filtering is only supported in managed mode */
|
||||||
if (sdata->vif.type != NL80211_IFTYPE_STATION)
|
if (sdata->vif.type != NL80211_IFTYPE_STATION)
|
||||||
return NOTIFY_DONE;
|
return NOTIFY_DONE;
|
||||||
|
@ -424,7 +421,7 @@ static int ieee80211_ifa_changed(struct notifier_block *nb,
|
||||||
}
|
}
|
||||||
bss_conf->arp_addr_cnt = c;
|
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) {
|
if (ifmgd->associated) {
|
||||||
bss_conf->arp_filter_enabled = sdata->arp_filter_state;
|
bss_conf->arp_filter_enabled = sdata->arp_filter_state;
|
||||||
ieee80211_bss_info_change_notify(sdata,
|
ieee80211_bss_info_change_notify(sdata,
|
||||||
|
|
Loading…
Reference in New Issue