git: fa02d9fceab7 - main - net80211: add the beginning of the extfield information elements (IE ext)

From: Bjoern A. Zeeb <bz_at_FreeBSD.org>
Date: Thu, 05 Jun 2025 14:34:13 UTC
The branch main has been updated by bz:

URL: https://cgit.FreeBSD.org/src/commit/?id=fa02d9fceab7d452d5b3312a89b4e7b95529edcd

commit fa02d9fceab7d452d5b3312a89b4e7b95529edcd
Author:     Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2025-06-02 16:00:37 +0000
Commit:     Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2025-06-05 14:33:50 +0000

    net80211: add the beginning of the extfield information elements (IE ext)
    
    The original list of IEs got expanded from TLV to TLextTV.
    If the T matches 255 then we have a second list of IEs where the
    meaning of TL stays the same. That means the 1 octet extT is part
    of the length and the value starts at ie+3.
    
    Start populating the list with IEEE802.11-2020 and 802.11ax-2021
    values.
    
    They will be initially used to start decoding some of the announced IEs
    for ifconfig [-v] list (scan|sta).  That should help users with
    AX-enabled APs to see this (rather than no or UNKNOWN_ELEMID_255 and
    make debugging easier once we implement 11ax.
    
    Sposored by:    The FreeBSD Foundation
    MFC after:      3 days
    Reviewed by:    adrian
    Differential Revision: https://reviews.freebsd.org/D50674
---
 sys/net80211/ieee80211.h | 69 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 69 insertions(+)

diff --git a/sys/net80211/ieee80211.h b/sys/net80211/ieee80211.h
index bab74d0ca41c..cca721e6b54e 100644
--- a/sys/net80211/ieee80211.h
+++ b/sys/net80211/ieee80211.h
@@ -1102,6 +1102,7 @@ struct ieee80211_ie_vht_txpwrenv {
  * Management information element payloads.
  *
  * 802.11-2020 Table 9-92 (Element IDs).
+ * 802.11ax-2021
  */
 
 enum {
@@ -1343,6 +1344,74 @@ enum {
 	IEEE80211_ELEMID_EXTFIELD	= 255
 };
 
+enum ieee80211_elemid_ext {
+	IEEE80211_ELEMID_EXT_ASSOC_DELAY_INFO		= 1,
+	IEEE80211_ELEMID_EXT_FILS_REQ_PARAMS		= 2,
+	IEEE80211_ELEMID_EXT_FILS_KEY_CONFIRM		= 3,
+	IEEE80211_ELEMID_EXT_FILS_SESSION		= 4,
+	IEEE80211_ELEMID_EXT_FILS_HLP_CONTAINER		= 5,
+	IEEE80211_ELEMID_EXT_FILS_IP_ADDR_ASSIGNMENT	= 6,
+	IEEE80211_ELEMID_EXT_KEY_DELIVERY		= 7,
+	IEEE80211_ELEMID_EXT_FILS_WRAPPED_DATA		= 8,
+	IEEE80211_ELEMID_EXT_FTM_SYNC_INFO		= 9,
+	IEEE80211_ELEMID_EXT_EXT_REQ			= 10,
+	IEEE80211_ELEMID_EXT_EST_SERVICE_PARAM_INBOUND	= 11,
+	IEEE80211_ELEMID_EXT_FILS_PUBLIC_KEY		= 12,
+	IEEE80211_ELEMID_EXT_FILS_NONCE			= 13,
+	IEEE80211_ELEMID_EXT_FUTURE_CHAN_GUIDANCE	= 14,
+	IEEE80211_ELEMID_EXT_SERVICE_HINT		= 15,
+	IEEE80211_ELEMID_EXT_SERVICE_HASH		= 16,
+	IEEE80211_ELEMID_EXT_CDMG_CAPA			= 17,
+	IEEE80211_ELEMID_EXT_DYN_BW_CTRL		= 18,
+	IEEE80211_ELEMID_EXT_CDMG_EXT_SCHEDULE		= 19,
+	IEEE80211_ELEMID_EXT_SSW_REPORT			= 20,
+	IEEE80211_ELEMID_EXT_CLUSTER_PROBE		= 21,
+	IEEE80211_ELEMID_EXT_EXT_CLUSTER_REPORT		= 22,
+	IEEE80211_ELEMID_EXT_CLUSTER_SW_ANNOUNCEMENT	= 23,
+	IEEE80211_ELEMID_EXT_ENHANCED_BEAM_TRACKING	= 24,
+	IEEE80211_ELEMID_EXT_SPSH_REPORT		= 25,
+	IEEE80211_ELEMID_EXT_CLUSTER_INTERF_ASSESS	= 26,
+	IEEE80211_ELEMID_EXT_CMMG_CAPA			= 27,
+	IEEE80211_ELEMID_EXT_CMMG_OPER			= 28,
+	IEEE80211_ELEMID_EXT_CMMG_OPMODE_NOTIF		= 29,
+	IEEE80211_ELEMID_EXT_CMMG_LINK_MARGIN		= 30,
+	IEEE80211_ELEMID_EXT_CMMG_LINK_ADAP_ACK		= 31,
+	/* 32 reserved. */
+	IEEE80211_ELEMID_EXT_PASSWORD_ID		= 33,
+	IEEE80211_ELEMID_EXT_GLK_GCR_PARAM_SET		= 34,
+	IEEE80211_ELEMID_EXT_HE_CAPA			= 35,
+	IEEE80211_ELEMID_EXT_HE_OPER			= 36,
+	IEEE80211_ELEMID_EXT_UORA_PARAM_SET		= 37,
+	IEEE80211_ELEMID_EXT_MU_EDCA_PARAM_SET		= 38,
+	IEEE80211_ELEMID_EXT_SPATIAL_REUSE_PARAM_SET	= 39,
+	IEEE80211_ELEMID_EXT_GAS_EXTENSION		= 40,
+	IEEE80211_ELEMID_EXT_NDP_FEEDB_REPORT_PARAM	= 41,
+	IEEE80211_ELEMID_EXT_BSS_COLOR_CHG_ANNOUNCE	= 42,
+	IEEE80211_ELEMID_EXT_QUIET_TIMME_PERIOD		= 43,
+	IEEE80211_ELEMID_EXT_VENDOR_SPECIFIC_REQ_ELEM	= 44,
+	IEEE80211_ELEMID_EXT_ESS_REPORT			= 45,
+	IEEE80211_ELEMID_EXT_OPS			= 46,
+	IEEE80211_ELEMID_EXT_HE_BSS_LOAD		= 47,
+	/* 48-51 reserved. */
+	IEEE80211_ELEMID_EXT_MAC_CH_SW_TIME		= 52,
+	IEEE80211_ELEMID_EXT_EST_SERVICE_PARAM_OUTBOUND	= 53,
+	IEEE80211_ELEMID_EXT_OCI			= 54,
+	IEEE80211_ELEMID_EXT_MULTI_BSSID_CONFIG		= 55,
+	IEEE80211_ELEMID_EXT_NON_INHERITANCE		= 56,
+	IEEE80211_ELEMID_EXT_KNOWN_BSSID		= 57,
+	IEEE80211_ELEMID_EXT_SHORT_SSID_LIST		= 58,
+	IEEE80211_ELEMID_EXT_HE_6GHZ_BAND_CAPA		= 59,
+	IEEE80211_ELEMID_EXT_ULMU_POWER_CAAP		= 60,
+	/* 61-87 reserved. */
+	IEEE80211_ELEMID_EXT_MSCS_DESCRIPTOR		= 88,
+	IEEE80211_ELEMID_EXT_TCLAS_MASK			= 89,
+	IEEE80211_ELEMID_EXT_SUPPL_CLASS_2_CAPA		= 90,
+	IEEE80211_ELEMID_EXT_OCT_SOURCE			= 91,
+	IEEE80211_ELEMID_EXT_REJECTED_GROUPS		= 92,
+	IEEE80211_ELEMID_EXT_ANTI_CLOGGING_TAOKEN_CONTAINER = 93,
+	/* 94-255 reserved. */
+};
+
 struct ieee80211_tim_ie {
 	uint8_t		tim_ie;			/* IEEE80211_ELEMID_TIM */
 	uint8_t		tim_len;