summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichal Kazior <michal.kazior@tieto.com>2015-09-03 10:43:45 +0200
committerKalle Valo <kvalo@qca.qualcomm.com>2015-09-17 14:01:15 +0300
commit634349bae0b2a23f71cabbdb770d35fffc1aad8c (patch)
tree340486d8dbdd893890a544d1c86a90fcf011c828
parentb6c7bafa7d4b1398cce93e4af0a48603919fa933 (diff)
ath10k: move hw_scan worker queuing
The remain_on_channel callback needs different timeout. Calling ieee80211_queue_work() with a shorter delay after calling it with a longer delay will not change the timer. This caused the offchannel timeout worker to not trigger in time and caused the device to stay on channel longer then expected. This could cause some problems and was be easily reproduced with `iw offchannel` command. Signed-off-by: Michal Kazior <michal.kazior@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
-rw-r--r--drivers/net/wireless/ath/ath10k/mac.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/wireless/ath/ath10k/mac.c b/drivers/net/wireless/ath/ath10k/mac.c
index 1cda4f9dd4531..c7e3165d6cd7a 100644
--- a/drivers/net/wireless/ath/ath10k/mac.c
+++ b/drivers/net/wireless/ath/ath10k/mac.c
@@ -3618,9 +3618,6 @@ static int ath10k_start_scan(struct ath10k *ar,
}
spin_unlock_bh(&ar->data_lock);
- /* Add a 200ms margin to account for event/command processing */
- ieee80211_queue_delayed_work(ar->hw, &ar->scan.timeout,
- msecs_to_jiffies(arg->max_scan_time+200));
return 0;
}
@@ -4803,6 +4800,11 @@ static int ath10k_hw_scan(struct ieee80211_hw *hw,
spin_unlock_bh(&ar->data_lock);
}
+ /* Add a 200ms margin to account for event/command processing */
+ ieee80211_queue_delayed_work(ar->hw, &ar->scan.timeout,
+ msecs_to_jiffies(arg.max_scan_time +
+ 200));
+
exit:
mutex_unlock(&ar->conf_mutex);
return ret;