summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2014-04-09 15:45:36 +0200
committerJohannes Berg <johannes.berg@intel.com>2014-05-07 11:04:51 +0200
commite5593f56ebbc1b427055da8bc49d7e12a108de36 (patch)
tree010ffc0dedfcdd756bf4cd370d11807d2135c83c
parentcfg80211: export interface stopping function (diff)
downloadlinux-e5593f56ebbc1b427055da8bc49d7e12a108de36.tar.xz
linux-e5593f56ebbc1b427055da8bc49d7e12a108de36.zip
mac80211: ignore cqm during csa
It is not guaranteed that multi-vif channel switching is tightly synchronized. It makes sense to ignore cqm (missing beacons, et al) while csa is progressing and re-check it after it completes. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--net/mac80211/mlme.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index d68e73cbdcd6..7f073ef1e0a6 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -988,6 +988,9 @@ static void ieee80211_chswitch_work(struct work_struct *work)
ifmgd->flags &= ~IEEE80211_STA_CSA_RECEIVED;
+ ieee80211_sta_reset_beacon_monitor(sdata);
+ ieee80211_sta_reset_conn_monitor(sdata);
+
out:
sdata_unlock(sdata);
}
@@ -3565,6 +3568,9 @@ static void ieee80211_sta_bcn_mon_timer(unsigned long data)
if (local->quiescing)
return;
+ if (sdata->vif.csa_active)
+ return;
+
sdata->u.mgd.connection_loss = false;
ieee80211_queue_work(&sdata->local->hw,
&sdata->u.mgd.beacon_connection_loss_work);
@@ -3580,6 +3586,9 @@ static void ieee80211_sta_conn_mon_timer(unsigned long data)
if (local->quiescing)
return;
+ if (sdata->vif.csa_active)
+ return;
+
ieee80211_queue_work(&local->hw, &ifmgd->monitor_work);
}