From a39239c62e4d86cbd0afacbcf2f286341cb4695f Mon Sep 17 00:00:00 2001 From: Aloka Dixit Date: Mon, 28 Jun 2021 13:27:48 -0700 Subject: [PATCH 02/23] eht: define EHT elements Define following fields described in IEEE P802.11be/D1.4, January 2022, - 9.4.2.313 EHT Capabilities element - 9.4.2.311 EHT Operation element Signed-off-by: Aloka Dixit --- src/common/ieee802_11_defs.h | 77 ++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) --- a/src/common/ieee802_11_defs.h +++ b/src/common/ieee802_11_defs.h @@ -493,6 +493,9 @@ #define WLAN_EID_EXT_REJECTED_GROUPS 92 #define WLAN_EID_EXT_ANTI_CLOGGING_TOKEN 93 #define WLAN_EID_EXT_PASN_PARAMS 100 +#define WLAN_EID_EXT_EHT_OPERATION 106 +#define WLAN_EID_EXT_EHT_MULTI_LINK 107 +#define WLAN_EID_EXT_EHT_CAPABILITY 108 /* Operating Triplet can be any integer >= 201 * From IEEE P802.11-REVmd/D4.0: The first octet in each Subband @@ -2404,6 +2407,80 @@ struct ieee80211_he_mu_edca_parameter_se /* B7: Reserved if sent by an AP; More Data Ack if sent by a non-AP STA */ #define HE_QOS_INFO_MORE_DATA_ACK ((u8) (BIT(7))) +#define EHT_MAC_CAPAB_MAX_LEN 2 +#define EHT_PHY_CAPAB_MAX_LEN 9 +#define EHT_MCS_NSS_CAPAB_MAX_LEN 9 +/* + * Maximum PPE threshold length: 62 bytes + * NSS: 4 bits (maximum NSS: 16), RU index: 5 bits, each pair: 6 bits + * 9 + (5 * 16 * 6) = 489 bits, Padding: 7 bits + */ +#define EHT_PPE_THRESH_CAPAB_MAX_LEN 62 + +/* IEEE P802.11be/D1.4, January 2022, section 9.4.2.313 */ +struct ieee80211_eht_capabilities { + u8 mac_cap[EHT_MAC_CAPAB_MAX_LEN]; + u8 phy_cap[EHT_PHY_CAPAB_MAX_LEN]; + u8 optional[71]; +} STRUCT_PACKED; + +/* + * struct ieee80211_eht_operation - eht operation element + * + * This structure is the "EHT Operation Element" fields as + * described in P802.11be_D1.4 section 9.4.2.311 + * + * FIXME: The spec is unclear how big the fields are, and doesn't + * indicate the "Disabled Subchannel Bitmap Present" in the + * structure (Figure 9-1002a) at all ... + */ +struct ieee80211_eht_operation { + u8 chan_width; + u8 ccfs; + u8 present_bm; + /* contains disabled subchannel bitmap */ + u8 optional[]; +} STRUCT_PACKED; + +/* IEEE P802.11be/D1.4, January 2022, section 9.4.2.313.3 */ +#define EHT_PHYCAP_320MHZ_IN_6GHZ_SUPPORT_IDX 0 +#define EHT_PHYCAP_320MHZ_IN_6GHZ_SUPPORT_MASK ((u8) BIT(1)) + +#define EHT_PHYCAP_SU_BEAMFORMER_IDX 0 +#define EHT_PHYCAP_SU_BEAMFORMER ((u8) BIT(5)) +#define EHT_PHYCAP_SU_BEAMFORMEE_IDX 0 +#define EHT_PHYCAP_SU_BEAMFORMEE ((u8) BIT(6)) + +#define EHT_PHYCAP_PPE_THRESHOLD_PRESENT_IDX 5 +#define EHT_PHYCAP_PPE_THRESHOLD_PRESENT ((u8) BIT(3)) + +#define EHT_PHYCAP_PPE_THRESHOLD_PRESENT_IDX 5 + +#define EHT_PHYCAP_MU_BEAMFORMER_IDX 7 +#define EHT_PHYCAP_MU_BEAMFORMER_80MHZ ((u8) BIT(4)) +#define EHT_PHYCAP_MU_BEAMFORMER_160MHZ ((u8) BIT(5)) +#define EHT_PHYCAP_MU_BEAMFORMER_320MHZ ((u8) BIT(6)) +#define EHT_PHYCAP_MU_BEAMFORMER_MASK (EHT_PHYCAP_MU_BEAMFORMER_80MHZ | \ + EHT_PHYCAP_MU_BEAMFORMER_160MHZ | \ + EHT_PHYCAP_MU_BEAMFORMER_320MHZ) + +/* + * IEEE P802.11be/D1.0, May 2021, + * section 9.4.2.295c.4 Supported EHT-MCS And NSS Set field + */ +#define EHT_NSS_MAX_STREAMS 8 +#define EHT_PHYCAP_MCS_NSS_LEN_20MHZ_ONLY 4 +#define EHT_PHYCAP_MCS_NSS_LEN_20MHZ_PLUS 3 + +/* IEEE P802.11be/D1.0, May 2021, 9.4.2.295c.5 EHT PPE Thresholds field */ +#define EHT_PPE_THRES_NSS_SHIFT 0 +#define EHT_PPE_THRES_NSS_MASK ((u8) (BIT(0) | BIT(1) | \ + BIT(2) | BIT(3))) +#define EHT_PPE_THRES_RU_INDEX_SHIFT 4 +#define EHT_PPE_THRES_RU_INDEX_MASK ((u8) (BIT(0) | BIT(1) | \ + BIT(2) | BIT(3) | \ + BIT(4))) + /* IEEE P802.11ay/D4.0, 9.4.2.251 - EDMG Operation element */ #define EDMG_BSS_OPERATING_CHANNELS_OFFSET 6 #define EDMG_OPERATING_CHANNEL_WIDTH_OFFSET 7