blob: d62352fbde3b0a33c446891ab6a9c0668ef482ac [file] [log] [blame]
developer617abbd2024-04-23 14:50:01 +08001From 469ce653f972aa5b6cf213418cfdcecffe0af924 Mon Sep 17 00:00:00 2001
2From: Michael-CY Lee <michael-cy.lee@mediatek.com>
3Date: Thu, 22 Feb 2024 11:09:10 +0800
4Subject: [PATCH 108/116] mtk: mt76: mt7996: hw_scan: ACS channel time too long
5 on duty channel
6
7This problem happens in SW scan and was already fixed.
8(https://gerrit.mediatek.inc/c/gateway/WiFi7/mac80211/mt76/+/8312969)
9
10This commit applys same solution for HW scan.
11
12CR-Id: WCNCR00289305
13Signed-off-by: Michael-CY Lee <michael-cy.lee@mediatek.com>
14---
15 mt7996/main.c | 3 ++-
16 1 file changed, 2 insertions(+), 1 deletion(-)
17
18diff --git a/mt7996/main.c b/mt7996/main.c
19index 05efec469..6943b28ba 100644
20--- a/mt7996/main.c
21+++ b/mt7996/main.c
22@@ -497,6 +497,7 @@ static void ___mt7996_set_channel(struct mt7996_phy *phy,
23 struct mt76_phy *mphy = phy->mt76;
24 bool offchannel = phy->scan_chan != NULL;
25 int timeout = HZ / 5;
26+ unsigned long was_scanning = ieee80211_get_scanning(mphy->hw);
27
28 wait_event_timeout(mdev->tx_wait, !mt76_has_tx_pending(mphy), timeout);
29 mt76_update_survey(mphy);
30@@ -511,7 +512,7 @@ static void ___mt7996_set_channel(struct mt7996_phy *phy,
31 if (!offchannel)
32 mphy->main_chan = chandef->chan;
33
34- if (chandef->chan != mphy->main_chan)
35+ if (chandef->chan != mphy->main_chan || was_scanning)
36 memset(mphy->chan_state, 0, sizeof(*mphy->chan_state));
37 }
38
39--
402.39.2
41