[RFC 02/30] defs: Add definition for SMD BSS Transition Parameters Element
Ilan Peer
ilan.peer at intel.com
Wed Oct 21 06:43:20 PDT 2026
Add definitions for SMD BSS Transition Parameters Element as
defined in Draft IEEE P802.11bn D2.0, and support parsing it.
Signed-off-by: Ilan Peer <ilan.peer at intel.com>
---
src/common/ieee802_11_common.c | 6 ++++
src/common/ieee802_11_common.h | 2 ++
src/common/ieee802_11_defs.h | 59 ++++++++++++++++++++++++++++++++++
3 files changed, 67 insertions(+)
diff --git a/src/common/ieee802_11_common.c b/src/common/ieee802_11_common.c
index 635c7fac7d95..f7076f7923df 100644
--- a/src/common/ieee802_11_common.c
+++ b/src/common/ieee802_11_common.c
@@ -440,6 +440,12 @@ static int ieee802_11_parse_extension(const u8 *pos, size_t elen,
elems->pasn_encrypted_data = pos;
elems->pasn_encrypted_data_len = elen;
break;
+ case WLAN_EID_EXT_SMD_BSS_TR_PARAMS:
+ if (elen < 1)
+ break;
+ elems->smd_bss_trans_params = pos;
+ elems->smd_bss_trans_params_len = elen;
+ break;
case WLAN_EID_EXT_SMD_INFO:
if (elen != sizeof(struct ieee80211_smd_info))
break;
diff --git a/src/common/ieee802_11_common.h b/src/common/ieee802_11_common.h
index b9d8380b600f..81e04a04d9a5 100644
--- a/src/common/ieee802_11_common.h
+++ b/src/common/ieee802_11_common.h
@@ -171,6 +171,7 @@ struct ieee802_11_elems {
const u8 *security_profile;
const u8 *pqc_parameter;
const u8 *smd_information;
+ const u8 *smd_bss_trans_params;
u8 ssid_len;
u8 supp_rates_len;
@@ -249,6 +250,7 @@ struct ieee802_11_elems {
u8 uhr_operation_len;
u8 security_profile_len;
size_t pqc_parameter_len;
+ size_t smd_bss_trans_params_len;
struct mb_ies_info mb_ies;
diff --git a/src/common/ieee802_11_defs.h b/src/common/ieee802_11_defs.h
index 7ded1d727533..54db1d60cdf7 100644
--- a/src/common/ieee802_11_defs.h
+++ b/src/common/ieee802_11_defs.h
@@ -3461,6 +3461,65 @@ struct ieee80211_smd_info {
u8 prep_timeout;
} STRUCT_PACKED;
+/* IEEE P802.11bn/D2.0, 9.4.2.364.2, Figures 9-aa46 and 9-aa47 */
+#define ST_PREP_REQ_ST_INFO_DL_SN_NOT_TRANS 0x1
+#define ST_PREP_REQ_ST_INFO_UL_SN_NOT_TRANS 0x2
+#define ST_PREP_REQ_ST_INFO_SCS_LIST_PRES 0x4
+
+struct ieee80211_st_prep_req_st_info {
+ u8 control;
+ le16 listen_interval;
+
+ /* Followed by optional fields: SCS List (variable) */
+ u8 variable[];
+} STRUCT_PACKED;
+
+/* IEEE P802.11bn/D2.0, 9.4.2.364.3, Figures 9-aa50 and 9-aa51 */
+#define ST_PREP_RESP_ST_INFO_DL_BA_INFO_PRES 0x1
+#define ST_PREP_RESP_ST_INFO_UL_BA_INFO_PRES 0x2
+#define ST_PREP_RESP_ST_INFO_SCS_LIST_PRES 0x4
+
+struct ieee80211_st_prep_resp_st_info {
+ u8 control;
+
+ /*
+ * Followed by optional fields:
+ * - DL BA info (variable length)
+ * - UL BA info (variable length)
+ * - SCS List (variable length)
+ */
+ u8 variable[];
+} STRUCT_PACKED;
+
+/* IEEE P802.11bn/D2.0, 9.4.2.364.4, Figures 9-aa55 and 9-aa56 */
+#define ST_EXEC_REQ_ST_INFO_DL_TID_BITMAP_PRES 0x1
+#define ST_EXEC_REQ_ST_INFO_DL_BA_INFO_PRES 0x2
+
+struct ieee80211_st_exec_req_st_info {
+ u8 control;
+
+ /*
+ * Followed by optional fields:
+ * - DL TID Bitmap (1 octet)
+ * - DL BA Info (variable length)
+ */
+ u8 variable[];
+} STRUCT_PACKED;
+
+/* IEEE P802.11bn/D2.0, 9.4.2.364.5, Figures 9-aa57 and 9-aa58 */
+#define ST_EXEC_RESP_ST_INFO_DL_DRAIN_DUR_PRES 0x1
+#define ST_EXEC_RESP_ST_INFO_UL_SN_LIST_PRES 0x2
+struct ieee80211_st_exec_resp_st_info {
+ u8 control;
+
+ /*
+ * Followed by optional fields:
+ * - Nominal Maximum DL Draining Period Duration in TUs (2 octets)
+ * - Latest UL SN List (variable length)
+ */
+ u8 variable[];
+} STRUCT_PACKED;
+
#ifdef _MSC_VER
#pragma pack(pop)
#endif /* _MSC_VER */
--
2.55.0
More information about the Hostap
mailing list