aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorLuciano Coelho <luciano.coelho@intel.com>2014-10-28 13:33:05 +0200
committerJohannes Berg <johannes.berg@intel.com>2014-10-29 16:37:54 +0100
commitff1e417c7c239b7abfe70aa90460a77eaafc7f83 (patch)
treea7c00c2ba1b3414a48f75c7ebc1a6db54d11eb76 /net
parentmac80211: use secondary channel offset IE also beacons during CSA (diff)
downloadlinux-dev-ff1e417c7c239b7abfe70aa90460a77eaafc7f83.tar.xz
linux-dev-ff1e417c7c239b7abfe70aa90460a77eaafc7f83.zip
mac80211: schedule the actual switch of the station before CSA count 0
Due to the time it takes to process the beacon that started the CSA process, we may be late for the switch if we try to reach exactly beacon 0. To avoid that, use count - 1 when calculating the switch time. Cc: stable@vger.kernel.org Reported-by: Jouni Malinen <j@w1.fi> Signed-off-by: Luciano Coelho <luciano.coelho@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/mlme.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 08f51c6d0953..93af0f1c9d99 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -1168,7 +1168,8 @@ ieee80211_sta_process_chanswitch(struct ieee80211_sub_if_data *sdata,
ieee80211_queue_work(&local->hw, &ifmgd->chswitch_work);
else
mod_timer(&ifmgd->chswitch_timer,
- TU_TO_EXP_TIME(csa_ie.count * cbss->beacon_interval));
+ TU_TO_EXP_TIME((csa_ie.count - 1) *
+ cbss->beacon_interval));
}
static bool