]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mt76: mt7921: add MBSSID support
authorMing Yen Hsieh <mingyen.hsieh@mediatek.com>
Tue, 12 Aug 2025 11:16:42 +0000 (19:16 +0800)
committerFelix Fietkau <nbd@nbd.name>
Mon, 15 Sep 2025 07:47:39 +0000 (09:47 +0200)
Enable MBSSID support for MT7921 by setting the
appropriate capability to the firmware.

Signed-off-by: Ming Yen Hsieh <mingyen.hsieh@mediatek.com>
Link: https://patch.msgid.link/20250812111642.3620845-1-mingyen.hsieh@mediatek.com
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c
drivers/net/wireless/mediatek/mt76/mt792x_core.c

index 16db0f2082d1ec196872520d8e0d306e2f94a9f5..fc3e6728fcfbfb02f7f6bf1274fa5362f1b43221 100644 (file)
@@ -1662,6 +1662,31 @@ int mt76_connac_mcu_uni_add_bss(struct mt76_phy *phy,
                        return err;
        }
 
+       if (enable && vif->bss_conf.bssid_indicator) {
+               struct {
+                       struct {
+                               u8 bss_idx;
+                               u8 pad[3];
+                       } __packed hdr;
+                       struct bss_info_uni_mbssid mbssid;
+               } mbssid_req = {
+                       .hdr = {
+                               .bss_idx = mvif->idx,
+                       },
+                       .mbssid = {
+                               .tag = cpu_to_le16(UNI_BSS_INFO_11V_MBSSID),
+                               .len = cpu_to_le16(sizeof(struct bss_info_uni_mbssid)),
+                               .max_indicator = vif->bss_conf.bssid_indicator,
+                               .mbss_idx =  vif->bss_conf.bssid_index,
+                       },
+               };
+
+               err = mt76_mcu_send_msg(mdev, MCU_UNI_CMD(BSS_INFO_UPDATE),
+                                       &mbssid_req, sizeof(mbssid_req), true);
+               if (err < 0)
+                       return err;
+       }
+
        return mt76_connac_mcu_uni_set_chctx(phy, mvif, ctx);
 }
 EXPORT_SYMBOL_GPL(mt76_connac_mcu_uni_add_bss);
index 44378f7394e8dbc677b1366faa8fa5ce2eb72d99..c0e56541a9547690317bfc48b67805d4a9b645b2 100644 (file)
@@ -689,12 +689,11 @@ int mt792x_init_wiphy(struct ieee80211_hw *hw)
        ieee80211_hw_set(hw, SUPPORTS_VHT_EXT_NSS_BW);
        ieee80211_hw_set(hw, CONNECTION_MONITOR);
        ieee80211_hw_set(hw, NO_VIRTUAL_MONITOR);
+       ieee80211_hw_set(hw, SUPPORTS_MULTI_BSSID);
+       ieee80211_hw_set(hw, SUPPORTS_ONLY_HE_MULTI_BSSID);
 
        if (is_mt7921(&dev->mt76)) {
                ieee80211_hw_set(hw, CHANCTX_STA_CSA);
-       } else {
-               ieee80211_hw_set(hw, SUPPORTS_MULTI_BSSID);
-               ieee80211_hw_set(hw, SUPPORTS_ONLY_HE_MULTI_BSSID);
        }
 
        if (dev->pm.enable)