]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mt76: mt7996: Use proper link info in mt7996_mcu_add_group
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 2 Sep 2025 06:55:12 +0000 (08:55 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 15 Sep 2025 07:47:39 +0000 (09:47 +0200)
Do not always use default link in mt7996_mcu_add_group routine.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20250902-mt7996_mcu_add_group-fix-v1-1-312e14794dee@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c

index d63978b4c3d26a95ca586b53e4215d81be2f3b31..c525abd0a7ac056396425cf11011ee5835a69e0d 100644 (file)
@@ -2325,13 +2325,10 @@ error_unlock:
 }
 
 static int
-mt7996_mcu_add_group(struct mt7996_dev *dev, struct ieee80211_vif *vif,
-                    struct ieee80211_sta *sta)
+mt7996_mcu_add_group(struct mt7996_dev *dev, struct mt7996_vif_link *link,
+                    struct mt76_wcid *wcid)
 {
 #define MT_STA_BSS_GROUP               1
-       struct mt7996_vif *mvif = (struct mt7996_vif *)vif->drv_priv;
-       struct mt7996_sta_link *msta_link;
-       struct mt7996_sta *msta;
        struct {
                u8 __rsv1[4];
 
@@ -2346,13 +2343,10 @@ mt7996_mcu_add_group(struct mt7996_dev *dev, struct ieee80211_vif *vif,
                .tag = cpu_to_le16(UNI_VOW_DRR_CTRL),
                .len = cpu_to_le16(sizeof(req) - 4),
                .action = cpu_to_le32(MT_STA_BSS_GROUP),
-               .val = cpu_to_le32(mvif->deflink.mt76.idx % 16),
+               .val = cpu_to_le32(link->mt76.idx % 16),
+               .wlan_idx = cpu_to_le16(wcid->idx),
        };
 
-       msta = sta ? (struct mt7996_sta *)sta->drv_priv : NULL;
-       msta_link = msta ? &msta->deflink : &mvif->deflink.msta_link;
-       req.wlan_idx = cpu_to_le16(msta_link->wcid.idx);
-
        return mt76_mcu_send_msg(&dev->mt76, MCU_WM_UNI_CMD(VOW), &req,
                                 sizeof(req), true);
 }
@@ -2492,7 +2486,7 @@ int mt7996_mcu_add_sta(struct mt7996_dev *dev,
                }
        }
 
-       ret = mt7996_mcu_add_group(dev, link_conf->vif, sta);
+       ret = mt7996_mcu_add_group(dev, link, wcid);
        if (ret) {
                dev_kfree_skb(skb);
                return ret;