]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
Multi-AP: Generation of Multi-AP Profile subelement
authorManoj Sekar <quic_sekar@quicinc.com>
Mon, 26 Feb 2024 12:48:21 +0000 (18:18 +0530)
committerJouni Malinen <j@w1.fi>
Tue, 19 Mar 2024 16:53:45 +0000 (18:53 +0200)
Add support for including the Multi-AP Profile subelement into the
Multi-AP element.

Signed-off-by: Manoj Sekar <quic_sekar@quicinc.com>
src/common/ieee802_11_common.c
src/common/ieee802_11_common.h
src/common/ieee802_11_defs.h

index 38f27644635c096e476db22ba76aa99a1d842b59..97c0405d3428eddbbe29e32790c0095920a31728 100644 (file)
@@ -2625,7 +2625,7 @@ size_t add_multi_ap_ie(u8 *buf, size_t len,
        u8 *pos = buf;
        u8 *len_ptr;
 
-       if (len < 9)
+       if (len < 6)
                return 0;
 
        *pos++ = WLAN_EID_VENDOR_SPECIFIC;
@@ -2636,10 +2636,21 @@ size_t add_multi_ap_ie(u8 *buf, size_t len,
        *pos++ = MULTI_AP_OUI_TYPE;
 
        /* Multi-AP Extension subelement */
+       if (buf + len - pos < 3)
+               return 0;
        *pos++ = MULTI_AP_SUB_ELEM_TYPE;
        *pos++ = 1; /* len */
        *pos++ = multi_ap->capability;
 
+       /* Add Multi-AP Profile subelement only for R2 or newer configuration */
+       if (multi_ap->profile >= MULTI_AP_PROFILE_2) {
+               if (buf + len - pos < 3)
+                       return 0;
+               *pos++ = MULTI_AP_PROFILE_SUB_ELEM_TYPE;
+               *pos++ = 1;
+               *pos++ = multi_ap->profile;
+       }
+
        *len_ptr = pos - len_ptr - 1;
 
        return pos - buf;
index d038d210b9c8f0817471f1117832559035930af0..cd04666baa071ff033ed923ae11497781ec61db4 100644 (file)
@@ -32,6 +32,7 @@ struct mb_ies_info {
 
 struct multi_ap_params {
        u8 capability;
+       u8 profile;
 };
 
 /* Parsed Information Elements */
index d070e42b875d997878a2d9d54b802f3dd771753d..147ab7322e4f9610d60760db126847ce66889396 100644 (file)
@@ -1447,11 +1447,17 @@ struct ieee80211_ampe_ie {
 #define WFA_CAPA_OUI_TYPE 0x23
 
 #define MULTI_AP_SUB_ELEM_TYPE 0x06
+#define MULTI_AP_PROFILE_SUB_ELEM_TYPE 0x07
+
 #define MULTI_AP_TEAR_DOWN BIT(4)
 #define MULTI_AP_FRONTHAUL_BSS BIT(5)
 #define MULTI_AP_BACKHAUL_BSS BIT(6)
 #define MULTI_AP_BACKHAUL_STA BIT(7)
 
+#define MULTI_AP_PROFILE_1     1
+#define MULTI_AP_PROFILE_2     2
+#define MULTI_AP_PROFILE_MAX   6
+
 #define WMM_OUI_TYPE 2
 #define WMM_OUI_SUBTYPE_INFORMATION_ELEMENT 0
 #define WMM_OUI_SUBTYPE_PARAMETER_ELEMENT 1