Commit 8e268e47 authored by Tomas Winkler's avatar Tomas Winkler Committed by John W. Linville

mac80211: disassociate prior to unlinking AP/station

This patch reorders calls during disassociation in
ieee80211_set_disassoc function.
Since sta_info_unlink calls sta_notify(REMOVE) it will
remove the station representing AP from the driver before
it has disassociated from it using bss_info_changed callback.
Signed-off-by: default avatarTomas Winkler <tomas.winkler@intel.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent e327b847
...@@ -855,16 +855,26 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, ...@@ -855,16 +855,26 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
if (self_disconnected || reason == WLAN_REASON_DISASSOC_STA_HAS_LEFT) if (self_disconnected || reason == WLAN_REASON_DISASSOC_STA_HAS_LEFT)
ifsta->state = IEEE80211_STA_MLME_DISABLED; ifsta->state = IEEE80211_STA_MLME_DISABLED;
sta_info_unlink(&sta);
rcu_read_unlock(); rcu_read_unlock();
sta_info_destroy(sta);
local->hw.conf.ht.enabled = false; local->hw.conf.ht.enabled = false;
ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_HT); ieee80211_hw_config(local, IEEE80211_CONF_CHANGE_HT);
ieee80211_bss_info_change_notify(sdata, changed); ieee80211_bss_info_change_notify(sdata, changed);
rcu_read_lock();
sta = sta_info_get(local, ifsta->bssid);
if (!sta) {
rcu_read_unlock();
return;
}
sta_info_unlink(&sta);
rcu_read_unlock();
sta_info_destroy(sta);
} }
static int ieee80211_sta_wep_configured(struct ieee80211_sub_if_data *sdata) static int ieee80211_sta_wep_configured(struct ieee80211_sub_if_data *sdata)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment