]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mt76: mt7996: Export MLO AP capabilities to mac80211
authorShayne Chen <shayne.chen@mediatek.com>
Wed, 27 Aug 2025 08:01:02 +0000 (10:01 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 15 Sep 2025 07:47:40 +0000 (09:47 +0200)
Report MT7996 MLO AP capabilities to mac80211 stack.

Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Co-developed-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20250827-mt7996-mlo-ap-capa-v1-1-b5cfbcafa25f@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7996/init.c

index 90450017d9959444add2a982b7d3edbc1a806d2d..ce4d5b925bfcb8a2efff2a0217b0ca5e2f990083 100644 (file)
@@ -63,6 +63,24 @@ static const struct ieee80211_iface_combination if_comb = {
        .beacon_int_min_gcd = 100,
 };
 
+static const u8 if_types_ext_capa_ap[] = {
+       [0] = WLAN_EXT_CAPA1_EXT_CHANNEL_SWITCHING,
+       [2] = WLAN_EXT_CAPA3_MULTI_BSSID_SUPPORT,
+       [7] = WLAN_EXT_CAPA8_OPMODE_NOTIF,
+};
+
+static const struct wiphy_iftype_ext_capab iftypes_ext_capa[] = {
+       {
+               .iftype = NL80211_IFTYPE_AP,
+               .extended_capabilities = if_types_ext_capa_ap,
+               .extended_capabilities_mask = if_types_ext_capa_ap,
+               .extended_capabilities_len = sizeof(if_types_ext_capa_ap),
+               .mld_capa_and_ops =
+                       FIELD_PREP_CONST(IEEE80211_MLD_CAP_OP_MAX_SIMUL_LINKS,
+                                        MT7996_MAX_RADIOS - 1),
+       },
+};
+
 static ssize_t mt7996_thermal_temp_show(struct device *dev,
                                        struct device_attribute *attr,
                                        char *buf)
@@ -463,8 +481,11 @@ mt7996_init_wiphy(struct ieee80211_hw *hw, struct mtk_wed_device *wed)
        wiphy->radio = dev->radios;
 
        wiphy->reg_notifier = mt7996_regd_notifier;
-       wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH;
+       wiphy->flags |= WIPHY_FLAG_HAS_CHANNEL_SWITCH |
+                       WIPHY_FLAG_SUPPORTS_MLO;
        wiphy->mbssid_max_interfaces = 16;
+       wiphy->iftype_ext_capab = iftypes_ext_capa;
+       wiphy->num_iftype_ext_capab = ARRAY_SIZE(iftypes_ext_capa);
 
        wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_BSS_COLOR);
        wiphy_ext_feature_set(wiphy, NL80211_EXT_FEATURE_VHT_IBSS);