diff options
author | David Spinadel <david.spinadel@intel.com> | 2012-06-12 02:59:45 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-06-13 04:17:55 -0400 |
commit | 79543d8eecc0957ac6fe3ec1e2486ad31d4b67a3 (patch) | |
tree | d1a97beb21278f082d8a95d6a555309844d1b2a9 | |
parent | 554a43d5e77e8256aa9685ffd19ad555e6f77979 (diff) |
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>
-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, | |||
1352 | if (WARN_ON(!ifmgd->associated)) | 1352 | if (WARN_ON(!ifmgd->associated)) |
1353 | return; | 1353 | return; |
1354 | 1354 | ||
1355 | ieee80211_stop_poll(sdata); | ||
1356 | |||
1355 | memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN); | 1357 | memcpy(bssid, ifmgd->associated->bssid, ETH_ALEN); |
1356 | 1358 | ||
1357 | ifmgd->associated = NULL; | 1359 | ifmgd->associated = NULL; |
@@ -2612,8 +2614,6 @@ static void ieee80211_sta_connection_lost(struct ieee80211_sub_if_data *sdata, | |||
2612 | struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; | 2614 | struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; |
2613 | u8 frame_buf[DEAUTH_DISASSOC_LEN]; | 2615 | u8 frame_buf[DEAUTH_DISASSOC_LEN]; |
2614 | 2616 | ||
2615 | ieee80211_stop_poll(sdata); | ||
2616 | |||
2617 | ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH, reason, | 2617 | ieee80211_set_disassoc(sdata, IEEE80211_STYPE_DEAUTH, reason, |
2618 | false, frame_buf); | 2618 | false, frame_buf); |
2619 | mutex_unlock(&ifmgd->mtx); | 2619 | mutex_unlock(&ifmgd->mtx); |