blob: 10bbe3afba96ee302ef0bb27e977f1c0d4593a34 [file] [log] [blame]
developer064da3c2023-06-13 15:57:26 +08001From 39893cc863213984a9ab0ae279dbfe433a6fe90e Mon Sep 17 00:00:00 2001
2From: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
3Date: Tue, 23 May 2023 21:18:59 +0800
4Subject: [PATCH 38/39] wifi: mt76: mt7996: fix DFS CAC tx emission issue after
5 2nd interface up
6
7FW's channel state is set during the first wifi interface setup. If the switch reason for
8setting the tx/rx path during second-time wifi interface setup is CH_SWITCH_NORMAL,
9then the FW would perform runtime dpd channel calibration during DFS CAC, which leads to
10tx emission. Therefore, in order to bypass tx calibration during DFS CAC, set the switch reason
11to CH_SWITCH_DFS whenever chandef is set to DFS channel.
12
13Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
14---
15 mt7996/mcu.c | 6 +++---
16 1 file changed, 3 insertions(+), 3 deletions(-)
17
18diff --git a/mt7996/mcu.c b/mt7996/mcu.c
19index b34c6b7..be5c908 100644
20--- a/mt7996/mcu.c
21+++ b/mt7996/mcu.c
22@@ -3211,12 +3211,12 @@ int mt7996_mcu_set_chan_info(struct mt7996_phy *phy, u16 tag)
23 .channel_band = ch_band[chandef->chan->band],
24 };
25
26- if (tag == UNI_CHANNEL_RX_PATH ||
27- dev->mt76.hw->conf.flags & IEEE80211_CONF_MONITOR)
28+ if (dev->mt76.hw->conf.flags & IEEE80211_CONF_MONITOR)
29 req.switch_reason = CH_SWITCH_NORMAL;
30 else if (phy->mt76->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL)
31 req.switch_reason = CH_SWITCH_SCAN_BYPASS_DPD;
32- else if (!cfg80211_reg_can_beacon(phy->mt76->hw->wiphy, chandef,
33+ else if (cfg80211_chandef_valid(chandef) &&
34+ !cfg80211_reg_can_beacon(phy->mt76->hw->wiphy, chandef,
35 NL80211_IFTYPE_AP))
36 req.switch_reason = CH_SWITCH_DFS;
37 else
38--
392.18.0
40