1bfcc09ddSBjoern A. Zeeb /* SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause */ 2bfcc09ddSBjoern A. Zeeb /* 3*a4128aadSBjoern A. Zeeb * Copyright (C) 2012-2014, 2018-2022, 2024 Intel Corporation 4bfcc09ddSBjoern A. Zeeb * Copyright (C) 2017 Intel Deutschland GmbH 5bfcc09ddSBjoern A. Zeeb */ 6bfcc09ddSBjoern A. Zeeb #ifndef __iwl_fw_api_mac_h__ 7bfcc09ddSBjoern A. Zeeb #define __iwl_fw_api_mac_h__ 8bfcc09ddSBjoern A. Zeeb 9bfcc09ddSBjoern A. Zeeb /* 10bfcc09ddSBjoern A. Zeeb * The first MAC indices (starting from 0) are available to the driver, 11bfcc09ddSBjoern A. Zeeb * AUX indices follows - 1 for non-CDB, 2 for CDB. 12bfcc09ddSBjoern A. Zeeb */ 13bfcc09ddSBjoern A. Zeeb #define MAC_INDEX_AUX 4 14bfcc09ddSBjoern A. Zeeb #define MAC_INDEX_MIN_DRIVER 0 15bfcc09ddSBjoern A. Zeeb #define NUM_MAC_INDEX_DRIVER MAC_INDEX_AUX 16bfcc09ddSBjoern A. Zeeb #define NUM_MAC_INDEX (NUM_MAC_INDEX_DRIVER + 1) 17bfcc09ddSBjoern A. Zeeb #define NUM_MAC_INDEX_CDB (NUM_MAC_INDEX_DRIVER + 2) 18bfcc09ddSBjoern A. Zeeb 19bfcc09ddSBjoern A. Zeeb #define IWL_MVM_STATION_COUNT_MAX 16 20bfcc09ddSBjoern A. Zeeb #define IWL_MVM_INVALID_STA 0xFF 21bfcc09ddSBjoern A. Zeeb 22bfcc09ddSBjoern A. Zeeb enum iwl_ac { 23bfcc09ddSBjoern A. Zeeb AC_BK, 24bfcc09ddSBjoern A. Zeeb AC_BE, 25bfcc09ddSBjoern A. Zeeb AC_VI, 26bfcc09ddSBjoern A. Zeeb AC_VO, 27bfcc09ddSBjoern A. Zeeb AC_NUM, 28bfcc09ddSBjoern A. Zeeb }; 29bfcc09ddSBjoern A. Zeeb 30bfcc09ddSBjoern A. Zeeb /** 31bfcc09ddSBjoern A. Zeeb * enum iwl_mac_protection_flags - MAC context flags 32bfcc09ddSBjoern A. Zeeb * @MAC_PROT_FLG_TGG_PROTECT: 11g protection when transmitting OFDM frames, 33bfcc09ddSBjoern A. Zeeb * this will require CCK RTS/CTS2self. 34bfcc09ddSBjoern A. Zeeb * RTS/CTS will protect full burst time. 35bfcc09ddSBjoern A. Zeeb * @MAC_PROT_FLG_HT_PROT: enable HT protection 36bfcc09ddSBjoern A. Zeeb * @MAC_PROT_FLG_FAT_PROT: protect 40 MHz transmissions 37bfcc09ddSBjoern A. Zeeb * @MAC_PROT_FLG_SELF_CTS_EN: allow CTS2self 38bfcc09ddSBjoern A. Zeeb */ 39bfcc09ddSBjoern A. Zeeb enum iwl_mac_protection_flags { 40bfcc09ddSBjoern A. Zeeb MAC_PROT_FLG_TGG_PROTECT = BIT(3), 41bfcc09ddSBjoern A. Zeeb MAC_PROT_FLG_HT_PROT = BIT(23), 42bfcc09ddSBjoern A. Zeeb MAC_PROT_FLG_FAT_PROT = BIT(24), 43bfcc09ddSBjoern A. Zeeb MAC_PROT_FLG_SELF_CTS_EN = BIT(30), 44bfcc09ddSBjoern A. Zeeb }; 45bfcc09ddSBjoern A. Zeeb 46bfcc09ddSBjoern A. Zeeb #define MAC_FLG_SHORT_SLOT BIT(4) 47bfcc09ddSBjoern A. Zeeb #define MAC_FLG_SHORT_PREAMBLE BIT(5) 48bfcc09ddSBjoern A. Zeeb 49bfcc09ddSBjoern A. Zeeb /** 50bfcc09ddSBjoern A. Zeeb * enum iwl_mac_types - Supported MAC types 51bfcc09ddSBjoern A. Zeeb * @FW_MAC_TYPE_FIRST: lowest supported MAC type 52bfcc09ddSBjoern A. Zeeb * @FW_MAC_TYPE_AUX: Auxiliary MAC (internal) 53bfcc09ddSBjoern A. Zeeb * @FW_MAC_TYPE_LISTENER: monitor MAC type (?) 54bfcc09ddSBjoern A. Zeeb * @FW_MAC_TYPE_PIBSS: Pseudo-IBSS 55bfcc09ddSBjoern A. Zeeb * @FW_MAC_TYPE_IBSS: IBSS 56bfcc09ddSBjoern A. Zeeb * @FW_MAC_TYPE_BSS_STA: BSS (managed) station 57bfcc09ddSBjoern A. Zeeb * @FW_MAC_TYPE_P2P_DEVICE: P2P Device 58bfcc09ddSBjoern A. Zeeb * @FW_MAC_TYPE_P2P_STA: P2P client 59bfcc09ddSBjoern A. Zeeb * @FW_MAC_TYPE_GO: P2P GO 60bfcc09ddSBjoern A. Zeeb * @FW_MAC_TYPE_TEST: ? 61bfcc09ddSBjoern A. Zeeb * @FW_MAC_TYPE_MAX: highest support MAC type 62bfcc09ddSBjoern A. Zeeb */ 63bfcc09ddSBjoern A. Zeeb enum iwl_mac_types { 64bfcc09ddSBjoern A. Zeeb FW_MAC_TYPE_FIRST = 1, 65bfcc09ddSBjoern A. Zeeb FW_MAC_TYPE_AUX = FW_MAC_TYPE_FIRST, 66bfcc09ddSBjoern A. Zeeb FW_MAC_TYPE_LISTENER, 67bfcc09ddSBjoern A. Zeeb FW_MAC_TYPE_PIBSS, 68bfcc09ddSBjoern A. Zeeb FW_MAC_TYPE_IBSS, 69bfcc09ddSBjoern A. Zeeb FW_MAC_TYPE_BSS_STA, 70bfcc09ddSBjoern A. Zeeb FW_MAC_TYPE_P2P_DEVICE, 71bfcc09ddSBjoern A. Zeeb FW_MAC_TYPE_P2P_STA, 72bfcc09ddSBjoern A. Zeeb FW_MAC_TYPE_GO, 73bfcc09ddSBjoern A. Zeeb FW_MAC_TYPE_TEST, 74bfcc09ddSBjoern A. Zeeb FW_MAC_TYPE_MAX = FW_MAC_TYPE_TEST 75bfcc09ddSBjoern A. Zeeb }; /* MAC_CONTEXT_TYPE_API_E_VER_1 */ 76bfcc09ddSBjoern A. Zeeb 77bfcc09ddSBjoern A. Zeeb /** 78bfcc09ddSBjoern A. Zeeb * enum iwl_tsf_id - TSF hw timer ID 79bfcc09ddSBjoern A. Zeeb * @TSF_ID_A: use TSF A 80bfcc09ddSBjoern A. Zeeb * @TSF_ID_B: use TSF B 81bfcc09ddSBjoern A. Zeeb * @TSF_ID_C: use TSF C 82bfcc09ddSBjoern A. Zeeb * @TSF_ID_D: use TSF D 83bfcc09ddSBjoern A. Zeeb * @NUM_TSF_IDS: number of TSF timers available 84bfcc09ddSBjoern A. Zeeb */ 85bfcc09ddSBjoern A. Zeeb enum iwl_tsf_id { 86bfcc09ddSBjoern A. Zeeb TSF_ID_A = 0, 87bfcc09ddSBjoern A. Zeeb TSF_ID_B = 1, 88bfcc09ddSBjoern A. Zeeb TSF_ID_C = 2, 89bfcc09ddSBjoern A. Zeeb TSF_ID_D = 3, 90bfcc09ddSBjoern A. Zeeb NUM_TSF_IDS = 4, 91bfcc09ddSBjoern A. Zeeb }; /* TSF_ID_API_E_VER_1 */ 92bfcc09ddSBjoern A. Zeeb 93bfcc09ddSBjoern A. Zeeb /** 94bfcc09ddSBjoern A. Zeeb * struct iwl_mac_data_ap - configuration data for AP MAC context 95bfcc09ddSBjoern A. Zeeb * @beacon_time: beacon transmit time in system time 96bfcc09ddSBjoern A. Zeeb * @beacon_tsf: beacon transmit time in TSF 97bfcc09ddSBjoern A. Zeeb * @bi: beacon interval in TU 98bfcc09ddSBjoern A. Zeeb * @reserved1: reserved 99bfcc09ddSBjoern A. Zeeb * @dtim_interval: dtim transmit time in TU 100bfcc09ddSBjoern A. Zeeb * @reserved2: reserved 101bfcc09ddSBjoern A. Zeeb * @mcast_qid: queue ID for multicast traffic. 102bfcc09ddSBjoern A. Zeeb * NOTE: obsolete from VER2 and on 103bfcc09ddSBjoern A. Zeeb * @beacon_template: beacon template ID 104bfcc09ddSBjoern A. Zeeb */ 105bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_ap { 106bfcc09ddSBjoern A. Zeeb __le32 beacon_time; 107bfcc09ddSBjoern A. Zeeb __le64 beacon_tsf; 108bfcc09ddSBjoern A. Zeeb __le32 bi; 109bfcc09ddSBjoern A. Zeeb __le32 reserved1; 110bfcc09ddSBjoern A. Zeeb __le32 dtim_interval; 111bfcc09ddSBjoern A. Zeeb __le32 reserved2; 112bfcc09ddSBjoern A. Zeeb __le32 mcast_qid; 113bfcc09ddSBjoern A. Zeeb __le32 beacon_template; 114bfcc09ddSBjoern A. Zeeb } __packed; /* AP_MAC_DATA_API_S_VER_2 */ 115bfcc09ddSBjoern A. Zeeb 116bfcc09ddSBjoern A. Zeeb /** 117bfcc09ddSBjoern A. Zeeb * struct iwl_mac_data_ibss - configuration data for IBSS MAC context 118bfcc09ddSBjoern A. Zeeb * @beacon_time: beacon transmit time in system time 119bfcc09ddSBjoern A. Zeeb * @beacon_tsf: beacon transmit time in TSF 120bfcc09ddSBjoern A. Zeeb * @bi: beacon interval in TU 121bfcc09ddSBjoern A. Zeeb * @reserved: reserved 122bfcc09ddSBjoern A. Zeeb * @beacon_template: beacon template ID 123bfcc09ddSBjoern A. Zeeb */ 124bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_ibss { 125bfcc09ddSBjoern A. Zeeb __le32 beacon_time; 126bfcc09ddSBjoern A. Zeeb __le64 beacon_tsf; 127bfcc09ddSBjoern A. Zeeb __le32 bi; 128bfcc09ddSBjoern A. Zeeb __le32 reserved; 129bfcc09ddSBjoern A. Zeeb __le32 beacon_template; 130bfcc09ddSBjoern A. Zeeb } __packed; /* IBSS_MAC_DATA_API_S_VER_1 */ 131bfcc09ddSBjoern A. Zeeb 132bfcc09ddSBjoern A. Zeeb /** 133bfcc09ddSBjoern A. Zeeb * enum iwl_mac_data_policy - policy of the data path for this MAC 134bfcc09ddSBjoern A. Zeeb * @TWT_SUPPORTED: twt is supported 135bfcc09ddSBjoern A. Zeeb * @MORE_DATA_ACK_SUPPORTED: AP supports More Data Ack according to 136bfcc09ddSBjoern A. Zeeb * paragraph 9.4.1.17 in P802.11ax_D4 specification. Used for TWT 137bfcc09ddSBjoern A. Zeeb * early termination detection. 138bfcc09ddSBjoern A. Zeeb * @FLEXIBLE_TWT_SUPPORTED: AP supports flexible TWT schedule 139bfcc09ddSBjoern A. Zeeb * @PROTECTED_TWT_SUPPORTED: AP supports protected TWT frames (with 11w) 140bfcc09ddSBjoern A. Zeeb * @BROADCAST_TWT_SUPPORTED: AP and STA support broadcast TWT 141bfcc09ddSBjoern A. Zeeb * @COEX_HIGH_PRIORITY_ENABLE: high priority mode for BT coex, to be used 142bfcc09ddSBjoern A. Zeeb * during 802.1X negotiation (and allowed during 4-way-HS) 143bfcc09ddSBjoern A. Zeeb */ 144bfcc09ddSBjoern A. Zeeb enum iwl_mac_data_policy { 145bfcc09ddSBjoern A. Zeeb TWT_SUPPORTED = BIT(0), 146bfcc09ddSBjoern A. Zeeb MORE_DATA_ACK_SUPPORTED = BIT(1), 147bfcc09ddSBjoern A. Zeeb FLEXIBLE_TWT_SUPPORTED = BIT(2), 148bfcc09ddSBjoern A. Zeeb PROTECTED_TWT_SUPPORTED = BIT(3), 149bfcc09ddSBjoern A. Zeeb BROADCAST_TWT_SUPPORTED = BIT(4), 150bfcc09ddSBjoern A. Zeeb COEX_HIGH_PRIORITY_ENABLE = BIT(5), 151bfcc09ddSBjoern A. Zeeb }; 152bfcc09ddSBjoern A. Zeeb 153bfcc09ddSBjoern A. Zeeb /** 154bfcc09ddSBjoern A. Zeeb * struct iwl_mac_data_sta - configuration data for station MAC context 155bfcc09ddSBjoern A. Zeeb * @is_assoc: 1 for associated state, 0 otherwise 156bfcc09ddSBjoern A. Zeeb * @dtim_time: DTIM arrival time in system time 157bfcc09ddSBjoern A. Zeeb * @dtim_tsf: DTIM arrival time in TSF 158bfcc09ddSBjoern A. Zeeb * @bi: beacon interval in TU, applicable only when associated 159bfcc09ddSBjoern A. Zeeb * @reserved1: reserved 160bfcc09ddSBjoern A. Zeeb * @dtim_interval: DTIM interval in TU, applicable only when associated 161bfcc09ddSBjoern A. Zeeb * @data_policy: see &enum iwl_mac_data_policy 162bfcc09ddSBjoern A. Zeeb * @listen_interval: in beacon intervals, applicable only when associated 163bfcc09ddSBjoern A. Zeeb * @assoc_id: unique ID assigned by the AP during association 164bfcc09ddSBjoern A. Zeeb * @assoc_beacon_arrive_time: TSF of first beacon after association 165bfcc09ddSBjoern A. Zeeb */ 166bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_sta { 167bfcc09ddSBjoern A. Zeeb __le32 is_assoc; 168bfcc09ddSBjoern A. Zeeb __le32 dtim_time; 169bfcc09ddSBjoern A. Zeeb __le64 dtim_tsf; 170bfcc09ddSBjoern A. Zeeb __le32 bi; 171bfcc09ddSBjoern A. Zeeb __le32 reserved1; 172bfcc09ddSBjoern A. Zeeb __le32 dtim_interval; 173bfcc09ddSBjoern A. Zeeb __le32 data_policy; 174bfcc09ddSBjoern A. Zeeb __le32 listen_interval; 175bfcc09ddSBjoern A. Zeeb __le32 assoc_id; 176bfcc09ddSBjoern A. Zeeb __le32 assoc_beacon_arrive_time; 177bfcc09ddSBjoern A. Zeeb } __packed; /* STA_MAC_DATA_API_S_VER_2 */ 178bfcc09ddSBjoern A. Zeeb 179bfcc09ddSBjoern A. Zeeb /** 180bfcc09ddSBjoern A. Zeeb * struct iwl_mac_data_go - configuration data for P2P GO MAC context 181bfcc09ddSBjoern A. Zeeb * @ap: iwl_mac_data_ap struct with most config data 182bfcc09ddSBjoern A. Zeeb * @ctwin: client traffic window in TU (period after TBTT when GO is present). 183bfcc09ddSBjoern A. Zeeb * 0 indicates that there is no CT window. 184bfcc09ddSBjoern A. Zeeb * @opp_ps_enabled: indicate that opportunistic PS allowed 185bfcc09ddSBjoern A. Zeeb */ 186bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_go { 187bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_ap ap; 188bfcc09ddSBjoern A. Zeeb __le32 ctwin; 189bfcc09ddSBjoern A. Zeeb __le32 opp_ps_enabled; 190bfcc09ddSBjoern A. Zeeb } __packed; /* GO_MAC_DATA_API_S_VER_1 */ 191bfcc09ddSBjoern A. Zeeb 192bfcc09ddSBjoern A. Zeeb /** 193bfcc09ddSBjoern A. Zeeb * struct iwl_mac_data_p2p_sta - configuration data for P2P client MAC context 194bfcc09ddSBjoern A. Zeeb * @sta: iwl_mac_data_sta struct with most config data 195bfcc09ddSBjoern A. Zeeb * @ctwin: client traffic window in TU (period after TBTT when GO is present). 196bfcc09ddSBjoern A. Zeeb * 0 indicates that there is no CT window. 197bfcc09ddSBjoern A. Zeeb */ 198bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_p2p_sta { 199bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_sta sta; 200bfcc09ddSBjoern A. Zeeb __le32 ctwin; 201bfcc09ddSBjoern A. Zeeb } __packed; /* P2P_STA_MAC_DATA_API_S_VER_2 */ 202bfcc09ddSBjoern A. Zeeb 203bfcc09ddSBjoern A. Zeeb /** 204bfcc09ddSBjoern A. Zeeb * struct iwl_mac_data_pibss - Pseudo IBSS config data 205bfcc09ddSBjoern A. Zeeb * @stats_interval: interval in TU between statistics notifications to host. 206bfcc09ddSBjoern A. Zeeb */ 207bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_pibss { 208bfcc09ddSBjoern A. Zeeb __le32 stats_interval; 209bfcc09ddSBjoern A. Zeeb } __packed; /* PIBSS_MAC_DATA_API_S_VER_1 */ 210bfcc09ddSBjoern A. Zeeb 211bfcc09ddSBjoern A. Zeeb /* 212bfcc09ddSBjoern A. Zeeb * struct iwl_mac_data_p2p_dev - configuration data for the P2P Device MAC 213bfcc09ddSBjoern A. Zeeb * context. 214bfcc09ddSBjoern A. Zeeb * @is_disc_extended: if set to true, P2P Device discoverability is enabled on 215bfcc09ddSBjoern A. Zeeb * other channels as well. This should be to true only in case that the 216bfcc09ddSBjoern A. Zeeb * device is discoverable and there is an active GO. Note that setting this 217bfcc09ddSBjoern A. Zeeb * field when not needed, will increase the number of interrupts and have 218bfcc09ddSBjoern A. Zeeb * effect on the platform power, as this setting opens the Rx filters on 219bfcc09ddSBjoern A. Zeeb * all macs. 220bfcc09ddSBjoern A. Zeeb */ 221bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_p2p_dev { 222bfcc09ddSBjoern A. Zeeb __le32 is_disc_extended; 223bfcc09ddSBjoern A. Zeeb } __packed; /* _P2P_DEV_MAC_DATA_API_S_VER_1 */ 224bfcc09ddSBjoern A. Zeeb 225bfcc09ddSBjoern A. Zeeb /** 226bfcc09ddSBjoern A. Zeeb * enum iwl_mac_filter_flags - MAC context filter flags 227bfcc09ddSBjoern A. Zeeb * @MAC_FILTER_IN_PROMISC: accept all data frames 228bfcc09ddSBjoern A. Zeeb * @MAC_FILTER_IN_CONTROL_AND_MGMT: pass all management and 229bfcc09ddSBjoern A. Zeeb * control frames to the host 230bfcc09ddSBjoern A. Zeeb * @MAC_FILTER_ACCEPT_GRP: accept multicast frames 231bfcc09ddSBjoern A. Zeeb * @MAC_FILTER_DIS_DECRYPT: don't decrypt unicast frames 232bfcc09ddSBjoern A. Zeeb * @MAC_FILTER_DIS_GRP_DECRYPT: don't decrypt multicast frames 233bfcc09ddSBjoern A. Zeeb * @MAC_FILTER_IN_BEACON: transfer foreign BSS's beacons to host 234bfcc09ddSBjoern A. Zeeb * (in station mode when associated) 235bfcc09ddSBjoern A. Zeeb * @MAC_FILTER_OUT_BCAST: filter out all broadcast frames 236bfcc09ddSBjoern A. Zeeb * @MAC_FILTER_IN_CRC32: extract FCS and append it to frames 237bfcc09ddSBjoern A. Zeeb * @MAC_FILTER_IN_PROBE_REQUEST: pass probe requests to host 238bfcc09ddSBjoern A. Zeeb */ 239bfcc09ddSBjoern A. Zeeb enum iwl_mac_filter_flags { 240bfcc09ddSBjoern A. Zeeb MAC_FILTER_IN_PROMISC = BIT(0), 241bfcc09ddSBjoern A. Zeeb MAC_FILTER_IN_CONTROL_AND_MGMT = BIT(1), 242bfcc09ddSBjoern A. Zeeb MAC_FILTER_ACCEPT_GRP = BIT(2), 243bfcc09ddSBjoern A. Zeeb MAC_FILTER_DIS_DECRYPT = BIT(3), 244bfcc09ddSBjoern A. Zeeb MAC_FILTER_DIS_GRP_DECRYPT = BIT(4), 245bfcc09ddSBjoern A. Zeeb MAC_FILTER_IN_BEACON = BIT(6), 246bfcc09ddSBjoern A. Zeeb MAC_FILTER_OUT_BCAST = BIT(8), 247bfcc09ddSBjoern A. Zeeb MAC_FILTER_IN_CRC32 = BIT(11), 248bfcc09ddSBjoern A. Zeeb MAC_FILTER_IN_PROBE_REQUEST = BIT(12), 249bfcc09ddSBjoern A. Zeeb /** 250bfcc09ddSBjoern A. Zeeb * @MAC_FILTER_IN_11AX: mark BSS as supporting 802.11ax 251bfcc09ddSBjoern A. Zeeb */ 252bfcc09ddSBjoern A. Zeeb MAC_FILTER_IN_11AX = BIT(14), 253bfcc09ddSBjoern A. Zeeb }; 254bfcc09ddSBjoern A. Zeeb 255bfcc09ddSBjoern A. Zeeb /** 256bfcc09ddSBjoern A. Zeeb * enum iwl_mac_qos_flags - QoS flags 257bfcc09ddSBjoern A. Zeeb * @MAC_QOS_FLG_UPDATE_EDCA: ? 258bfcc09ddSBjoern A. Zeeb * @MAC_QOS_FLG_TGN: HT is enabled 259bfcc09ddSBjoern A. Zeeb * @MAC_QOS_FLG_TXOP_TYPE: ? 260bfcc09ddSBjoern A. Zeeb * 261bfcc09ddSBjoern A. Zeeb */ 262bfcc09ddSBjoern A. Zeeb enum iwl_mac_qos_flags { 263bfcc09ddSBjoern A. Zeeb MAC_QOS_FLG_UPDATE_EDCA = BIT(0), 264bfcc09ddSBjoern A. Zeeb MAC_QOS_FLG_TGN = BIT(1), 265bfcc09ddSBjoern A. Zeeb MAC_QOS_FLG_TXOP_TYPE = BIT(4), 266bfcc09ddSBjoern A. Zeeb }; 267bfcc09ddSBjoern A. Zeeb 268bfcc09ddSBjoern A. Zeeb /** 269bfcc09ddSBjoern A. Zeeb * struct iwl_ac_qos - QOS timing params for MAC_CONTEXT_CMD 270bfcc09ddSBjoern A. Zeeb * @cw_min: Contention window, start value in numbers of slots. 271bfcc09ddSBjoern A. Zeeb * Should be a power-of-2, minus 1. Device's default is 0x0f. 272bfcc09ddSBjoern A. Zeeb * @cw_max: Contention window, max value in numbers of slots. 273bfcc09ddSBjoern A. Zeeb * Should be a power-of-2, minus 1. Device's default is 0x3f. 274bfcc09ddSBjoern A. Zeeb * @aifsn: Number of slots in Arbitration Interframe Space (before 275bfcc09ddSBjoern A. Zeeb * performing random backoff timing prior to Tx). Device default 1. 276bfcc09ddSBjoern A. Zeeb * @fifos_mask: FIFOs used by this MAC for this AC 277bfcc09ddSBjoern A. Zeeb * @edca_txop: Length of Tx opportunity, in uSecs. Device default is 0. 278bfcc09ddSBjoern A. Zeeb * 279bfcc09ddSBjoern A. Zeeb * One instance of this config struct for each of 4 EDCA access categories 280bfcc09ddSBjoern A. Zeeb * in struct iwl_qosparam_cmd. 281bfcc09ddSBjoern A. Zeeb * 282bfcc09ddSBjoern A. Zeeb * Device will automatically increase contention window by (2*CW) + 1 for each 283bfcc09ddSBjoern A. Zeeb * transmission retry. Device uses cw_max as a bit mask, ANDed with new CW 284bfcc09ddSBjoern A. Zeeb * value, to cap the CW value. 285bfcc09ddSBjoern A. Zeeb */ 286bfcc09ddSBjoern A. Zeeb struct iwl_ac_qos { 287bfcc09ddSBjoern A. Zeeb __le16 cw_min; 288bfcc09ddSBjoern A. Zeeb __le16 cw_max; 289bfcc09ddSBjoern A. Zeeb u8 aifsn; 290bfcc09ddSBjoern A. Zeeb u8 fifos_mask; 291bfcc09ddSBjoern A. Zeeb __le16 edca_txop; 292bfcc09ddSBjoern A. Zeeb } __packed; /* AC_QOS_API_S_VER_2 */ 293bfcc09ddSBjoern A. Zeeb 294bfcc09ddSBjoern A. Zeeb /** 295bfcc09ddSBjoern A. Zeeb * struct iwl_mac_ctx_cmd - command structure to configure MAC contexts 296bfcc09ddSBjoern A. Zeeb * ( MAC_CONTEXT_CMD = 0x28 ) 297bfcc09ddSBjoern A. Zeeb * @id_and_color: ID and color of the MAC 2989af1bba4SBjoern A. Zeeb * @action: action to perform, see &enum iwl_ctxt_action 299bfcc09ddSBjoern A. Zeeb * @mac_type: one of &enum iwl_mac_types 300bfcc09ddSBjoern A. Zeeb * @tsf_id: TSF HW timer, one of &enum iwl_tsf_id 301bfcc09ddSBjoern A. Zeeb * @node_addr: MAC address 302bfcc09ddSBjoern A. Zeeb * @reserved_for_node_addr: reserved 303bfcc09ddSBjoern A. Zeeb * @bssid_addr: BSSID 304bfcc09ddSBjoern A. Zeeb * @reserved_for_bssid_addr: reserved 305bfcc09ddSBjoern A. Zeeb * @cck_rates: basic rates available for CCK 306bfcc09ddSBjoern A. Zeeb * @ofdm_rates: basic rates available for OFDM 307bfcc09ddSBjoern A. Zeeb * @protection_flags: combination of &enum iwl_mac_protection_flags 308bfcc09ddSBjoern A. Zeeb * @cck_short_preamble: 0x20 for enabling short preamble, 0 otherwise 309bfcc09ddSBjoern A. Zeeb * @short_slot: 0x10 for enabling short slots, 0 otherwise 310bfcc09ddSBjoern A. Zeeb * @filter_flags: combination of &enum iwl_mac_filter_flags 311bfcc09ddSBjoern A. Zeeb * @qos_flags: from &enum iwl_mac_qos_flags 312bfcc09ddSBjoern A. Zeeb * @ac: one iwl_mac_qos configuration for each AC 313*a4128aadSBjoern A. Zeeb * @ap: AP specific config data, see &struct iwl_mac_data_ap 314*a4128aadSBjoern A. Zeeb * @go: GO specific config data, see &struct iwl_mac_data_go 315*a4128aadSBjoern A. Zeeb * @sta: BSS client specific config data, see &struct iwl_mac_data_sta 316*a4128aadSBjoern A. Zeeb * @p2p_sta: P2P client specific config data, see &struct iwl_mac_data_p2p_sta 317*a4128aadSBjoern A. Zeeb * @p2p_dev: P2P-device specific config data, see &struct iwl_mac_data_p2p_dev 318*a4128aadSBjoern A. Zeeb * @pibss: Pseudo-IBSS specific data, unused; see struct iwl_mac_data_pibss 319*a4128aadSBjoern A. Zeeb * @ibss: IBSS specific config data, see &struct iwl_mac_data_ibss 320bfcc09ddSBjoern A. Zeeb */ 321bfcc09ddSBjoern A. Zeeb struct iwl_mac_ctx_cmd { 322bfcc09ddSBjoern A. Zeeb /* COMMON_INDEX_HDR_API_S_VER_1 */ 323bfcc09ddSBjoern A. Zeeb __le32 id_and_color; 324bfcc09ddSBjoern A. Zeeb __le32 action; 325bfcc09ddSBjoern A. Zeeb /* MAC_CONTEXT_COMMON_DATA_API_S_VER_1 */ 326bfcc09ddSBjoern A. Zeeb __le32 mac_type; 327bfcc09ddSBjoern A. Zeeb __le32 tsf_id; 328bfcc09ddSBjoern A. Zeeb u8 node_addr[6]; 329bfcc09ddSBjoern A. Zeeb __le16 reserved_for_node_addr; 330bfcc09ddSBjoern A. Zeeb u8 bssid_addr[6]; 331bfcc09ddSBjoern A. Zeeb __le16 reserved_for_bssid_addr; 332bfcc09ddSBjoern A. Zeeb __le32 cck_rates; 333bfcc09ddSBjoern A. Zeeb __le32 ofdm_rates; 334bfcc09ddSBjoern A. Zeeb __le32 protection_flags; 335bfcc09ddSBjoern A. Zeeb __le32 cck_short_preamble; 336bfcc09ddSBjoern A. Zeeb __le32 short_slot; 337bfcc09ddSBjoern A. Zeeb __le32 filter_flags; 338bfcc09ddSBjoern A. Zeeb /* MAC_QOS_PARAM_API_S_VER_1 */ 339bfcc09ddSBjoern A. Zeeb __le32 qos_flags; 340bfcc09ddSBjoern A. Zeeb struct iwl_ac_qos ac[AC_NUM+1]; 341bfcc09ddSBjoern A. Zeeb /* MAC_CONTEXT_COMMON_DATA_API_S */ 342bfcc09ddSBjoern A. Zeeb union { 343bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_ap ap; 344bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_go go; 345bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_sta sta; 346bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_p2p_sta p2p_sta; 347bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_p2p_dev p2p_dev; 348bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_pibss pibss; 349bfcc09ddSBjoern A. Zeeb struct iwl_mac_data_ibss ibss; 350bfcc09ddSBjoern A. Zeeb }; 351bfcc09ddSBjoern A. Zeeb } __packed; /* MAC_CONTEXT_CMD_API_S_VER_1 */ 352bfcc09ddSBjoern A. Zeeb 353bfcc09ddSBjoern A. Zeeb #define IWL_NONQOS_SEQ_GET 0x1 354bfcc09ddSBjoern A. Zeeb #define IWL_NONQOS_SEQ_SET 0x2 355bfcc09ddSBjoern A. Zeeb struct iwl_nonqos_seq_query_cmd { 356bfcc09ddSBjoern A. Zeeb __le32 get_set_flag; 357bfcc09ddSBjoern A. Zeeb __le32 mac_id_n_color; 358bfcc09ddSBjoern A. Zeeb __le16 value; 359bfcc09ddSBjoern A. Zeeb __le16 reserved; 360bfcc09ddSBjoern A. Zeeb } __packed; /* NON_QOS_TX_COUNTER_GET_SET_API_S_VER_1 */ 361bfcc09ddSBjoern A. Zeeb 362bfcc09ddSBjoern A. Zeeb /** 3639af1bba4SBjoern A. Zeeb * struct iwl_missed_beacons_notif_ver_3 - information on missed beacons 364bfcc09ddSBjoern A. Zeeb * ( MISSED_BEACONS_NOTIFICATION = 0xa2 ) 365bfcc09ddSBjoern A. Zeeb * @mac_id: interface ID 366bfcc09ddSBjoern A. Zeeb * @consec_missed_beacons_since_last_rx: number of consecutive missed 367bfcc09ddSBjoern A. Zeeb * beacons since last RX. 368bfcc09ddSBjoern A. Zeeb * @consec_missed_beacons: number of consecutive missed beacons 369bfcc09ddSBjoern A. Zeeb * @num_expected_beacons: number of expected beacons 370bfcc09ddSBjoern A. Zeeb * @num_recvd_beacons: number of received beacons 371bfcc09ddSBjoern A. Zeeb */ 3729af1bba4SBjoern A. Zeeb struct iwl_missed_beacons_notif_ver_3 { 373bfcc09ddSBjoern A. Zeeb __le32 mac_id; 374bfcc09ddSBjoern A. Zeeb __le32 consec_missed_beacons_since_last_rx; 375bfcc09ddSBjoern A. Zeeb __le32 consec_missed_beacons; 376bfcc09ddSBjoern A. Zeeb __le32 num_expected_beacons; 377bfcc09ddSBjoern A. Zeeb __le32 num_recvd_beacons; 378bfcc09ddSBjoern A. Zeeb } __packed; /* MISSED_BEACON_NTFY_API_S_VER_3 */ 379bfcc09ddSBjoern A. Zeeb 380bfcc09ddSBjoern A. Zeeb /** 3819af1bba4SBjoern A. Zeeb * struct iwl_missed_beacons_notif - information on missed beacons 3829af1bba4SBjoern A. Zeeb * ( MISSED_BEACONS_NOTIFICATION = 0xa2 ) 3839af1bba4SBjoern A. Zeeb * @link_id: fw link ID 3849af1bba4SBjoern A. Zeeb * @consec_missed_beacons_since_last_rx: number of consecutive missed 3859af1bba4SBjoern A. Zeeb * beacons since last RX. 3869af1bba4SBjoern A. Zeeb * @consec_missed_beacons: number of consecutive missed beacons 3879af1bba4SBjoern A. Zeeb * @num_expected_beacons: number of expected beacons 3889af1bba4SBjoern A. Zeeb * @num_recvd_beacons: number of received beacons 3899af1bba4SBjoern A. Zeeb */ 3909af1bba4SBjoern A. Zeeb struct iwl_missed_beacons_notif { 3919af1bba4SBjoern A. Zeeb __le32 link_id; 3929af1bba4SBjoern A. Zeeb __le32 consec_missed_beacons_since_last_rx; 3939af1bba4SBjoern A. Zeeb __le32 consec_missed_beacons; 3949af1bba4SBjoern A. Zeeb __le32 num_expected_beacons; 3959af1bba4SBjoern A. Zeeb __le32 num_recvd_beacons; 3969af1bba4SBjoern A. Zeeb } __packed; /* MISSED_BEACON_NTFY_API_S_VER_4 */ 3979af1bba4SBjoern A. Zeeb 3989af1bba4SBjoern A. Zeeb /** 399bfcc09ddSBjoern A. Zeeb * struct iwl_he_backoff_conf - used for backoff configuration 400bfcc09ddSBjoern A. Zeeb * Per each trigger-based AC, (set by MU EDCA Parameter set info-element) 401bfcc09ddSBjoern A. Zeeb * used for backoff configuration of TXF5..TXF8 trigger based. 402bfcc09ddSBjoern A. Zeeb * The MU-TIMER is reloaded w/ MU_TIME each time a frame from the AC is sent via 403bfcc09ddSBjoern A. Zeeb * trigger-based TX. 404bfcc09ddSBjoern A. Zeeb * @cwmin: CW min 405bfcc09ddSBjoern A. Zeeb * @cwmax: CW max 406bfcc09ddSBjoern A. Zeeb * @aifsn: AIFSN 407bfcc09ddSBjoern A. Zeeb * AIFSN=0, means that no backoff from the specified TRIG-BASED AC is 408bfcc09ddSBjoern A. Zeeb * allowed till the MU-TIMER is 0 409bfcc09ddSBjoern A. Zeeb * @mu_time: MU time in 8TU units 410bfcc09ddSBjoern A. Zeeb */ 411bfcc09ddSBjoern A. Zeeb struct iwl_he_backoff_conf { 412bfcc09ddSBjoern A. Zeeb __le16 cwmin; 413bfcc09ddSBjoern A. Zeeb __le16 cwmax; 414bfcc09ddSBjoern A. Zeeb __le16 aifsn; 415bfcc09ddSBjoern A. Zeeb __le16 mu_time; 416bfcc09ddSBjoern A. Zeeb } __packed; /* AC_QOS_DOT11AX_API_S */ 417bfcc09ddSBjoern A. Zeeb 418bfcc09ddSBjoern A. Zeeb /** 419bfcc09ddSBjoern A. Zeeb * enum iwl_he_pkt_ext_constellations - PPE constellation indices 420bfcc09ddSBjoern A. Zeeb * @IWL_HE_PKT_EXT_BPSK: BPSK 421bfcc09ddSBjoern A. Zeeb * @IWL_HE_PKT_EXT_QPSK: QPSK 422bfcc09ddSBjoern A. Zeeb * @IWL_HE_PKT_EXT_16QAM: 16-QAM 423bfcc09ddSBjoern A. Zeeb * @IWL_HE_PKT_EXT_64QAM: 64-QAM 424bfcc09ddSBjoern A. Zeeb * @IWL_HE_PKT_EXT_256QAM: 256-QAM 425bfcc09ddSBjoern A. Zeeb * @IWL_HE_PKT_EXT_1024QAM: 1024-QAM 4269af1bba4SBjoern A. Zeeb * @IWL_HE_PKT_EXT_4096QAM: 4096-QAM, for EHT only 427bfcc09ddSBjoern A. Zeeb * @IWL_HE_PKT_EXT_NONE: not defined 428bfcc09ddSBjoern A. Zeeb */ 429bfcc09ddSBjoern A. Zeeb enum iwl_he_pkt_ext_constellations { 430bfcc09ddSBjoern A. Zeeb IWL_HE_PKT_EXT_BPSK = 0, 431bfcc09ddSBjoern A. Zeeb IWL_HE_PKT_EXT_QPSK, 432bfcc09ddSBjoern A. Zeeb IWL_HE_PKT_EXT_16QAM, 433bfcc09ddSBjoern A. Zeeb IWL_HE_PKT_EXT_64QAM, 434bfcc09ddSBjoern A. Zeeb IWL_HE_PKT_EXT_256QAM, 435bfcc09ddSBjoern A. Zeeb IWL_HE_PKT_EXT_1024QAM, 4369af1bba4SBjoern A. Zeeb IWL_HE_PKT_EXT_4096QAM, 437bfcc09ddSBjoern A. Zeeb IWL_HE_PKT_EXT_NONE, 438bfcc09ddSBjoern A. Zeeb }; 439bfcc09ddSBjoern A. Zeeb 440bfcc09ddSBjoern A. Zeeb #define MAX_HE_SUPP_NSS 2 441*a4128aadSBjoern A. Zeeb #define MAX_CHANNEL_BW_INDX_API_D_VER_1 4 442*a4128aadSBjoern A. Zeeb #define MAX_CHANNEL_BW_INDX_API_D_VER_2 5 443bfcc09ddSBjoern A. Zeeb 444bfcc09ddSBjoern A. Zeeb /** 445d9836fb4SBjoern A. Zeeb * struct iwl_he_pkt_ext_v1 - QAM thresholds 446bfcc09ddSBjoern A. Zeeb * The required PPE is set via HE Capabilities IE, per Nss x BW x MCS 447bfcc09ddSBjoern A. Zeeb * The IE is organized in the following way: 448bfcc09ddSBjoern A. Zeeb * Support for Nss x BW (or RU) matrix: 449bfcc09ddSBjoern A. Zeeb * (0=SISO, 1=MIMO2) x (0-20MHz, 1-40MHz, 2-80MHz, 3-160MHz) 450bfcc09ddSBjoern A. Zeeb * Each entry contains 2 QAM thresholds for 8us and 16us: 451bfcc09ddSBjoern A. Zeeb * 0=BPSK, 1=QPSK, 2=16QAM, 3=64QAM, 4=256QAM, 5=1024QAM, 6=RES, 7=NONE 452bfcc09ddSBjoern A. Zeeb * i.e. QAM_th1 < QAM_th2 such if TX uses QAM_tx: 453bfcc09ddSBjoern A. Zeeb * QAM_tx < QAM_th1 --> PPE=0us 454bfcc09ddSBjoern A. Zeeb * QAM_th1 <= QAM_tx < QAM_th2 --> PPE=8us 455bfcc09ddSBjoern A. Zeeb * QAM_th2 <= QAM_tx --> PPE=16us 456bfcc09ddSBjoern A. Zeeb * @pkt_ext_qam_th: QAM thresholds 457bfcc09ddSBjoern A. Zeeb * For each Nss/Bw define 2 QAM thrsholds (0..5) 458bfcc09ddSBjoern A. Zeeb * For rates below the low_th, no need for PPE 459bfcc09ddSBjoern A. Zeeb * For rates between low_th and high_th, need 8us PPE 460bfcc09ddSBjoern A. Zeeb * For rates equal or higher then the high_th, need 16us PPE 461bfcc09ddSBjoern A. Zeeb * Nss (0-siso, 1-mimo2) x BW (0-20MHz, 1-40MHz, 2-80MHz, 3-160MHz) x 462bfcc09ddSBjoern A. Zeeb * (0-low_th, 1-high_th) 463bfcc09ddSBjoern A. Zeeb */ 464d9836fb4SBjoern A. Zeeb struct iwl_he_pkt_ext_v1 { 465*a4128aadSBjoern A. Zeeb u8 pkt_ext_qam_th[MAX_HE_SUPP_NSS][MAX_CHANNEL_BW_INDX_API_D_VER_1][2]; 466d9836fb4SBjoern A. Zeeb } __packed; /* PKT_EXT_DOT11AX_API_S_VER_1 */ 467d9836fb4SBjoern A. Zeeb 468d9836fb4SBjoern A. Zeeb /** 469d9836fb4SBjoern A. Zeeb * struct iwl_he_pkt_ext_v2 - QAM thresholds 470d9836fb4SBjoern A. Zeeb * The required PPE is set via HE Capabilities IE, per Nss x BW x MCS 471d9836fb4SBjoern A. Zeeb * The IE is organized in the following way: 472d9836fb4SBjoern A. Zeeb * Support for Nss x BW (or RU) matrix: 473d9836fb4SBjoern A. Zeeb * (0=SISO, 1=MIMO2) x (0-20MHz, 1-40MHz, 2-80MHz, 3-160MHz) 474d9836fb4SBjoern A. Zeeb * Each entry contains 2 QAM thresholds for 8us and 16us: 475d9836fb4SBjoern A. Zeeb * 0=BPSK, 1=QPSK, 2=16QAM, 3=64QAM, 4=256QAM, 5=1024QAM, 6=RES, 7=NONE 476d9836fb4SBjoern A. Zeeb * i.e. QAM_th1 < QAM_th2 such if TX uses QAM_tx: 477d9836fb4SBjoern A. Zeeb * QAM_tx < QAM_th1 --> PPE=0us 478d9836fb4SBjoern A. Zeeb * QAM_th1 <= QAM_tx < QAM_th2 --> PPE=8us 479d9836fb4SBjoern A. Zeeb * QAM_th2 <= QAM_tx --> PPE=16us 480d9836fb4SBjoern A. Zeeb * @pkt_ext_qam_th: QAM thresholds 481d9836fb4SBjoern A. Zeeb * For each Nss/Bw define 2 QAM thrsholds (0..5) 482d9836fb4SBjoern A. Zeeb * For rates below the low_th, no need for PPE 483d9836fb4SBjoern A. Zeeb * For rates between low_th and high_th, need 8us PPE 484d9836fb4SBjoern A. Zeeb * For rates equal or higher then the high_th, need 16us PPE 485d9836fb4SBjoern A. Zeeb * Nss (0-siso, 1-mimo2) x 486d9836fb4SBjoern A. Zeeb * BW (0-20MHz, 1-40MHz, 2-80MHz, 3-160MHz, 4-320MHz) x 487d9836fb4SBjoern A. Zeeb * (0-low_th, 1-high_th) 488d9836fb4SBjoern A. Zeeb */ 489d9836fb4SBjoern A. Zeeb struct iwl_he_pkt_ext_v2 { 490*a4128aadSBjoern A. Zeeb u8 pkt_ext_qam_th[MAX_HE_SUPP_NSS][MAX_CHANNEL_BW_INDX_API_D_VER_2][2]; 491d9836fb4SBjoern A. Zeeb } __packed; /* PKT_EXT_DOT11AX_API_S_VER_2 */ 492bfcc09ddSBjoern A. Zeeb 493bfcc09ddSBjoern A. Zeeb /** 494bfcc09ddSBjoern A. Zeeb * enum iwl_he_sta_ctxt_flags - HE STA context flags 495bfcc09ddSBjoern A. Zeeb * @STA_CTXT_HE_REF_BSSID_VALID: ref bssid addr valid (for receiving specific 496bfcc09ddSBjoern A. Zeeb * control frames such as TRIG, NDPA, BACK) 497bfcc09ddSBjoern A. Zeeb * @STA_CTXT_HE_BSS_COLOR_DIS: BSS color disable, don't use the BSS 498bfcc09ddSBjoern A. Zeeb * color for RX filter but use MAC header 499bfcc09ddSBjoern A. Zeeb * @STA_CTXT_HE_PARTIAL_BSS_COLOR: partial BSS color allocation 500bfcc09ddSBjoern A. Zeeb * @STA_CTXT_HE_32BIT_BA_BITMAP: indicates the receiver supports BA bitmap 501bfcc09ddSBjoern A. Zeeb * of 32-bits 502bfcc09ddSBjoern A. Zeeb * @STA_CTXT_HE_PACKET_EXT: indicates that the packet-extension info is valid 503bfcc09ddSBjoern A. Zeeb * and should be used 504bfcc09ddSBjoern A. Zeeb * @STA_CTXT_HE_TRIG_RND_ALLOC: indicates that trigger based random allocation 505bfcc09ddSBjoern A. Zeeb * is enabled according to UORA element existence 506bfcc09ddSBjoern A. Zeeb * @STA_CTXT_HE_CONST_TRIG_RND_ALLOC: used for AV testing 507bfcc09ddSBjoern A. Zeeb * @STA_CTXT_HE_ACK_ENABLED: indicates that the AP supports receiving ACK- 508bfcc09ddSBjoern A. Zeeb * enabled AGG, i.e. both BACK and non-BACK frames in a single AGG 509bfcc09ddSBjoern A. Zeeb * @STA_CTXT_HE_MU_EDCA_CW: indicates that there is an element of MU EDCA 510bfcc09ddSBjoern A. Zeeb * parameter set, i.e. the backoff counters for trig-based ACs 511bfcc09ddSBjoern A. Zeeb * @STA_CTXT_HE_NIC_NOT_ACK_ENABLED: mark that the NIC doesn't support receiving 512bfcc09ddSBjoern A. Zeeb * ACK-enabled AGG, (i.e. both BACK and non-BACK frames in single AGG). 513bfcc09ddSBjoern A. Zeeb * If the NIC is not ACK_ENABLED it may use the EOF-bit in first non-0 514bfcc09ddSBjoern A. Zeeb * len delim to determine if AGG or single. 515bfcc09ddSBjoern A. Zeeb * @STA_CTXT_HE_RU_2MHZ_BLOCK: indicates that 26-tone RU OFDMA transmission are 516bfcc09ddSBjoern A. Zeeb * not allowed (as there are OBSS that might classify such transmissions as 517bfcc09ddSBjoern A. Zeeb * radar pulses). 518d9836fb4SBjoern A. Zeeb * @STA_CTXT_HE_NDP_FEEDBACK_ENABLED: mark support for NDP feedback and change 519d9836fb4SBjoern A. Zeeb * of threshold 520d9836fb4SBjoern A. Zeeb * @STA_CTXT_EHT_PUNCTURE_MASK_VALID: indicates the puncture_mask field is valid 521d9836fb4SBjoern A. Zeeb * @STA_CTXT_EHT_LONG_PPE_ENABLED: indicates the PPE requirement should be 522d9836fb4SBjoern A. Zeeb * extended to 20us for BW > 160Mhz or for MCS w/ 4096-QAM. 523bfcc09ddSBjoern A. Zeeb */ 524bfcc09ddSBjoern A. Zeeb enum iwl_he_sta_ctxt_flags { 525bfcc09ddSBjoern A. Zeeb STA_CTXT_HE_REF_BSSID_VALID = BIT(4), 526bfcc09ddSBjoern A. Zeeb STA_CTXT_HE_BSS_COLOR_DIS = BIT(5), 527bfcc09ddSBjoern A. Zeeb STA_CTXT_HE_PARTIAL_BSS_COLOR = BIT(6), 528bfcc09ddSBjoern A. Zeeb STA_CTXT_HE_32BIT_BA_BITMAP = BIT(7), 529bfcc09ddSBjoern A. Zeeb STA_CTXT_HE_PACKET_EXT = BIT(8), 530bfcc09ddSBjoern A. Zeeb STA_CTXT_HE_TRIG_RND_ALLOC = BIT(9), 531bfcc09ddSBjoern A. Zeeb STA_CTXT_HE_CONST_TRIG_RND_ALLOC = BIT(10), 532bfcc09ddSBjoern A. Zeeb STA_CTXT_HE_ACK_ENABLED = BIT(11), 533bfcc09ddSBjoern A. Zeeb STA_CTXT_HE_MU_EDCA_CW = BIT(12), 534bfcc09ddSBjoern A. Zeeb STA_CTXT_HE_NIC_NOT_ACK_ENABLED = BIT(13), 535bfcc09ddSBjoern A. Zeeb STA_CTXT_HE_RU_2MHZ_BLOCK = BIT(14), 536d9836fb4SBjoern A. Zeeb STA_CTXT_HE_NDP_FEEDBACK_ENABLED = BIT(15), 537d9836fb4SBjoern A. Zeeb STA_CTXT_EHT_PUNCTURE_MASK_VALID = BIT(16), 538d9836fb4SBjoern A. Zeeb STA_CTXT_EHT_LONG_PPE_ENABLED = BIT(17), 539bfcc09ddSBjoern A. Zeeb }; 540bfcc09ddSBjoern A. Zeeb 541bfcc09ddSBjoern A. Zeeb /** 542bfcc09ddSBjoern A. Zeeb * enum iwl_he_htc_flags - HE HTC support flags 543bfcc09ddSBjoern A. Zeeb * @IWL_HE_HTC_SUPPORT: HE-HTC support 544bfcc09ddSBjoern A. Zeeb * @IWL_HE_HTC_UL_MU_RESP_SCHED: HE UL MU response schedule 545bfcc09ddSBjoern A. Zeeb * support via A-control field 546bfcc09ddSBjoern A. Zeeb * @IWL_HE_HTC_BSR_SUPP: BSR support in A-control field 547bfcc09ddSBjoern A. Zeeb * @IWL_HE_HTC_OMI_SUPP: A-OMI support in A-control field 548bfcc09ddSBjoern A. Zeeb * @IWL_HE_HTC_BQR_SUPP: A-BQR support in A-control field 549bfcc09ddSBjoern A. Zeeb */ 550bfcc09ddSBjoern A. Zeeb enum iwl_he_htc_flags { 551bfcc09ddSBjoern A. Zeeb IWL_HE_HTC_SUPPORT = BIT(0), 552bfcc09ddSBjoern A. Zeeb IWL_HE_HTC_UL_MU_RESP_SCHED = BIT(3), 553bfcc09ddSBjoern A. Zeeb IWL_HE_HTC_BSR_SUPP = BIT(4), 554bfcc09ddSBjoern A. Zeeb IWL_HE_HTC_OMI_SUPP = BIT(5), 555bfcc09ddSBjoern A. Zeeb IWL_HE_HTC_BQR_SUPP = BIT(6), 556bfcc09ddSBjoern A. Zeeb }; 557bfcc09ddSBjoern A. Zeeb 558bfcc09ddSBjoern A. Zeeb /* 559bfcc09ddSBjoern A. Zeeb * @IWL_HE_HTC_LINK_ADAP_NO_FEEDBACK: the STA does not provide HE MFB 560bfcc09ddSBjoern A. Zeeb * @IWL_HE_HTC_LINK_ADAP_UNSOLICITED: the STA provides only unsolicited HE MFB 561bfcc09ddSBjoern A. Zeeb * @IWL_HE_HTC_LINK_ADAP_BOTH: the STA is capable of providing HE MFB in 562bfcc09ddSBjoern A. Zeeb * response to HE MRQ and if the STA provides unsolicited HE MFB 563bfcc09ddSBjoern A. Zeeb */ 564bfcc09ddSBjoern A. Zeeb #define IWL_HE_HTC_LINK_ADAP_POS (1) 565bfcc09ddSBjoern A. Zeeb #define IWL_HE_HTC_LINK_ADAP_NO_FEEDBACK (0) 566bfcc09ddSBjoern A. Zeeb #define IWL_HE_HTC_LINK_ADAP_UNSOLICITED (2 << IWL_HE_HTC_LINK_ADAP_POS) 567bfcc09ddSBjoern A. Zeeb #define IWL_HE_HTC_LINK_ADAP_BOTH (3 << IWL_HE_HTC_LINK_ADAP_POS) 568bfcc09ddSBjoern A. Zeeb 569bfcc09ddSBjoern A. Zeeb /** 570bfcc09ddSBjoern A. Zeeb * struct iwl_he_sta_context_cmd_v1 - configure FW to work with HE AP 571bfcc09ddSBjoern A. Zeeb * @sta_id: STA id 572bfcc09ddSBjoern A. Zeeb * @tid_limit: max num of TIDs in TX HE-SU multi-TID agg 573bfcc09ddSBjoern A. Zeeb * 0 - bad value, 1 - multi-tid not supported, 2..8 - tid limit 574bfcc09ddSBjoern A. Zeeb * @reserved1: reserved byte for future use 575bfcc09ddSBjoern A. Zeeb * @reserved2: reserved byte for future use 576bfcc09ddSBjoern A. Zeeb * @flags: see %iwl_11ax_sta_ctxt_flags 577bfcc09ddSBjoern A. Zeeb * @ref_bssid_addr: reference BSSID used by the AP 578bfcc09ddSBjoern A. Zeeb * @reserved0: reserved 2 bytes for aligning the ref_bssid_addr field to 8 bytes 579bfcc09ddSBjoern A. Zeeb * @htc_flags: which features are supported in HTC 580bfcc09ddSBjoern A. Zeeb * @frag_flags: frag support in A-MSDU 581bfcc09ddSBjoern A. Zeeb * @frag_level: frag support level 582bfcc09ddSBjoern A. Zeeb * @frag_max_num: max num of "open" MSDUs in the receiver (in power of 2) 583bfcc09ddSBjoern A. Zeeb * @frag_min_size: min frag size (except last frag) 584bfcc09ddSBjoern A. Zeeb * @pkt_ext: optional, exists according to PPE-present bit in the HE-PHY capa 585bfcc09ddSBjoern A. Zeeb * @bss_color: 11ax AP ID that is used in the HE SIG-A to mark inter BSS frame 586bfcc09ddSBjoern A. Zeeb * @htc_trig_based_pkt_ext: default PE in 4us units 587bfcc09ddSBjoern A. Zeeb * @frame_time_rts_th: HE duration RTS threshold, in units of 32us 588bfcc09ddSBjoern A. Zeeb * @rand_alloc_ecwmin: random CWmin = 2**ECWmin-1 589bfcc09ddSBjoern A. Zeeb * @rand_alloc_ecwmax: random CWmax = 2**ECWmax-1 590bfcc09ddSBjoern A. Zeeb * @reserved3: reserved byte for future use 591bfcc09ddSBjoern A. Zeeb * @trig_based_txf: MU EDCA Parameter set for the trigger based traffic queues 592bfcc09ddSBjoern A. Zeeb */ 593bfcc09ddSBjoern A. Zeeb struct iwl_he_sta_context_cmd_v1 { 594bfcc09ddSBjoern A. Zeeb u8 sta_id; 595bfcc09ddSBjoern A. Zeeb u8 tid_limit; 596bfcc09ddSBjoern A. Zeeb u8 reserved1; 597bfcc09ddSBjoern A. Zeeb u8 reserved2; 598bfcc09ddSBjoern A. Zeeb __le32 flags; 599bfcc09ddSBjoern A. Zeeb 600bfcc09ddSBjoern A. Zeeb /* The below fields are set via Multiple BSSID IE */ 601bfcc09ddSBjoern A. Zeeb u8 ref_bssid_addr[6]; 602bfcc09ddSBjoern A. Zeeb __le16 reserved0; 603bfcc09ddSBjoern A. Zeeb 604bfcc09ddSBjoern A. Zeeb /* The below fields are set via HE-capabilities IE */ 605bfcc09ddSBjoern A. Zeeb __le32 htc_flags; 606bfcc09ddSBjoern A. Zeeb 607bfcc09ddSBjoern A. Zeeb u8 frag_flags; 608bfcc09ddSBjoern A. Zeeb u8 frag_level; 609bfcc09ddSBjoern A. Zeeb u8 frag_max_num; 610bfcc09ddSBjoern A. Zeeb u8 frag_min_size; 611bfcc09ddSBjoern A. Zeeb 612bfcc09ddSBjoern A. Zeeb /* The below fields are set via PPE thresholds element */ 613d9836fb4SBjoern A. Zeeb struct iwl_he_pkt_ext_v1 pkt_ext; 614bfcc09ddSBjoern A. Zeeb 615bfcc09ddSBjoern A. Zeeb /* The below fields are set via HE-Operation IE */ 616bfcc09ddSBjoern A. Zeeb u8 bss_color; 617bfcc09ddSBjoern A. Zeeb u8 htc_trig_based_pkt_ext; 618bfcc09ddSBjoern A. Zeeb __le16 frame_time_rts_th; 619bfcc09ddSBjoern A. Zeeb 620bfcc09ddSBjoern A. Zeeb /* Random access parameter set (i.e. RAPS) */ 621bfcc09ddSBjoern A. Zeeb u8 rand_alloc_ecwmin; 622bfcc09ddSBjoern A. Zeeb u8 rand_alloc_ecwmax; 623bfcc09ddSBjoern A. Zeeb __le16 reserved3; 624bfcc09ddSBjoern A. Zeeb 625bfcc09ddSBjoern A. Zeeb /* The below fields are set via MU EDCA parameter set element */ 626bfcc09ddSBjoern A. Zeeb struct iwl_he_backoff_conf trig_based_txf[AC_NUM]; 627bfcc09ddSBjoern A. Zeeb } __packed; /* STA_CONTEXT_DOT11AX_API_S_VER_1 */ 628bfcc09ddSBjoern A. Zeeb 629bfcc09ddSBjoern A. Zeeb /** 630d9836fb4SBjoern A. Zeeb * struct iwl_he_sta_context_cmd_v2 - configure FW to work with HE AP 631bfcc09ddSBjoern A. Zeeb * @sta_id: STA id 632bfcc09ddSBjoern A. Zeeb * @tid_limit: max num of TIDs in TX HE-SU multi-TID agg 633bfcc09ddSBjoern A. Zeeb * 0 - bad value, 1 - multi-tid not supported, 2..8 - tid limit 634bfcc09ddSBjoern A. Zeeb * @reserved1: reserved byte for future use 635bfcc09ddSBjoern A. Zeeb * @reserved2: reserved byte for future use 636bfcc09ddSBjoern A. Zeeb * @flags: see %iwl_11ax_sta_ctxt_flags 637bfcc09ddSBjoern A. Zeeb * @ref_bssid_addr: reference BSSID used by the AP 638bfcc09ddSBjoern A. Zeeb * @reserved0: reserved 2 bytes for aligning the ref_bssid_addr field to 8 bytes 639bfcc09ddSBjoern A. Zeeb * @htc_flags: which features are supported in HTC 640bfcc09ddSBjoern A. Zeeb * @frag_flags: frag support in A-MSDU 641bfcc09ddSBjoern A. Zeeb * @frag_level: frag support level 642bfcc09ddSBjoern A. Zeeb * @frag_max_num: max num of "open" MSDUs in the receiver (in power of 2) 643bfcc09ddSBjoern A. Zeeb * @frag_min_size: min frag size (except last frag) 644bfcc09ddSBjoern A. Zeeb * @pkt_ext: optional, exists according to PPE-present bit in the HE-PHY capa 645bfcc09ddSBjoern A. Zeeb * @bss_color: 11ax AP ID that is used in the HE SIG-A to mark inter BSS frame 646bfcc09ddSBjoern A. Zeeb * @htc_trig_based_pkt_ext: default PE in 4us units 647bfcc09ddSBjoern A. Zeeb * @frame_time_rts_th: HE duration RTS threshold, in units of 32us 648bfcc09ddSBjoern A. Zeeb * @rand_alloc_ecwmin: random CWmin = 2**ECWmin-1 649bfcc09ddSBjoern A. Zeeb * @rand_alloc_ecwmax: random CWmax = 2**ECWmax-1 650bfcc09ddSBjoern A. Zeeb * @reserved3: reserved byte for future use 651bfcc09ddSBjoern A. Zeeb * @trig_based_txf: MU EDCA Parameter set for the trigger based traffic queues 652bfcc09ddSBjoern A. Zeeb * @max_bssid_indicator: indicator of the max bssid supported on the associated 653bfcc09ddSBjoern A. Zeeb * bss 654bfcc09ddSBjoern A. Zeeb * @bssid_index: index of the associated VAP 655bfcc09ddSBjoern A. Zeeb * @ema_ap: AP supports enhanced Multi BSSID advertisement 656bfcc09ddSBjoern A. Zeeb * @profile_periodicity: number of Beacon periods that are needed to receive the 657bfcc09ddSBjoern A. Zeeb * complete VAPs info 658bfcc09ddSBjoern A. Zeeb * @bssid_count: actual number of VAPs in the MultiBSS Set 659bfcc09ddSBjoern A. Zeeb * @reserved4: alignment 660bfcc09ddSBjoern A. Zeeb */ 661d9836fb4SBjoern A. Zeeb struct iwl_he_sta_context_cmd_v2 { 662bfcc09ddSBjoern A. Zeeb u8 sta_id; 663bfcc09ddSBjoern A. Zeeb u8 tid_limit; 664bfcc09ddSBjoern A. Zeeb u8 reserved1; 665bfcc09ddSBjoern A. Zeeb u8 reserved2; 666bfcc09ddSBjoern A. Zeeb __le32 flags; 667bfcc09ddSBjoern A. Zeeb 668bfcc09ddSBjoern A. Zeeb /* The below fields are set via Multiple BSSID IE */ 669bfcc09ddSBjoern A. Zeeb u8 ref_bssid_addr[6]; 670bfcc09ddSBjoern A. Zeeb __le16 reserved0; 671bfcc09ddSBjoern A. Zeeb 672bfcc09ddSBjoern A. Zeeb /* The below fields are set via HE-capabilities IE */ 673bfcc09ddSBjoern A. Zeeb __le32 htc_flags; 674bfcc09ddSBjoern A. Zeeb 675bfcc09ddSBjoern A. Zeeb u8 frag_flags; 676bfcc09ddSBjoern A. Zeeb u8 frag_level; 677bfcc09ddSBjoern A. Zeeb u8 frag_max_num; 678bfcc09ddSBjoern A. Zeeb u8 frag_min_size; 679bfcc09ddSBjoern A. Zeeb 680bfcc09ddSBjoern A. Zeeb /* The below fields are set via PPE thresholds element */ 681d9836fb4SBjoern A. Zeeb struct iwl_he_pkt_ext_v1 pkt_ext; 682bfcc09ddSBjoern A. Zeeb 683bfcc09ddSBjoern A. Zeeb /* The below fields are set via HE-Operation IE */ 684bfcc09ddSBjoern A. Zeeb u8 bss_color; 685bfcc09ddSBjoern A. Zeeb u8 htc_trig_based_pkt_ext; 686bfcc09ddSBjoern A. Zeeb __le16 frame_time_rts_th; 687bfcc09ddSBjoern A. Zeeb 688bfcc09ddSBjoern A. Zeeb /* Random access parameter set (i.e. RAPS) */ 689bfcc09ddSBjoern A. Zeeb u8 rand_alloc_ecwmin; 690bfcc09ddSBjoern A. Zeeb u8 rand_alloc_ecwmax; 691bfcc09ddSBjoern A. Zeeb __le16 reserved3; 692bfcc09ddSBjoern A. Zeeb 693bfcc09ddSBjoern A. Zeeb /* The below fields are set via MU EDCA parameter set element */ 694bfcc09ddSBjoern A. Zeeb struct iwl_he_backoff_conf trig_based_txf[AC_NUM]; 695bfcc09ddSBjoern A. Zeeb 696bfcc09ddSBjoern A. Zeeb u8 max_bssid_indicator; 697bfcc09ddSBjoern A. Zeeb u8 bssid_index; 698bfcc09ddSBjoern A. Zeeb u8 ema_ap; 699bfcc09ddSBjoern A. Zeeb u8 profile_periodicity; 700bfcc09ddSBjoern A. Zeeb u8 bssid_count; 701bfcc09ddSBjoern A. Zeeb u8 reserved4[3]; 702bfcc09ddSBjoern A. Zeeb } __packed; /* STA_CONTEXT_DOT11AX_API_S_VER_2 */ 703bfcc09ddSBjoern A. Zeeb 704bfcc09ddSBjoern A. Zeeb /** 705d9836fb4SBjoern A. Zeeb * struct iwl_he_sta_context_cmd_v3 - configure FW to work with HE AP 706d9836fb4SBjoern A. Zeeb * @sta_id: STA id 707d9836fb4SBjoern A. Zeeb * @tid_limit: max num of TIDs in TX HE-SU multi-TID agg 708d9836fb4SBjoern A. Zeeb * 0 - bad value, 1 - multi-tid not supported, 2..8 - tid limit 709d9836fb4SBjoern A. Zeeb * @reserved1: reserved byte for future use 710d9836fb4SBjoern A. Zeeb * @reserved2: reserved byte for future use 711d9836fb4SBjoern A. Zeeb * @flags: see %iwl_11ax_sta_ctxt_flags 712d9836fb4SBjoern A. Zeeb * @ref_bssid_addr: reference BSSID used by the AP 713d9836fb4SBjoern A. Zeeb * @reserved0: reserved 2 bytes for aligning the ref_bssid_addr field to 8 bytes 714d9836fb4SBjoern A. Zeeb * @htc_flags: which features are supported in HTC 715d9836fb4SBjoern A. Zeeb * @frag_flags: frag support in A-MSDU 716d9836fb4SBjoern A. Zeeb * @frag_level: frag support level 717d9836fb4SBjoern A. Zeeb * @frag_max_num: max num of "open" MSDUs in the receiver (in power of 2) 718d9836fb4SBjoern A. Zeeb * @frag_min_size: min frag size (except last frag) 719d9836fb4SBjoern A. Zeeb * @pkt_ext: optional, exists according to PPE-present bit in the HE-PHY capa 720d9836fb4SBjoern A. Zeeb * @bss_color: 11ax AP ID that is used in the HE SIG-A to mark inter BSS frame 721d9836fb4SBjoern A. Zeeb * @htc_trig_based_pkt_ext: default PE in 4us units 722d9836fb4SBjoern A. Zeeb * @frame_time_rts_th: HE duration RTS threshold, in units of 32us 723d9836fb4SBjoern A. Zeeb * @rand_alloc_ecwmin: random CWmin = 2**ECWmin-1 724d9836fb4SBjoern A. Zeeb * @rand_alloc_ecwmax: random CWmax = 2**ECWmax-1 725d9836fb4SBjoern A. Zeeb * @puncture_mask: puncture mask for EHT 726d9836fb4SBjoern A. Zeeb * @trig_based_txf: MU EDCA Parameter set for the trigger based traffic queues 727d9836fb4SBjoern A. Zeeb * @max_bssid_indicator: indicator of the max bssid supported on the associated 728d9836fb4SBjoern A. Zeeb * bss 729d9836fb4SBjoern A. Zeeb * @bssid_index: index of the associated VAP 730d9836fb4SBjoern A. Zeeb * @ema_ap: AP supports enhanced Multi BSSID advertisement 731d9836fb4SBjoern A. Zeeb * @profile_periodicity: number of Beacon periods that are needed to receive the 732d9836fb4SBjoern A. Zeeb * complete VAPs info 733d9836fb4SBjoern A. Zeeb * @bssid_count: actual number of VAPs in the MultiBSS Set 734d9836fb4SBjoern A. Zeeb * @reserved4: alignment 735d9836fb4SBjoern A. Zeeb */ 736d9836fb4SBjoern A. Zeeb struct iwl_he_sta_context_cmd_v3 { 737d9836fb4SBjoern A. Zeeb u8 sta_id; 738d9836fb4SBjoern A. Zeeb u8 tid_limit; 739d9836fb4SBjoern A. Zeeb u8 reserved1; 740d9836fb4SBjoern A. Zeeb u8 reserved2; 741d9836fb4SBjoern A. Zeeb __le32 flags; 742d9836fb4SBjoern A. Zeeb 743d9836fb4SBjoern A. Zeeb /* The below fields are set via Multiple BSSID IE */ 744d9836fb4SBjoern A. Zeeb u8 ref_bssid_addr[6]; 745d9836fb4SBjoern A. Zeeb __le16 reserved0; 746d9836fb4SBjoern A. Zeeb 747d9836fb4SBjoern A. Zeeb /* The below fields are set via HE-capabilities IE */ 748d9836fb4SBjoern A. Zeeb __le32 htc_flags; 749d9836fb4SBjoern A. Zeeb 750d9836fb4SBjoern A. Zeeb u8 frag_flags; 751d9836fb4SBjoern A. Zeeb u8 frag_level; 752d9836fb4SBjoern A. Zeeb u8 frag_max_num; 753d9836fb4SBjoern A. Zeeb u8 frag_min_size; 754d9836fb4SBjoern A. Zeeb 755d9836fb4SBjoern A. Zeeb /* The below fields are set via PPE thresholds element */ 756d9836fb4SBjoern A. Zeeb struct iwl_he_pkt_ext_v2 pkt_ext; 757d9836fb4SBjoern A. Zeeb 758d9836fb4SBjoern A. Zeeb /* The below fields are set via HE-Operation IE */ 759d9836fb4SBjoern A. Zeeb u8 bss_color; 760d9836fb4SBjoern A. Zeeb u8 htc_trig_based_pkt_ext; 761d9836fb4SBjoern A. Zeeb __le16 frame_time_rts_th; 762d9836fb4SBjoern A. Zeeb 763d9836fb4SBjoern A. Zeeb /* Random access parameter set (i.e. RAPS) */ 764d9836fb4SBjoern A. Zeeb u8 rand_alloc_ecwmin; 765d9836fb4SBjoern A. Zeeb u8 rand_alloc_ecwmax; 766d9836fb4SBjoern A. Zeeb __le16 puncture_mask; 767d9836fb4SBjoern A. Zeeb 768d9836fb4SBjoern A. Zeeb /* The below fields are set via MU EDCA parameter set element */ 769d9836fb4SBjoern A. Zeeb struct iwl_he_backoff_conf trig_based_txf[AC_NUM]; 770d9836fb4SBjoern A. Zeeb 771d9836fb4SBjoern A. Zeeb u8 max_bssid_indicator; 772d9836fb4SBjoern A. Zeeb u8 bssid_index; 773d9836fb4SBjoern A. Zeeb u8 ema_ap; 774d9836fb4SBjoern A. Zeeb u8 profile_periodicity; 775d9836fb4SBjoern A. Zeeb u8 bssid_count; 776d9836fb4SBjoern A. Zeeb u8 reserved4[3]; 777d9836fb4SBjoern A. Zeeb } __packed; /* STA_CONTEXT_DOT11AX_API_S_VER_2 */ 778d9836fb4SBjoern A. Zeeb 779d9836fb4SBjoern A. Zeeb /** 780bfcc09ddSBjoern A. Zeeb * struct iwl_he_monitor_cmd - configure air sniffer for HE 781bfcc09ddSBjoern A. Zeeb * @bssid: the BSSID to sniff for 782bfcc09ddSBjoern A. Zeeb * @reserved1: reserved for dword alignment 783bfcc09ddSBjoern A. Zeeb * @aid: the AID to track on for HE MU 784bfcc09ddSBjoern A. Zeeb * @reserved2: reserved for future use 785bfcc09ddSBjoern A. Zeeb */ 786bfcc09ddSBjoern A. Zeeb struct iwl_he_monitor_cmd { 787bfcc09ddSBjoern A. Zeeb u8 bssid[6]; 788bfcc09ddSBjoern A. Zeeb __le16 reserved1; 789bfcc09ddSBjoern A. Zeeb __le16 aid; 790bfcc09ddSBjoern A. Zeeb u8 reserved2[6]; 791bfcc09ddSBjoern A. Zeeb } __packed; /* HE_AIR_SNIFFER_CONFIG_CMD_API_S_VER_1 */ 792bfcc09ddSBjoern A. Zeeb 793bfcc09ddSBjoern A. Zeeb #endif /* __iwl_fw_api_mac_h__ */ 794