developer | 66e89bc | 2024-04-23 14:50:01 +0800 | [diff] [blame^] | 1 | From 469ce653f972aa5b6cf213418cfdcecffe0af924 Mon Sep 17 00:00:00 2001 |
| 2 | From: Michael-CY Lee <michael-cy.lee@mediatek.com> |
| 3 | Date: Thu, 22 Feb 2024 11:09:10 +0800 |
| 4 | Subject: [PATCH 108/116] mtk: mt76: mt7996: hw_scan: ACS channel time too long |
| 5 | on duty channel |
| 6 | |
| 7 | This problem happens in SW scan and was already fixed. |
| 8 | (https://gerrit.mediatek.inc/c/gateway/WiFi7/mac80211/mt76/+/8312969) |
| 9 | |
| 10 | This commit applys same solution for HW scan. |
| 11 | |
| 12 | CR-Id: WCNCR00289305 |
| 13 | Signed-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 | |
| 18 | diff --git a/mt7996/main.c b/mt7996/main.c |
| 19 | index 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 | -- |
| 40 | 2.39.2 |
| 41 | |