[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