wifi: mt76: get rid of false alamrs of tx emission issues
authorStanleyYP Wang <StanleyYP.Wang@mediatek.com>
Thu, 31 Aug 2023 06:22:17 +0000 (14:22 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Nov 2023 10:58:58 +0000 (11:58 +0100)
[ Upstream commit 413f05d68d11981f5984b49214d3a5a0d88079b1 ]

When the set_chan_info command is set with CH_SWITCH_NORMAL reason,
even if the action is UNI_CHANNEL_RX_PATH, it'll still generate some
unexpected tones, which might confuse DFS CAC tests that there are some
tone leakages. To get rid of these kinds of false alarms, always bypass
DPD calibration when IEEE80211_CONF_IDLE is set.

Reviewed-by: Evelyn Tsai <evelyn.tsai@mediatek.com>
Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Stable-dep-of: c685034cabc5 ("wifi: mt76: fix per-band IEEE80211_CONF_MONITOR flag comparison")
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c

index 44d5aad6c3cc01d19defa7aeedbe460362e9aeba..acdb54a8bcc6c556c3d4bae4b913d3627cda3f0e 100644 (file)
@@ -2740,10 +2740,10 @@ int mt7915_mcu_set_chan_info(struct mt7915_phy *phy, int cmd)
        if (mt76_connac_spe_idx(phy->mt76->antenna_mask))
                req.tx_path_num = fls(phy->mt76->antenna_mask);
 
-       if (cmd == MCU_EXT_CMD(SET_RX_PATH) ||
-           dev->mt76.hw->conf.flags & IEEE80211_CONF_MONITOR)
+       if (dev->mt76.hw->conf.flags & IEEE80211_CONF_MONITOR)
                req.switch_reason = CH_SWITCH_NORMAL;
-       else if (phy->mt76->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL)
+       else if (phy->mt76->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL ||
+                phy->mt76->hw->conf.flags & IEEE80211_CONF_IDLE)
                req.switch_reason = CH_SWITCH_SCAN_BYPASS_DPD;
        else if (!cfg80211_reg_can_beacon(phy->mt76->hw->wiphy, chandef,
                                          NL80211_IFTYPE_AP))
index f4545342018f543ea4a02eba18f0396921a43527..f80ba8f1f5de15f56893ca316a5b77a576db9bc3 100644 (file)
@@ -2972,10 +2972,10 @@ int mt7996_mcu_set_chan_info(struct mt7996_phy *phy, u16 tag)
                .channel_band = ch_band[chandef->chan->band],
        };
 
-       if (tag == UNI_CHANNEL_RX_PATH ||
-           dev->mt76.hw->conf.flags & IEEE80211_CONF_MONITOR)
+       if (dev->mt76.hw->conf.flags & IEEE80211_CONF_MONITOR)
                req.switch_reason = CH_SWITCH_NORMAL;
-       else if (phy->mt76->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL)
+       else if (phy->mt76->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL ||
+                phy->mt76->hw->conf.flags & IEEE80211_CONF_IDLE)
                req.switch_reason = CH_SWITCH_SCAN_BYPASS_DPD;
        else if (!cfg80211_reg_can_beacon(phy->mt76->hw->wiphy, chandef,
                                          NL80211_IFTYPE_AP))