aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2014-04-09 09:45:36 -0400
committerJohannes Berg <johannes.berg@intel.com>2014-05-07 05:04:51 -0400
commite5593f56ebbc1b427055da8bc49d7e12a108de36 (patch)
tree010ffc0dedfcdd756bf4cd370d11807d2135c83c
parentf04c22033c25f71617ac62bcfe75698baa17a0b8 (diff)
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)
988 988
989 ifmgd->flags &= ~IEEE80211_STA_CSA_RECEIVED; 989 ifmgd->flags &= ~IEEE80211_STA_CSA_RECEIVED;
990 990
991 ieee80211_sta_reset_beacon_monitor(sdata);
992 ieee80211_sta_reset_conn_monitor(sdata);
993
991out: 994out:
992 sdata_unlock(sdata); 995 sdata_unlock(sdata);
993} 996}
@@ -3565,6 +3568,9 @@ static void ieee80211_sta_bcn_mon_timer(unsigned long data)
3565 if (local->quiescing) 3568 if (local->quiescing)
3566 return; 3569 return;
3567 3570
3571 if (sdata->vif.csa_active)
3572 return;
3573
3568 sdata->u.mgd.connection_loss = false; 3574 sdata->u.mgd.connection_loss = false;
3569 ieee80211_queue_work(&sdata->local->hw, 3575 ieee80211_queue_work(&sdata->local->hw,
3570 &sdata->u.mgd.beacon_connection_loss_work); 3576 &sdata->u.mgd.beacon_connection_loss_work);
@@ -3580,6 +3586,9 @@ static void ieee80211_sta_conn_mon_timer(unsigned long data)
3580 if (local->quiescing) 3586 if (local->quiescing)
3581 return; 3587 return;
3582 3588
3589 if (sdata->vif.csa_active)
3590 return;
3591
3583 ieee80211_queue_work(&local->hw, &ifmgd->monitor_work); 3592 ieee80211_queue_work(&local->hw, &ifmgd->monitor_work);
3584} 3593}
3585 3594