diff options
author | David Spinadel <david.spinadel@intel.com> | 2012-06-12 08:59:45 +0200 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-06-13 10:17:55 +0200 |
commit | 79543d8eecc0957ac6fe3ec1e2486ad31d4b67a3 (patch) | |
tree | d1a97beb21278f082d8a95d6a555309844d1b2a9 /net | |
parent | mac80211: check sdata_running on ieee80211_set_bitrate_mask (diff) | |
download | linux-79543d8eecc0957ac6fe3ec1e2486ad31d4b67a3.tar.xz linux-79543d8eecc0957ac6fe3ec1e2486ad31d4b67a3.zip |
mac80211: stop polling in disassociation
Stop connection monitor poll during disassociation.
This clears the polling flags and if a scan was
deferred it will be run.
Without this fix, if a scan was deferred due to
connection monitoring while disassociation happens,
this scan blocks further scan requests until interface
down/up which causes problems connecting to another AP.
Signed-off-by: David Spinadel <david.spinadel@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/mlme.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 91d84cc77bbf..66e4fcdd1c6b 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c @@ -1352,6 +1352,8 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, if (WARN_ON(!ifmgd->associated)) return; + ieee80211_stop_poll(sdata); + memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN); ifmgd->associated = NULL; @@ -2612,8 +2614,6 @@ static void ieee80211_sta_connection_lost(struct ieee80211_sub_if_data *sdata, struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; u8 frame_buf[DEAUTH_DISASSOC_LEN]; - ieee80211_stop_poll(sdata); - ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH, reason, false, frame_buf); mutex_unlock(&ifmgd->mtx); |