aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChih-Kang Chang <gary.chang@realtek.com>2022-07-27 14:50:01 +0800
committerKalle Valo <kvalo@kernel.org>2022-08-09 08:48:08 +0300
commit8edb22de9de771e6be142599d7dc898c082342fc (patch)
tree2a48a0bc5edd68e3325341a9a3bb973d58bbd4b1
parentwifi: rtw88: 8822c: extend supported probe request size (diff)
wifi: rtw88: fix stopping queues in wrong timing when HW scan
HW scan need to start queues after switch to OP channel, and stop queues before leaving op channel. However, in original code, driver will start queues after switch to OP channel, but stop queues until switch to OP channel next time, that will cause packets transmitted in wrong channel. So we fix the stop queues timing. Signed-off-by: Chih-Kang Chang <gary.chang@realtek.com> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20220727065003.28340-3-pkshih@realtek.com
-rw-r--r--drivers/net/wireless/realtek/rtw88/fw.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/wireless/realtek/rtw88/fw.c b/drivers/net/wireless/realtek/rtw88/fw.c
index efa51b2f5302..a644e2b617a1 100644
--- a/drivers/net/wireless/realtek/rtw88/fw.c
+++ b/drivers/net/wireless/realtek/rtw88/fw.c
@@ -2227,7 +2227,12 @@ void rtw_hw_scan_chan_switch(struct rtw_dev *rtwdev, struct sk_buff *skb)
chan_type = COEX_SWITCH_TO_24G_NOFORSCAN;
rtw_coex_switchband_notify(rtwdev, chan_type);
}
- if (rtw_is_op_chan(rtwdev, chan))
+ /* The channel of C2H RTW_SCAN_NOTIFY_ID_PRESWITCH is next
+ * channel that hardware will switch. We need to stop queue
+ * if next channel is non-op channel.
+ */
+ if (!rtw_is_op_chan(rtwdev, chan) &&
+ rtw_is_op_chan(rtwdev, hal->current_channel))
ieee80211_stop_queues(rtwdev->hw);
}