]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
wifi: mt76: mt7996: fix bss wlan_idx when sending bss_info command
authorPeter Chiu <chui-hao.chiu@mediatek.com>
Mon, 5 Jun 2023 15:21:34 +0000 (23:21 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 13 Sep 2023 07:48:01 +0000 (09:48 +0200)
[ Upstream commit cc945b546227423488fe4be0ab92fd126b703246 ]

The bmc_tx_wlan_idx should be the wlan_idx of the current bss rather
than peer AP's wlan_idx, otherwise there will appear some frame
decryption problems on station mode.

Fixes: 98686cd21624 ("wifi: mt76: mt7996: add driver for MediaTek Wi-Fi 7 (802.11be) devices")
Reviewed-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c

index 88e2f9d0e5130988bcb223eb9bbf0089e3e6b7dd..cd54e81d73044699d84affd09b04f7b2d3472e0d 100644 (file)
@@ -712,6 +712,7 @@ mt7996_mcu_bss_basic_tlv(struct sk_buff *skb,
        struct cfg80211_chan_def *chandef = &phy->chandef;
        struct mt76_connac_bss_basic_tlv *bss;
        u32 type = CONNECTION_INFRA_AP;
+       u16 sta_wlan_idx = wlan_idx;
        struct tlv *tlv;
        int idx;
 
@@ -731,7 +732,7 @@ mt7996_mcu_bss_basic_tlv(struct sk_buff *skb,
                                struct mt76_wcid *wcid;
 
                                wcid = (struct mt76_wcid *)sta->drv_priv;
-                               wlan_idx = wcid->idx;
+                               sta_wlan_idx = wcid->idx;
                        }
                        rcu_read_unlock();
                }
@@ -751,7 +752,7 @@ mt7996_mcu_bss_basic_tlv(struct sk_buff *skb,
        bss->bcn_interval = cpu_to_le16(vif->bss_conf.beacon_int);
        bss->dtim_period = vif->bss_conf.dtim_period;
        bss->bmc_tx_wlan_idx = cpu_to_le16(wlan_idx);
-       bss->sta_idx = cpu_to_le16(wlan_idx);
+       bss->sta_idx = cpu_to_le16(sta_wlan_idx);
        bss->conn_type = cpu_to_le32(type);
        bss->omac_idx = mvif->omac_idx;
        bss->band_idx = mvif->band_idx;