wifi: mt76: mt7925: update mt7925_mcu_add_bss_info for MLO
authorSean Wang <sean.wang@mediatek.com>
Sat, 6 Jul 2024 08:28:08 +0000 (01:28 -0700)
committerFelix Fietkau <nbd@nbd.name>
Tue, 9 Jul 2024 21:02:07 +0000 (23:02 +0200)
Update mt7925_mcu_bss_mld_tlv for the MLO-enabled firmware

The change remains compatible with the non-MLO mode and the
older firmware.

Co-developed-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Co-developed-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Deren Wu <deren.wu@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Link: https://patch.msgid.link/a3d03b0a1ca916b2b8b2e7c0afcdcd7e258d97c3.1720248331.git.sean.wang@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7925/mcu.c

index 7a02251271354bc6783c353d32fcdf1c57eeb74a..094fa4dde5fe1b0fdb9a5cfe134ed156dbc5931d 100644 (file)
@@ -2513,17 +2513,21 @@ int mt7925_mcu_add_bss_info(struct mt792x_phy *phy,
                            int enable)
 {
        struct mt792x_vif *mvif = (struct mt792x_vif *)link_conf->vif->drv_priv;
+       struct mt792x_bss_conf *mconf = mt792x_link_conf_to_mconf(link_conf);
        struct mt792x_dev *dev = phy->dev;
+       struct mt792x_link_sta *mlink_bc;
        struct sk_buff *skb;
 
-       skb = __mt7925_mcu_alloc_bss_req(&dev->mt76, &mvif->bss_conf.mt76,
+       skb = __mt7925_mcu_alloc_bss_req(&dev->mt76, &mconf->mt76,
                                         MT7925_BSS_UPDATE_MAX_SIZE);
        if (IS_ERR(skb))
                return PTR_ERR(skb);
 
+       mlink_bc = mt792x_sta_to_link(&mvif->sta, mconf->link_id);
+
        /* bss_basic must be first */
        mt7925_mcu_bss_basic_tlv(skb, link_conf, link_sta, ctx, phy->mt76,
-                                mvif->sta.deflink.wcid.idx, enable);
+                                mlink_bc->wcid.idx, enable);
        mt7925_mcu_bss_sec_tlv(skb, link_conf);
        mt7925_mcu_bss_bmc_tlv(skb, phy, ctx, link_conf);
        mt7925_mcu_bss_qos_tlv(skb, link_conf);
@@ -2535,7 +2539,8 @@ int mt7925_mcu_add_bss_info(struct mt792x_phy *phy,
                mt7925_mcu_bss_color_tlv(skb, link_conf, enable);
        }
 
-       mt7925_mcu_bss_rlm_tlv(skb, phy->mt76, link_conf, ctx);
+       if (enable)
+               mt7925_mcu_bss_rlm_tlv(skb, phy->mt76, link_conf, ctx);
 
        return mt76_mcu_skb_send_msg(&dev->mt76, skb,
                                     MCU_UNI_CMD(BSS_INFO_UPDATE), true);