Skip to content

Commit

Permalink
mac80211: move netif_carrier_on to after ieee80211_bss_info_change_no…
Browse files Browse the repository at this point in the history
…tify

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 <[email protected]>
Signed-off-by: Tomas Winkler <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
  • Loading branch information
Guy Cohen authored and linvjw committed Jul 7, 2008
1 parent 0ff1cca commit 8db9369
Showing 1 changed file with 5 additions and 2 deletions.
7 changes: 5 additions & 2 deletions net/mac80211/mlme.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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);
}
Expand Down

0 comments on commit 8db9369

Please sign in to comment.