blob: 160d14624f8b35214c917253f4b9e9cbe95f650a [file] [log] [blame]
From fb967d41b610096ef179b45cf85123de39c5665e Mon Sep 17 00:00:00 2001
From: mtk20656 <chank.chen@mediatek.com>
Date: Mon, 24 Jul 2023 11:30:27 +0800
Subject: [PATCH 35/35] hostapd: mtk: add extension IE list for non-inherit IE
in mbssid
Certain clients do not scan all non tx profiles due to absence of
element ID extension list which is mandatory field in non inheritance
IE. Non inheritance Element ID is followed by extension element ID.
Length is expected to be mentioned. Currently we do not support any
extension element and hence filling length as 0.
Signed-off-by: mtk20656 <chank.chen@mediatek.com>
---
src/ap/ieee802_11.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
index 30bfa30..f866b8a 100644
--- a/src/ap/ieee802_11.c
+++ b/src/ap/ieee802_11.c
@@ -7657,7 +7657,7 @@ static size_t hostapd_eid_mbssid_elem_len(struct hostapd_data *hapd,
else if (hapd->conf->xrates_supported)
ie_count++;
if (ie_count)
- nontx_profile_len += (4 + ie_count);
+ nontx_profile_len += (5 + ie_count);
if ((len + nontx_profile_len) > 255)
goto mbssid_too_big;
@@ -7792,11 +7792,16 @@ static u8 * hostapd_eid_mbssid_elem(struct hostapd_data *hapd, u8 *eid, u8 *end,
}
if (ie_count) {
*eid++ = WLAN_EID_EXTENSION;
- *eid++ = 2 + ie_count;
+ *eid++ = 3 + ie_count;
*eid++ = WLAN_EID_EXT_NON_INHERITANCE;
*eid++ = ie_count;
os_memcpy(eid, non_inherit_ie, ie_count);
eid += ie_count;
+ /* Element ID extension list is mandatory part of non inheritance IE.
+ * It has a length field followed by extension IEs. Currently no
+ * extension IEs are supported so filling length as 0.
+ */
+ *eid++ = 0;
}
*eid_len_pos = (eid - eid_len_pos) - 1;
--
2.18.0