wifi: mt76: mt7915: fix power-limits while chan_switch
authorRyder Lee <ryder.lee@mediatek.com>
Wed, 26 Jul 2023 18:35:06 +0000 (02:35 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Sep 2023 07:42:31 +0000 (09:42 +0200)
[ Upstream commit 6c0570bc21ec2073890aa252c8420ca7bec402e4 ]

If user changes the channel without completely disabling the interface the
txpower_sku values reported track the old channel the device was operating on.
If user bounces the interface the correct power tables are applied.

mt7915_sku_group_len array gets updated before the channel switch happens so it
uses data from the old channel.

Fixes: ecb187a74e18 ("mt76: mt7915: rework the flow of txpower setting")
Fixes: f1d962369d56 ("mt76: mt7915: implement HE per-rate tx power support")
Reported-By: Chad Monroe <chad.monroe@smartrg.com>
Tested-by: Chad Monroe <chad.monroe@smartrg.com>
Signed-off-by: Allen Ye <allen.ye@mediatek.com>
Signed-off-by: Ryder Lee <ryder.lee@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/mediatek/mt76/mt7915/main.c

index bda26bd..3280843 100644 (file)
@@ -455,7 +455,8 @@ static int mt7915_config(struct ieee80211_hw *hw, u32 changed)
                ieee80211_wake_queues(hw);
        }
 
-       if (changed & IEEE80211_CONF_CHANGE_POWER) {
+       if (changed & (IEEE80211_CONF_CHANGE_POWER |
+                      IEEE80211_CONF_CHANGE_CHANNEL)) {
                ret = mt7915_mcu_set_txpower_sku(phy);
                if (ret)
                        return ret;