wifi: mt76: connac: set correct muar_idx for mt799x chipsets
authorShayne Chen <shayne.chen@mediatek.com>
Fri, 26 Jan 2024 09:09:22 +0000 (17:09 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 22 Feb 2024 08:55:18 +0000 (09:55 +0100)
The MUAR (multicast unicast address) is an address mapping table that
participates in the process of searching WTBL entries. For mt799x
chipsets, the default muar index of BMC WTBL is 0xe.

Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76_connac.h
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c

index fdde3d70b300e365856156cea56037c18eef0fd3..98d64d3d2993df15a63dd08d6985bb46b5af142a 100644 (file)
@@ -227,6 +227,11 @@ static inline bool is_mt7992(struct mt76_dev *dev)
        return mt76_chip(dev) == 0x7992;
 }
 
+static inline bool is_mt799x(struct mt76_dev *dev)
+{
+       return is_mt7996(dev) || is_mt7992(dev);
+}
+
 static inline bool is_mt7622(struct mt76_dev *dev)
 {
        if (!IS_ENABLED(CONFIG_MT7622_WMAC))
index ea7ffa16a4b12ef5337994860295c88720981bfe..9aff0c13efd711a9ba862f0a9d7b3ef1ddc50a84 100644 (file)
@@ -283,6 +283,9 @@ __mt76_connac_mcu_alloc_sta_req(struct mt76_dev *dev, struct mt76_vif *mvif,
        };
        struct sk_buff *skb;
 
+       if (is_mt799x(dev) && !wcid->sta)
+               hdr.muar_idx = 0xe;
+
        mt76_connac_mcu_get_wlan_idx(dev, wcid, &hdr.wlan_idx_lo,
                                     &hdr.wlan_idx_hi);
        skb = mt76_mcu_msg_alloc(dev, NULL, len);