diff options
author | Luciano Coelho <luciano.coelho@intel.com> | 2014-10-08 02:48:39 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2014-10-09 05:30:09 -0400 |
commit | 0c21e6320f6ea7c4bd2fc0a8c1d8577b372f92d2 (patch) | |
tree | 928688796878b45d17d3138157f947384cec82ad /net/mac80211/iface.c | |
parent | f1d65583bc5bd43ace8abb9d4f4d9e8da407f708 (diff) |
mac80211: wait for the first beacon on the new channel after CSA
Instead of immediately reopening the queues (in case of block_tx),
calling the post_channel_switch operation and sending the
notification, wait for the first beacon on the new channel. This
makes sure that we don't lose packets if the AP/GO is not on the new
channel yet.
Signed-off-by: Luciano Coelho <luciano.coelho@intel.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/iface.c')
-rw-r--r-- | net/mac80211/iface.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index af237223a8cd..e469b3390f2a 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c | |||
@@ -842,6 +842,8 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, | |||
842 | sdata_lock(sdata); | 842 | sdata_lock(sdata); |
843 | mutex_lock(&local->mtx); | 843 | mutex_lock(&local->mtx); |
844 | sdata->vif.csa_active = false; | 844 | sdata->vif.csa_active = false; |
845 | if (sdata->vif.type == NL80211_IFTYPE_STATION) | ||
846 | sdata->u.mgd.csa_waiting_bcn = false; | ||
845 | if (sdata->csa_block_tx) { | 847 | if (sdata->csa_block_tx) { |
846 | ieee80211_wake_vif_queues(local, sdata, | 848 | ieee80211_wake_vif_queues(local, sdata, |
847 | IEEE80211_QUEUE_STOP_REASON_CSA); | 849 | IEEE80211_QUEUE_STOP_REASON_CSA); |