From 7a05f4628e76fb01ba73575606eb749cb4408210 Mon Sep 17 00:00:00 2001 From: Deren Wu Date: Wed, 16 Mar 2022 17:51:52 +0800 Subject: [PATCH] mt76: fix monitor rx FCS error in DFS channel When setup monitor mode in DFS channel, mt76 send CH_SWITCH_DFS to fw for channel config. This would cause rx performance bad while monitoring frames. Settings CH_SWITCH_NORMAL in monitor mode would get the same performance as normal channels. Reviewed-by: Shayne Chen Signed-off-by: Deren Wu Signed-off-by: Felix Fietkau --- mt7615/mcu.c | 3 ++- mt7915/mcu.c | 3 ++- mt7921/mcu.c | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/mt7615/mcu.c b/mt7615/mcu.c index 390add31..97e2a85c 100644 --- a/mt7615/mcu.c +++ b/mt7615/mcu.c @@ -2151,7 +2151,8 @@ int mt7615_mcu_set_chan_info(struct mt7615_phy *phy, int cmd) .center_chan2 = ieee80211_frequency_to_channel(freq2), }; - if (cmd == MCU_EXT_CMD(SET_RX_PATH)) + if (cmd == MCU_EXT_CMD(SET_RX_PATH) || + dev->mt76.hw->conf.flags & IEEE80211_CONF_MONITOR) req.switch_reason = CH_SWITCH_NORMAL; else if (phy->mt76->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL) req.switch_reason = CH_SWITCH_SCAN_BYPASS_DPD; diff --git a/mt7915/mcu.c b/mt7915/mcu.c index f48dded2..6220b6fa 100644 --- a/mt7915/mcu.c +++ b/mt7915/mcu.c @@ -2885,7 +2885,8 @@ int mt7915_mcu_set_chan_info(struct mt7915_phy *phy, int cmd) } #endif - if (cmd == MCU_EXT_CMD(SET_RX_PATH)) + if (cmd == MCU_EXT_CMD(SET_RX_PATH) || + dev->mt76.hw->conf.flags & IEEE80211_CONF_MONITOR) req.switch_reason = CH_SWITCH_NORMAL; else if (phy->mt76->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL) req.switch_reason = CH_SWITCH_SCAN_BYPASS_DPD; diff --git a/mt7921/mcu.c b/mt7921/mcu.c index 5ef8b24f..da2be050 100644 --- a/mt7921/mcu.c +++ b/mt7921/mcu.c @@ -863,7 +863,8 @@ int mt7921_mcu_set_chan_info(struct mt7921_phy *phy, int cmd) else req.channel_band = chandef->chan->band; - if (cmd == MCU_EXT_CMD(SET_RX_PATH)) + if (cmd == MCU_EXT_CMD(SET_RX_PATH) || + dev->mt76.hw->conf.flags & IEEE80211_CONF_MONITOR) req.switch_reason = CH_SWITCH_NORMAL; else if (dev->mt76.hw->conf.flags & IEEE80211_CONF_OFFCHANNEL) req.switch_reason = CH_SWITCH_SCAN_BYPASS_DPD;