diff options
author | Guy Cohen <guy.cohen@intel.com> | 2008-07-03 19:56:13 +0300 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-07-07 15:31:39 -0400 |
commit | 8db9369ff92b1cd93566baadd8bd2992f025fdd0 (patch) | |
tree | 0b52162cacc30138045d0a52476d0a61365ac10d /net/mac80211 | |
parent | 0ff1cca0e272045b9c11a2ff94bd3e6893c9308c (diff) | |
download | kernel-crypto-8db9369ff92b1cd93566baadd8bd2992f025fdd0.tar.gz kernel-crypto-8db9369ff92b1cd93566baadd8bd2992f025fdd0.tar.xz kernel-crypto-8db9369ff92b1cd93566baadd8bd2992f025fdd0.zip |
mac80211: move netif_carrier_on to after ieee80211_bss_info_change_notify
Putting netif_carrier_on before configuring the driver/device with the
new association state may cause a race (tx frames may be sent before
configuration is done)
Signed-off-by: Guy Cohen <guy.cohen@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211')
-rw-r--r-- | net/mac80211/mlme.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 4d2b582dd05..a7018540ae8 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -547,15 +547,14 @@ static void ieee80211_set_associated(struct net_device *dev, sdata->bss_conf.ht_bss_conf = &conf->ht_bss_conf; } - netif_carrier_on(dev); ifsta->flags |= IEEE80211_STA_PREV_BSSID_SET; memcpy(ifsta->prev_bssid, sdata->u.sta.bssid, ETH_ALEN); memcpy(wrqu.ap_addr.sa_data, sdata->u.sta.bssid, ETH_ALEN); ieee80211_sta_send_associnfo(dev, ifsta); } else { + netif_carrier_off(dev); ieee80211_sta_tear_down_BA_sessions(dev, ifsta->bssid); ifsta->flags &= ~IEEE80211_STA_ASSOCIATED; - netif_carrier_off(dev); ieee80211_reset_erp_info(dev); sdata->bss_conf.assoc_ht = 0; @@ -569,6 +568,10 @@ static void ieee80211_set_associated(struct net_device *dev, sdata->bss_conf.assoc = assoc; ieee80211_bss_info_change_notify(sdata, changed); + + if (assoc) + netif_carrier_on(dev); + wrqu.ap_addr.sa_family = ARPHRD_ETHER; wireless_send_event(dev, SIOCGIWAP, &wrqu, NULL); } |