xref: /OK3568_Linux_fs/kernel/drivers/net/wireless/nxp/mlan/mlan_fw.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1 /** @file mlan_fw.h
2  *
3  *  @brief This file contains firmware specific defines.
4  *  structures and declares global function prototypes used
5  *  in MLAN module.
6  *
7  *
8  *  Copyright 2008-2022 NXP
9  *
10  *  This software file (the File) is distributed by NXP
11  *  under the terms of the GNU General Public License Version 2, June 1991
12  *  (the License).  You may use, redistribute and/or modify the File in
13  *  accordance with the terms and conditions of the License, a copy of which
14  *  is available by writing to the Free Software Foundation, Inc.,
15  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA or on the
16  *  worldwide web at http://www.gnu.org/licenses/old-licenses/gpl-2.0.txt.
17  *
18  *  THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
19  *  IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
20  *  ARE EXPRESSLY DISCLAIMED.  The License provides additional details about
21  *  this warranty disclaimer.
22  *
23  */
24 
25 /******************************************************
26 Change log:
27     10/27/2008: initial version
28 ******************************************************/
29 
30 #ifndef _MLAN_FW_H_
31 #define _MLAN_FW_H_
32 
33 /** Interface header length */
34 #ifdef USB
35 #define USB_INTF_HEADER_LEN 0
36 #endif /* USB */
37 #ifdef SDIO
38 #define SDIO_INTF_HEADER_LEN 4
39 #endif /* SDIO */
40 #ifdef PCIE
41 #define PCIE_INTF_HEADER_LEN 4
42 #endif /* PCIE */
43 
44 #ifdef PRAGMA_PACK
45 #pragma pack(push, 1)
46 #endif
47 
48 #define WPA_GCMP_KEY_LEN 32
49 
50 #define WPA_CCMP_256_KEY_LEN 32
51 
52 /** Ethernet header */
53 typedef MLAN_PACK_START struct {
54 	/** Ethernet header destination address */
55 	t_u8 dest_addr[MLAN_MAC_ADDR_LENGTH];
56 	/** Ethernet header source address */
57 	t_u8 src_addr[MLAN_MAC_ADDR_LENGTH];
58 	/** Ethernet header length */
59 	t_u16 h803_len;
60 
61 } MLAN_PACK_END Eth803Hdr_t;
62 
63 /** RFC 1042 header */
64 typedef MLAN_PACK_START struct {
65 	/** LLC DSAP */
66 	t_u8 llc_dsap;
67 	/** LLC SSAP */
68 	t_u8 llc_ssap;
69 	/** LLC CTRL */
70 	t_u8 llc_ctrl;
71 	/** SNAP OUI */
72 	t_u8 snap_oui[3];
73 	/** SNAP type */
74 	t_u16 snap_type;
75 
76 } MLAN_PACK_END Rfc1042Hdr_t;
77 
78 /** Rx packet header */
79 typedef MLAN_PACK_START struct {
80 	/** Etherner header */
81 	Eth803Hdr_t eth803_hdr;
82 	/** RFC 1042 header */
83 	Rfc1042Hdr_t rfc1042_hdr;
84 
85 } MLAN_PACK_END RxPacketHdr_t;
86 
87 /** Rates supported in band B */
88 #define B_SUPPORTED_RATES 5
89 /** Rates supported in band G */
90 #define G_SUPPORTED_RATES 9
91 /** Rates supported in band BG */
92 #define BG_SUPPORTED_RATES 13
93 
94 /** Setup the number of rates passed in the driver/firmware API */
95 #define A_SUPPORTED_RATES 9
96 
97 /** CapInfo Short Slot Time Disabled */
98 /* #define SHORT_SLOT_TIME_DISABLED(CapInfo)
99  * ((IEEEtypes_CapInfo_t)(CapInfo).short_slot_time = 0) */
100 #define SHORT_SLOT_TIME_DISABLED(CapInfo) (CapInfo &= ~MBIT(10))
101 /** CapInfo Short Slot Time Enabled */
102 #define SHORT_SLOT_TIME_ENABLED(CapInfo) (CapInfo |= MBIT(10))
103 /** CapInfo Spectrum Mgmt Disabled */
104 #define SPECTRUM_MGMT_DISABLED(CapInfo) (CapInfo &= ~MBIT(8))
105 /** CapInfo Spectrum Mgmt Enabled */
106 #define SPECTRUM_MGMT_ENABLED(CapInfo) (CapInfo |= MBIT(8))
107 /** CapInfo Radio Measurement Disabled */
108 #define RADIO_MEASUREMENT_DISABLED(CapInfo) (CapInfo &= ~MBIT(12))
109 /** CapInfo Radio Measurement Enabled */
110 #define RADIO_MEASUREMENT_ENABLED(CapInfo) (CapInfo |= MBIT(12))
111 
112 /** Setup the number of rates passed in the driver/firmware API */
113 #define HOSTCMD_SUPPORTED_RATES 14
114 
115 /** Rates supported in band N */
116 #define N_SUPPORTED_RATES 3
117 #ifdef STA_SUPPORT
118 /** All bands (B, G, N, AAC, GAC) */
119 #define ALL_802_11_BANDS                                                       \
120 	(BAND_A | BAND_B | BAND_G | BAND_GN | BAND_AAC | BAND_GAC)
121 #else
122 /** All bands (B, G, A) */
123 #define ALL_802_11_BANDS (BAND_B | BAND_G | BAND_A)
124 #endif /* STA_SUPPORT */
125 
126 #ifdef STA_SUPPORT
127 /** Firmware multiple bands support */
128 #define FW_MULTI_BANDS_SUPPORT                                                 \
129 	(MBIT(8) | MBIT(9) | MBIT(10) | MBIT(11) | MBIT(12) | MBIT(13))
130 #else
131 /** Firmware multiple bands support */
132 #define FW_MULTI_BANDS_SUPPORT (MBIT(8) | MBIT(9) | MBIT(10))
133 #endif /* STA_SUPPORT */
134 /** Check if multiple bands support is enabled in firmware */
135 #define IS_SUPPORT_MULTI_BANDS(_adapter)                                       \
136 	(_adapter->fw_cap_info & FW_MULTI_BANDS_SUPPORT)
137 /** Get default bands of the firmware */
138 /* need to shift bit 12 and bit 13 in fw_cap_info from the firmware
139  * to bit 13 and 14 for 11ac so that bit 11 is for GN, bit 12 for AN,
140  * bit 13 for GAC, and bit 14 for AAC, in order to be compatible with
141  * the band capability defined in the driver after right shift of 8 bits */
142 #define GET_FW_DEFAULT_BANDS(_adapter)                                         \
143 	(((((_adapter->fw_cap_info & 0x3000) << 1) |                           \
144 	   (_adapter->fw_cap_info & ~0xF000)) >>                               \
145 	  8) &                                                                 \
146 	 ALL_802_11_BANDS)
147 
148 extern t_u8 SupportedRates_B[B_SUPPORTED_RATES];
149 extern t_u8 SupportedRates_G[G_SUPPORTED_RATES];
150 extern t_u8 SupportedRates_BG[BG_SUPPORTED_RATES];
151 extern t_u8 SupportedRates_A[A_SUPPORTED_RATES];
152 extern t_u8 SupportedRates_N[N_SUPPORTED_RATES];
153 extern t_u8 AdhocRates_G[G_SUPPORTED_RATES];
154 extern t_u8 AdhocRates_B[B_SUPPORTED_RATES];
155 extern t_u8 AdhocRates_BG[BG_SUPPORTED_RATES];
156 extern t_u8 AdhocRates_A[A_SUPPORTED_RATES];
157 
158 /** Default auto deep sleep mode */
159 #define DEFAULT_AUTO_DS_MODE MTRUE
160 /** Default power save mode */
161 #define DEFAULT_PS_MODE Wlan802_11PowerModePSP
162 
163 /** WEP Key index mask */
164 #define HostCmd_WEP_KEY_INDEX_MASK 0x3fff
165 /** Length of WEP 40 bit key */
166 #define WEP_40_BIT_LEN 5
167 /** Length of WEP 104 bit key */
168 #define WEP_104_BIT_LEN 13
169 
170 /** Key information enabled */
171 #define KEY_INFO_ENABLED 0x01
172 /** KEY_TYPE_ID */
173 typedef enum _KEY_TYPE_ID {
174 	/** Key type : WEP */
175 	KEY_TYPE_ID_WEP = 0,
176 	/** Key type : TKIP */
177 	KEY_TYPE_ID_TKIP = 1,
178 	/** Key type : AES */
179 	KEY_TYPE_ID_AES = 2,
180 	KEY_TYPE_ID_WAPI = 3,
181 	KEY_TYPE_ID_AES_CMAC = 4,
182 	/** Key type : GCMP */
183 	KEY_TYPE_ID_GCMP = 5,
184 	/** Key type : GCMP_256 */
185 	KEY_TYPE_ID_GCMP_256 = 6,
186 	/** Key type : CCMP_256 */
187 	KEY_TYPE_ID_CCMP_256 = 7,
188 	/** Key type : GMAC_128 */
189 	KEY_TYPE_ID_BIP_GMAC_128 = 8,
190 	/** Key type : GMAC_256 */
191 	KEY_TYPE_ID_BIP_GMAC_256 = 9,
192 } KEY_TYPE_ID;
193 
194 /** Key Info flag for multicast key */
195 #define KEY_INFO_MCAST_KEY 0x01
196 /** Key Info flag for unicast key */
197 #define KEY_INFO_UCAST_KEY 0x02
198 
199 /** KEY_INFO_WEP*/
200 typedef enum _KEY_INFO_WEP {
201 	KEY_INFO_WEP_MCAST = 0x01,
202 	KEY_INFO_WEP_UNICAST = 0x02,
203 	KEY_INFO_WEP_ENABLED = 0x04
204 } KEY_INFO_WEP;
205 
206 /** KEY_INFO_TKIP */
207 typedef enum _KEY_INFO_TKIP {
208 	KEY_INFO_TKIP_MCAST = 0x01,
209 	KEY_INFO_TKIP_UNICAST = 0x02,
210 	KEY_INFO_TKIP_ENABLED = 0x04
211 } KEY_INFO_TKIP;
212 
213 /** KEY_INFO_AES*/
214 typedef enum _KEY_INFO_AES {
215 	KEY_INFO_AES_MCAST = 0x01,
216 	KEY_INFO_AES_UNICAST = 0x02,
217 	KEY_INFO_AES_ENABLED = 0x04,
218 	KEY_INFO_AES_MCAST_IGTK = 0x400,
219 } KEY_INFO_AES;
220 
221 /** WPA AES key length */
222 #define WPA_AES_KEY_LEN 16
223 /** WPA TKIP key length */
224 #define WPA_TKIP_KEY_LEN 32
225 /** WPA AES IGTK key length */
226 #define CMAC_AES_KEY_LEN 16
227 /** IGTK key length */
228 #define WPA_IGTK_KEY_LEN 16
229 #define WPA_IGTK_256_KEY_LEN 32
230 
231 /** WAPI key length */
232 #define WAPI_KEY_LEN 50
233 /** KEY_INFO_WAPI*/
234 typedef enum _KEY_INFO_WAPI {
235 	KEY_INFO_WAPI_MCAST = 0x01,
236 	KEY_INFO_WAPI_UNICAST = 0x02,
237 	KEY_INFO_WAPI_ENABLED = 0x04
238 } KEY_INFO_WAPI;
239 
240 /** Maximum ethernet frame length sans FCS */
241 #define MV_ETH_FRAME_LEN 1514
242 
243 #if defined(SDIO) || defined(PCIE)
244 /** Length of SNAP header */
245 #define MRVDRV_SNAP_HEADER_LEN 8
246 
247 /** The number of times to try when polling for status bits */
248 #define MAX_POLL_TRIES 100
249 
250 /** The number of times to try when waiting for downloaded firmware to
251      become active when multiple interface is present */
252 #define MAX_MULTI_INTERFACE_POLL_TRIES 150
253 /** The number of times to try when waiting for downloaded firmware to
254      become active. (polling the scratch register). */
255 #define MAX_FIRMWARE_POLL_TRIES 100
256 
257 /** FW fill in rx_len with extra 204 bytes */
258 #define EXTRA_LEN 256
259 
260 /** Buffer size for ethernet Tx packets */
261 #define MRVDRV_ETH_TX_PACKET_BUFFER_SIZE                                       \
262 	(MV_ETH_FRAME_LEN + sizeof(TxPD) + EXTRA_LEN)
263 
264 /** Buffer size for ethernet Rx packets */
265 #define MRVDRV_ETH_RX_PACKET_BUFFER_SIZE                                       \
266 	(MV_ETH_FRAME_LEN + sizeof(RxPD) + MRVDRV_SNAP_HEADER_LEN + EXTRA_LEN)
267 #endif /* SDIO || PCIE */
268 
269 #ifdef SDIO
270 /* Macros in interface module */
271 /** Firmware ready */
272 #define SDIO_FIRMWARE_READY 0xfedc
273 #endif /* SDIO */
274 
275 #ifdef PCIE
276 /* Macros in interface module */
277 /** Firmware ready */
278 #define PCIE_FIRMWARE_READY 0xfedcba00
279 #endif
280 
281 /** Enumeration definition*/
282 /** WLAN_802_11_PRIVACY_FILTER */
283 typedef enum _WLAN_802_11_PRIVACY_FILTER {
284 	Wlan802_11PrivFilterAcceptAll,
285 	Wlan802_11PrivFilter8021xWEP
286 } WLAN_802_11_PRIVACY_FILTER;
287 
288 /** WLAN_802_11_WEP_STATUS */
289 typedef enum _WLAN_802_11_WEP_STATUS {
290 	Wlan802_11WEPEnabled,
291 	Wlan802_11WEPDisabled,
292 	Wlan802_11WEPKeyAbsent,
293 	Wlan802_11WEPNotSupported
294 } WLAN_802_11_WEP_STATUS;
295 
296 /** SNR calculation */
297 #define CAL_SNR(RSSI, NF) ((t_s16)((t_s16)(RSSI) - (t_s16)(NF)))
298 
299 /** 2K buf size */
300 #define MLAN_TX_DATA_BUF_SIZE_2K 2048
301 
302 /** Terminating TLV Type */
303 #define MRVL_TERMINATE_TLV_ID 0xffff
304 
305 /** TLV type : SSID */
306 #define TLV_TYPE_SSID 0x0000
307 /** TLV type : Rates */
308 #define TLV_TYPE_RATES 0x0001
309 /** TLV type : PHY FH */
310 #define TLV_TYPE_PHY_FH 0x0002
311 /** TLV type : PHY DS */
312 #define TLV_TYPE_PHY_DS 0x0003
313 /** TLV type : CF */
314 #define TLV_TYPE_CF 0x0004
315 /** TLV type : IBSS */
316 #define TLV_TYPE_IBSS 0x0006
317 
318 /** TLV type : Domain */
319 #define TLV_TYPE_DOMAIN 0x0007
320 
321 /** TLV type : Power constraint */
322 #define TLV_TYPE_POWER_CONSTRAINT 0x0020
323 
324 /** TLV type : Power capability */
325 #define TLV_TYPE_POWER_CAPABILITY 0x0021
326 
327 #define TLV_TYPE_HT_CAPABILITY 0x002d
328 
329 #define TLV_TYPE_EXTENSION_ID 0x00ff
330 
331 /**TLV type : Host MLME Flag*/
332 #define TLV_TYPE_HOST_MLME (PROPRIETARY_TLV_BASE_ID + 307)
333 
334 /** TLV type : AP wacp mode */
335 #define TLV_TYPE_UAP_WACP_MODE (PROPRIETARY_TLV_BASE_ID + 0x147) /* 0x0247 */
336 
337 /** TLV type : Vendor Specific IE */
338 #define TLV_TYPE_VENDOR_SPECIFIC_IE 0x00dd
339 
340 /** TLV type : Key material */
341 #define TLV_TYPE_KEY_MATERIAL (PROPRIETARY_TLV_BASE_ID + 0x00) /* 0x0100 */
342 /** TLV type : Channel list */
343 #define TLV_TYPE_CHANLIST (PROPRIETARY_TLV_BASE_ID + 0x01) /* 0x0101 */
344 /** TLV type : Number of probes */
345 #define TLV_TYPE_NUMPROBES (PROPRIETARY_TLV_BASE_ID + 0x02) /* 0x0102 */
346 /** TLV type : Beacon RSSI low */
347 #define TLV_TYPE_RSSI_LOW (PROPRIETARY_TLV_BASE_ID + 0x04) /* 0x0104 */
348 /** TLV type : Beacon SNR low */
349 #define TLV_TYPE_SNR_LOW (PROPRIETARY_TLV_BASE_ID + 0x05) /* 0x0105 */
350 /** TLV type : Fail count */
351 #define TLV_TYPE_FAILCOUNT (PROPRIETARY_TLV_BASE_ID + 0x06) /* 0x0106 */
352 /** TLV type : BCN miss */
353 #define TLV_TYPE_BCNMISS (PROPRIETARY_TLV_BASE_ID + 0x07) /* 0x0107 */
354 /** TLV type : LED behavior */
355 #define TLV_TYPE_LEDBEHAVIOR (PROPRIETARY_TLV_BASE_ID + 0x09) /* 0x0109 */
356 /** TLV type : Passthrough */
357 #define TLV_TYPE_PASSTHROUGH (PROPRIETARY_TLV_BASE_ID + 0x0a) /* 0x010a */
358 /** TLV type : Power TBL 2.4 Ghz */
359 #define TLV_TYPE_POWER_TBL_2_4GHZ                                              \
360 	(PROPRIETARY_TLV_BASE_ID + 0x0c) /* 0x010c                             \
361 					  */
362 /** TLV type : Power TBL 5 GHz */
363 #define TLV_TYPE_POWER_TBL_5GHZ (PROPRIETARY_TLV_BASE_ID + 0x0d) /* 0x010d */
364 /** TLV type : WMM queue status */
365 #define TLV_TYPE_WMMQSTATUS (PROPRIETARY_TLV_BASE_ID + 0x10) /* 0x0110 */
366 /** TLV type : Wildcard SSID */
367 #define TLV_TYPE_WILDCARDSSID (PROPRIETARY_TLV_BASE_ID + 0x12) /* 0x0112 */
368 /** TLV type : TSF timestamp */
369 #define TLV_TYPE_TSFTIMESTAMP (PROPRIETARY_TLV_BASE_ID + 0x13) /* 0x0113 */
370 /** TLV type : ARP filter */
371 #define TLV_TYPE_ARP_FILTER (PROPRIETARY_TLV_BASE_ID + 0x15) /* 0x0115 */
372 /** TLV type : Beacon RSSI high */
373 #define TLV_TYPE_RSSI_HIGH (PROPRIETARY_TLV_BASE_ID + 0x16) /* 0x0116 */
374 /** TLV type : Beacon SNR high */
375 #define TLV_TYPE_SNR_HIGH (PROPRIETARY_TLV_BASE_ID + 0x17) /* 0x0117 */
376 /** TLV type : Start BG scan later */
377 #define TLV_TYPE_STARTBGSCANLATER                                              \
378 	(PROPRIETARY_TLV_BASE_ID + 0x1e) /* 0x011e                             \
379 					  */
380 /** TLV type: BG scan repeat count */
381 #define TLV_TYPE_REPEAT_COUNT (PROPRIETARY_TLV_BASE_ID + 0xb0) /* 0x01b0 */
382 /** TLV type : Authentication type */
383 #define TLV_TYPE_AUTH_TYPE (PROPRIETARY_TLV_BASE_ID + 0x1f) /* 0x011f */
384 /** TLV type : BSSID */
385 #define TLV_TYPE_BSSID (PROPRIETARY_TLV_BASE_ID + 0x23) /* 0x0123 */
386 
387 /** TLV type : Link Quality */
388 #define TLV_TYPE_LINK_QUALITY (PROPRIETARY_TLV_BASE_ID + 0x24) /* 0x0124 */
389 
390 /** TLV type : Data RSSI low */
391 #define TLV_TYPE_RSSI_LOW_DATA (PROPRIETARY_TLV_BASE_ID + 0x26) /* 0x0126 */
392 /** TLV type : Data SNR low */
393 #define TLV_TYPE_SNR_LOW_DATA (PROPRIETARY_TLV_BASE_ID + 0x27) /* 0x0127 */
394 /** TLV type : Data RSSI high */
395 #define TLV_TYPE_RSSI_HIGH_DATA (PROPRIETARY_TLV_BASE_ID + 0x28) /* 0x0128 */
396 /** TLV type : Data SNR high */
397 #define TLV_TYPE_SNR_HIGH_DATA (PROPRIETARY_TLV_BASE_ID + 0x29) /* 0x0129 */
398 
399 /** TLV type : Channel band list */
400 #define TLV_TYPE_CHANNELBANDLIST (PROPRIETARY_TLV_BASE_ID + 0x2a) /* 0x012a */
401 
402 /** TLV type : Security Cfg */
403 #define TLV_TYPE_SECURITY_CFG (PROPRIETARY_TLV_BASE_ID + 0x3a) /* 0x013a */
404 
405 /** TLV type : Passphrase */
406 #define TLV_TYPE_PASSPHRASE (PROPRIETARY_TLV_BASE_ID + 0x3c) /* 0x013c */
407 /** TLV type : SAE Password */
408 #define TLV_TYPE_SAE_PASSWORD (PROPRIETARY_TLV_BASE_ID + 0x141) /* 0x0241 */
409 /** TLV type : SAE PWE Derivation Mode */
410 #define TLV_TYPE_WPA3_SAE_PWE_DERIVATION_MODE                                  \
411 	(PROPRIETARY_TLV_BASE_ID + 339) /* 0x0100 + 0x153 */
412 /** TLV type : Encryption Protocol TLV */
413 #define TLV_TYPE_ENCRYPTION_PROTO                                              \
414 	(PROPRIETARY_TLV_BASE_ID + 0x40) /* 0x0140                             \
415 					  */
416 /** TLV type : Cipher TLV */
417 #define TLV_TYPE_CIPHER (PROPRIETARY_TLV_BASE_ID + 0x42) /* 0x0142 */
418 /** TLV type : PMK */
419 #define TLV_TYPE_PMK (PROPRIETARY_TLV_BASE_ID + 0x44) /* 0x0144 */
420 
421 /** TLV type : BCN miss */
422 #define TLV_TYPE_PRE_BCNMISS (PROPRIETARY_TLV_BASE_ID + 0x49) /* 0x0149 */
423 
424 /** TLV type : ENABLE ROAM IE */
425 #define TLV_TYPE_ROAM (PROPRIETARY_TLV_BASE_ID + 245)
426 /** TLV type : AP LIST IE */
427 #define TLV_TYPE_APLIST (PROPRIETARY_TLV_BASE_ID + 246)
428 /** TLV type : PMK */
429 #define TLV_TYPE_PMK_R0 (PROPRIETARY_TLV_BASE_ID + 247)
430 /** TLV type : PMK */
431 #define TLV_TYPE_PMK_R0_NAME (PROPRIETARY_TLV_BASE_ID + 248)
432 /** TLV type : TRIGGER CONDITION*/
433 #define TLV_TYPE_ROM_TRIGGER (PROPRIETARY_TLV_BASE_ID + 264)
434 /** TLV type : RETRY_COUNT*/
435 #define TLV_TYPE_ROM_RETRY_COUNT (PROPRIETARY_TLV_BASE_ID + 265)
436 /** TLV type : BGSCAN SETTING*/
437 #define TLV_TYPE_ROM_BGSCAN (PROPRIETARY_TLV_BASE_ID + 266)
438 /** TLV type : PARA RSSI*/
439 #define TLV_TYPE_ROM_PARA_RSSI (PROPRIETARY_TLV_BASE_ID + 267)
440 /** TLV type : BSSID blacklist*/
441 #define TLV_TYPE_BLACKLIST_BSSID (PROPRIETARY_TLV_BASE_ID + 0x11d)
442 /** TLV type : BAND & RSSI*/
443 #define TLV_TYPE_BAND_RSSI (PROPRIETARY_TLV_BASE_ID + 0x11e)
444 /** TLV type : ESS scan*/
445 #define TLV_TYPE_ENERGYEFFICIENTSCAN (PROPRIETARY_TLV_BASE_ID + 0xda)
446 /** TLV type : KEY params*/
447 #define TLV_TYPE_ROAM_OFFLOAD_USER_SET_PMK (PROPRIETARY_TLV_BASE_ID + 291)
448 
449 /** TLV type: WAPI IE */
450 #define TLV_TYPE_WAPI_IE (PROPRIETARY_TLV_BASE_ID + 0x5e) /* 0x015e */
451 
452 /** TLV type: MGMT IE */
453 #define TLV_TYPE_MGMT_IE (PROPRIETARY_TLV_BASE_ID + 0x69) /* 0x0169 */
454 /** TLV type: MAX_MGMT_IE */
455 #define TLV_TYPE_MAX_MGMT_IE (PROPRIETARY_TLV_BASE_ID + 0xaa) /* 0x01aa */
456 
457 /** TLV : Region Domain Code */
458 #define TLV_TYPE_REGION_DOMAIN_CODE                                            \
459 	(PROPRIETARY_TLV_BASE_ID + 0xab) /* 0x01ab */
460 
461 /** TLV type: key param v2 */
462 #define TLV_TYPE_KEY_PARAM_V2 (PROPRIETARY_TLV_BASE_ID + 0x9C) /* 0x019C */
463 
464 /** TLV type: ps params in hs */
465 #define TLV_TYPE_PS_PARAMS_IN_HS (PROPRIETARY_TLV_BASE_ID + 0xB5) /* 0x01b5 */
466 /** TLV type: hs wake hold off */
467 #define TLV_TYPE_HS_WAKE_HOLDOFF (PROPRIETARY_TLV_BASE_ID + 0xB6) /* 0x01b6 */
468 /** TLV type: wake up source */
469 #define TLV_TYPE_HS_WAKEUP_SOURCE_GPIO                                         \
470 	(PROPRIETARY_TLV_BASE_ID + 0x105) /* 0x0205 */
471 /** TLV type: management filter  */
472 #define TLV_TYPE_MGMT_FRAME_WAKEUP                                             \
473 	(PROPRIETARY_TLV_BASE_ID + 0x116) /* 0x0216 */
474 /** TLV type: extend wakeup source */
475 #define TLV_TYPE_WAKEUP_EXTEND (PROPRIETARY_TLV_BASE_ID + 0x118) /* 0x0218 */
476 /** TLV type: HS antenna mode */
477 #define TLV_TYPE_HS_ANTMODE (PROPRIETARY_TLV_BASE_ID + 0x119) /* 0x0219 */
478 
479 /** TLV type: robustcoex mode */
480 #define TLV_TYPE_ROBUSTCOEX (PROPRIETARY_TLV_BASE_ID + 0x11B) /* 0x021B */
481 
482 #define TLV_TYPE_DMCS_STATUS (PROPRIETARY_TLV_BASE_ID + 0x13A) /* 0x023A */
483 
484 /** TLV type : TDLS IDLE TIMEOUT */
485 #define TLV_TYPE_TDLS_IDLE_TIMEOUT                                             \
486 	(PROPRIETARY_TLV_BASE_ID + 0xC2) /* 0x01C2                             \
487 					  */
488 
489 /** TLV type : HT Capabilities */
490 #define TLV_TYPE_HT_CAP (PROPRIETARY_TLV_BASE_ID + 0x4a) /* 0x014a */
491 /** TLV type : HT Information */
492 #define TLV_TYPE_HT_INFO (PROPRIETARY_TLV_BASE_ID + 0x4b) /* 0x014b */
493 /** TLV type : Secondary Channel Offset */
494 #define TLV_SECONDARY_CHANNEL_OFFSET                                           \
495 	(PROPRIETARY_TLV_BASE_ID + 0x4c) /* 0x014c */
496 /** TLV type : 20/40 BSS Coexistence */
497 #define TLV_TYPE_2040BSS_COEXISTENCE                                           \
498 	(PROPRIETARY_TLV_BASE_ID + 0x4d) /* 0x014d */
499 /** TLV type : Overlapping BSS Scan Parameters */
500 #define TLV_TYPE_OVERLAP_BSS_SCAN_PARAM                                        \
501 	(PROPRIETARY_TLV_BASE_ID + 0x4e) /* 0x014e */
502 /** TLV type : Extended capabilities */
503 #define TLV_TYPE_EXTCAP (PROPRIETARY_TLV_BASE_ID + 0x4f) /* 0x014f */
504 /** TLV type : Set of MCS values that STA desires to use within the BSS */
505 #define TLV_TYPE_HT_OPERATIONAL_MCS_SET                                        \
506 	(PROPRIETARY_TLV_BASE_ID + 0x50) /* 0x0150 */
507 /** TLV ID : Management Frame */
508 #define TLV_TYPE_MGMT_FRAME (PROPRIETARY_TLV_BASE_ID + 0x68) /* 0x0168 */
509 /** TLV type : RXBA_SYNC */
510 #define TLV_TYPE_RXBA_SYNC (PROPRIETARY_TLV_BASE_ID + 0x99) /* 0x0199 */
511 
512 #ifdef WIFI_DIRECT_SUPPORT
513 /** TLV type : AP PSK */
514 #define TLV_TYPE_UAP_PSK (PROPRIETARY_TLV_BASE_ID + 0xa8) /* 0x01a8 */
515 /** TLV type : p2p NOA */
516 #define TLV_TYPE_WIFI_DIRECT_NOA (PROPRIETARY_TLV_BASE_ID + 0x83)
517 /** TLV type : p2p opp ps */
518 #define TLV_TYPE_WIFI_DIRECT_OPP_PS (PROPRIETARY_TLV_BASE_ID + 0x84)
519 #endif /* WIFI_DIRECT_SUPPORT */
520 /** TLV type : GPIO TSF LATCH CONFIG */
521 #define TLV_TYPE_GPIO_TSF_LATCH_CONFIG (PROPRIETARY_TLV_BASE_ID + 0x154)
522 /** TLV type : GPIO TSF LATCH REPORT*/
523 #define TLV_TYPE_GPIO_TSF_LATCH_REPORT (PROPRIETARY_TLV_BASE_ID + 0x155)
524 
525 /** TLV : 20/40 coex config */
526 #define TLV_TYPE_2040_BSS_COEX_CONTROL                                         \
527 	(PROPRIETARY_TLV_BASE_ID + 0x98) /* 0x0198 */
528 
529 /** TLV type :  aggr win size */
530 #define TLV_BTCOEX_WL_AGGR_WINSIZE (PROPRIETARY_TLV_BASE_ID + 0xca)
531 /** TLV type :  scan time */
532 #define TLV_BTCOEX_WL_SCANTIME (PROPRIETARY_TLV_BASE_ID + 0Xcb)
533 /** TLV type : Ewpa_eapol_pkt */
534 #define TLV_TYPE_EAPOL_PKT (PROPRIETARY_TLV_BASE_ID + 0xcf)
535 
536 #define TLV_TYPE_COALESCE_RULE (PROPRIETARY_TLV_BASE_ID + 0x9a)
537 
538 /** TLV type :  EES Configuration */
539 #define TLV_TYPE_EES_CFG (PROPRIETARY_TLV_BASE_ID + 0xda)
540 /** TLV type :  EES Network Configuration */
541 #define TLV_TYPE_EES_NET_CFG (PROPRIETARY_TLV_BASE_ID + 0xdb)
542 
543 #define TLV_TYPE_LL_STAT_IFACE (PROPRIETARY_TLV_BASE_ID + 300)
544 #define TLV_TYPE_LL_STAT_RADIO (PROPRIETARY_TLV_BASE_ID + 301)
545 
546 /** TLV type: fw cap info */
547 #define TLV_TYPE_FW_CAP_INFO (PROPRIETARY_TLV_BASE_ID + 318)
548 
549 /** TLV type: secure boot uuid */
550 #define TLV_TYPE_SECURE_BOOT_UUID (PROPRIETARY_TLV_BASE_ID + 348)
551 
552 /** ADDBA TID mask */
553 #define ADDBA_TID_MASK (MBIT(2) | MBIT(3) | MBIT(4) | MBIT(5))
554 /** DELBA TID mask */
555 #define DELBA_TID_MASK (MBIT(12) | MBIT(13) | MBIT(14) | MBIT(15))
556 /** ADDBA Starting Sequence Number Mask */
557 #define SSN_MASK 0xfff0
558 
559 /** Block Ack result status */
560 /** Block Ack Result : Success */
561 #define BA_RESULT_SUCCESS 0x0
562 /** Block Ack Result : Execution failure */
563 #define BA_RESULT_FAILURE 0x1
564 /** Block Ack Result : Timeout */
565 #define BA_RESULT_TIMEOUT 0x2
566 /** Block Ack Result : Data invalid */
567 #define BA_RESULT_DATA_INVALID 0x3
568 
569 /** Get the baStatus (NOT_SETUP, COMPLETE, IN_PROGRESS)
570  *  in Tx BA stream table */
571 #define IS_BASTREAM_SETUP(ptr) (ptr->ba_status)
572 
573 /** An AMPDU/AMSDU could be disallowed for certain TID. 0xff means
574  *  no aggregation is enabled for the assigned TID */
575 #define BA_STREAM_NOT_ALLOWED 0xff
576 
577 #ifdef STA_SUPPORT
578 #endif
579 
580 /** Test if 11n is enabled by checking the HTCap IE */
581 #define IS_11N_ENABLED(priv)                                                   \
582 	((priv->config_bands & BAND_GN || priv->config_bands & BAND_AN) &&     \
583 	 priv->curr_bss_params.bss_descriptor.pht_cap &&                       \
584 	 !priv->curr_bss_params.bss_descriptor.disable_11n)
585 /** Find out if we are the initiator or not */
586 #define INITIATOR_BIT(DelBAParamSet)                                           \
587 	(((DelBAParamSet)&MBIT(DELBA_INITIATOR_POS)) >> DELBA_INITIATOR_POS)
588 
589 /** 4K buf size */
590 #define MLAN_TX_DATA_BUF_SIZE_4K 4096
591 /** 8K buf size */
592 #define MLAN_TX_DATA_BUF_SIZE_8K 8192
593 /** 12K buf size */
594 #define MLAN_TX_DATA_BUF_SIZE_12K 12288
595 /** Max Rx AMPDU Size */
596 #define MAX_RX_AMPDU_SIZE_64K 0x03
597 /** Non green field station */
598 #define NON_GREENFIELD_STAS 0x04
599 
600 /** Max AMSDU size support */
601 #define HWSPEC_MAX_AMSDU_SUPP MBIT(31)
602 /** Greenfield support */
603 #define HWSPEC_GREENFIELD_SUPP MBIT(29)
604 /** SM Power Save enable */
605 #define CAPINFO_SMPS_ENABLE MBIT(27)
606 /** RX STBC support */
607 #define HWSPEC_RXSTBC_SUPP MBIT(26)
608 /** ShortGI @ 40Mhz support */
609 #define HWSPEC_SHORTGI40_SUPP MBIT(24)
610 /** ShortGI @ 20Mhz support */
611 #define HWSPEC_SHORTGI20_SUPP MBIT(23)
612 /** RX LDPC support */
613 #define HWSPEC_LDPC_SUPP MBIT(22)
614 /** Channel width 40Mhz support */
615 #define HWSPEC_CHANBW40_SUPP MBIT(17)
616 /** SM Power Save mode */
617 #define CAPINFO_SMPS_MODE MBIT(9)
618 /** 40Mhz intolarent enable */
619 #define CAPINFO_40MHZ_INTOLARENT MBIT(8)
620 
621 /** Default 11n capability mask for 2.4GHz */
622 #define DEFAULT_11N_CAP_MASK_BG                                                \
623 	(HWSPEC_SHORTGI20_SUPP | HWSPEC_RXSTBC_SUPP | HWSPEC_LDPC_SUPP)
624 /** Default 11n capability mask for 5GHz */
625 #define DEFAULT_11N_CAP_MASK_A                                                 \
626 	(HWSPEC_CHANBW40_SUPP | HWSPEC_SHORTGI20_SUPP |                        \
627 	 HWSPEC_MAX_AMSDU_SUPP | HWSPEC_SHORTGI40_SUPP | HWSPEC_RXSTBC_SUPP |  \
628 	 HWSPEC_LDPC_SUPP)
629 
630 /** Default 11n TX BF capability 2X2 chip **/
631 #define DEFAULT_11N_TX_BF_CAP_2X2 0x19E74618
632 /** Default 11n TX BF capability 1X1 chip **/
633 #define DEFAULT_11N_TX_BF_CAP_1X1 0x19E74608
634 
635 /** Bits to ignore in hw_dev_cap as these bits are set in get_hw_spec */
636 #define IGN_HW_DEV_CAP                                                         \
637 	(CAPINFO_40MHZ_INTOLARENT | (CAPINFO_SMPS_ENABLE | CAPINFO_SMPS_MODE))
638 
639 /** HW_SPEC FwCapInfo : If FW support RSN Replay Detection */
640 #define ISSUPP_RSN_REPLAY_DETECTION(FwCapInfo) (FwCapInfo & MBIT(28))
641 
642 /** HW_SPEC FwCapInfo */
643 #define ISSUPP_11NENABLED(FwCapInfo) (FwCapInfo & MBIT(11))
644 
645 /** HW_SPEC Dot11nDevCap : MAX AMSDU supported */
646 #define ISSUPP_MAXAMSDU(Dot11nDevCap) (Dot11nDevCap & MBIT(31))
647 /** HW_SPEC Dot11nDevCap : Beamforming support */
648 #define ISSUPP_BEAMFORMING(Dot11nDevCap) (Dot11nDevCap & MBIT(30))
649 /** HW_SPEC Dot11nDevCap : Green field support */
650 #define ISSUPP_GREENFIELD(Dot11nDevCap) (Dot11nDevCap & MBIT(29))
651 /** HW_SPEC Dot11nDevCap : AMPDU support */
652 #define ISSUPP_AMPDU(Dot11nDevCap) (Dot11nDevCap & MBIT(28))
653 /** HW_SPEC Dot11nDevCap : MIMO PS support  */
654 #define ISSUPP_MIMOPS(Dot11nDevCap) (Dot11nDevCap & MBIT(27))
655 /** HW_SPEC Dot11nDevCap : Rx STBC support */
656 #define ISSUPP_RXSTBC(Dot11nDevCap) (Dot11nDevCap & MBIT(26))
657 /** HW_SPEC Dot11nDevCap : Tx STBC support */
658 #define ISSUPP_TXSTBC(Dot11nDevCap) (Dot11nDevCap & MBIT(25))
659 /** HW_SPEC Dot11nDevCap : Short GI @ 40Mhz support */
660 #define ISSUPP_SHORTGI40(Dot11nDevCap) (Dot11nDevCap & MBIT(24))
661 /** HW_SPEC Dot11nDevCap : Reset Short GI @ 40Mhz support */
662 #define RESETSUPP_SHORTGI40(Dot11nDevCap) (Dot11nDevCap &= ~MBIT(24))
663 /** HW_SPEC Dot11nDevCap : Short GI @ 20Mhz support */
664 #define ISSUPP_SHORTGI20(Dot11nDevCap) (Dot11nDevCap & MBIT(23))
665 /** HW_SPEC Dot11nDevCap : Rx LDPC support */
666 #define ISSUPP_RXLDPC(Dot11nDevCap) (Dot11nDevCap & MBIT(22))
667 /** HW_SPEC Dot11nDevCap : Number of TX BA streams supported */
668 #define ISSUPP_GETTXBASTREAM(Dot11nDevCap) ((Dot11nDevCap >> 18) & 0xF)
669 /** HW_SPEC Dot11nDevCap : Channel BW support @ 40Mhz  support */
670 #define ISSUPP_CHANWIDTH40(Dot11nDevCap) (Dot11nDevCap & MBIT(17))
671 /** HW_SPEC Dot11nDevCap : Channel BW support @ 20Mhz  support */
672 #define ISSUPP_CHANWIDTH20(Dot11nDevCap) (Dot11nDevCap & MBIT(16))
673 /** HW_SPEC Dot11nDevCap : Channel BW support @ 10Mhz  support */
674 #define ISSUPP_CHANWIDTH10(Dot11nDevCap) (Dot11nDevCap & MBIT(15))
675 /** Dot11nUsrCap : SMPS static/dynamic mode if BIT27 MIMO PS support eanbled */
676 #define ISSUPP_SMPS_DYNAMIC_MODE(Dot11nDevCap) (Dot11nDevCap & MBIT(9))
677 /** Dot11nUsrCap : 40Mhz intolarance enabled */
678 #define ISENABLED_40MHZ_INTOLARENT(Dot11nDevCap) (Dot11nDevCap & MBIT(8))
679 /** Dot11nUsrCap : Reset 40Mhz intolarance enabled */
680 #define RESET_40MHZ_INTOLARENT(Dot11nDevCap) (Dot11nDevCap &= ~MBIT(8))
681 /** HW_SPEC Dot11nDevCap : Rx AntennaD support */
682 #define ISSUPP_RXANTENNAD(Dot11nDevCap) (Dot11nDevCap & MBIT(7))
683 /** HW_SPEC Dot11nDevCap : Rx AntennaC support */
684 #define ISSUPP_RXANTENNAC(Dot11nDevCap) (Dot11nDevCap & MBIT(6))
685 /** HW_SPEC Dot11nDevCap : Rx AntennaB support */
686 #define ISSUPP_RXANTENNAB(Dot11nDevCap) (Dot11nDevCap & MBIT(5))
687 /** HW_SPEC Dot11nDevCap : Rx AntennaA support */
688 #define ISSUPP_RXANTENNAA(Dot11nDevCap) (Dot11nDevCap & MBIT(4))
689 /** HW_SPEC Dot11nDevCap : Tx AntennaD support */
690 #define ISSUPP_TXANTENNAD(Dot11nDevCap) (Dot11nDevCap & MBIT(3))
691 /** HW_SPEC Dot11nDevCap : Tx AntennaC support */
692 #define ISSUPP_TXANTENNAC(Dot11nDevCap) (Dot11nDevCap & MBIT(2))
693 /** HW_SPEC Dot11nDevCap : Tx AntennaB support */
694 #define ISSUPP_TXANTENNAB(Dot11nDevCap) (Dot11nDevCap & MBIT(1))
695 /** HW_SPEC Dot11nDevCap : Tx AntennaA support */
696 #define ISSUPP_TXANTENNAA(Dot11nDevCap) (Dot11nDevCap & MBIT(0))
697 
698 /** HW_SPEC Dot11nDevCap : Set support of channel bw @ 40Mhz */
699 #define SETSUPP_CHANWIDTH40(Dot11nDevCap) (Dot11nDevCap |= MBIT(17))
700 /** HW_SPEC Dot11nDevCap : Reset support of channel bw @ 40Mhz */
701 #define RESETSUPP_CHANWIDTH40(Dot11nDevCap) (Dot11nDevCap &= ~MBIT(17))
702 
703 /** DevMCSSupported : Tx MCS supported */
704 #define GET_TXMCSSUPP(DevMCSSupported) (DevMCSSupported >> 4)
705 /** DevMCSSupported : Rx MCS supported */
706 #define GET_RXMCSSUPP(DevMCSSupported) (DevMCSSupported & 0x0f)
707 
708 /** GET HTCapInfo : Supported Channel BW */
709 #define GETHT_SUPPCHANWIDTH(HTCapInfo) (HTCapInfo & MBIT(1))
710 /** GET HTCapInfo : Support for Greenfield */
711 #define GETHT_GREENFIELD(HTCapInfo) (HTCapInfo & MBIT(4))
712 /** GET HTCapInfo : Support for Short GI @ 20Mhz */
713 #define GETHT_SHORTGI20(HTCapInfo) (HTCapInfo & MBIT(5))
714 /** GET HTCapInfo : Support for Short GI @ 40Mhz */
715 #define GETHT_SHORTGI40(HTCapInfo) (HTCapInfo & MBIT(6))
716 /** GET HTCapInfo : Support for Tx STBC */
717 #define GETHT_TXSTBC(HTCapInfo) (HTCapInfo & MBIT(7))
718 
719 /** GET HTCapInfo : Support for Rx STBC */
720 #define GETHT_RXSTBC(HTCapInfo) ((HTCapInfo >> 8) & 0x03)
721 /** GET HTCapInfo : Support for Delayed ACK */
722 #define GETHT_DELAYEDBACK(HTCapInfo) (HTCapInfo & MBIT(10))
723 /** GET HTCapInfo : Support for Max AMSDU */
724 #define GETHT_MAXAMSDU(HTCapInfo) (HTCapInfo & MBIT(11))
725 
726 /** GET HTCapInfo : Support 40Mhz Intolarence */
727 #define GETHT_40MHZ_INTOLARANT(HTCapInfo) (HTCapInfo & MBIT(14))
728 
729 /** SET HTCapInfo : Set support for LDPC coding capability */
730 #define SETHT_LDPCCODINGCAP(HTCapInfo) (HTCapInfo |= MBIT(0))
731 /** SET HTCapInfo : Set support for Channel BW */
732 #define SETHT_SUPPCHANWIDTH(HTCapInfo) (HTCapInfo |= MBIT(1))
733 /** SET HTCapInfo : Set support for Greenfield */
734 #define SETHT_GREENFIELD(HTCapInfo) (HTCapInfo |= MBIT(4))
735 /** SET HTCapInfo : Set support for Short GI @ 20Mhz */
736 #define SETHT_SHORTGI20(HTCapInfo) (HTCapInfo |= MBIT(5))
737 /** SET HTCapInfo : Set support for Short GI @ 40Mhz */
738 #define SETHT_SHORTGI40(HTCapInfo) (HTCapInfo |= MBIT(6))
739 /** SET HTCapInfo : Set support for Tx STBC */
740 #define SETHT_TXSTBC(HTCapInfo) (HTCapInfo |= MBIT(7))
741 /** SET HTCapInfo : Set support for Rx STBC */
742 #define SETHT_RXSTBC(HTCapInfo, value) (HTCapInfo |= (value << 8))
743 /** SET HTCapInfo : Set support for delayed block ack */
744 #define SETHT_DELAYEDBACK(HTCapInfo) (HTCapInfo |= MBIT(10))
745 /** SET HTCapInfo : Set support for Max size AMSDU */
746 #define SETHT_MAXAMSDU(HTCapInfo) (HTCapInfo |= MBIT(11))
747 /** SET HTCapInfo : Set support for DSSS/CCK Rates @ 40Mhz */
748 #define SETHT_DSSSCCK40(HTCapInfo) (HTCapInfo |= MBIT(12))
749 /** SET HTCapInfo : Enable 40Mhz Intolarence */
750 #define SETHT_40MHZ_INTOLARANT(HTCapInfo) (HTCapInfo |= MBIT(14))
751 
752 /** SET HTCapInfo : Set SM power save disabled */
753 #define SETHT_SMPS_DISABLE(HTCapInfo) ((HTCapInfo) |= (MBIT(2) | MBIT(3)))
754 /** SET HTCapInfo : Set Dynamic SM power save */
755 #define SETHT_SMPS_DYNAMIC(HTCapInfo) ((HTCapInfo) |= MBIT(2))
756 
757 /** RESET HTCapInfo : Set support for LDPC coding capability */
758 #define RESETHT_LDPCCODINGCAP(HTCapInfo) (HTCapInfo &= ~MBIT(0))
759 /** RESET HTCapInfo : Set support for Channel BW */
760 #define RESETHT_SUPPCHANWIDTH(HTCapInfo) (HTCapInfo &= ~MBIT(1))
761 /** RESET HTCapInfo : Set support for Greenfield */
762 #define RESETHT_GREENFIELD(HTCapInfo) (HTCapInfo &= ~MBIT(4))
763 /** RESET HTCapInfo : Set support for Short GI @ 20Mhz */
764 #define RESETHT_SHORTGI20(HTCapInfo) (HTCapInfo &= ~MBIT(5))
765 /** RESET HTCapInfo : Set support for Short GI @ 40Mhz */
766 #define RESETHT_SHORTGI40(HTCapInfo) (HTCapInfo &= ~MBIT(6))
767 /** RESET HTCapInfo : Set support for Tx STBC */
768 #define RESETHT_TXSTBC(HTCapInfo) (HTCapInfo &= ~MBIT(7))
769 /** RESET HTCapInfo : Set support for Rx STBC */
770 #define RESETHT_RXSTBC(HTCapInfo) (HTCapInfo &= ~(0x03 << 8))
771 /** RESET HTCapInfo : Set support for delayed block ack */
772 #define RESETHT_DELAYEDBACK(HTCapInfo) (HTCapInfo &= ~MBIT(10))
773 /** RESET HTCapInfo : Set support for Max size AMSDU */
774 #define RESETHT_MAXAMSDU(HTCapInfo) (HTCapInfo &= ~MBIT(11))
775 /** RESET HTCapInfo : Disable 40Mhz Intolarence */
776 #define RESETHT_40MHZ_INTOLARANT(HTCapInfo) (HTCapInfo &= ~MBIT(14))
777 /** RESET HTCapInfo: Enable SM power save */
778 #define RESETHT_SM_POWERSAVE(HTCapInfo) ((HTCapInfo) &= ~(MBIT(2) | MBIT(3)))
779 /** RESET HTExtCap : Clear RD Responder bit */
780 #define RESETHT_EXTCAP_RDG(HTExtCap) (HTExtCap &= ~MBIT(11))
781 /** SET MCS32 */
782 #define SETHT_MCS32(x) (x[4] |= 1)
783 /** Set mcs set defined bit */
784 #define SETHT_MCS_SET_DEFINED(x) (x[12] |= 1)
785 /** Set the highest Rx data rate */
786 #define SETHT_RX_HIGHEST_DT_SUPP(x, y) ((*(t_u16 *)(x + 10)) = y)
787 /** AMPDU factor size */
788 #define AMPDU_FACTOR_64K 0x03
789 /** Set AMPDU size in A-MPDU paramter field */
790 #define SETAMPDU_SIZE(x, y)                                                    \
791 	do {                                                                   \
792 		x = x & ~0x03;                                                 \
793 		x |= y & 0x03;                                                 \
794 	} while (0) /** Set AMPDU spacing in A-MPDU paramter field */
795 #define SETAMPDU_SPACING(x, y)                                                 \
796 	do {                                                                   \
797 		x = x & ~0x1c;                                                 \
798 		x |= (y & 0x07) << 2;                                          \
799 	} while (0)
800 
801 /** RadioType : Support for Band A */
802 #define ISSUPP_BANDA(FwCapInfo) (FwCapInfo & MBIT(10))
803 /** RadioType : Support for 40Mhz channel BW */
804 #define ISALLOWED_CHANWIDTH40(Field2) (Field2 & MBIT(2))
805 /** RadioType : Set support 40Mhz channel */
806 #define SET_CHANWIDTH40(Field2) (Field2 |= MBIT(2))
807 /** RadioType : Reset support 40Mhz channel */
808 #define RESET_CHANWIDTH40(Field2) (Field2 &= ~(MBIT(0) | MBIT(1) | MBIT(2)))
809 /** RadioType : Get secondary channel */
810 #define GET_SECONDARYCHAN(Field2) (Field2 & (MBIT(0) | MBIT(1)))
811 
812 /** ExtCap : Support for FILS */
813 #define ISSUPP_EXTCAP_FILS(ext_cap) (ext_cap.FILS)
814 /** ExtCap : Set support FILS */
815 #define SET_EXTCAP_FILS(ext_cap) (ext_cap.FILS = 1)
816 /** ExtCap : Reset support FILS */
817 #define RESET_EXTCAP_FILS(ext_cap) (ext_cap.FILS = 0)
818 
819 /** ExtCap : Support for TDLS */
820 #define ISSUPP_EXTCAP_TDLS(ext_cap) (ext_cap.TDLSSupport)
821 /** ExtCap : Set support TDLS */
822 #define SET_EXTCAP_TDLS(ext_cap) (ext_cap.TDLSSupport = 1)
823 /** ExtCap : Reset support TDLS */
824 #define RESET_EXTCAP_TDLS(ext_cap) (ext_cap.TDLSSupport = 0)
825 /** ExtCap : Support for TDLS UAPSD */
826 #define ISSUPP_EXTCAP_TDLS_UAPSD(ext_cap) (ext_cap.TDLSPeerUAPSDSupport)
827 /** ExtCap : Set support TDLS UAPSD */
828 #define SET_EXTCAP_TDLS_UAPSD(ext_cap) (ext_cap.TDLSPeerUAPSDSupport = 1)
829 /** ExtCap : Reset support TDLS UAPSD */
830 #define RESET_EXTCAP_TDLS_UAPSD(ext_cap) (ext_cap.TDLSPeerUAPSDSupport = 0)
831 /** ExtCap : Support for TDLS CHANNEL SWITCH */
832 #define ISSUPP_EXTCAP_TDLS_CHAN_SWITCH(ext_cap) (ext_cap.TDLSChannelSwitching)
833 /** ExtCap : Set support TDLS CHANNEL SWITCH */
834 #define SET_EXTCAP_TDLS_CHAN_SWITCH(ext_cap) (ext_cap.TDLSChannelSwitching = 1)
835 /** ExtCap : Reset support TDLS CHANNEL SWITCH */
836 #define RESET_EXTCAP_TDLS_CHAN_SWITCH(ext_cap)                                 \
837 	(ext_cap.TDLSChannelSwitching = 0)
838 /** ExtCap : Set support Multi BSSID */
839 #define SET_EXTCAP_MULTI_BSSID(ext_cap) (ext_cap.MultipleBSSID = 1)
840 /** ExtCap : Support for Interworking */
841 #define ISSUPP_EXTCAP_INTERWORKING(ext_cap) (ext_cap.Interworking)
842 /** ExtCap : Set support Interworking */
843 #define SET_EXTCAP_INTERWORKING(ext_cap) (ext_cap.Interworking = 1)
844 /** ExtCap : Reset support Interworking */
845 #define RESET_EXTCAP_INTERWORKING(ext_cap) (ext_cap.Interworking = 0)
846 /** ExtCap : Support for Operation Mode Notification */
847 #define ISSUPP_EXTCAP_OPERMODENTF(ext_cap) (ext_cap.OperModeNtf)
848 /** ExtCap : Set support Operation Mode Notification */
849 #define SET_EXTCAP_OPERMODENTF(ext_cap) (ext_cap.OperModeNtf = 1)
850 /** ExtCap : Reset support Operation Mode Notification */
851 #define RESET_EXTCAP_OPERMODENTF(ext_cap) (ext_cap.OperModeNtf = 0)
852 /** ExtCap : Support for QosMap */
853 #define ISSUPP_EXTCAP_QOS_MAP(ext_cap) (ext_cap.Qos_Map)
854 /** ExtCap : Set Support QosMap */
855 #define SET_EXTCAP_QOS_MAP(ext_cap) (ext_cap.Qos_Map = 1)
856 /** ExtCap : Reset support QosMap */
857 #define RESET_EXTCAP_QOS_MAP(ext_cap) (ext_cap.Qos_Map = 0)
858 /** ExtCap : Support for BSS_Transition */
859 #define ISSUPP_EXTCAP_BSS_TRANSITION(ext_cap) (ext_cap.BSS_Transition)
860 /** ExtCap : Set Support BSS_Transition */
861 #define SET_EXTCAP_BSS_TRANSITION(ext_cap) (ext_cap.BSS_Transition = 1)
862 /** ExtCap : Reset support BSS_Transition */
863 #define RESET_EXTCAP_BSS_TRANSITION(ext_cap) (ext_cap.BSS_Transition = 0)
864 
865 /** ExtCap : Support for TDLS wider bandwidth */
866 #define ISSUPP_EXTCAP_TDLS_WIDER_BANDWIDTH(ext_cap) (ext_cap.TDLSWildBandwidth)
867 /** ExtCap : Set support TDLS wider bandwidth */
868 #define SET_EXTCAP_TDLS_WIDER_BANDWIDTH(ext_cap) (ext_cap.TDLSWildBandwidth = 1)
869 /** ExtCap : Reset support TDLS wider bandwidth */
870 #define RESET_EXTCAP_TDLS_WIDER_BANDWIDTH(ext_cap)                             \
871 	(ext_cap.TDLSWildBandwidth = 0)
872 
873 /** ExtCap : Support for extend channel switch */
874 #define ISSUPP_EXTCAP_EXT_CHANNEL_SWITCH(ext_cap) (ext_cap.ExtChanSwitching)
875 /** ExtCap : Set support Ext Channel Switch */
876 #define SET_EXTCAP_EXT_CHANNEL_SWITCH(ext_cap) (ext_cap.ExtChanSwitching = 1)
877 /** ExtCap: Set Timing Measurement */
878 #define SET_EXTCAP_EXT_TIMING_MEASUREMENT(ext_cap)                             \
879 	(ext_cap.TimingMeasurement = 1)
880 /** ExtCap : Reset support Ext Channel Switch */
881 #define RESET_EXTCAP_EXT_CHANNEL_SWITCH(ext_cap) (ext_cap.ExtChanSwitching = 0)
882 
883 /** ExtCap : Support for TWT RESP */
884 #define ISSUPP_EXTCAP_EXT_TWT_RESP(ext_cap) (ext_cap.TWTResp)
885 /** ExtCap : Set support Ext TWT_REQ */
886 #define SET_EXTCAP_TWT_REQ(ext_cap) (ext_cap.TWTReq = 1)
887 /** ExtCap : ReSet support Ext TWT REQ */
888 #define RESET_EXTCAP_TWT_REQ(ext_cap) (ext_cap.TWTReq = 0)
889 
890 /** LLC/SNAP header len   */
891 #define LLC_SNAP_LEN 8
892 
893 /** bandwidth following HTCAP */
894 #define BW_FOLLOW_HTCAP 0
895 /** bandwidth following VHTCAP */
896 #define BW_FOLLOW_VHTCAP 1
897 
898 /** HW_SPEC FwCapInfo */
899 #define HWSPEC_11ACSGI80_SUPP MBIT(5)
900 #define HWSPEC_11ACRXSTBC_SUPP MBIT(8)
901 
902 #define ISSUPP_11ACENABLED(FwCapInfo) (FwCapInfo & (MBIT(12) | MBIT(13)))
903 
904 #define ISSUPP_11AC2GENABLED(FwCapInfo) (FwCapInfo & MBIT(12))
905 #define ISSUPP_11AC5GENABLED(FwCapInfo) (FwCapInfo & MBIT(13))
906 
907 /** HW_SPEC Dot11acDevCap : HTC-VHT supported */
908 #define ISSUPP_11ACVHTHTCVHT(Dot11acDevCap) (Dot11acDevCap & MBIT(22))
909 /** HW_SPEC Dot11acDevCap : VHT TXOP PS support */
910 #define ISSUPP_11ACVHTTXOPPS(Dot11acDevCap) (Dot11acDevCap & MBIT(21))
911 /** HW_SPEC Dot11acDevCap : MU RX beamformee support */
912 #define ISSUPP_11ACMURXBEAMFORMEE(Dot11acDevCap) (Dot11acDevCap & MBIT(20))
913 /** HW_SPEC Dot11acDevCap : MU TX beamformee support */
914 #define ISSUPP_11ACMUTXBEAMFORMEE(Dot11acDevCap) (Dot11acDevCap & MBIT(19))
915 /** HW_SPEC Dot11acDevCap : SU Beamformee support */
916 #define ISSUPP_11ACSUBEAMFORMEE(Dot11acDevCap) (Dot11acDevCap & MBIT(12))
917 /** HW_SPEC Dot11acDevCap : SU Beamformer support */
918 #define ISSUPP_11ACSUBEAMFORMER(Dot11acDevCap) (Dot11acDevCap & MBIT(11))
919 /** HW_SPEC Dot11acDevCap : Rx STBC support */
920 #define ISSUPP_11ACRXSTBC(Dot11acDevCap) (Dot11acDevCap & MBIT(8))
921 /** HW_SPEC Dot11acDevCap : Tx STBC support */
922 #define ISSUPP_11ACTXSTBC(Dot11acDevCap) (Dot11acDevCap & MBIT(7))
923 /** HW_SPEC Dot11acDevCap : Short GI support for 160MHz BW */
924 #define ISSUPP_11ACSGI160(Dot11acDevCap) (Dot11acDevCap & MBIT(6))
925 /** HW_SPEC Dot11acDevCap : Short GI support for 80MHz BW */
926 #define ISSUPP_11ACSGI80(Dot11acDevCap) (Dot11acDevCap & MBIT(5))
927 /** HW_SPEC Dot11acDevCap : LDPC coding support */
928 #define ISSUPP_11ACLDPC(Dot11acDevCap) (Dot11acDevCap & MBIT(4))
929 /** HW_SPEC Dot11acDevCap : Channel BW 20/40/80/160/80+80 MHz support */
930 #define ISSUPP_11ACBW8080(Dot11acDevCap) (Dot11acDevCap & MBIT(3))
931 /** HW_SPEC Dot11acDevCap : Channel BW 20/40/80/160 MHz support */
932 #define ISSUPP_11ACBW160(Dot11acDevCap) (Dot11acDevCap & MBIT(2))
933 
934 /** Set VHT Cap Info: Max MPDU length */
935 #define SET_VHTCAP_MAXMPDULEN(VHTCapInfo, value) (VHTCapInfo |= (value & 0x03))
936 /** Reset VHT Cap Info: Max MPDU length */
937 #define RESET_VHTCAP_MAXMPDULEN(VHTCapInfo) (VHTCapInfo &= ~(MBIT(0) | MBIT(1)))
938 
939 /** SET VHT CapInfo:  Supported Channel Width SET (2 bits)*/
940 #define SET_VHTCAP_CHWDSET(VHTCapInfo, value)                                  \
941 	(VHTCapInfo |= ((value & 0x3) << 2))
942 /** SET VHT CapInfo:  Rx STBC (3 bits) */
943 #define SET_VHTCAP_RXSTBC(VHTCapInfo, value)                                   \
944 	(VHTCapInfo |= ((value & 0x7) << 8))
945 /** SET VHT CapInfo:  Commpressed Steering Num of BFer Ant Supported (3 bits) */
946 #define SET_VHTCAP_SNBFERANT(VHTCapInfo, value)                                \
947 	(VHTCapInfo |= ((value & 0x7) << 13))
948 /** SET VHT CapInfo:  Num of Sounding Dimensions (3 bits) */
949 #define SET_VHTCAP_NUMSNDDM(VHTCapInfo, value)                                 \
950 	(VHTCapInfo |= ((value & 0x7) << 16))
951 /** SET VHT CapInfo:  Max AMPDU Length Exponent (3 bits) */
952 #define SET_VHTCAP_MAXAMPDULENEXP(VHTCapInfo, value)                           \
953 	(VHTCapInfo |= ((value & 0x7) << 23))
954 /** SET VHT CapInfo:  VHT Link Adaptation Capable (2 bits) */
955 #define SET_VHTCAP_LINKADPCAP(VHTCapInfo, value)                               \
956 	(VHTCapInfo |= ((value & 0x3) << 26))
957 
958 /** HW_SPEC Dot11acDevCap : ReSet VHT Link Adapation Capable */
959 #define RESET_11ACVHTLINKCAPA(Dot11acDevCap, value) (Dot11acDevCap &= ~(0x03))
960 /** HW_SPEC Dot11acDevCap : ReSet Maximum AMPDU Length Exponent */
961 #define RESET_11ACAMPDULENEXP(Dot11acDevCap, value) (Dot11acDevCap &= ~(0x07))
962 /** HW_SPEC Dot11acDevCap : ReSet support of HTC-VHT */
963 #define RESET_11ACVHTHTCVHT(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(22))
964 /** HW_SPEC Dot11acDevCap : ReSet support of VHT TXOP PS */
965 #define RESET_11ACVHTTXOPPS(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(21))
966 /** HW_SPEC Dot11acDevCap : ReSet support of MU RX beamformee */
967 #define RESET_11ACMURXBEAMFORMEE(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(20))
968 /** HW_SPEC Dot11acDevCap : ReSet support of MU TX beamformee */
969 #define RESET_11ACMUTXBEAMFORMEE(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(19))
970 /** HW_SPEC Dot11acDevCap : ReSet Number of Sounding Dimensions */
971 #define RESET_11ACSOUNDINGNUM(Dot11acDevCap) (Dot11acDevCap &= ~((0x07) << 16))
972 /** HW_SPEC Dot11acDevCap : ReSet Compressed Steering Number
973  * of Beamformer Antenna */
974 #define RESET_11ACBFANTNUM(Dot11acDevCap) (Dot11acDevCap &= ~((0x07) << 13))
975 /** HW_SPEC Dot11acDevCap : ReSet support of SU Beamformee */
976 #define RESET_11ACSUBEAMFORMEE(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(12))
977 /** HW_SPEC Dot11acDevCap : ReSet support of SU Beamformer */
978 #define RESET_11ACSUBEAMFORMER(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(11))
979 /** HW_SPEC Dot11acDevCap : ReSet support of Rx STBC */
980 #define RESET_11ACRXSTBC(Dot11acDevCap) (Dot11acDevCap &= ~((0x07) << 8))
981 /** HW_SPEC Dot11acDevCap : ReSet support of Tx STBC */
982 #define RESET_11ACTXSTBC(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(7))
983 /** HW_SPEC Dot11acDevCap : ReSet support of Short GI support for 160MHz BW */
984 #define RESET_11ACSGI160(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(6))
985 /** HW_SPEC Dot11acDevCap : ReSet support of Short GI support for 80MHz BW */
986 #define RESET_11ACSGI80(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(5))
987 /** HW_SPEC Dot11acDevCap : ReSet support of LDPC coding */
988 #define RESET_11ACLDPC(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(4))
989 /** HW_SPEC Dot11acDevCap : ReSet support of
990  * Channel BW 20/40/80/160/80+80 MHz */
991 #define RESET_11ACBW8080(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(3))
992 /** HW_SPEC Dot11acDevCap : ReSet support of
993  * Channel BW 20/40/80/160 MHz */
994 #define RESET_11ACBW160(Dot11acDevCap) (Dot11acDevCap &= ~MBIT(2))
995 /** HW_SPEC Dot11acDevCap : ReSet Max MPDU length */
996 #define RESET_11ACMAXMPDULEN(Dot11acDevCap) (Dot11acDevCap &= ~(0x03))
997 
998 /** Default 11ac capability mask for 2.4GHz */
999 #define DEFAULT_11AC_CAP_MASK_BG                                               \
1000 	(HWSPEC_11ACSGI80_SUPP | HWSPEC_11ACRXSTBC_SUPP)
1001 /** Default 11ac capability mask for 5GHz */
1002 #define DEFAULT_11AC_CAP_MASK_A (HWSPEC_11ACSGI80_SUPP | HWSPEC_11ACRXSTBC_SUPP)
1003 /** GET VHT CapInfo : MAX MPDU Length */
1004 #define GET_VHTCAP_MAXMPDULEN(VHTCapInfo) (VHTCapInfo & 0x3)
1005 /** GET VHT CapInfo:  Supported Channel Width SET (2 bits)*/
1006 #define GET_VHTCAP_CHWDSET(VHTCapInfo) ((VHTCapInfo >> 2) & 0x3)
1007 /** GET VHT CapInfo:  Rx STBC (3 bits) */
1008 #define GET_VHTCAP_RXSTBC(VHTCapInfo) ((VHTCapInfo >> 8) & 0x7)
1009 /** GET VHT CapInfo:  Compressed Steering Num of BFer Ant Supported (3 bits) */
1010 #define GET_VHTCAP_SNBFERANT(VHTCapInfo) ((VHTCapInfo >> 13) & 0x7)
1011 /** GET VHT CapInfo:  Num of Sounding Dimensions (3 bits) */
1012 #define GET_VHTCAP_NUMSNDDM(VHTCapInfo) ((VHTCapInfo >> 16) & 0x7)
1013 /** GET VHT CapInfo:  Max AMPDU Length Exponent (3 bits) */
1014 #define GET_VHTCAP_MAXAMPDULENEXP(VHTCapInfo) ((VHTCapInfo >> 23) & 0x7)
1015 /** GET VHT CapInfo:  VHT Link Adaptation Capable (2 bits) */
1016 #define GET_VHTCAP_LINKADPCAP(VHTCapInfo) ((VHTCapInfo >> 26) & 0x3)
1017 /**SET OPERATING MODE:Channel Width:80M*/
1018 #define SET_OPER_MODE_80M(oper_mode)                                           \
1019 	(oper_mode = (oper_mode & ~MBIT(0)) | MBIT(1))
1020 /**SET OPERATING MODE:Channel Width:40M*/
1021 #define SET_OPER_MODE_40M(oper_mode)                                           \
1022 	(oper_mode = (oper_mode & ~MBIT(1)) | MBIT(0))
1023 /**SET OPERATING MODE:Channel Width:20M*/
1024 #define SET_OPER_MODE_20M(oper_mode) (oper_mode &= ~(0x03))
1025 #define IS_OPER_MODE_20M(oper_mode) (((oper_mode) & (MBIT(0) | MBIT(1))) == 0)
1026 /**SET OPERATING MODE:Rx NSS:2*/
1027 #define SET_OPER_MODE_2NSS(oper_mode)                                          \
1028 	(oper_mode = (oper_mode & ~(MBIT(5) | MBIT(6))) | MBIT(4))
1029 /**SET OPERATING MODE:Rx NSS:1*/
1030 #define SET_OPER_MODE_1NSS(oper_mode)                                          \
1031 	(oper_mode &= ~(MBIT(4) | MBIT(5) | MBIT(6)))
1032 
1033 #define NO_NSS_SUPPORT 0x3
1034 #define GET_VHTMCS(MCSMapSet) (MCSMapSet & 0xFFFF)
1035 #define GET_VHTNSSMCS(MCSMapSet, nss) ((MCSMapSet >> (2 * (nss - 1))) & 0x3)
1036 #define RET_VHTNSSMCS(MCSMapSet, nss) ((MCSMapSet >> (2 * (nss - 1))) & 0x3)
1037 #define SET_VHTNSSMCS(MCSMapSet, nss, value)                                   \
1038 	(MCSMapSet |= (value & 0x3) << (2 * (nss - 1)))
1039 
1040 /** DevMCSSupported : Tx MCS supported */
1041 #define GET_DEVTXMCSMAP(DevMCSMap) (DevMCSMap >> 16)
1042 #define GET_DEVNSSTXMCS(DevMCSMap, nss)                                        \
1043 	((DevMCSMap >> (2 * (nss - 1) + 16)) & 0x3)
1044 #define SET_DEVNSSTXMCS(DevMCSMap, nss, value)                                 \
1045 	(DevMCSMap |= (value & 0x3) << (2 * (nss - 1) + 16))
1046 #define RESET_DEVTXMCSMAP(DevMCSMap) (DevMCSMap &= 0xFFFF)
1047 /** DevMCSSupported : Rx MCS supported */
1048 #define GET_DEVRXMCSMAP(DevMCSMap) (DevMCSMap & 0xFFFF)
1049 #define GET_DEVNSSRXMCS(DevMCSMap, nss) ((DevMCSMap >> (2 * (nss - 1))) & 0x3)
1050 #define SET_DEVNSSRXMCS(DevMCSMap, nss, value)                                 \
1051 	(DevMCSMap |= (value & 0x3) << (2 * (nss - 1)))
1052 #define RESET_DEVRXMCSMAP(DevMCSMap) (DevMCSMap &= 0xFFFF0000)
1053 
1054 /** TLV type : Rate scope */
1055 #define TLV_TYPE_RATE_DROP_PATTERN                                             \
1056 	(PROPRIETARY_TLV_BASE_ID + 0x51) /* 0x0151                             \
1057 					  */
1058 /** TLV type : Rate drop pattern */
1059 #define TLV_TYPE_RATE_DROP_CONTROL                                             \
1060 	(PROPRIETARY_TLV_BASE_ID + 0x52) /* 0x0152                             \
1061 					  */
1062 /** TLV type : Rate scope */
1063 #define TLV_TYPE_RATE_SCOPE (PROPRIETARY_TLV_BASE_ID + 0x53) /* 0x0153 */
1064 
1065 /** TLV type : Power group */
1066 #define TLV_TYPE_POWER_GROUP (PROPRIETARY_TLV_BASE_ID + 0x54) /* 0x0154 */
1067 
1068 /** Modulation class for DSSS Rates */
1069 #define MOD_CLASS_HR_DSSS 0x03
1070 /** Modulation class for OFDM Rates */
1071 #define MOD_CLASS_OFDM 0x07
1072 /** Modulation class for HT Rates */
1073 #define MOD_CLASS_HT 0x08
1074 /** Modulation class for VHT Rates */
1075 #define MOD_CLASS_VHT 0x09
1076 /** HT bandwidth 20 MHz */
1077 #define HT_BW_20 0
1078 /** HT bandwidth 40 MHz */
1079 #define HT_BW_40 1
1080 /** HT bandwidth 80 MHz */
1081 #define HT_BW_80 2
1082 
1083 /** TLV type : TX RATE CFG, rename from TLV_TYPE_GI_LTF_SIZE to include CMD and
1084  * HE ER SU settings to this tlv */
1085 #define TLV_TYPE_TX_RATE_CFG (PROPRIETARY_TLV_BASE_ID + 319) /* 0x023f */
1086 
1087 /** TLV type : Scan Response */
1088 #define TLV_TYPE_BSS_SCAN_RSP (PROPRIETARY_TLV_BASE_ID + 0x56) /* 0x0156 */
1089 /** TLV type : Scan Response Stats */
1090 #define TLV_TYPE_BSS_SCAN_INFO (PROPRIETARY_TLV_BASE_ID + 0x57) /* 0x0157 */
1091 
1092 /** TLV type : 11h Basic Rpt */
1093 #define TLV_TYPE_CHANRPT_11H_BASIC                                             \
1094 	(PROPRIETARY_TLV_BASE_ID + 0x5b) /* 0x015b                             \
1095 					  */
1096 
1097 /** TLV type : ZERO DFS Operation */
1098 #define TLV_TYPE_ZERO_DFS_OPERATION (PROPRIETARY_TLV_BASE_ID + 0x13b) // + 315
1099 /** TLV type : DFS W53 Configuration */
1100 #define TLV_TYPE_DFS_W53_CFG (PROPRIETARY_TLV_BASE_ID + 0x145) // + 325
1101 #ifdef OPCHAN
1102 /** TLV type : OpChannel control */
1103 #define TLV_TYPE_OPCHAN_CONTROL_DESC                                           \
1104 	(PROPRIETARY_TLV_BASE_ID + 0x79) /* 0x0179 */
1105 /** TLV type : OpChannel channel group control */
1106 #define TLV_TYPE_OPCHAN_CHANGRP_CTRL                                           \
1107 	(PROPRIETARY_TLV_BASE_ID + 0x7a) /* 0x017a */
1108 #endif
1109 
1110 /** TLV type : Action frame */
1111 #define TLV_TYPE_IEEE_ACTION_FRAME                                             \
1112 	(PROPRIETARY_TLV_BASE_ID + 0x8c) /* 0x018c                             \
1113 					  */
1114 
1115 /** TLV type : SCAN channel gap */
1116 #define TLV_TYPE_SCAN_CHANNEL_GAP                                              \
1117 	(PROPRIETARY_TLV_BASE_ID + 0xc5) /* 0x01c5                             \
1118 					  */
1119 /** TLV type : Channel statistics */
1120 #define TLV_TYPE_CHANNEL_STATS (PROPRIETARY_TLV_BASE_ID + 0xc6) /* 0x01c6 */
1121 /** TLV type : BSS_MODE */
1122 #define TLV_TYPE_BSS_MODE (PROPRIETARY_TLV_BASE_ID + 0xce) /* 0x01ce */
1123 
1124 /** Firmware Host Command ID Constants */
1125 /** Host Command ID : Get hardware specifications */
1126 #define HostCmd_CMD_GET_HW_SPEC 0x0003
1127 /** Host Command ID : 802.11 scan */
1128 #define HostCmd_CMD_802_11_SCAN 0x0006
1129 /** Host Command ID : 802.11 get log */
1130 #define HostCmd_CMD_802_11_GET_LOG 0x000b
1131 
1132 /** Host Command id: GET_TX_RX_PKT_STATS */
1133 #define HOST_CMD_TX_RX_PKT_STATS 0x008d
1134 
1135 /** Host Command ID : 802.11 get/set link layer statistic */
1136 #define HostCmd_CMD_802_11_LINK_STATS 0x0256
1137 
1138 /** Host Command ID : MAC multicast address */
1139 #define HostCmd_CMD_MAC_MULTICAST_ADR 0x0010
1140 /** Host Command ID : 802.11 EEPROM access */
1141 #define HostCmd_CMD_802_11_EEPROM_ACCESS 0x0059
1142 /** Host Command ID : 802.11 associate */
1143 #define HostCmd_CMD_802_11_ASSOCIATE 0x0012
1144 
1145 /** Host Command ID : 802.11 SNMP MIB */
1146 #define HostCmd_CMD_802_11_SNMP_MIB 0x0016
1147 /** Host Command ID : MAC register access */
1148 #define HostCmd_CMD_MAC_REG_ACCESS 0x0019
1149 /** Host Command ID : BBP register access */
1150 #define HostCmd_CMD_BBP_REG_ACCESS 0x001a
1151 /** Host Command ID : RF register access */
1152 #define HostCmd_CMD_RF_REG_ACCESS 0x001b
1153 
1154 /** Host Command ID : 802.11 radio control */
1155 #define HostCmd_CMD_802_11_RADIO_CONTROL 0x001c
1156 /** Host Command ID : 802.11 RF channel */
1157 #define HostCmd_CMD_802_11_RF_CHANNEL 0x001d
1158 /** Host Command ID : 802.11 RF Tx power */
1159 #define HostCmd_CMD_802_11_RF_TX_POWER 0x001e
1160 
1161 /** Host Command ID : 802.11 RF antenna */
1162 #define HostCmd_CMD_802_11_RF_ANTENNA 0x0020
1163 
1164 /** Host Command ID : 802.11 deauthenticate */
1165 #define HostCmd_CMD_802_11_DEAUTHENTICATE 0x0024
1166 /** Host Command ID: 802.11 disassoicate */
1167 #define HostCmd_CMD_802_11_DISASSOCIATE 0x0026
1168 /** Host Command ID : MAC control */
1169 #define HostCmd_CMD_MAC_CONTROL 0x0028
1170 /** Host Command ID : 802.11 Ad-Hoc start */
1171 #define HostCmd_CMD_802_11_AD_HOC_START 0x002b
1172 /** Host Command ID : 802.11 Ad-Hoc join */
1173 #define HostCmd_CMD_802_11_AD_HOC_JOIN 0x002c
1174 
1175 /** Host Command ID: CW Mode */
1176 #define HostCmd_CMD_CW_MODE_CTRL 0x0239
1177 /** Host Command ID : 802.11 key material */
1178 #define HostCmd_CMD_802_11_KEY_MATERIAL 0x005e
1179 
1180 /** Host Command ID : 802.11 Ad-Hoc stop */
1181 #define HostCmd_CMD_802_11_AD_HOC_STOP 0x0040
1182 
1183 /** Host Command ID : 802.22 MAC address */
1184 #define HostCmd_CMD_802_11_MAC_ADDRESS 0x004D
1185 
1186 /** Host Command ID : WMM Traffic Stream Status */
1187 #define HostCmd_CMD_WMM_TS_STATUS 0x005d
1188 
1189 /** Host Command ID : 802.11 D domain information */
1190 #define HostCmd_CMD_802_11D_DOMAIN_INFO 0x005b
1191 
1192 /*This command gets/sets the Transmit Rate-based Power Control (TRPC) channel
1193  * configuration.*/
1194 #define HostCmd_CHANNEL_TRPC_CONFIG 0x00fb
1195 
1196 /** Host Command ID : 802.11 TPC information */
1197 #define HostCmd_CMD_802_11_TPC_INFO 0x005f
1198 /** Host Command ID : 802.11 TPC adapt req */
1199 #define HostCmd_CMD_802_11_TPC_ADAPT_REQ 0x0060
1200 /** Host Command ID : 802.11 channel SW ann */
1201 #define HostCmd_CMD_802_11_CHAN_SW_ANN 0x0061
1202 
1203 /** Host Command ID : Measurement request */
1204 #define HostCmd_CMD_MEASUREMENT_REQUEST 0x0062
1205 /** Host Command ID : Measurement report */
1206 #define HostCmd_CMD_MEASUREMENT_REPORT 0x0063
1207 
1208 /** Host Command ID : 802.11 sleep parameters */
1209 #define HostCmd_CMD_802_11_SLEEP_PARAMS 0x0066
1210 
1211 /** Host Command ID : 802.11 ps inactivity timeout */
1212 #define HostCmd_CMD_802_11_PS_INACTIVITY_TIMEOUT 0x0067
1213 
1214 /** Host Command ID : 802.11 sleep period */
1215 #define HostCmd_CMD_802_11_SLEEP_PERIOD 0x0068
1216 
1217 /** Host Command ID: 802.11 BG scan config */
1218 #define HostCmd_CMD_802_11_BG_SCAN_CONFIG 0x006b
1219 /** Host Command ID : 802.11 BG scan query */
1220 #define HostCmd_CMD_802_11_BG_SCAN_QUERY 0x006c
1221 
1222 /** Host Command ID : WMM ADDTS req */
1223 #define HostCmd_CMD_WMM_ADDTS_REQ 0x006E
1224 /** Host Command ID : WMM DELTS req */
1225 #define HostCmd_CMD_WMM_DELTS_REQ 0x006F
1226 /** Host Command ID : WMM queue configuration */
1227 #define HostCmd_CMD_WMM_QUEUE_CONFIG 0x0070
1228 /** Host Command ID : 802.11 get status */
1229 #define HostCmd_CMD_WMM_GET_STATUS 0x0071
1230 
1231 /** Host Command ID : 802.11 subscribe event */
1232 #define HostCmd_CMD_802_11_SUBSCRIBE_EVENT 0x0075
1233 
1234 /** Host Command ID : 802.11 Tx rate query */
1235 #define HostCmd_CMD_802_11_TX_RATE_QUERY 0x007f
1236 /** Host Command ID :Get timestamp value */
1237 #define HostCmd_CMD_GET_TSF 0x0080
1238 
1239 /** Host Command ID : WMM queue stats */
1240 #define HostCmd_CMD_WMM_QUEUE_STATS 0x0081
1241 
1242 /** Host Command ID : KEEP ALIVE command */
1243 #define HostCmd_CMD_AUTO_TX 0x0082
1244 
1245 /** Host Command ID : 802.11 IBSS coalescing status */
1246 #define HostCmd_CMD_802_11_IBSS_COALESCING_STATUS 0x0083
1247 
1248 /** Host Command ID : Memory access */
1249 #define HostCmd_CMD_MEM_ACCESS 0x0086
1250 
1251 #if defined(SDIO)
1252 /** Host Command ID : SDIO GPIO interrupt configuration */
1253 #define HostCmd_CMD_SDIO_GPIO_INT_CONFIG 0x0088
1254 #endif
1255 
1256 /** Host Command ID : Mfg command */
1257 #define HostCmd_CMD_MFG_COMMAND 0x0089
1258 /** Host Command ID : Inactivity timeout ext */
1259 #define HostCmd_CMD_INACTIVITY_TIMEOUT_EXT 0x008a
1260 
1261 /** Host Command ID : DBGS configuration */
1262 #define HostCmd_CMD_DBGS_CFG 0x008b
1263 /** Host Command ID : Get memory */
1264 #define HostCmd_CMD_GET_MEM 0x008c
1265 
1266 /** Host Command ID : Cal data dnld */
1267 #define HostCmd_CMD_CFG_DATA 0x008f
1268 
1269 /** Host Command ID : SDIO pull control */
1270 #define HostCmd_CMD_SDIO_PULL_CTRL 0x0093
1271 
1272 /** Host Command ID : ECL system clock configuration */
1273 #define HostCmd_CMD_ECL_SYSTEM_CLOCK_CONFIG 0x0094
1274 
1275 /** Host Command ID : Extended version */
1276 #define HostCmd_CMD_VERSION_EXT 0x0097
1277 
1278 /** Host Command ID : MEF configuration */
1279 #define HostCmd_CMD_MEF_CFG 0x009a
1280 /** Host Command ID : 802.11 RSSI INFO*/
1281 #define HostCmd_CMD_RSSI_INFO 0x00a4
1282 /** Host Command ID : Function initialization */
1283 #define HostCmd_CMD_FUNC_INIT 0x00a9
1284 /** Host Command ID : Function shutdown */
1285 #define HostCmd_CMD_FUNC_SHUTDOWN 0x00aa
1286 
1287 /** Host Command ID : Robustcoex */
1288 #define HostCmd_CMD_802_11_ROBUSTCOEX 0x00e0
1289 
1290 /** Host Command ID :EAPOL PKT */
1291 #define HostCmd_CMD_802_11_EAPOL_PKT 0x012e
1292 
1293 /** Host Command ID :MIMO SWITCH **/
1294 #define HostCmd_CMD_802_11_MIMO_SWITCH 0x0235
1295 
1296 /** Host Command ID : 802.11 RSSI INFO EXT*/
1297 #define HostCmd_CMD_RSSI_INFO_EXT 0x0237
1298 /** Host Command ID : ROAMING OFFLOAD TO FW*/
1299 #define HostCmd_CMD_ROAM_OFFLOAD 0x0245
1300 
1301 #ifdef RX_PACKET_COALESCE
1302 /** TLV ID for RX pkt coalesce config */
1303 #define TLV_TYPE_RX_PKT_COAL_CONFIG (PROPRIETARY_TLV_BASE_ID + 0xC9)
1304 #endif
1305 
1306 #define TLV_TYPE_PREV_BSSID (PROPRIETARY_TLV_BASE_ID + 330)
1307 
1308 /** Host Command ID : Channel report request */
1309 #define HostCmd_CMD_CHAN_REPORT_REQUEST 0x00dd
1310 
1311 /** Host Command ID: SUPPLICANT_PMK */
1312 #define HostCmd_CMD_SUPPLICANT_PMK 0x00c4
1313 /** Host Command ID: SUPPLICANT_PROFILE */
1314 #define HostCmd_CMD_SUPPLICANT_PROFILE 0x00c5
1315 
1316 /** Host Command ID : Add Block Ack Request */
1317 #define HostCmd_CMD_11N_ADDBA_REQ 0x00ce
1318 /** Host Command ID : Delete a Block Ack Request */
1319 #define HostCmd_CMD_11N_CFG 0x00cd
1320 /** Host Command ID : Add Block Ack Response */
1321 #define HostCmd_CMD_11N_ADDBA_RSP 0x00cf
1322 /** Host Command ID : Delete a Block Ack Request */
1323 #define HostCmd_CMD_11N_DELBA 0x00d0
1324 /** Host Command ID: Configure Tx Buf size */
1325 #define HostCmd_CMD_RECONFIGURE_TX_BUFF 0x00d9
1326 /** Host Command ID: AMSDU Aggr Ctrl */
1327 #define HostCmd_CMD_AMSDU_AGGR_CTRL 0x00df
1328 /** Host Command ID: 11AC config */
1329 #define HostCmd_CMD_11AC_CFG 0x0112
1330 /** Host Command ID: Configure TX Beamforming capability */
1331 #define HostCmd_CMD_TX_BF_CFG 0x0104
1332 
1333 /** Host Command ID : 802.11 TX power configuration */
1334 #define HostCmd_CMD_TXPWR_CFG 0x00d1
1335 
1336 /** Host Command ID : Soft Reset */
1337 #define HostCmd_CMD_SOFT_RESET 0x00d5
1338 
1339 /** Host Command ID : 802.11 b/g/n rate configration */
1340 #define HostCmd_CMD_TX_RATE_CFG 0x00d6
1341 
1342 /** Host Command ID : Enhanced PS mode */
1343 #define HostCmd_CMD_802_11_PS_MODE_ENH 0x00e4
1344 
1345 /** Host command action : Host sleep configuration */
1346 #define HostCmd_CMD_802_11_HS_CFG_ENH 0x00e5
1347 
1348 /** Host Command ID : CAU register access */
1349 #define HostCmd_CMD_CAU_REG_ACCESS 0x00ed
1350 
1351 /** Host Command ID : mgmt IE list */
1352 #define HostCmd_CMD_MGMT_IE_LIST 0x00f2
1353 
1354 #define HostCmd_CMD_802_11_BAND_STEERING 0x026f
1355 /*** Host Command ID " MC_AGGR_CFG */
1356 #define HostCmd_CMD_MC_AGGR_CFG 0x027a
1357 #define HostCmd_CMD_802_11_STATS 0x0014
1358 #define HostCmd_CMD_GET_CH_LOAD 0x027b
1359 
1360 /** Host Command ID : TDLS configuration */
1361 #define HostCmd_CMD_TDLS_CONFIG 0x0100
1362 /** Host Command ID : TDLS operation */
1363 #define HostCmd_CMD_TDLS_OPERATION 0x0122
1364 
1365 #ifdef SDIO
1366 /** Host Command ID : SDIO single port RX aggr */
1367 #define HostCmd_CMD_SDIO_SP_RX_AGGR_CFG 0x0223
1368 
1369 /** fw_cap_info bit16 for sdio sp rx aggr flag*/
1370 #define SDIO_SP_RX_AGGR_ENABLE MBIT(16)
1371 
1372 #endif
1373 
1374 /* fw_cap_info bit18 for ecsa support*/
1375 #define FW_CAPINFO_ECSA MBIT(18)
1376 
1377 /* fw_cap_info bit20 for get log*/
1378 #define FW_CAPINFO_GET_LOG MBIT(20)
1379 
1380 /** fw_cap_info bit22 for embedded supplicant support*/
1381 #define FW_CAPINFO_SUPPLICANT_SUPPORT MBIT(21)
1382 
1383 /** fw_cap_info bit23 for embedded authenticator support*/
1384 #define FW_CAPINFO_AUTH_SUPPORT MBIT(22)
1385 
1386 /** fw_cap_info bit23 for firmware roaming*/
1387 #define FW_ROAMING_SUPPORT MBIT(23)
1388 
1389 /** fw_cap_info bit25 for adhoc support*/
1390 #define FW_CAPINFO_ADHOC_SUPPORT MBIT(25)
1391 /** Check if adhoc is supported by firmware */
1392 #define IS_FW_SUPPORT_ADHOC(_adapter)                                          \
1393 	(_adapter->fw_cap_info & FW_CAPINFO_ADHOC_SUPPORT)
1394 
1395 /** Check if supplicant is supported by firmware */
1396 #define IS_FW_SUPPORT_SUPPLICANT(_adapter)                                     \
1397 	(_adapter->fw_cap_info & FW_CAPINFO_SUPPLICANT_SUPPORT)
1398 
1399 /** Check if authenticator is supported by firmware */
1400 #define IS_FW_SUPPORT_AUTHENTICATOR(_adapter)                                  \
1401 	(_adapter->fw_cap_info & FW_CAPINFO_AUTH_SUPPORT)
1402 
1403 /** Ext fw cap info bit0 only 1x1 5G is available */
1404 #define FW_CAPINFO_EXT_5G_1X1_ONLY MBIT(0)
1405 /** Ext fw cap info bit1 1x1 5G is not available */
1406 #define FW_CAPINFO_EXT_NO_5G_1X1 MBIT(1)
1407 /** Ext fw cap info bit 2 only 1x1 2G is available */
1408 #define FW_CAPINFO_EXT_2G_1X1_ONLY MBIT(2)
1409 /**Ext fw cap info bit3 1x1 2G is not available */
1410 #define FW_CAPINFO_EXT_NO_2G_1X1 MBIT(3)
1411 /** Ext fw cap info bit4 1x1 + 1x1 5G mode is unavailable */
1412 #define FW_CAPINFO_EXT_NO_5G_1X1_PLUS_1X1 MBIT(4)
1413 /** Ext fw cap info bit5 80 + 80 MHz capability disabled */
1414 #define FW_CAPINFO_EXT_NO_80MHz_PLUS_80MHz MBIT(5)
1415 /** Ext fw cap info bit6 1024 QAM is disabled */
1416 #define FW_CAPINFO_EXT_NO_1024_QAM MBIT(6)
1417 /** FW cap info bit 7 11AX */
1418 #define FW_CAPINFO_EXT_802_11AX MBIT(7)
1419 /** FW cap info bit 8: 80MHZ disabled */
1420 #define FW_CAPINFO_EXT_NO_80MHZ MBIT(8)
1421 /** FW cap info bit 9: Multi BSSID Support */
1422 #define FW_CAPINFO_EXT_MULTI_BSSID MBIT(9)
1423 /** FW cap info bit 10: Beacon Protection Support */
1424 #define FW_CAPINFO_EXT_BEACON_PROT MBIT(10)
1425 /** FW cap info bit 11: OTP cal data */
1426 #define FW_CAPINFO_EXT_OTP_CALDATA MBIT(11)
1427 /** FW cap info bit 12: RTT Support */
1428 #define FW_CAPINFO_EXT_RTT MBIT(12)
1429 /** FW cap info bit 13: Channel Tracking Support */
1430 #define FW_CAPINFO_EXT_CHAN_TRACK MBIT(13)
1431 /** FW cap info bit 14: 6G Support */
1432 #define FW_CAPINFO_EXT_6G MBIT(14)
1433 
1434 /** Check if 5G 1x1 only is supported by firmware */
1435 #define IS_FW_SUPPORT_5G_1X1_ONLY(_adapter)                                    \
1436 	(_adapter->fw_cap_ext & FW_CAPINFO_EXT_5G_1X1_ONLY)
1437 /** Check if 5G 1x1 is unavailable in firmware */
1438 #define IS_FW_SUPPORT_NO_5G_1X1(_adapter)                                      \
1439 	(_adapter->fw_cap_ext & FW_CAPINFO_EXT_NO_5G_1X1)
1440 /** Check if 2G 1x1 only is supported by firmware */
1441 #define IS_FW_SUPPORT_2G_1X1_ONLY(_adapter)                                    \
1442 	(_adapter->fw_cap_ext & FW_CAPINFO_EXT_2G_1X1_ONLY)
1443 /** Check if 2G 1x1 is unavailable in firmware */
1444 #define IS_FW_SUPPORT_NO_2G_1X1(_adapter)                                      \
1445 	(_adapter->fw_cap_ext & FW_CAPINFO_EXT_NO_2G_1X1)
1446 /** Check if 5G 1x1 + 1x1 mode is disabled in firmware */
1447 #define IS_FW_SUPPORT_NO_5G_1X1_PLUS_1X1(_adapter)                             \
1448 	(_adapter->fw_cap_ext & FW_CAPINFO_EXT_NO_5G_1X1_PLUS_1X1)
1449 /** Check if 80 + 80MHz is disabled in firmware */
1450 #define IS_FW_SUPPORT_NO_80MHz_PLUS_80MHz(_adapter)                            \
1451 	(_adapter->fw_cap_ext & FW_CAPINFO_EXT_NO_80MHz_PLUS_80MHz)
1452 /** Check if 1024 QAM disabled in firmware */
1453 #define IS_FW_SUPPORT_NO_1024_QAM(_adapter)                                    \
1454 	(_adapter->fw_cap_ext & FW_CAPINFO_EXT_NO_1024_QAM)
1455 /** Check if 80MHZ disabled in firmware */
1456 #define IS_FW_SUPPORT_NO_80MHZ(_adapter)                                       \
1457 	(_adapter->fw_cap_ext & FW_CAPINFO_EXT_NO_80MHZ)
1458 /** Check if Multi BSSID supported by firmware */
1459 #define IS_FW_SUPPORT_MULTIBSSID(_adapter)                                     \
1460 	(_adapter->fw_cap_ext & FW_CAPINFO_EXT_MULTI_BSSID)
1461 /** Check if Beacon Protection supported by firmware */
1462 #define IS_FW_SUPPORT_BEACON_PROT(_adapter)                                    \
1463 	(_adapter->fw_cap_ext & FW_CAPINFO_EXT_BEACON_PROT)
1464 /** Check if RTT supported by firmware */
1465 #define IS_FW_SUPPORT_RTT(_adapter) (_adapter->fw_cap_ext & FW_CAPINFO_EXT_RTT)
1466 /** Check if Channel Tracking supported by firmware */
1467 #define IS_FW_SUPPORT_CHAN_TRACK(_adapter)                                     \
1468 	(_adapter->fw_cap_ext & FW_CAPINFO_EXT_CHAN_TRACK)
1469 /** Check if 6G supported by firmware */
1470 #define IS_FW_SUPPORT_6G(_adapter) (_adapter->fw_cap_ext & FW_CAPINFO_EXT_6G)
1471 
1472 /** MrvlIEtypes_PrevBssid_t */
1473 typedef MLAN_PACK_START struct _MrvlIEtypes_PrevBssid_t {
1474 	/** Header */
1475 	MrvlIEtypesHeader_t header;
1476 	/** prev_bssid **/
1477 	t_u8 prev_bssid[6];
1478 } MLAN_PACK_END MrvlIEtypes_PrevBssid_t;
1479 
1480 /** FW cap info TLV */
1481 typedef MLAN_PACK_START struct _MrvlIEtypes_fw_cap_info_t {
1482 	/** Header type */
1483 	t_u16 type;
1484 	/** Header length */
1485 	t_u16 len;
1486 	/** Fw cap info bitmap */
1487 	t_u32 fw_cap_info;
1488 	/** Extended fw cap info bitmap */
1489 	t_u32 fw_cap_ext;
1490 } MLAN_PACK_END MrvlIEtypes_fw_cap_info_t, *pMrvlIEtypes_fw_cap_info_t;
1491 
1492 /** Check if 11AX is supported by firmware */
1493 #define IS_FW_SUPPORT_11AX(_adapter)                                           \
1494 	(_adapter->fw_cap_ext & FW_CAPINFO_EXT_802_11AX)
1495 
1496 typedef MLAN_PACK_START struct _MrvlIEtypes_Extension_t {
1497 	/** Header type */
1498 	t_u16 type;
1499 	/** Header length */
1500 	t_u16 len;
1501 	/** Element id extension */
1502 	t_u8 ext_id;
1503 	/** payload */
1504 	t_u8 data[1];
1505 } MLAN_PACK_END MrvlIEtypes_Extension_t, *pMrvlIEtypes_Extension_t;
1506 
1507 /* HE MAC Capabilities Information field BIT 1 for TWT Req */
1508 #define HE_MAC_CAP_TWT_REQ_SUPPORT MBIT(1)
1509 /* HE MAC Capabilities Information field BIT 2 for TWT Resp*/
1510 #define HE_MAC_CAP_TWT_RESP_SUPPORT MBIT(2)
1511 typedef MLAN_PACK_START struct _MrvlIEtypes_He_cap_t {
1512 	/** Header type */
1513 	t_u16 type;
1514 	/** Header length */
1515 	t_u16 len;
1516 	/** Element id extension */
1517 	t_u8 ext_id;
1518 	/** he mac capability info */
1519 	t_u8 he_mac_cap[6];
1520 	/** he phy capability info */
1521 	t_u8 he_phy_cap[11];
1522 	/** rx mcs for 80 */
1523 	t_u16 rx_mcs_80;
1524 	/** tx mcs for 80 */
1525 	t_u16 tx_mcs_80;
1526 	/** rx mcs for bw 160 */
1527 	t_u16 rx_mcs_160;
1528 	/** tx mcs for bw 160 */
1529 	t_u16 tx_mcs_160;
1530 	/** rx mcs for bw 80+80 */
1531 	t_u16 rx_mcs_80p80;
1532 	/** tx mcs for bw 80+80 */
1533 	t_u16 tx_mcs_80p80;
1534 	/** PPE Thresholds (optional) */
1535 	t_u8 val[20];
1536 } MLAN_PACK_END MrvlIEtypes_He_cap_t, *pMrvlIEtypes_he_cap_t;
1537 
1538 typedef MLAN_PACK_START struct _MrvlIEtypes_He_Op_t {
1539 	/** Header */
1540 	MrvlIEtypesHeader_t header;
1541 	/** Element id extension */
1542 	t_u8 ext_id;
1543 	/** HE Operation Parameters */
1544 	t_u16 he_op_param1;
1545 	/** HE Operation Parameters */
1546 	t_u8 he_op_param2;
1547 	/** BSS Color Info */
1548 	t_u8 bss_color_info;
1549 	/** Basic HE-MCS and NSS Set */
1550 	t_u16 basic_he_mcs_nss;
1551 	/** Optional Field, including VHT Operation Info Max Co-Hosted BSSID
1552 	 * Indicator, and 6Ghz Operation Info  */
1553 	t_u8 option[9];
1554 } MLAN_PACK_END MrvlIEtypes_He_Op_t;
1555 
1556 #ifdef RX_PACKET_COALESCE
1557 /** Host Command ID : Rx packet coalescing configuration */
1558 #define HostCmd_CMD_RX_PKT_COALESCE_CFG 0x012c
1559 #endif
1560 
1561 /** Host Command ID : Extended scan support */
1562 #define HostCmd_CMD_802_11_SCAN_EXT 0x0107
1563 
1564 /** Host Command ID : Forward mgmt frame */
1565 #define HostCmd_CMD_RX_MGMT_IND 0x010c
1566 
1567 #ifdef PCIE
1568 /** Host Command ID: Host buffer description */
1569 #define HostCmd_CMD_PCIE_HOST_BUF_DETAILS 0x00fa
1570 #endif
1571 
1572 /** Host Command ID : Set BSS_MODE */
1573 #define HostCmd_CMD_SET_BSS_MODE 0x00f7
1574 
1575 #ifdef UAP_SUPPORT
1576 /**  Host Command id: SYS_INFO */
1577 #define HOST_CMD_APCMD_SYS_INFO 0x00ae
1578 /** Host Command id: sys_reset */
1579 #define HOST_CMD_APCMD_SYS_RESET 0x00af
1580 /** Host Command id: SYS_CONFIGURE  */
1581 #define HOST_CMD_APCMD_SYS_CONFIGURE 0x00b0
1582 /** Host Command id: BSS_START */
1583 #define HOST_CMD_APCMD_BSS_START 0x00b1
1584 /** Host Command id: BSS_STOP  */
1585 #define HOST_CMD_APCMD_BSS_STOP 0x00b2
1586 /** Host Command id: sta_list */
1587 #define HOST_CMD_APCMD_STA_LIST 0x00b3
1588 /** Host Command id: STA_DEAUTH */
1589 #define HOST_CMD_APCMD_STA_DEAUTH 0x00b5
1590 
1591 /** Host Command id: REPORT_MIC */
1592 #define HOST_CMD_APCMD_REPORT_MIC 0x00ee
1593 /** Host Command id: UAP_OPER_CTRL */
1594 #define HOST_CMD_APCMD_OPER_CTRL 0x0233
1595 #endif /* UAP_SUPPORT */
1596 
1597 /** Host Command id: PMIC CONFIGURE*/
1598 #define HOST_CMD_PMIC_CONFIGURE 0x23E
1599 
1600 /** Host Command ID: 802.11 Network Monitor */
1601 #define HostCmd_CMD_802_11_NET_MONITOR 0x0102
1602 
1603 /** Host Command ID: Tx data pause */
1604 #define HostCmd_CMD_CFG_TX_DATA_PAUSE 0x0103
1605 
1606 #ifdef WIFI_DIRECT_SUPPORT
1607 /** Host Command ID: P2P PARAMS CONFIG */
1608 #define HOST_CMD_P2P_PARAMS_CONFIG 0x00ea
1609 /** Host Command ID: WIFI_DIRECT_MODE_CONFIG */
1610 #define HOST_CMD_WIFI_DIRECT_MODE_CONFIG 0x00eb
1611 #endif
1612 
1613 /** Host Command ID: GPIO TSF LATCH */
1614 #define HOST_CMD_GPIO_TSF_LATCH_PARAM_CONFIG 0x0278
1615 /** Host Command ID: Remain On Channel */
1616 #define HostCmd_CMD_802_11_REMAIN_ON_CHANNEL 0x010d
1617 
1618 #define HostCmd_CMD_COALESCE_CFG 0x010a
1619 
1620 /** Host Command ID: GTK REKEY OFFLOAD CFG */
1621 #define HostCmd_CMD_GTK_REKEY_OFFLOAD_CFG 0x010f
1622 
1623 /** Host Command ID : OTP user data */
1624 #define HostCmd_CMD_OTP_READ_USER_DATA 0x0114
1625 
1626 /** Host Command ID: fw auto reconnect */
1627 #define HostCmd_CMD_FW_AUTO_RECONNECT 0x0115
1628 
1629 /** Host Command ID: HS wakeup reason */
1630 #define HostCmd_CMD_HS_WAKEUP_REASON 0x0116
1631 
1632 /** Host Command ID: reject addba request */
1633 #define HostCmd_CMD_REJECT_ADDBA_REQ 0x0119
1634 
1635 #define HostCmd_CMD_FW_DUMP_EVENT 0x0125
1636 
1637 #define HostCMD_CONFIG_LOW_POWER_MODE 0x0128
1638 
1639 /** Host Command ID : Target device access */
1640 #define HostCmd_CMD_TARGET_ACCESS 0x012a
1641 
1642 /** Host Command ID: BCA device access */
1643 #define HostCmd_CMD_BCA_REG_ACCESS 0x0272
1644 /** Host Command ID: register device access */
1645 #define HostCmd_CMD_REG_ACCESS 0x027C
1646 
1647 /** Host Command ID: DFS repeater mode */
1648 #define HostCmd_DFS_REPEATER_MODE 0x012b
1649 
1650 /** Host Command ID: ACS scan */
1651 #define HostCMD_APCMD_ACS_SCAN 0x0224
1652 
1653 /** Host Command ID: Get sensor temp*/
1654 #define HostCmd_DS_GET_SENSOR_TEMP 0x0227
1655 
1656 /** Host Command ID : Configure ADHOC_OVER_IP parameters */
1657 #define HostCmd_CMD_WMM_PARAM_CONFIG 0x023a
1658 
1659 #define HostCmd_CMD_IPV6_RA_OFFLOAD_CFG 0x0238
1660 
1661 #ifdef STA_SUPPORT
1662 /** Host Command ID :  set/get sta configure */
1663 #define HostCmd_CMD_STA_CONFIGURE 0x023f
1664 #endif
1665 
1666 /** Host Command ID : GPIO independent reset configure */
1667 #define HostCmd_CMD_INDEPENDENT_RESET_CFG 0x0243
1668 
1669 #if defined(PCIE9098) || defined(SD9098) || defined(USB9098) ||                \
1670 	defined(PCIE9097) || defined(USB9097) || defined(SDNW62X) ||           \
1671 	defined(PCIENW62X) || defined(USBNW62X) || defined(SD9097)
1672 /* TLV type: reg type */
1673 #define TLV_TYPE_REG_ACCESS_CTRL (PROPRIETARY_TLV_BASE_ID + 0x13C) /* 0x023c*/
1674 /** MrvlIEtypes_Reg_type_t*/
1675 typedef MLAN_PACK_START struct _MrvlIEtypes_Reg_type_t {
1676 	/** Header */
1677 	MrvlIEtypesHeader_t header;
1678 	/** type: 0x81/0x82/0x83 */
1679 	t_u8 type;
1680 } MLAN_PACK_END MrvlIEtypes_Reg_type_t;
1681 #endif
1682 /** use to query chan region cfg setting in firmware */
1683 #define HostCmd_CMD_CHAN_REGION_CFG 0x0242
1684 /** used in hostcmd to download region power cfg setting to firmware */
1685 #define HostCmd_CMD_REGION_POWER_CFG 0x0249
1686 
1687 /* mod_grp */
1688 typedef enum _mod_grp {
1689 	MOD_CCK, // 0
1690 	MOD_OFDM_PSK, // 1
1691 	MOD_OFDM_QAM16, // 2
1692 	MOD_OFDM_QAM64, // 3
1693 	MOD_HT_20_PSK, // 4
1694 	MOD_HT_20_QAM16, // 5
1695 	MOD_HT_20_QAM64, // 6
1696 	MOD_HT_40_PSK, // 7
1697 	MOD_HT_40_QAM16, // 8
1698 	MOD_HT_40_QAM64, // 9
1699 #ifdef STREAM_2x2
1700 	MOD_HT2_20_PSK, // 10
1701 	MOD_HT2_20_QAM16, // 11
1702 	MOD_HT2_20_QAM64, // 12
1703 	MOD_HT2_40_PSK, // 13
1704 	MOD_HT2_40_QAM16, // 14
1705 	MOD_HT2_40_QAM64, // 15
1706 #endif
1707 
1708 	MOD_VHT_20_QAM256, // 16
1709 	MOD_VHT_40_QAM256, // 17
1710 	MOD_VHT_80_PSK, // 18
1711 	MOD_VHT_80_QAM16, // 19
1712 	MOD_VHT_80_QAM64, // 20
1713 	MOD_VHT_80_QAM256, // 21
1714 #ifdef STREAM_2x2
1715 	MOD_VHT2_20_QAM256, // 22
1716 	MOD_VHT2_40_QAM256, // 23
1717 	MOD_VHT2_80_PSK, // 24
1718 	MOD_VHT2_80_QAM16, // 25
1719 	MOD_VHT2_80_QAM64, // 26
1720 	MOD_VHT2_80_QAM256, // 27
1721 #endif
1722 } mod_grp;
1723 
1724 typedef MLAN_PACK_START struct _power_table_attr {
1725 	t_u8 rows_2g;
1726 	t_u8 cols_2g;
1727 	t_u8 rows_5g;
1728 	t_u8 cols_5g;
1729 } MLAN_PACK_END power_table_attr_t;
1730 
1731 #define FW_CFP_TABLE_MAX_ROWS_BG 14
1732 #define FW_CFP_TABLE_MAX_COLS_BG 17
1733 
1734 #define FW_CFP_TABLE_MAX_ROWS_A 39
1735 #define FW_CFP_TABLE_MAX_COLS_A 29
1736 
1737 #define HostCmd_CMD_DYN_BW 0x0252
1738 
1739 #define HostCmd_CMD_BOOT_SLEEP 0x0258
1740 
1741 #define HostCmd_CMD_RX_ABORT_CFG 0x0261
1742 #define HostCmd_CMD_RX_ABORT_CFG_EXT 0x0262
1743 #define HostCmd_CMD_TX_AMPDU_PROT_MODE 0x0263
1744 #define HostCmd_CMD_RATE_ADAPT_CFG 0x0264
1745 #define HostCmd_CMD_CCK_DESENSE_CFG 0x0265
1746 
1747 #define HostCmd_CMD_VDLL 0x0240
1748 #if defined(PCIE)
1749 #define HostCmd_CMD_SSU 0x0259
1750 #endif
1751 #define HostCmd_CMD_CSI 0x025b
1752 #define CSI_CMD_ENABLE 0x0001
1753 #define CSI_CMD_DISABLE 0x0002
1754 
1755 #define HostCmd_CMD_DMCS_CONFIG 0x0260
1756 
1757 /** Host Command ID: 11AX config */
1758 #define HostCmd_CMD_11AX_CFG 0x0266
1759 /** Host Command ID: 11AX command */
1760 #define HostCmd_CMD_11AX_CMD 0x026d
1761 /** Host Command ID: Range ext command */
1762 #define HostCmd_CMD_RANGE_EXT 0x0274
1763 /** Host Command ID: TWT cfg command */
1764 #define HostCmd_CMD_TWT_CFG 0x0270
1765 
1766 #define HostCmd_CMD_LOW_POWER_MODE_CFG 0x026e
1767 #define HostCmd_CMD_UAP_BEACON_STUCK_CFG 0x0271
1768 #define HostCmd_CMD_ARB_CONFIG 0x0273
1769 #define HostCmd_CMD_DOT11MC_UNASSOC_FTM_CFG 0x0275
1770 #define HostCmd_CMD_HAL_PHY_CFG 0x0276
1771 
1772 /** Host Command ID : IPS Config */
1773 #define HostCmd_CMD_IPS_CONFIG 0x0279
1774 
1775 typedef MLAN_PACK_START struct {
1776 	t_u32 enable;
1777 } MLAN_PACK_END HostCmd_DS_IPS_CONFIG;
1778 
1779 /** Enhanced PS modes */
1780 typedef enum _ENH_PS_MODES {
1781 	GET_PS = 0,
1782 	SLEEP_CONFIRM = 5,
1783 	DIS_AUTO_PS = 0xfe,
1784 	EN_AUTO_PS = 0xff,
1785 } ENH_PS_MODES;
1786 
1787 /** Command RET code, MSB is set to 1 */
1788 #define HostCmd_RET_BIT 0x8000
1789 
1790 /** General purpose action : Get */
1791 #define HostCmd_ACT_GEN_GET 0x0000
1792 /** General purpose action : Set */
1793 #define HostCmd_ACT_GEN_SET 0x0001
1794 /** General purpose action : Set Default */
1795 #define HostCmd_ACT_GEN_SET_DEFAULT 0x0002
1796 /** General purpose action : Get_Current */
1797 #define HostCmd_ACT_GEN_GET_CURRENT 0x0003
1798 /** General purpose action : Remove */
1799 #define HostCmd_ACT_GEN_REMOVE 0x0004
1800 /** General purpose action : Reset */
1801 #define HostCmd_ACT_GEN_RESET 0x0005
1802 
1803 /** Host command action : Set Rx */
1804 #define HostCmd_ACT_SET_RX 0x0001
1805 /** Host command action : Set Tx */
1806 #define HostCmd_ACT_SET_TX 0x0002
1807 /** Host command action : Set both Rx and Tx */
1808 #define HostCmd_ACT_SET_BOTH 0x0003
1809 /** Host command action : Get Rx */
1810 #define HostCmd_ACT_GET_RX 0x0004
1811 /** Host command action : Get Tx */
1812 #define HostCmd_ACT_GET_TX 0x0008
1813 /** Host command action : Get both Rx and Tx */
1814 #define HostCmd_ACT_GET_BOTH 0x000c
1815 
1816 /** General Result Code*/
1817 /** General result code OK */
1818 #define HostCmd_RESULT_OK 0x0000
1819 /** Genenral error */
1820 #define HostCmd_RESULT_ERROR 0x0001
1821 /** Command is not valid */
1822 #define HostCmd_RESULT_NOT_SUPPORT 0x0002
1823 /** Command is pending */
1824 #define HostCmd_RESULT_PENDING 0x0003
1825 /** System is busy (command ignored) */
1826 #define HostCmd_RESULT_BUSY 0x0004
1827 /** Data buffer is not big enough */
1828 #define HostCmd_RESULT_PARTIAL_DATA 0x0005
1829 
1830 /* Define action or option for HostCmd_CMD_MAC_CONTROL */
1831 /** MAC action : Rx on */
1832 #define HostCmd_ACT_MAC_RX_ON 0x0001
1833 /** MAC action : Tx on */
1834 #define HostCmd_ACT_MAC_TX_ON 0x0002
1835 /** MAC action : WEP enable */
1836 #define HostCmd_ACT_MAC_WEP_ENABLE 0x0008
1837 /** MAC action : EthernetII enable */
1838 #define HostCmd_ACT_MAC_ETHERNETII_ENABLE 0x0010
1839 /** MAC action : Promiscous mode enable */
1840 #define HostCmd_ACT_MAC_PROMISCUOUS_ENABLE 0x0080
1841 /** MAC action : All multicast enable */
1842 #define HostCmd_ACT_MAC_ALL_MULTICAST_ENABLE 0x0100
1843 /** MAC action : RTS/CTS enable */
1844 #define HostCmd_ACT_MAC_RTS_CTS_ENABLE 0x0200
1845 /** MAC action : Strict protection enable */
1846 #define HostCmd_ACT_MAC_STRICT_PROTECTION_ENABLE 0x0400
1847 /** MAC action : Force 11n protection disable */
1848 #define HostCmd_ACT_MAC_FORCE_11N_PROTECTION_OFF 0x0800
1849 /** MAC action : Ad-Hoc G protection on */
1850 #define HostCmd_ACT_MAC_ADHOC_G_PROTECTION_ON 0x2000
1851 /** MAC action : Static-Dynamic BW enable */
1852 #define HostCmd_ACT_MAC_STATIC_DYNAMIC_BW_ENABLE MBIT(16)
1853 /** MAC action : Dynamic BW */
1854 #define HostCmd_ACT_MAC_DYNAMIC_BW MBIT(17)
1855 
1856 /* Define action or option for HostCmd_CMD_802_11_SCAN */
1857 /** Scan type : BSS */
1858 #define HostCmd_BSS_MODE_BSS 0x0001
1859 /** Scan type : IBSS */
1860 #define HostCmd_BSS_MODE_IBSS 0x0002
1861 /** Scan type : Any */
1862 #define HostCmd_BSS_MODE_ANY 0x0003
1863 
1864 /** Define bitmap conditions for HOST_SLEEP_CFG : GPIO FF */
1865 #define HOST_SLEEP_CFG_GPIO_FF 0xff
1866 /** Define bitmap conditions for HOST_SLEEP_CFG : GAP FF */
1867 #define HOST_SLEEP_CFG_GAP_FF 0xff
1868 
1869 /** Buffer Constants */
1870 /** Number of command buffers */
1871 #define MRVDRV_NUM_OF_CMD_BUFFER 40
1872 /** Maximum number of BSS Descriptors */
1873 #define MRVDRV_MAX_BSSID_LIST 200
1874 
1875 /** Host command flag in command */
1876 #define CMD_F_HOSTCMD (1 << 0)
1877 /** command cancel flag in command */
1878 #define CMD_F_CANCELED (1 << 1)
1879 /** scan command flag */
1880 #define CMD_F_SCAN (1 << 2)
1881 
1882 /** Host Command ID bit mask (bit 11:0) */
1883 #define HostCmd_CMD_ID_MASK 0x0fff
1884 
1885 /** Host Command Sequence number mask (bit 7:0) */
1886 #define HostCmd_SEQ_NUM_MASK 0x00ff
1887 
1888 /** Host Command BSS number mask (bit 11:8) */
1889 #define HostCmd_BSS_NUM_MASK 0x0f00
1890 
1891 /** Host Command BSS type mask (bit 15:12) */
1892 #define HostCmd_BSS_TYPE_MASK 0xf000
1893 
1894 /** Set BSS information to Host Command */
1895 #define HostCmd_SET_SEQ_NO_BSS_INFO(seq, num, type)                            \
1896 	((((seq)&0x00ff) | (((num)&0x000f) << 8)) | (((type)&0x000f) << 12))
1897 
1898 /** Get Sequence Number from Host Command (bit 7:0) */
1899 #define HostCmd_GET_SEQ_NO(seq) ((seq)&HostCmd_SEQ_NUM_MASK)
1900 
1901 /** Get BSS number from Host Command (bit 11:8) */
1902 #define HostCmd_GET_BSS_NO(seq) (((seq)&HostCmd_BSS_NUM_MASK) >> 8)
1903 
1904 /** Get BSS type from Host Command (bit 15:12) */
1905 #define HostCmd_GET_BSS_TYPE(seq) (((seq)&HostCmd_BSS_TYPE_MASK) >> 12)
1906 
1907 /* EVENT ID*/
1908 /** Card Event definition : Dummy host wakeup signal */
1909 #define EVENT_DUMMY_HOST_WAKEUP_SIGNAL 0x00000001
1910 /** Card Event definition : Link lost */
1911 #define EVENT_LINK_LOST 0x00000003
1912 /** Card Event definition : Link sensed */
1913 #define EVENT_LINK_SENSED 0x00000004
1914 /** Card Event definition : MIB changed */
1915 #define EVENT_MIB_CHANGED 0x00000006
1916 /** Card Event definition : Init done */
1917 #define EVENT_INIT_DONE 0x00000007
1918 /** Card Event definition : Deauthenticated */
1919 #define EVENT_DEAUTHENTICATED 0x00000008
1920 /** Card Event definition : Disassociated */
1921 #define EVENT_DISASSOCIATED 0x00000009
1922 /** Card Event definition : Power save awake */
1923 #define EVENT_PS_AWAKE 0x0000000a
1924 /** Card Event definition : Power save sleep */
1925 #define EVENT_PS_SLEEP 0x0000000b
1926 /** Card Event definition : MIC error multicast */
1927 #define EVENT_MIC_ERR_MULTICAST 0x0000000d
1928 /** Card Event definition : MIC error unicast */
1929 #define EVENT_MIC_ERR_UNICAST 0x0000000e
1930 
1931 /** Card Event definition : Ad-Hoc BCN lost */
1932 #define EVENT_ADHOC_BCN_LOST 0x00000011
1933 
1934 /** Card Event definition : Stop Tx */
1935 #define EVENT_STOP_TX 0x00000013
1936 /** Card Event definition : Start Tx */
1937 #define EVENT_START_TX 0x00000014
1938 /** Card Event definition : Channel switch */
1939 #define EVENT_CHANNEL_SWITCH 0x00000015
1940 
1941 /** Card Event definition : MEAS report ready */
1942 #define EVENT_MEAS_REPORT_RDY 0x00000016
1943 
1944 /** Card Event definition : WMM status change */
1945 #define EVENT_WMM_STATUS_CHANGE 0x00000017
1946 
1947 /** Card Event definition : BG scan report */
1948 #define EVENT_BG_SCAN_REPORT 0x00000018
1949 /** Card Event definition : BG scan stopped */
1950 #define EVENT_BG_SCAN_STOPPED 0x00000065
1951 
1952 /** Card Event definition : Beacon RSSI low */
1953 #define EVENT_RSSI_LOW 0x00000019
1954 /** Card Event definition : Beacon SNR low */
1955 #define EVENT_SNR_LOW 0x0000001a
1956 /** Card Event definition : Maximum fail */
1957 #define EVENT_MAX_FAIL 0x0000001b
1958 /** Card Event definition : Beacon RSSI high */
1959 #define EVENT_RSSI_HIGH 0x0000001c
1960 /** Card Event definition : Beacon SNR high */
1961 #define EVENT_SNR_HIGH 0x0000001d
1962 
1963 /** Card Event definition : IBSS coalsced */
1964 #define EVENT_IBSS_COALESCED 0x0000001e
1965 
1966 /** Event definition : IBSS station connected */
1967 #define EVENT_IBSS_STATION_CONNECT 0x00000020
1968 /** Event definition : IBSS station dis-connected */
1969 #define EVENT_IBSS_STATION_DISCONNECT 0x00000021
1970 
1971 /** Card Event definition : Data RSSI low */
1972 #define EVENT_DATA_RSSI_LOW 0x00000024
1973 /** Card Event definition : Data SNR low */
1974 #define EVENT_DATA_SNR_LOW 0x00000025
1975 /** Card Event definition : Data RSSI high */
1976 #define EVENT_DATA_RSSI_HIGH 0x00000026
1977 /** Card Event definition : Data SNR high */
1978 #define EVENT_DATA_SNR_HIGH 0x00000027
1979 
1980 /** Card Event definition : Link Quality */
1981 #define EVENT_LINK_QUALITY 0x00000028
1982 
1983 /** Card Event definition : Port release event */
1984 #define EVENT_PORT_RELEASE 0x0000002b
1985 
1986 #ifdef UAP_SUPPORT
1987 /** Event ID: STA deauth */
1988 #define EVENT_MICRO_AP_STA_DEAUTH 0x0000002c
1989 /** Event ID: STA assoicated */
1990 #define EVENT_MICRO_AP_STA_ASSOC 0x0000002d
1991 /** Event ID: BSS started */
1992 #define EVENT_MICRO_AP_BSS_START 0x0000002e
1993 /** Event ID: BSS idle event */
1994 #define EVENT_MICRO_AP_BSS_IDLE 0x00000043
1995 /** Event ID: BSS active event */
1996 #define EVENT_MICRO_AP_BSS_ACTIVE 0x00000044
1997 
1998 /** Event ID: MIC countermeasures event */
1999 #define EVENT_MICRO_AP_MIC_COUNTERMEASURES 0x0000004c
2000 #endif /* UAP_SUPPORT */
2001 
2002 /** Card Event definition : Pre-Beacon Lost */
2003 #define EVENT_PRE_BEACON_LOST 0x00000031
2004 
2005 #define EVENT_WATCHDOG_TMOUT 0x00000032
2006 
2007 /** Card Event definition : Add BA event */
2008 #define EVENT_ADDBA 0x00000033
2009 /** Card Event definition : Del BA event */
2010 #define EVENT_DELBA 0x00000034
2011 /** Card Event definition: BA stream timeout*/
2012 #define EVENT_BA_STREAM_TIMEOUT 0x00000037
2013 
2014 /** Card Event definition : AMSDU aggr control */
2015 #define EVENT_AMSDU_AGGR_CTRL 0x00000042
2016 
2017 /** Card Event definition: WEP ICV error */
2018 #define EVENT_WEP_ICV_ERR 0x00000046
2019 
2020 /** Card Event definition : Host sleep enable */
2021 #define EVENT_HS_ACT_REQ 0x00000047
2022 
2023 /** Card Event definition : BW changed */
2024 #define EVENT_BW_CHANGE 0x00000048
2025 
2026 #ifdef WIFI_DIRECT_SUPPORT
2027 /** WIFIDIRECT generic event */
2028 #define EVENT_WIFIDIRECT_GENERIC_EVENT 0x00000049
2029 /** WIFIDIRECT service discovery event */
2030 #define EVENT_WIFIDIRECT_SERVICE_DISCOVERY 0x0000004a
2031 #endif
2032 /** Remain on Channel expired event */
2033 #define EVENT_REMAIN_ON_CHANNEL_EXPIRED 0x0000005f
2034 
2035 /** TDLS generic event */
2036 #define EVENT_TDLS_GENERIC_EVENT 0x00000052
2037 
2038 #define EVENT_MEF_HOST_WAKEUP 0x0000004f
2039 
2040 /** Card Event definition: Channel switch pending announcment */
2041 #define EVENT_CHANNEL_SWITCH_ANN 0x00000050
2042 
2043 /** Event definition:  Radar Detected by card */
2044 #define EVENT_RADAR_DETECTED 0x00000053
2045 
2046 /** Event definition:  Radar Detected by card */
2047 #define EVENT_CHANNEL_REPORT_RDY 0x00000054
2048 
2049 /** Event definition:  Scan results through event */
2050 #define EVENT_EXT_SCAN_REPORT 0x00000058
2051 /** Enhance ext scan done event */
2052 #define EVENT_EXT_SCAN_STATUS_REPORT 0x0000007f
2053 
2054 /** Event definition: RXBA_SYNC */
2055 #define EVENT_RXBA_SYNC 0x00000059
2056 
2057 /** Event ID: TX data pause event */
2058 #define EVENT_TX_DATA_PAUSE 0x00000055
2059 
2060 /** Event definition : FW debug information */
2061 #define EVENT_FW_DEBUG_INFO 0x00000063
2062 
2063 /** Event ID: SAD Report */
2064 #define EVENT_SAD_REPORT 0x00000066
2065 
2066 #define EVENT_FW_DUMP_INFO 0x00000073
2067 /** Event ID: Tx status */
2068 #define EVENT_TX_STATUS_REPORT 0x00000074
2069 
2070 #define EVENT_BT_COEX_WLAN_PARA_CHANGE 0x00000076
2071 
2072 #define EVENT_VDLL_IND 0x00000081
2073 
2074 #define EVENT_ROAM_OFFLOAD 0x00000083
2075 
2076 #define EVENT_EXCEED_MAX_P2P_CONN 0x00000089
2077 
2078 #if defined(PCIE)
2079 #define EVENT_SSU_DUMP_DMA 0x0000008C
2080 #endif
2081 
2082 #define EVENT_CSI 0x0000008D
2083 #define EVENT_FW_HANG_REPORT 0x0000008F
2084 /** Card Event definition : RESET PN */
2085 
2086 #define EVENT_ASSOC_REQ_IE 0x00000095
2087 
2088 #define CHAN_LOAD_EVENT 0x00000099
2089 
2090 /** Event ID mask */
2091 #define EVENT_ID_MASK 0xffff
2092 
2093 /** BSS number mask */
2094 #define BSS_NUM_MASK 0xf
2095 
2096 /** Get BSS number from event cause (bit 23:16) */
2097 #define EVENT_GET_BSS_NUM(event_cause) (((event_cause) >> 16) & BSS_NUM_MASK)
2098 
2099 /** Get BSS type from event cause (bit 31:24) */
2100 #define EVENT_GET_BSS_TYPE(event_cause) (((event_cause) >> 24) & 0x00ff)
2101 
2102 /** event type for tdls setup failure */
2103 #define TDLS_EVENT_TYPE_SETUP_FAILURE 1
2104 /** event type for tdls setup request received */
2105 #define TDLS_EVENT_TYPE_SETUP_REQ 2
2106 /** event type for tdls link torn down */
2107 #define TDLS_EVENT_TYPE_LINK_TORN_DOWN 3
2108 /** event type for tdls link established */
2109 #define TDLS_EVENT_TYPE_LINK_ESTABLISHED 4
2110 /** event type for tdls debug */
2111 #define TDLS_EVENT_TYPE_DEBUG 5
2112 /** event type for tdls packet */
2113 #define TDLS_EVENT_TYPE_PACKET 6
2114 /** event type for channel switch result */
2115 #define TDLS_EVENT_TYPE_CHAN_SWITCH_RESULT 7
2116 /** event type for start channel switch */
2117 #define TDLS_EVENT_TYPE_START_CHAN_SWITCH 8
2118 /** event type for stop channel switch */
2119 #define TDLS_EVENT_TYPE_CHAN_SWITCH_STOPPED 9
2120 
2121 /** Packet received on direct link */
2122 #define RXPD_FLAG_PKT_DIRECT_LINK MBIT(0)
2123 /** TDLS base channel */
2124 #define TDLS_BASE_CHANNEL 0
2125 /** TDLS off channel */
2126 #define TDLS_OFF_CHANNEL 1
2127 
2128 /** structure for channel switch result from TDLS FW */
2129 typedef MLAN_PACK_START struct _chan_switch_result {
2130 	/** current channel, 0 - base channel, 1 - off channel*/
2131 	t_u8 current_channel;
2132 	/** channel switch status*/
2133 	t_u8 status;
2134 	/** channel switch fauilure reason code*/
2135 	t_u8 reason;
2136 } MLAN_PACK_END chan_switch_result;
2137 
2138 typedef MLAN_PACK_START struct _ie_data {
2139 	/** IE Length */
2140 	t_u16 ie_length;
2141 	/** IE pointer */
2142 	t_u8 ie_ptr[1];
2143 } MLAN_PACK_END tdls_ie_data;
2144 
2145 /** Event structure for generic events from TDLS FW */
2146 typedef MLAN_PACK_START struct _Event_tdls_generic {
2147 	/** Event Type */
2148 	t_u16 event_type;
2149 	/** Peer mac address */
2150 	t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH];
2151 	union {
2152 		/** channel switch result structure*/
2153 		chan_switch_result switch_result;
2154 		/** channel switch stop reason*/
2155 		t_u8 cs_stop_reason;
2156 		/** Reason code */
2157 		t_u16 reason_code;
2158 		/** IE data */
2159 		tdls_ie_data ie_data;
2160 	} u;
2161 } MLAN_PACK_END Event_tdls_generic;
2162 
2163 typedef enum _tdls_error_code_e {
2164 	NO_ERROR = 0,
2165 	INTERNAL_ERROR,
2166 	MAX_TDLS_LINKS_EST,
2167 	TDLS_LINK_EXISTS,
2168 	TDLS_LINK_NONEXISTENT,
2169 	TDLS_PEER_STA_UNREACHABLE = 25,
2170 } tdls_error_code_e;
2171 
2172 #define RXPD_FLAG_EXTRA_HEADER (1 << 1)
2173 
2174 /** Event_WEP_ICV_ERR structure */
2175 typedef MLAN_PACK_START struct _Event_WEP_ICV_ERR {
2176 	/** Reason code */
2177 	t_u16 reason_code;
2178 	/** Source MAC address */
2179 	t_u8 src_mac_addr[MLAN_MAC_ADDR_LENGTH];
2180 	/** WEP decryption used key */
2181 	t_u8 wep_key_index;
2182 	/** WEP key length */
2183 	t_u8 wep_key_length;
2184 	/** WEP key */
2185 	t_u8 key[MAX_WEP_KEY_SIZE];
2186 } MLAN_PACK_END Event_WEP_ICV_ERR;
2187 
2188 /** WLAN_802_11_FIXED_IEs */
2189 typedef MLAN_PACK_START struct _WLAN_802_11_FIXED_IEs {
2190 	/** Timestamp */
2191 	t_u8 time_stamp[8];
2192 	/** Beacon interval */
2193 	t_u16 beacon_interval;
2194 	/** Capabilities*/
2195 	t_u16 capabilities;
2196 } MLAN_PACK_END WLAN_802_11_FIXED_IEs;
2197 
2198 /** WLAN_802_11_VARIABLE_IEs */
2199 typedef MLAN_PACK_START struct _WLAN_802_11_VARIABLE_IEs {
2200 	/** Element ID */
2201 	t_u8 element_id;
2202 	/** Length */
2203 	t_u8 length;
2204 	/** IE data */
2205 	t_u8 data[1];
2206 } MLAN_PACK_END WLAN_802_11_VARIABLE_IEs;
2207 
2208 /** TLV related data structures*/
2209 /*TDLS TIMEOUT VALUE (seconds)*/
2210 #define TDLS_IDLE_TIMEOUT 60
2211 /** MrvlIEtypes_Data_t */
2212 typedef MLAN_PACK_START struct _MrvlIEtypes_TDLS_Idle_Timeout_t {
2213 	/** Header */
2214 	MrvlIEtypesHeader_t header;
2215 	/** value */
2216 	t_u16 value;
2217 } MLAN_PACK_END MrvlIEtypes_TDLS_Idle_Timeout_t;
2218 #if defined(STA_SUPPORT)
2219 /** Pairwise Cipher Suite length */
2220 #define PAIRWISE_CIPHER_SUITE_LEN 4
2221 /** AKM Suite length */
2222 #define AKM_SUITE_LEN 4
2223 /** MFPC bit in RSN capability */
2224 #define MFPC_BIT 7
2225 /** MFPR bit in RSN capability */
2226 #define MFPR_BIT 6
2227 #endif
2228 /** Bit mask for TxPD status field for null packet */
2229 #define MRVDRV_TxPD_POWER_MGMT_NULL_PACKET 0x01
2230 /** Bit mask for TxPD status field for last packet */
2231 #define MRVDRV_TxPD_POWER_MGMT_LAST_PACKET 0x08
2232 
2233 /** Bit mask for TxPD flags field for TDLS packet */
2234 #define MRVDRV_TxPD_FLAGS_TDLS_PACKET MBIT(4)
2235 
2236 /** Bit mask for TxPD flags field for Tx status report */
2237 #define MRVDRV_TxPD_FLAGS_TX_PACKET_STATUS MBIT(5)
2238 
2239 /** Packet type: 802.11 */
2240 #define PKT_TYPE_802DOT11 0x05
2241 
2242 #define PKT_TYPE_MGMT_FRAME 0xE5
2243 /** Packet type: AMSDU */
2244 #define PKT_TYPE_AMSDU 0xE6
2245 /** Packet type: BAR */
2246 #define PKT_TYPE_BAR 0xE7
2247 
2248 /** Packet type: debugging */
2249 #define PKT_TYPE_DEBUG 0xEF
2250 
2251 #define PKT_TYPE_802DOT11_MC_AGGR 11
2252 
2253 /** channel number at bit 5-13 */
2254 #define RXPD_CHAN_MASK 0x3FE0
2255 /** Rate control mask  15-23 */
2256 #define TXPD_RATE_MASK 0xff8000
2257 /** enable bw ctrl in TxPD */
2258 #define TXPD_BW_ENABLE MBIT(20)
2259 /** enable tx power ctrl in TxPD */
2260 #define TXPD_TXPW_ENABLE MBIT(7)
2261 /** sign of power */
2262 #define TXPD_TXPW_NEGATIVE MBIT(6)
2263 /** Enable Rate ctrl in TxPD */
2264 #define TXPD_TXRATE_ENABLE MBIT(15)
2265 /** enable retry limit in TxPD */
2266 #define TXPD_RETRY_ENABLE MBIT(12)
2267 
2268 /** tx_control*/
2269 #ifdef BIG_ENDIAN_SUPPORT
2270 typedef MLAN_PACK_START struct _tx_ctrl {
2271 	/** reserved */
2272 	t_u32 reserved : 3;
2273 	/** mc retry packet */
2274 	t_u32 mc_pkt_retry : 1;
2275 	/** end of mc AMPDU */
2276 	t_u32 mc_ampdu_end : 1;
2277 	/** start of mc AMPDU */
2278 	t_u32 mc_ampdu_start : 1;
2279 	/** End of mc cycle */
2280 	t_u32 mc_cycle_end : 1;
2281 	/** start of mc cycle */
2282 	t_u32 mc_cycle_start : 1;
2283 	/** bw 0-20MHz, 1-40MHz */
2284 	t_u32 bw : 3;
2285 	/** Rate used for transmission MCS0-7*/
2286 	t_u32 tx_rate : 5;
2287 	/** Control the use of txRate. 0 - use FW setting, 1 - use the specified
2288 	 * txRate;*/
2289 	t_u32 host_txrate_ctrl : 1;
2290 	/**  0/1 - use FW setting, 2 - ACK_IMMD, 3 - NO_ACK.*/
2291 	t_u32 ack_policy : 2;
2292 	/** Control the use of retryLimit. 0 - use FW setting, 1 - use the
2293 	 * specified retryLimit.*/
2294 	t_u32 host_retry_ctrl : 1;
2295 	/** retry limit */
2296 	t_u32 retry_limit : 4;
2297 	/** Control the use of txPower. 0 - use FW power setting, 1 - use the
2298 	 * specified txPower.*/
2299 	t_u32 host_tx_powerctrl : 1;
2300 	/** Sign of the txPower, 0 - positive_sign(+), 1 - negative_sign(-). */
2301 	t_u32 tx_power_sign : 1;
2302 	/** Power used for transmission(in dBm); */
2303 	t_u32 tx_power : 6;
2304 } MLAN_PACK_END tx_ctrl;
2305 #else
2306 typedef MLAN_PACK_START struct _tx_ctrl {
2307 	/** Power used for transmission(in dBm); */
2308 	t_u32 tx_power : 6;
2309 	/** Sign of the txPower, 0 - positive_sign(+), 1 - negative_sign(-). */
2310 	t_u32 tx_power_sign : 1;
2311 	/** Control the use of txPower. 0 - use FW power setting, 1 - use the
2312 	 * specified txPower.*/
2313 	t_u32 host_tx_powerctrl : 1;
2314 	/** retry limit */
2315 	t_u32 retry_limit : 4;
2316 	/** Control the use of retryLimit. 0 - use FW setting, 1 - use the
2317 	 * specified retryLimit.*/
2318 	t_u32 host_retry_ctrl : 1;
2319 	/**  0/1 - use FW setting, 2 - ACK_IMMD, 3 - NO_ACK.*/
2320 	t_u32 ack_policy : 2;
2321 	/** Control the use of txRate. 0 - use FW setting, 1 - use the specified
2322 	 * txRate;*/
2323 	t_u32 host_txrate_ctrl : 1;
2324 	/** Rate used for transmission MCS0-7*/
2325 	t_u32 tx_rate : 5;
2326 	/** bw 0-20MHz 1-40MHz*/
2327 	t_u32 bw : 3;
2328 	/** start of mc cycle */
2329 	t_u32 mc_cycle_start : 1;
2330 	/** End of mc cycle */
2331 	t_u32 mc_cycle_end : 1;
2332 	/** start of mc AMPDU */
2333 	t_u32 mc_ampdu_start : 1;
2334 	/** end of mc AMPDU */
2335 	t_u32 mc_ampdu_end : 1;
2336 	/** mc retry packet */
2337 	t_u32 mc_pkt_retry : 1;
2338 	/** reserved */
2339 	t_u32 reserved : 3;
2340 } MLAN_PACK_END tx_ctrl;
2341 #endif
2342 
2343 /** mc tx ctrl */
2344 typedef MLAN_PACK_START struct _mc_tx_ctrl {
2345 	/** mc seq */
2346 	t_u16 mc_seq;
2347 	/** abs_tsf_expirytime*/
2348 	t_u32 abs_tsf_expirytime;
2349 } MLAN_PACK_END mc_tx_ctrl;
2350 
2351 /** TxPD descriptor */
2352 typedef MLAN_PACK_START struct _TxPD {
2353 	/** BSS type */
2354 	t_u8 bss_type;
2355 	/** BSS number */
2356 	t_u8 bss_num;
2357 	/** Tx packet length */
2358 	t_u16 tx_pkt_length;
2359 	/** Tx packet offset */
2360 	t_u16 tx_pkt_offset;
2361 	/** Tx packet type */
2362 	t_u16 tx_pkt_type;
2363 	/** Tx Control */
2364 	t_u32 tx_control;
2365 	/** Pkt Priority */
2366 	t_u8 priority;
2367 	/** Transmit Pkt Flags*/
2368 	t_u8 flags;
2369 	/** Amount of time the packet has been queued
2370 	 * in the driver (units = 2ms)*/
2371 	t_u8 pkt_delay_2ms;
2372 	/** reserved */
2373 	t_u8 reserved;
2374 	/** Tx Control */
2375 	t_u32 tx_control_1;
2376 } MLAN_PACK_END TxPD, *PTxPD;
2377 
2378 /** RxPD Descriptor */
2379 typedef MLAN_PACK_START struct _RxPD {
2380 	/** BSS type */
2381 	t_u8 bss_type;
2382 	/** BSS number */
2383 	t_u8 bss_num;
2384 	/** Rx Packet Length */
2385 	t_u16 rx_pkt_length;
2386 	/** Rx Pkt offset */
2387 	t_u16 rx_pkt_offset;
2388 	/** Rx packet type */
2389 	t_u16 rx_pkt_type;
2390 	/** Sequence number */
2391 	t_u16 seq_num;
2392 	/** Packet Priority */
2393 	t_u8 priority;
2394 	/** Rx Packet Rate */
2395 	t_u8 rx_rate;
2396 	/** SNR */
2397 	t_s8 snr;
2398 	/** Noise Floor */
2399 	t_s8 nf;
2400 	/** [Bit 1] [Bit 0] RxRate format: legacy rate = 00 HT = 01 VHT = 10
2401 	 *  [Bit 3] [Bit 2] HT/VHT Bandwidth BW20 = 00 BW40 = 01 BW80 = 10 BW160
2402 	 * = 11 [Bit 4] HT/VHT Guard interval LGI = 0 SGI = 1 [Bit 5] STBC
2403 	 * support Enabled = 1 [Bit 6] LDPC support Enabled = 1 [Bit 7] [Bit4,
2404 	 * Bit7] AX Guard interval, 00, 01, 10 */
2405 	t_u8 rate_info;
2406 	/** Reserved */
2407 	t_u8 reserved[3];
2408 	/** TDLS flags, bit 0: 0=InfraLink, 1=DirectLink */
2409 	t_u8 flags;
2410 	/**For SD8887 antenna info: 0 = 2.4G antenna a; 1 = 2.4G antenna b; 3 =
2411 	 * 5G antenna; 0xff = invalid value */
2412 	t_u8 antenna;
2413 	/* [31:0] ToA of the rx packet, [63:32] ToD of the ack for the rx packet
2414 	 * Both ToA and ToD are in nanoseconds */
2415 	t_u64 toa_tod_tstamps;
2416 	/** rx info */
2417 	t_u32 rx_info;
2418 
2419 	/** Reserved */
2420 	t_u8 reserved3[8];
2421 } MLAN_PACK_END RxPD, *PRxPD;
2422 
2423 /** IEEEtypes_FrameCtl_t*/
2424 #ifdef BIG_ENDIAN_SUPPORT
2425 typedef MLAN_PACK_START struct _IEEEtypes_FrameCtl_t {
2426 	/** Order */
2427 	t_u8 order : 1;
2428 	/** Wep */
2429 	t_u8 wep : 1;
2430 	/** More Data */
2431 	t_u8 more_data : 1;
2432 	/** Power Mgmt */
2433 	t_u8 pwr_mgmt : 1;
2434 	/** Retry */
2435 	t_u8 retry : 1;
2436 	/** More Frag */
2437 	t_u8 more_frag : 1;
2438 	/** From DS */
2439 	t_u8 from_ds : 1;
2440 	/** To DS */
2441 	t_u8 to_ds : 1;
2442 	/** Sub Type */
2443 	t_u8 sub_type : 4;
2444 	/** Type */
2445 	t_u8 type : 2;
2446 	/** Protocol Version */
2447 	t_u8 protocol_version : 2;
2448 } MLAN_PACK_END IEEEtypes_FrameCtl_t;
2449 #else
2450 typedef MLAN_PACK_START struct _IEEEtypes_FrameCtl_t {
2451 	/** Protocol Version */
2452 	t_u8 protocol_version : 2;
2453 	/** Type */
2454 	t_u8 type : 2;
2455 	/** Sub Type */
2456 	t_u8 sub_type : 4;
2457 	/** To DS */
2458 	t_u8 to_ds : 1;
2459 	/** From DS */
2460 	t_u8 from_ds : 1;
2461 	/** More Frag */
2462 	t_u8 more_frag : 1;
2463 	/** Retry */
2464 	t_u8 retry : 1;
2465 	/** Power Mgmt */
2466 	t_u8 pwr_mgmt : 1;
2467 	/** More Data */
2468 	t_u8 more_data : 1;
2469 	/** Wep */
2470 	t_u8 wep : 1;
2471 	/** Order */
2472 	t_u8 order : 1;
2473 } MLAN_PACK_END IEEEtypes_FrameCtl_t;
2474 #endif
2475 
2476 /** MrvlIETypes_MgmtFrameSet_t */
2477 typedef MLAN_PACK_START struct _MrvlIETypes_MgmtFrameSet_t {
2478 	/** Type */
2479 	t_u16 type;
2480 	/** Length */
2481 	t_u16 len;
2482 	/** Frame Control */
2483 	IEEEtypes_FrameCtl_t frame_control;
2484 	/* t_u8 frame_contents[]; */
2485 } MLAN_PACK_END MrvlIETypes_MgmtFrameSet_t;
2486 
2487 /** Beacon */
2488 typedef MLAN_PACK_START struct _IEEEtypes_Beacon_t {
2489 	/** time stamp */
2490 	t_u8 time_stamp[8];
2491 	/** beacon interval */
2492 	t_u16 beacon_interval;
2493 	/** cap info */
2494 	t_u16 cap_info;
2495 } MLAN_PACK_END IEEEtypes_Beacon_t;
2496 
2497 /** Fixed size of station association event */
2498 #define ASSOC_EVENT_FIX_SIZE 12
2499 
2500 /** MrvlIEtypes_channel_band_t */
2501 typedef MLAN_PACK_START struct _MrvlIEtypes_channel_band_t {
2502 	/** Header */
2503 	MrvlIEtypesHeader_t header;
2504 	/** Band Configuration */
2505 	Band_Config_t bandcfg;
2506 	/** channel */
2507 	t_u8 channel;
2508 } MLAN_PACK_END MrvlIEtypes_channel_band_t;
2509 
2510 #ifdef UAP_SUPPORT
2511 /** IEEEtypes_AssocRqst_t */
2512 typedef MLAN_PACK_START struct _IEEEtypes_AssocRqst_t {
2513 	/** Capability Info */
2514 	t_u16 cap_info;
2515 	/** Listen Interval */
2516 	t_u16 listen_interval;
2517 	/* t_u8 ie_buffer[]; */
2518 } MLAN_PACK_END IEEEtypes_AssocRqst_t;
2519 
2520 /** IEEEtypes_ReAssocRqst_t */
2521 typedef MLAN_PACK_START struct _IEEEtypes_ReAssocRqst_t {
2522 	/** Capability Info */
2523 	t_u16 cap_info;
2524 	/** Listen Interval */
2525 	t_u16 listen_interval;
2526 	/** Current AP Address */
2527 	t_u8 current_ap_addr[MLAN_MAC_ADDR_LENGTH];
2528 	/* t_u8 ie_buffer[]; */
2529 } MLAN_PACK_END IEEEtypes_ReAssocRqst_t;
2530 #endif /* UAP_SUPPORT */
2531 
2532 /** wlan_802_11_header */
2533 typedef MLAN_PACK_START struct _wlan_802_11_header {
2534 	/** Frame Control */
2535 	t_u16 frm_ctl;
2536 	/** Duration ID */
2537 	t_u16 duration_id;
2538 	/** Address1 */
2539 	mlan_802_11_mac_addr addr1;
2540 	/** Address2 */
2541 	mlan_802_11_mac_addr addr2;
2542 	/** Address3 */
2543 	mlan_802_11_mac_addr addr3;
2544 	/** Sequence Control */
2545 	t_u16 seq_ctl;
2546 	/** Address4 */
2547 	mlan_802_11_mac_addr addr4;
2548 } MLAN_PACK_END wlan_802_11_header;
2549 
2550 /** wlan_802_11_header packet from FW with length */
2551 typedef MLAN_PACK_START struct _wlan_mgmt_pkt {
2552 	/** Packet Length */
2553 	t_u16 frm_len;
2554 	/** wlan_802_11_header */
2555 	wlan_802_11_header wlan_header;
2556 } MLAN_PACK_END wlan_mgmt_pkt;
2557 
2558 #ifdef STA_SUPPORT
2559 /** (Beaconsize(256)-5(IEId,len,contrystr(3))/3(FirstChan,NoOfChan,MaxPwr) */
2560 #define MAX_NO_OF_CHAN 40
2561 
2562 /** Channel-power table entries */
2563 typedef MLAN_PACK_START struct _chan_power_11d {
2564 	/** 11D channel */
2565 	t_u8 chan;
2566 	/** Band for channel */
2567 	t_u16 band;
2568 	/** 11D channel power */
2569 	t_u8 pwr;
2570 	/** AP seen on channel */
2571 	t_u8 ap_seen;
2572 } MLAN_PACK_END chan_power_11d_t;
2573 
2574 /** Region channel info */
2575 typedef MLAN_PACK_START struct _parsed_region_chan_11d {
2576 	/** 11D channel power per channel */
2577 	chan_power_11d_t chan_pwr[MAX_NO_OF_CHAN];
2578 	/** 11D number of channels */
2579 	t_u8 no_of_chan;
2580 } MLAN_PACK_END parsed_region_chan_11d_t;
2581 #endif /* STA_SUPPORT */
2582 
2583 /** ChanScanMode_t */
2584 typedef MLAN_PACK_START struct _ChanScanMode_t {
2585 #ifdef BIG_ENDIAN_SUPPORT
2586 	/** Reserved */
2587 	t_u8 reserved_7 : 1;
2588 	/** First passive scan then active scan */
2589 	t_u8 passive_to_active_scan : 1;
2590 	/** First channel in scan */
2591 	t_u8 first_chan : 1;
2592 	/** Enable hidden ssid report */
2593 	t_u8 hidden_ssid_report : 1;
2594 	/** Enable probe response timeout */
2595 	t_u8 rsp_timeout_en : 1;
2596 	/** Multidomain scan mode */
2597 	t_u8 multidomain_scan : 1;
2598 	/** Disble channel filtering flag */
2599 	t_u8 disable_chan_filt : 1;
2600 	/** Channel scan mode passive flag */
2601 	t_u8 passive_scan : 1;
2602 #else
2603 	/** Channel scan mode passive flag */
2604 	t_u8 passive_scan : 1;
2605 	/** Disble channel filtering flag */
2606 	t_u8 disable_chan_filt : 1;
2607 	/** Multidomain scan mode */
2608 	t_u8 multidomain_scan : 1;
2609 	/** Enable probe response timeout */
2610 	t_u8 rsp_timeout_en : 1;
2611 	/** Enable hidden ssid report */
2612 	t_u8 hidden_ssid_report : 1;
2613 	/** First channel in scan */
2614 	t_u8 first_chan : 1;
2615 	/** First passive scan then active scan */
2616 	t_u8 passive_to_active_scan : 1;
2617 	/** Reserved */
2618 	t_u8 reserved_7 : 1;
2619 #endif
2620 } MLAN_PACK_END ChanScanMode_t;
2621 
2622 /** ChanScanParamSet_t */
2623 typedef MLAN_PACK_START struct _ChanScanParamSet_t {
2624 	/** Channel scan parameter : band config */
2625 	Band_Config_t bandcfg;
2626 	/** Channel scan parameter : Channel number */
2627 	t_u8 chan_number;
2628 	/** Channel scan parameter : Channel scan mode */
2629 	ChanScanMode_t chan_scan_mode;
2630 	/** Channel scan parameter : Minimum scan time */
2631 	t_u16 min_scan_time;
2632 	/** Channel scan parameter : Maximum scan time */
2633 	t_u16 max_scan_time;
2634 } MLAN_PACK_END ChanScanParamSet_t;
2635 
2636 /** MrvlIEtypes_ChanListParamSet_t */
2637 typedef MLAN_PACK_START struct _MrvlIEtypes_ChanListParamSet_t {
2638 	/** Header */
2639 	MrvlIEtypesHeader_t header;
2640 	/** Channel scan parameters */
2641 	ChanScanParamSet_t chan_scan_param[1];
2642 } MLAN_PACK_END MrvlIEtypes_ChanListParamSet_t;
2643 
2644 /** MrvlIEtypes_EESParamSet_t */
2645 typedef MLAN_PACK_START struct _MrvlIEtypes_EESParamSet_t {
2646 	/** Header */
2647 	MrvlIEtypesHeader_t header;
2648 	/** EES scan mode */
2649 	t_u16 ees_mode;
2650 	/** EES report condition */
2651 	t_u16 report_cond;
2652 	/** EES High Period scan interval */
2653 	t_u16 high_period;
2654 	/** EES High Period scan count */
2655 	t_u16 high_period_count;
2656 	/** EES Medium Period scan interval */
2657 	t_u16 mid_period;
2658 	/** EES Medium Period scan count */
2659 	t_u16 mid_period_count;
2660 	/** EES Low Period scan interval */
2661 	t_u16 low_period;
2662 	/** EES Low Period scan count */
2663 	t_u16 low_period_count;
2664 } MLAN_PACK_END MrvlIEtypes_EESParamSet_t;
2665 
2666 /** MrvlIEtype_EESNetworkCfg_t */
2667 typedef MLAN_PACK_START struct _MrvlIEtype_EESNetworkCfg_t {
2668 	/** Header */
2669 	MrvlIEtypesHeader_t header;
2670 	/** Number of networks in the list */
2671 	t_u8 network_count;
2672 	/** Maximum number of connection */
2673 	t_u8 max_conn_count;
2674 	/** Black List Exp */
2675 	t_u8 black_list_exp;
2676 } MLAN_PACK_END MrvlIEtype_EESNetworkCfg_t;
2677 
2678 /** ChanBandParamSet_t */
2679 typedef struct _ChanBandParamSet_t {
2680 	/** Channel scan parameter : band config */
2681 	Band_Config_t bandcfg;
2682 	/** Channel number */
2683 	t_u8 chan_number;
2684 } ChanBandParamSet_t;
2685 
2686 /** MrvlIEtypes_ChanBandListParamSet_t */
2687 typedef MLAN_PACK_START struct _MrvlIEtypes_ChanBandListParamSet_t {
2688 	/** Header */
2689 	MrvlIEtypesHeader_t header;
2690 	/** Channel Band parameters */
2691 	ChanBandParamSet_t chan_band_param[1];
2692 } MLAN_PACK_END MrvlIEtypes_ChanBandListParamSet_t;
2693 
2694 /** MrvlIEtypes_RatesParamSet_t */
2695 typedef MLAN_PACK_START struct _MrvlIEtypes_RatesParamSet_t {
2696 	/** Header */
2697 	MrvlIEtypesHeader_t header;
2698 	/** Rates */
2699 	t_u8 rates[1];
2700 } MLAN_PACK_END MrvlIEtypes_RatesParamSet_t;
2701 
2702 /** _MrvlIEtypes_Bssid_List_t */
2703 typedef MLAN_PACK_START struct _MrvlIEtypes_Bssid_List_t {
2704 	/** Header */
2705 	MrvlIEtypesHeader_t header;
2706 	/** BSSID */
2707 	t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
2708 } MLAN_PACK_END MrvlIEtypes_Bssid_List_t;
2709 
2710 /** MrvlIEtypes_SsIdParamSet_t */
2711 typedef MLAN_PACK_START struct _MrvlIEtypes_SsIdParamSet_t {
2712 	/** Header */
2713 	MrvlIEtypesHeader_t header;
2714 	/** SSID */
2715 	t_u8 ssid[1];
2716 } MLAN_PACK_END MrvlIEtypes_SsIdParamSet_t;
2717 
2718 /**MrvlIEtypes_AssocType_t */
2719 typedef MLAN_PACK_START struct _MrvlIEtypes_HostMlme_t {
2720 	/** Header */
2721 	MrvlIEtypesHeader_t header;
2722 	/** Authentication type */
2723 	t_u8 host_mlme;
2724 } MLAN_PACK_END MrvlIEtypes_HostMlme_t;
2725 
2726 /** MrvlIEtypes_NumProbes_t */
2727 typedef MLAN_PACK_START struct _MrvlIEtypes_NumProbes_t {
2728 	/** Header */
2729 	MrvlIEtypesHeader_t header;
2730 	/** Number of probes */
2731 	t_u16 num_probes;
2732 } MLAN_PACK_END MrvlIEtypes_NumProbes_t;
2733 
2734 /** MrvlIEtypes_WildCardSsIdParamSet_t */
2735 typedef MLAN_PACK_START struct _MrvlIEtypes_WildCardSsIdParamSet_t {
2736 	/** Header */
2737 	MrvlIEtypesHeader_t header;
2738 	/** Maximum SSID length */
2739 	t_u8 max_ssid_length;
2740 	/** SSID */
2741 	t_u8 ssid[1];
2742 } MLAN_PACK_END MrvlIEtypes_WildCardSsIdParamSet_t;
2743 
2744 /**TSF data size */
2745 #define TSF_DATA_SIZE 8
2746 /** Table of TSF values returned in the scan result */
2747 typedef MLAN_PACK_START struct _MrvlIEtypes_TsfTimestamp_t {
2748 	/** Header */
2749 	MrvlIEtypesHeader_t header;
2750 	/** the length of each TSF data is 8 bytes, could be multiple TSF here
2751 	 */
2752 	t_u8 tsf_data[1];
2753 } MLAN_PACK_END MrvlIEtypes_TsfTimestamp_t;
2754 
2755 /** CfParamSet_t */
2756 typedef MLAN_PACK_START struct _CfParamSet_t {
2757 	/** CF parameter : Count */
2758 	t_u8 cfp_cnt;
2759 	/** CF parameter : Period */
2760 	t_u8 cfp_period;
2761 	/** CF parameter : Duration */
2762 	t_u16 cfp_max_duration;
2763 	/** CF parameter : Duration remaining */
2764 	t_u16 cfp_duration_remaining;
2765 } MLAN_PACK_END CfParamSet_t;
2766 
2767 /** IbssParamSet_t */
2768 typedef MLAN_PACK_START struct _IbssParamSet_t {
2769 	/** ATIM window value */
2770 	t_u16 atim_window;
2771 } MLAN_PACK_END IbssParamSet_t;
2772 
2773 /** MrvlIEtypes_SsParamSet_t */
2774 typedef MLAN_PACK_START struct _MrvlIEtypes_SsParamSet_t {
2775 	/** Header */
2776 	MrvlIEtypesHeader_t header;
2777 	/** CF/IBSS parameters sets */
2778 	union {
2779 		/** CF parameter set */
2780 		CfParamSet_t cf_param_set[1];
2781 		/** IBSS parameter set */
2782 		IbssParamSet_t ibss_param_set[1];
2783 	} cf_ibss;
2784 } MLAN_PACK_END MrvlIEtypes_SsParamSet_t;
2785 
2786 /** FhParamSet_t */
2787 typedef MLAN_PACK_START struct _FhParamSet_t {
2788 	/** FH parameter : Dwell time */
2789 	t_u16 dwell_time;
2790 	/** FH parameter : Hop set */
2791 	t_u8 hop_set;
2792 	/** FH parameter : Hop pattern */
2793 	t_u8 hop_pattern;
2794 	/** FH parameter : Hop index */
2795 	t_u8 hop_index;
2796 } MLAN_PACK_END FhParamSet_t;
2797 
2798 /** DsParamSet_t */
2799 typedef MLAN_PACK_START struct _DsParamSet_t {
2800 	/** Current channel number */
2801 	t_u8 current_chan;
2802 } MLAN_PACK_END DsParamSet_t;
2803 
2804 /** MrvlIEtypes_PhyParamSet_t */
2805 typedef MLAN_PACK_START struct _MrvlIEtypes_PhyParamSet_t {
2806 	/** Header */
2807 	MrvlIEtypesHeader_t header;
2808 	/** FH/DS parameters */
2809 	union {
2810 		/** FH parameter set */
2811 		FhParamSet_t fh_param_set[1];
2812 		/** DS parameter set */
2813 		DsParamSet_t ds_param_set[1];
2814 	} fh_ds;
2815 } MLAN_PACK_END MrvlIEtypes_PhyParamSet_t;
2816 
2817 /* Auth type to be used in the Authentication portion of an Assoc seq */
2818 /** MrvlIEtypes_AuthType_t */
2819 typedef MLAN_PACK_START struct _MrvlIEtypes_AuthType_t {
2820 	/** Header */
2821 	MrvlIEtypesHeader_t header;
2822 	/** Authentication type */
2823 	t_u16 auth_type;
2824 } MLAN_PACK_END MrvlIEtypes_AuthType_t;
2825 
2826 /** MrvlIEtypes_ScanChanGap_t */
2827 typedef MLAN_PACK_START struct _MrvlIEtypes_ScanChanGap_t {
2828 	/** Header */
2829 	MrvlIEtypesHeader_t header;
2830 	/** Time gap in units to TUs to be used between
2831 	 * two consecutive channels scan */
2832 	t_u16 gap;
2833 } MLAN_PACK_END MrvlIEtypes_ScanChanGap_t;
2834 
2835 /** channel statictics */
2836 typedef MLAN_PACK_START struct _chan_statistics_t {
2837 	/** channle number */
2838 	t_u8 chan_num;
2839 	/** band info */
2840 	Band_Config_t bandcfg;
2841 	/** flags */
2842 	t_u8 flags;
2843 	/** noise */
2844 	t_s8 noise;
2845 	/** total network */
2846 	t_u16 total_networks;
2847 	/** scan duration */
2848 	t_u16 cca_scan_duration;
2849 	/** busy duration */
2850 	t_u16 cca_busy_duration;
2851 } MLAN_PACK_END chan_statistics_t;
2852 
2853 /** channel statictics tlv */
2854 typedef MLAN_PACK_START struct _MrvlIEtypes_ChannelStats_t {
2855 	/** Header */
2856 	MrvlIEtypesHeader_t header;
2857 	/** channel statictics */
2858 	chan_statistics_t chanStat[];
2859 } MLAN_PACK_END MrvlIEtypes_ChannelStats_t;
2860 
2861 /** MrvlIETypes_ActionFrame_t */
2862 typedef MLAN_PACK_START struct {
2863 	MrvlIEtypesHeader_t header; /**< Header */
2864 
2865 	t_u8 srcAddr[MLAN_MAC_ADDR_LENGTH];
2866 	t_u8 dstAddr[MLAN_MAC_ADDR_LENGTH];
2867 
2868 	IEEEtypes_ActionFrame_t actionFrame;
2869 
2870 } MLAN_PACK_END MrvlIETypes_ActionFrame_t;
2871 
2872 /** MrvlIEtypes_RxBaSync_t */
2873 typedef MLAN_PACK_START struct _MrvlIEtypes_RxBaSync_t {
2874 	/** Header */
2875 	MrvlIEtypesHeader_t header;
2876 	/** mac address */
2877 	t_u8 mac[MLAN_MAC_ADDR_LENGTH];
2878 	/** tid */
2879 	t_u8 tid;
2880 	/** reserved field */
2881 	t_u8 reserved;
2882 	/** start seq num */
2883 	t_u16 seq_num;
2884 	/** bitmap len */
2885 	t_u16 bitmap_len;
2886 	/** bitmap */
2887 	t_u8 bitmap[1];
2888 } MLAN_PACK_END MrvlIEtypes_RxBaSync_t;
2889 
2890 /** MrvlIEtypes_RsnParamSet_t */
2891 typedef MLAN_PACK_START struct _MrvlIEtypes_RsnParamSet_t {
2892 	/** Header */
2893 	MrvlIEtypesHeader_t header;
2894 	/** RSN IE */
2895 	t_u8 rsn_ie[];
2896 } MLAN_PACK_END MrvlIEtypes_RsnParamSet_t;
2897 
2898 /** MrvlIEtypes_SecurityCfg_t */
2899 typedef MLAN_PACK_START struct _MrvlIEtypes_SecurityCfg_t {
2900 	/** Header */
2901 	MrvlIEtypesHeader_t header;
2902 	/** enable 11w */
2903 	t_u8 use_mfp;
2904 } MLAN_PACK_END MrvlIEtypes_SecurityCfg_t;
2905 
2906 /** Host Command ID : _HostCmd_DS_BEACON_STUCK_CFG */
2907 typedef MLAN_PACK_START struct _HostCmd_DS_BEACON_STUCK_CFG {
2908 	/** ACT_GET/ACT_SET */
2909 	t_u8 action;
2910 	/** No of beacon interval after which firmware will check if beacon Tx
2911 	 * is going fine */
2912 	t_u8 beacon_stuck_detect_count;
2913 	/** Upon performing MAC reset, no of beacon interval after which
2914 	 * firmware will check if recovery was successful */
2915 	t_u8 recovery_confirm_count;
2916 } MLAN_PACK_END HostCmd_DS_BEACON_STUCK_CFG;
2917 
2918 /** Key Info flag for multicast key */
2919 #define KEY_INFO_MCAST_KEY 0x01
2920 /** Key Info flag for unicast key */
2921 #define KEY_INFO_UCAST_KEY 0x02
2922 /** Key Info flag for enable key */
2923 #define KEY_INFO_ENABLE_KEY 0x04
2924 /** Key Info flag for default key */
2925 #define KEY_INFO_DEFAULT_KEY 0x08
2926 /** Key Info flag for TX key */
2927 #define KEY_INFO_TX_KEY 0x10
2928 /** Key Info flag for RX key */
2929 #define KEY_INFO_RX_KEY 0x20
2930 #define KEY_INFO_CMAC_AES_KEY 0x400
2931 /** PN size for WPA/WPA2 */
2932 #define WPA_PN_SIZE 8
2933 /** PN size for PMF IGTK */
2934 #define IGTK_PN_SIZE 8
2935 /** WAPI KEY size */
2936 #define WAPI_KEY_SIZE 32
2937 /** key params fix size */
2938 #define KEY_PARAMS_FIXED_LEN 10
2939 /** key index mask */
2940 #define KEY_INDEX_MASK 0xf
2941 
2942 /** wep_param */
2943 typedef MLAN_PACK_START struct _wep_param_t {
2944 	/** key_len */
2945 	t_u16 key_len;
2946 	/** wep key */
2947 	t_u8 key[MAX_WEP_KEY_SIZE];
2948 } MLAN_PACK_END wep_param_t;
2949 
2950 /** tkip_param */
2951 typedef MLAN_PACK_START struct _tkip_param {
2952 	/** Rx packet num */
2953 	t_u8 pn[WPA_PN_SIZE];
2954 	/** key_len */
2955 	t_u16 key_len;
2956 	/** tkip key */
2957 	t_u8 key[WPA_TKIP_KEY_LEN];
2958 } MLAN_PACK_END tkip_param;
2959 
2960 /** aes_param */
2961 typedef MLAN_PACK_START struct _aes_param {
2962 	/** Rx packet num */
2963 	t_u8 pn[WPA_PN_SIZE];
2964 	/** key_len */
2965 	t_u16 key_len;
2966 	/** aes key */
2967 	t_u8 key[WPA_AES_KEY_LEN];
2968 } MLAN_PACK_END aes_param;
2969 
2970 /** wapi_param */
2971 typedef MLAN_PACK_START struct _wapi_param {
2972 	/** Rx packet num */
2973 	t_u8 pn[PN_SIZE];
2974 	/** key_len */
2975 	t_u16 key_len;
2976 	/** wapi key */
2977 	t_u8 key[WAPI_KEY_SIZE];
2978 } MLAN_PACK_END wapi_param;
2979 
2980 /** cmac_aes_param */
2981 typedef MLAN_PACK_START struct _cmac_aes_param {
2982 	/** IGTK pn */
2983 	t_u8 ipn[IGTK_PN_SIZE];
2984 	/** key_len */
2985 	t_u16 key_len;
2986 	/** aes key */
2987 	t_u8 key[CMAC_AES_KEY_LEN];
2988 } MLAN_PACK_END cmac_aes_param;
2989 
2990 /** gmac_aes_256_param */
2991 typedef MLAN_PACK_START struct _gmac_aes_256_param {
2992 	/** IGTK pn */
2993 	t_u8 ipn[IGTK_PN_SIZE];
2994 	/** key_len */
2995 	t_u16 key_len;
2996 	/** aes key */
2997 	t_u8 key[WPA_IGTK_256_KEY_LEN];
2998 } MLAN_PACK_END gmac_aes_256_param;
2999 
3000 /** gmac_param */
3001 typedef MLAN_PACK_START struct _gcmp_param {
3002 	/** GCMP pn */
3003 	t_u8 pn[WPA_PN_SIZE];
3004 	/** key_len */
3005 	t_u16 key_len;
3006 	/** aes key */
3007 	t_u8 key[WPA_GCMP_KEY_LEN];
3008 } MLAN_PACK_END gcmp_param;
3009 
3010 /** ccmp256_param */
3011 typedef MLAN_PACK_START struct _ccmp256_param {
3012 	/** CCMP pn */
3013 	t_u8 pn[WPA_PN_SIZE];
3014 	/** key_len */
3015 	t_u16 key_len;
3016 	/** ccmp256 key */
3017 	t_u8 key[WPA_CCMP_256_KEY_LEN];
3018 } MLAN_PACK_END ccmp_256_param;
3019 
3020 /** MrvlIEtype_KeyParamSet_t */
3021 typedef MLAN_PACK_START struct _MrvlIEtype_KeyParamSetV2_t {
3022 	/** Type ID */
3023 	t_u16 type;
3024 	/** Length of Payload */
3025 	t_u16 length;
3026 	/** mac address */
3027 	t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH];
3028 	/** key index */
3029 	t_u8 key_idx;
3030 	/** Type of Key: WEP=0, TKIP=1, AES=2, WAPI=3 AES_CMAC=4 */
3031 	t_u8 key_type;
3032 	/** Key Control Info specific to a key_type_id */
3033 	t_u16 key_info;
3034 	union {
3035 		/** wep key param */
3036 		wep_param_t wep;
3037 		/** tkip key param */
3038 		tkip_param tkip;
3039 		/** aes key param */
3040 		aes_param aes;
3041 		/** wapi key param */
3042 		wapi_param wapi;
3043 		/** IGTK key param */
3044 		cmac_aes_param cmac_aes;
3045 		/** gcmp key param */
3046 		gcmp_param gcmp;
3047 		/** ccmp 256 key parameters */
3048 		ccmp_256_param ccmp256;
3049 	} key_params;
3050 } MLAN_PACK_END MrvlIEtype_KeyParamSetV2_t;
3051 
3052 /** HostCmd_DS_802_11_KEY_MATERIAL */
3053 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_KEY_MATERIAL {
3054 	/** Action */
3055 	t_u16 action;
3056 	/** Key parameter set */
3057 	MrvlIEtype_KeyParamSetV2_t key_param_set;
3058 } MLAN_PACK_END HostCmd_DS_802_11_KEY_MATERIAL;
3059 
3060 /** HostCmd_DS_GTK_REKEY_PARAMS */
3061 typedef MLAN_PACK_START struct _HostCmd_DS_GTK_REKEY_PARAMS {
3062 	/** Action */
3063 	t_u16 action;
3064 	/** Key confirmation key */
3065 	t_u8 kck[MLAN_KCK_LEN];
3066 	/** Key encryption key */
3067 	t_u8 kek[MLAN_KEK_LEN];
3068 	/** Replay counter low 32 bit */
3069 	t_u32 replay_ctr_low;
3070 	/** Replay counter high 32 bit */
3071 	t_u32 replay_ctr_high;
3072 } MLAN_PACK_END HostCmd_DS_GTK_REKEY_PARAMS;
3073 
3074 /** Data structure of WMM QoS information */
3075 typedef MLAN_PACK_START struct _WmmQosInfo_t {
3076 #ifdef BIG_ENDIAN_SUPPORT
3077 	/** QoS UAPSD */
3078 	t_u8 qos_uapsd : 1;
3079 	/** Reserved */
3080 	t_u8 reserved : 3;
3081 	/** Parameter set count */
3082 	t_u8 para_set_count : 4;
3083 #else
3084 	/** Parameter set count */
3085 	t_u8 para_set_count : 4;
3086 	/** Reserved */
3087 	t_u8 reserved : 3;
3088 	/** QoS UAPSD */
3089 	t_u8 qos_uapsd : 1;
3090 #endif /* BIG_ENDIAN_SUPPORT */
3091 } MLAN_PACK_END WmmQosInfo_t, *pWmmQosInfo_t;
3092 
3093 /** Data structure of WMM ECW */
3094 typedef MLAN_PACK_START struct _WmmEcw_t {
3095 #ifdef BIG_ENDIAN_SUPPORT
3096 	/** Maximum Ecw */
3097 	t_u8 ecw_max : 4;
3098 	/** Minimum Ecw */
3099 	t_u8 ecw_min : 4;
3100 #else
3101 	/** Minimum Ecw */
3102 	t_u8 ecw_min : 4;
3103 	/** Maximum Ecw */
3104 	t_u8 ecw_max : 4;
3105 #endif /* BIG_ENDIAN_SUPPORT */
3106 } MLAN_PACK_END WmmEcw_t, *pWmmEcw_t;
3107 
3108 /** Data structure of WMM Aci/Aifsn */
3109 typedef MLAN_PACK_START struct _WmmAciAifsn_t {
3110 #ifdef BIG_ENDIAN_SUPPORT
3111 	/** Reserved */
3112 	t_u8 reserved : 1;
3113 	/** Aci */
3114 	t_u8 aci : 2;
3115 	/** Acm */
3116 	t_u8 acm : 1;
3117 	/** Aifsn */
3118 	t_u8 aifsn : 4;
3119 #else
3120 	/** Aifsn */
3121 	t_u8 aifsn : 4;
3122 	/** Acm */
3123 	t_u8 acm : 1;
3124 	/** Aci */
3125 	t_u8 aci : 2;
3126 	/** Reserved */
3127 	t_u8 reserved : 1;
3128 #endif /* BIG_ENDIAN_SUPPORT */
3129 } MLAN_PACK_END WmmAciAifsn_t, *pWmmAciAifsn_t;
3130 
3131 /** Data structure of WMM AC parameters  */
3132 typedef MLAN_PACK_START struct _WmmAcParameters_t {
3133 	WmmAciAifsn_t aci_aifsn; /**< AciAifSn */
3134 	WmmEcw_t ecw; /**< Ecw */
3135 	t_u16 tx_op_limit; /**< Tx op limit */
3136 } MLAN_PACK_END WmmAcParameters_t, *pWmmAcParameters_t;
3137 
3138 /** Data structure of WMM parameter  */
3139 typedef MLAN_PACK_START struct _WmmParameter_t {
3140 	/** OuiType:  00:50:f2:02 */
3141 	t_u8 ouitype[4];
3142 	/** Oui subtype: 01 */
3143 	t_u8 ouisubtype;
3144 	/** version: 01 */
3145 	t_u8 version;
3146 	/** QoS information */
3147 	t_u8 qos_info;
3148 	/** Reserved */
3149 	t_u8 reserved;
3150 	/** AC Parameters Record WMM_AC_BE, WMM_AC_BK, WMM_AC_VI, WMM_AC_VO */
3151 	WmmAcParameters_t ac_params[MAX_AC_QUEUES];
3152 } MLAN_PACK_END WmmParameter_t, *pWmmParameter_t;
3153 
3154 /** Data structure of Host command WMM_PARAM_CFG  */
3155 typedef MLAN_PACK_START struct _HostCmd_DS_WMM_PARAM_CONFIG {
3156 	/** action */
3157 	t_u16 action;
3158 	/** AC Parameters Record WMM_AC_BE, WMM_AC_BK, WMM_AC_VI, WMM_AC_VO */
3159 	WmmAcParameters_t ac_params[MAX_AC_QUEUES];
3160 } MLAN_PACK_END HostCmd_DS_WMM_PARAM_CONFIG;
3161 
3162 /* Definition of firmware host command */
3163 /** HostCmd_DS_GEN */
3164 typedef MLAN_PACK_START struct _HostCmd_DS_GEN {
3165 	/** Command */
3166 	t_u16 command;
3167 	/** Size */
3168 	t_u16 size;
3169 	/** Sequence number */
3170 	t_u16 seq_num;
3171 	/** Result */
3172 	t_u16 result;
3173 } MLAN_PACK_END HostCmd_DS_GEN
3174 
3175 	;
3176 
3177 /** Size of HostCmd_DS_GEN */
3178 #define S_DS_GEN sizeof(HostCmd_DS_GEN)
3179 
3180 /** mod_group_setting */
3181 typedef MLAN_PACK_START struct _mod_group_setting {
3182 	/** modulation group */
3183 	t_u8 mod_group;
3184 	/** power */
3185 	t_u8 power;
3186 } MLAN_PACK_END mod_group_setting;
3187 
3188 /** MrvlIETypes_ChanTRPCConfig_t */
3189 typedef MLAN_PACK_START struct _MrvlIETypes_ChanTRPCConfig_t {
3190 	/** Header */
3191 	MrvlIEtypesHeader_t header;
3192 	/** start freq */
3193 	t_u16 start_freq;
3194 	/* channel width */
3195 	t_u8 width;
3196 	/** channel number */
3197 	t_u8 chan_num;
3198 	/** mode groups */
3199 	mod_group_setting mod_group[1];
3200 } MLAN_PACK_END MrvlIETypes_ChanTRPCConfig_t;
3201 
3202 /* HostCmd_DS_CHANNEL_TRPC_CONFIG */
3203 typedef MLAN_PACK_START struct _HostCmd_DS_CHANNEL_TRPC_CONFIG {
3204 	/** action */
3205 	t_u16 action;
3206 	/** 0/1/2/3 */
3207 	t_u16 sub_band;
3208 	/** chan TRPC config */
3209 	// MrvlIETypes_ChanTRPCConfig_t tlv[];
3210 } MLAN_PACK_END HostCmd_DS_CHANNEL_TRPC_CONFIG;
3211 
3212 /** Address type: broadcast */
3213 #define ADDR_TYPE_BROADCAST 1
3214 /* Address type: unicast */
3215 #define ADDR_TYPE_UNICAST 2
3216 /* Address type: multicast */
3217 #define ADDR_TYPE_MULTICAST 3
3218 
3219 /** Ether type: any */
3220 #define ETHER_TYPE_ANY 0xffff
3221 /** Ether type: ARP */
3222 #define ETHER_TYPE_ARP 0x0608
3223 
3224 /** IPv4 address any */
3225 #define IPV4_ADDR_ANY 0xffffffff
3226 
3227 /** Header structure for ARP filter */
3228 typedef MLAN_PACK_START struct _arpfilter_header {
3229 	/** Type */
3230 	t_u16 type;
3231 	/** TLV length */
3232 	t_u16 len;
3233 } MLAN_PACK_END arpfilter_header;
3234 
3235 /** Filter entry structure */
3236 typedef MLAN_PACK_START struct _filter_entry {
3237 	/** Address type */
3238 	t_u16 addr_type;
3239 	/** Ether type */
3240 	t_u16 eth_type;
3241 	/** IPv4 address */
3242 	t_u32 ipv4_addr;
3243 } MLAN_PACK_END filter_entry;
3244 
3245 typedef MLAN_PACK_START struct _HostCmd_DS_MEF_CFG {
3246 	/** Criteria */
3247 	t_u32 criteria;
3248 	/** Number of entries */
3249 	t_u16 nentries;
3250 } MLAN_PACK_END HostCmd_DS_MEF_CFG;
3251 
3252 #define MAX_NUM_STACK_BYTES 100
3253 /** mef stack struct*/
3254 typedef MLAN_PACK_START struct _mef_stack {
3255 	/** length of byte*/
3256 	t_u16 sp;
3257 	/** data of filter items*/
3258 	t_u8 byte[MAX_NUM_STACK_BYTES];
3259 } MLAN_PACK_END mef_stack;
3260 
3261 /** mef entry struct */
3262 typedef MLAN_PACK_START struct _mef_entry_header {
3263 	/**mode:1->hostsleep;2->non hostsleep mode*/
3264 	t_u8 mode;
3265 	/**action=0->discard and not wake host
3266 	 * action=1->discard and wake host
3267 	 * action=3->allow and wake host*/
3268 	t_u8 action;
3269 } MLAN_PACK_END mef_entry_header;
3270 
3271 /** mef op struct is to help to generate mef data*/
3272 typedef MLAN_PACK_START struct _mef_op {
3273 	/** operand_type*/
3274 	t_u8 operand_type;
3275 	/** reserved*/
3276 	t_u8 rsvd[3];
3277 	/** data */
3278 	t_u8 val[MAX_NUM_BYTE_SEQ + 1];
3279 } MLAN_PACK_END mef_op;
3280 
3281 /** Structure definition for low power mode cfg command */
3282 typedef MLAN_PACK_START struct _HostCmd_DS_LOW_POWER_MODE_CFG {
3283 	/** Action */
3284 	t_u16 action;
3285 	/** Low power mode */
3286 	t_u16 lpm;
3287 } MLAN_PACK_END HostCmd_DS_LOW_POWER_MODE_CFG;
3288 
3289 /* HostCmd_DS_802_11_SLEEP_PERIOD */
3290 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SLEEP_PERIOD {
3291 	/** ACT_GET/ACT_SET */
3292 	t_u16 action;
3293 
3294 	/** Sleep Period in msec */
3295 	t_u16 sleep_pd;
3296 } MLAN_PACK_END HostCmd_DS_802_11_SLEEP_PERIOD;
3297 
3298 /* HostCmd_DS_802_11_SLEEP_PARAMS */
3299 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SLEEP_PARAMS {
3300 	/** ACT_GET/ACT_SET */
3301 	t_u16 action;
3302 	/** Sleep clock error in ppm */
3303 	t_u16 error;
3304 	/** Wakeup offset in usec */
3305 	t_u16 offset;
3306 	/** Clock stabilization time in usec */
3307 	t_u16 stable_time;
3308 	/** Control periodic calibration */
3309 	t_u8 cal_control;
3310 	/** Control the use of external sleep clock */
3311 	t_u8 external_sleep_clk;
3312 	/** Reserved field, should be set to zero */
3313 	t_u16 reserved;
3314 } MLAN_PACK_END HostCmd_DS_802_11_SLEEP_PARAMS;
3315 
3316 /** Sleep response control */
3317 typedef enum _sleep_resp_ctrl {
3318 	RESP_NOT_NEEDED = 0,
3319 	RESP_NEEDED,
3320 } sleep_resp_ctrl;
3321 
3322 /** Structure definition for the new ieee power save parameters*/
3323 typedef MLAN_PACK_START struct __ps_param {
3324 	/** Null packet interval */
3325 	t_u16 null_pkt_interval;
3326 	/** Num dtims */
3327 	t_u16 multiple_dtims;
3328 	/** becaon miss interval */
3329 	t_u16 bcn_miss_timeout;
3330 	/** local listen interval */
3331 	t_u16 local_listen_interval;
3332 	/** Adhoc awake period */
3333 	t_u16 adhoc_wake_period;
3334 	/** mode - (0x01 - firmware to automatically choose PS_POLL or NULL
3335 	 * mode, 0x02 - PS_POLL, 0x03 - NULL mode )
3336 	 */
3337 	t_u16 mode;
3338 	/** Delay to PS in milliseconds */
3339 	t_u16 delay_to_ps;
3340 } MLAN_PACK_END ps_param;
3341 
3342 /** Structure definition for the new auto deep sleep command */
3343 typedef MLAN_PACK_START struct __auto_ds_param {
3344 	/** Deep sleep inactivity timeout */
3345 	t_u16 deep_sleep_timeout;
3346 } MLAN_PACK_END auto_ds_param;
3347 
3348 /** Structure definition for sleep confirmation in the new ps command */
3349 typedef MLAN_PACK_START struct __sleep_confirm_param {
3350 	/** response control 0x00 - response not needed, 0x01 - response needed
3351 	 */
3352 	t_u16 resp_ctrl;
3353 } MLAN_PACK_END sleep_confirm_param;
3354 
3355 /** bitmap for get auto deepsleep */
3356 #define BITMAP_AUTO_DS 0x01
3357 /** bitmap for sta power save */
3358 #define BITMAP_STA_PS 0x10
3359 /** bitmap for beacon timeout */
3360 #define BITMAP_BCN_TMO 0x20
3361 /** bitmap for uap inactivity based PS */
3362 #define BITMAP_UAP_INACT_PS 0x100
3363 /** bitmap for uap DTIM PS */
3364 #define BITMAP_UAP_DTIM_PS 0x200
3365 /** Structure definition for the new ieee power save parameters*/
3366 typedef MLAN_PACK_START struct _auto_ps_param {
3367 	/** bitmap for enable power save mode */
3368 	t_u16 ps_bitmap;
3369 	/* auto deep sleep parameter,
3370 	 * sta power save parameter
3371 	 * uap inactivity parameter
3372 	 * uap DTIM parameter */
3373 } MLAN_PACK_END auto_ps_param;
3374 
3375 /** fix size for auto ps */
3376 #define AUTO_PS_FIX_SIZE 4
3377 
3378 /** TLV type : auto ds param */
3379 #define TLV_TYPE_AUTO_DS_PARAM (PROPRIETARY_TLV_BASE_ID + 0x71) /* 0x0171 */
3380 /** TLV type : ps param */
3381 #define TLV_TYPE_PS_PARAM (PROPRIETARY_TLV_BASE_ID + 0x72) /* 0x0172 */
3382 /** TLV type : beacon timeout */
3383 #define TLV_TYPE_BCN_TIMEOUT (PROPRIETARY_TLV_BASE_ID + 0x11F) /* 0x011F */
3384 
3385 /** MrvlIEtypes_auto_ds_param_t */
3386 typedef MLAN_PACK_START struct _MrvlIEtypes_auto_ds_param_t {
3387 	/** Header */
3388 	MrvlIEtypesHeader_t header;
3389 	/** auto ds param */
3390 	auto_ds_param param;
3391 } MLAN_PACK_END MrvlIEtypes_auto_ds_param_t;
3392 
3393 /** MrvlIEtypes_ps_param_t */
3394 typedef MLAN_PACK_START struct _MrvlIEtypes_ps_param_t {
3395 	/** Header */
3396 	MrvlIEtypesHeader_t header;
3397 	/** ps param */
3398 	ps_param param;
3399 } MLAN_PACK_END MrvlIEtypes_ps_param_t;
3400 
3401 /** MrvlIEtypes_bcn_timeout_t */
3402 typedef MLAN_PACK_START struct _MrvlIEtypes_bcn_timeout_t {
3403 	/** Header */
3404 	MrvlIEtypesHeader_t header;
3405 	/** Beacon miss timeout period window */
3406 	t_u16 bcn_miss_tmo_window;
3407 	/** Beacon miss timeout period */
3408 	t_u16 bcn_miss_tmo_period;
3409 	/** Beacon reacquire timeout period window */
3410 	t_u16 bcn_rq_tmo_window;
3411 	/** Beacon reacquire timeout period */
3412 	t_u16 bcn_rq_tmo_period;
3413 } MLAN_PACK_END MrvlIEtypes_bcn_timeout_t;
3414 
3415 /** Structure definition for new power save command */
3416 typedef MLAN_PACK_START struct _HostCmd_DS_PS_MODE_ENH {
3417 	/** Action */
3418 	t_u16 action;
3419 	/** Data speciifc to action */
3420 	/* For IEEE power save data will be as
3421 	 * UINT16 mode (0x01 - firmware to automatically choose PS_POLL or NULL
3422 	 * mode, 0x02 - PS_POLL, 0x03 - NULL mode ) UINT16 NullpacketInterval
3423 	 * UINT16 NumDtims
3424 	 * UINT16 BeaconMissInterval
3425 	 * UINT16 locallisteninterval
3426 	 * UINT16 adhocawakeperiod */
3427 
3428 	/* For auto deep sleep */
3429 	/* UINT16 Deep sleep inactivity timeout*/
3430 
3431 	/* For PS sleep confirm
3432 	 * UINT16 responeCtrl - 0x00 - reponse from fw not needed, 0x01 -
3433 	 * response from fw is needed */
3434 
3435 	union {
3436 		/** PS param definition */
3437 		ps_param opt_ps;
3438 		/** Auto ds param definition */
3439 		auto_ds_param auto_ds;
3440 		/** Sleep comfirm param definition */
3441 		sleep_confirm_param sleep_cfm;
3442 		/** bitmap for get PS info and Disable PS mode */
3443 		t_u16 ps_bitmap;
3444 		/** auto ps param */
3445 		auto_ps_param auto_ps;
3446 	} params;
3447 } MLAN_PACK_END HostCmd_DS_802_11_PS_MODE_ENH;
3448 
3449 /** FW VERSION tlv */
3450 #define TLV_TYPE_FW_VER_INFO (PROPRIETARY_TLV_BASE_ID + 0xC7) /* 0x1C7 */
3451 
3452 /** MrvlIEtypes_fw_ver_info_t */
3453 typedef MLAN_PACK_START struct _MrvlIEtypes_fw_ver_info_t {
3454 	/** Header */
3455 	MrvlIEtypesHeader_t header;
3456 	/** API id */
3457 	t_u16 api_id;
3458 	/** major version */
3459 	t_u8 major_ver;
3460 	/** minor version */
3461 	t_u8 minor_ver;
3462 } MLAN_PACK_END MrvlIEtypes_fw_ver_info_t;
3463 
3464 /** API ID */
3465 enum API_VER_ID {
3466 	KEY_API_VER_ID = 1,
3467 	FW_API_VER_ID = 2,
3468 	UAP_FW_API_VER_ID = 3,
3469 	CHANRPT_API_VER_ID = 4,
3470 	FW_HOTFIX_VER_ID = 5,
3471 };
3472 
3473 /** FW AP V15 */
3474 #define HOST_API_VERSION_V15 15
3475 /** FW minor version 1 */
3476 #define FW_MINOR_VERSION_1 1
3477 
3478 /** UAP FW version 2 */
3479 #define UAP_FW_VERSION_2 0x2
3480 
3481 /** HostCMD_DS_APCMD_ACS_SCAN */
3482 typedef MLAN_PACK_START struct _HostCMD_DS_APCMD_ACS_SCAN {
3483 	/** band */
3484 	Band_Config_t bandcfg;
3485 	/** channel */
3486 	t_u8 chan;
3487 } MLAN_PACK_END HostCMD_DS_APCMD_ACS_SCAN;
3488 
3489 /** HostCmd_DS_GET_HW_SPEC */
3490 typedef MLAN_PACK_START struct _HostCmd_DS_GET_HW_SPEC {
3491 	/** HW Interface version number */
3492 	t_u16 hw_if_version;
3493 	/** HW version number */
3494 	t_u16 version;
3495 	/** Reserved field */
3496 	t_u16 reserved;
3497 	/** Max no of Multicast address  */
3498 	t_u16 num_of_mcast_adr;
3499 	/** MAC address */
3500 	t_u8 permanent_addr[MLAN_MAC_ADDR_LENGTH];
3501 	/** Region Code */
3502 	t_u16 region_code;
3503 	/** Number of antenna used */
3504 	t_u16 number_of_antenna;
3505 	/** FW release number, example 0x1234=1.2.3.4 */
3506 	t_u32 fw_release_number;
3507 	/** Reserved field */
3508 	t_u32 reserved_1;
3509 	/** Reserved field */
3510 	t_u32 reserved_2;
3511 	/** Reserved field */
3512 	t_u32 reserved_3;
3513 	/** FW/HW Capability */
3514 	t_u32 fw_cap_info;
3515 	/** 802.11n Device Capabilities */
3516 	t_u32 dot_11n_dev_cap;
3517 	/** MIMO abstraction of MCSs supported by device */
3518 	t_u8 dev_mcs_support;
3519 	/** Valid end port at init */
3520 	t_u16 mp_end_port;
3521 	/** mgmt IE buffer count */
3522 	t_u16 mgmt_buf_count;
3523 	/** Reserved */
3524 	t_u32 reserved_8;
3525 	/** Reserved */
3526 	t_u32 reserved_9;
3527 	/** 802.11ac Device Capabilities */
3528 	t_u32 Dot11acDevCap;
3529 	/** MCSs supported by 802.11ac device */
3530 	t_u32 Dot11acMcsSupport;
3531 } MLAN_PACK_END HostCmd_DS_GET_HW_SPEC;
3532 
3533 #ifdef SDIO
3534 /* HostCmd_DS_SDIO_SP_RX_AGGR_CFG */
3535 typedef MLAN_PACK_START struct _HostCmd_DS_SDIO_SP_RX_AGGR_CFG {
3536 	t_u8 action;
3537 	t_u8 enable;
3538 	t_u16 sdio_block_size;
3539 } MLAN_PACK_END HostCmd_DS_SDIO_SP_RX_AGGR_CFG;
3540 #endif
3541 
3542 /**  HostCmd_DS_802_11_CFG_DATA */
3543 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_CFG_DATA {
3544 	/** Action */
3545 	t_u16 action;
3546 	/** Type */
3547 	t_u16 type;
3548 	/** Data length */
3549 	t_u16 data_len;
3550 	/** Data */
3551 } MLAN_PACK_END HostCmd_DS_802_11_CFG_DATA;
3552 
3553 /**  HostCmd_DS_CMD_802_11_RSSI_INFO_EXT */
3554 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RSSI_INFO_EXT {
3555 	/** Action */
3556 	t_u16 action;
3557 	/** Parameter used for exponential averaging for Data */
3558 	t_u16 ndata;
3559 	/** Parameter used for exponential averaging for Beacon */
3560 	t_u16 nbcn;
3561 	/** Last RSSI beacon TSF(only for Get action) */
3562 	t_u64 tsfbcn;
3563 	/** TLV info**/
3564 	t_u8 *tlv_buf[];
3565 } MLAN_PACK_END HostCmd_DS_802_11_RSSI_INFO_EXT;
3566 
3567 /** TLV rssi info */
3568 #define TLV_TYPE_RSSI_INFO (PROPRIETARY_TLV_BASE_ID + 0xe5) /* 0x01E5 */
3569 
3570 /** MrvlIEtypes_eapol_pkt_t */
3571 typedef MLAN_PACK_START struct _MrvlIEtypes_RSSI_EXT_t {
3572 	/** Header */
3573 	MrvlIEtypesHeader_t header;
3574 	/** Path ID
3575 	     [Bit1:Bit0] = [0:1]: path A
3576 	     [Bit1:Bit0] = [1:0]: path B
3577 	     [Bit1:Bit0] = [1:1]: combined signal of path A and path B
3578 	     [Bit7:Bit2] : Reserved
3579 	**/
3580 	t_u16 path_id;
3581 	/** Last Data RSSI in dBm */
3582 	t_s16 data_rssi_last;
3583 	/** Last Data NF in dBm */
3584 	t_s16 data_nf_last;
3585 	/** AVG DATA RSSI in dBm */
3586 	t_s16 data_rssi_avg;
3587 	/** AVG DATA NF in dBm */
3588 	t_s16 data_nf_avg;
3589 	/** Last BEACON RSSI in dBm */
3590 	t_s16 bcn_rssi_last;
3591 	/** Last BEACON NF in dBm */
3592 	t_s16 bcn_nf_last;
3593 	/** AVG BEACON RSSI in dBm */
3594 	t_s16 bcn_rssi_avg;
3595 	/** AVG BEACON NF in dBm */
3596 	t_s16 bcn_nf_avg;
3597 } MLAN_PACK_END MrvlIEtypes_RSSI_EXT_t;
3598 
3599 /**  HostCmd_DS_CMD_MC_AGGR_CFG */
3600 typedef MLAN_PACK_START struct _HostCmd_DS_MC_AGGR_CFG {
3601 	/** Action */
3602 	t_u16 action;
3603 	/** Reserved field 1 */
3604 	t_u16 reserved_1;
3605 	/* 1 enable, 0 disable
3606 	 * bit 0 MC aggregation
3607 	 * bit 1 packet expiry
3608 	 * bit 2 CTS2Self
3609 	 * bit 3 CTS2Self duration offset*/
3610 	t_u8 enable_bitmap;
3611 	/* 1 valid, 0 invalid
3612 	 * bit 0 MC aggregation
3613 	 * bit 1 packet expiry
3614 	 * bit 2 CTS2Self
3615 	 * bit 3 CTS2Self duration offset*/
3616 	t_u8 mask_bitmap;
3617 	/** CTS2Self duration offset */
3618 	t_u16 cts2self_offset;
3619 } MLAN_PACK_END HostCmd_DS_MC_AGGR_CFG;
3620 
3621 /** Stats_Cfg_Params_TLV */
3622 typedef struct MLAN_PACK_START _Stats_Cfg_Params_TLV {
3623 	/** tlvHeader */
3624 	MrvlIEtypesHeader_t tlvHeader;
3625 	/** op */
3626 	t_u8 op;
3627 	/** reserved */
3628 	t_u8 reserved;
3629 	/** mac */
3630 	mlan_802_11_mac_addr mac;
3631 } MLAN_PACK_END Stats_Cfg_Params_TLV_t;
3632 
3633 /** HostCmd_DS_STATS */
3634 typedef MLAN_PACK_START struct _HostCmd_DS_STATS {
3635 	/** Action */
3636 	t_u16 action;
3637 	/** TLV buffer */
3638 	t_u8 tlv_buffer[1];
3639 } MLAN_PACK_END HostCmd_DS_STATS;
3640 
3641 typedef MLAN_PACK_START struct _HostCmd_DS_GET_CH_LOAD {
3642 	/** Action */
3643 	t_u16 action;
3644 	t_u16 ch_load;
3645 	t_s16 noise;
3646 	t_u16 rx_quality;
3647 	t_u16 duration;
3648 } MLAN_PACK_END HostCmd_DS_GET_CH_LOAD;
3649 
3650 /**  HostCmd_DS_CMD_802_11_RSSI_INFO */
3651 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RSSI_INFO {
3652 	/** Action */
3653 	t_u16 action;
3654 	/** Parameter used for exponential averaging for Data */
3655 	t_u16 ndata;
3656 	/** Parameter used for exponential averaging for Beacon */
3657 	t_u16 nbcn;
3658 	/** Reserved field 0 */
3659 	t_u16 reserved[9];
3660 	/** Reserved field 1 */
3661 	t_u64 reserved_1;
3662 } MLAN_PACK_END HostCmd_DS_802_11_RSSI_INFO;
3663 
3664 /** HostCmd_DS_802_11_RSSI_INFO_RSP */
3665 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RSSI_INFO_RSP {
3666 	/** Action */
3667 	t_u16 action;
3668 	/** Parameter used for exponential averaging for Data */
3669 	t_u16 ndata;
3670 	/** Parameter used for exponential averaging for beacon */
3671 	t_u16 nbcn;
3672 	/** Last Data RSSI in dBm */
3673 	t_s16 data_rssi_last;
3674 	/** Last Data NF in dBm */
3675 	t_s16 data_nf_last;
3676 	/** AVG DATA RSSI in dBm */
3677 	t_s16 data_rssi_avg;
3678 	/** AVG DATA NF in dBm */
3679 	t_s16 data_nf_avg;
3680 	/** Last BEACON RSSI in dBm */
3681 	t_s16 bcn_rssi_last;
3682 	/** Last BEACON NF in dBm */
3683 	t_s16 bcn_nf_last;
3684 	/** AVG BEACON RSSI in dBm */
3685 	t_s16 bcn_rssi_avg;
3686 	/** AVG BEACON NF in dBm */
3687 	t_s16 bcn_nf_avg;
3688 	/** Last RSSI Beacon TSF */
3689 	t_u64 tsf_bcn;
3690 } MLAN_PACK_END HostCmd_DS_802_11_RSSI_INFO_RSP;
3691 
3692 /** HostCmd_DS_802_11_MAC_ADDRESS */
3693 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_MAC_ADDRESS {
3694 	/** Action */
3695 	t_u16 action;
3696 	/** MAC address */
3697 	t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH];
3698 } MLAN_PACK_END HostCmd_DS_802_11_MAC_ADDRESS;
3699 
3700 /** HostCmd_DS_MAC_CONTROL */
3701 typedef MLAN_PACK_START struct _HostCmd_DS_MAC_CONTROL {
3702 	/** Action */
3703 	t_u32 action;
3704 } MLAN_PACK_END HostCmd_DS_MAC_CONTROL;
3705 
3706 /** HostCmd_DS_802_11_NET_MONITOR */
3707 typedef MLAN_PACK_START struct _HostCmd_802_11_DS_NET_MONITOR {
3708 	/** Action */
3709 	t_u16 action;
3710 	/** Enable/disable net monitor */
3711 	t_u16 enable_net_mon;
3712 	/** set net monitor filer flag */
3713 	t_u16 filter_flag;
3714 	/** Channel to monitor */
3715 	MrvlIEtypes_ChanBandListParamSet_t monitor_chan;
3716 } MLAN_PACK_END HostCmd_DS_802_11_NET_MONITOR;
3717 
3718 /** HostCmd_DS_CMD_TX_DATA_PAUSE */
3719 typedef MLAN_PACK_START struct _HostCmd_DS_CMD_TX_DATA_PAUSE {
3720 	/** Action */
3721 	t_u16 action;
3722 	/** Enable/disable Tx data pause */
3723 	t_u8 enable_tx_pause;
3724 	/** Max number of TX buffers allowed for all PS clients*/
3725 	t_u8 pause_tx_count;
3726 } MLAN_PACK_END HostCmd_DS_CMD_TX_DATA_PAUSE;
3727 
3728 /** TLV type : TX pause TLV */
3729 #define TLV_TYPE_TX_PAUSE (PROPRIETARY_TLV_BASE_ID + 0x94) /* 0x0194 */
3730 /** MrvlIEtypes_SsIdParamSet_t */
3731 typedef MLAN_PACK_START struct _MrvlIEtypes_tx_pause_t {
3732 	/** Header */
3733 	MrvlIEtypesHeader_t header;
3734 	/** peer mac address */
3735 	t_u8 peermac[MLAN_MAC_ADDR_LENGTH];
3736 	/** Tx pause state, 1--pause, 0--free flowing */
3737 	t_u8 tx_pause;
3738 	/** total packets queued for the client */
3739 	t_u8 pkt_cnt;
3740 } MLAN_PACK_END MrvlIEtypes_tx_pause_t;
3741 
3742 /**  HostCmd_CMD_MAC_MULTICAST_ADR */
3743 typedef MLAN_PACK_START struct _HostCmd_DS_MAC_MULTICAST_ADR {
3744 	/** Action */
3745 	t_u16 action;
3746 	/** Number of addresses */
3747 	t_u16 num_of_adrs;
3748 	/** List of MAC */
3749 	t_u8 mac_list[MLAN_MAC_ADDR_LENGTH * MLAN_MAX_MULTICAST_LIST_SIZE];
3750 } MLAN_PACK_END HostCmd_DS_MAC_MULTICAST_ADR;
3751 
3752 /**  HostCmd_CMD_802_11_DEAUTHENTICATE */
3753 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_DEAUTHENTICATE {
3754 	/** MAC address */
3755 	t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH];
3756 	/** Deauthentication resaon code */
3757 	t_u16 reason_code;
3758 } MLAN_PACK_END HostCmd_DS_802_11_DEAUTHENTICATE;
3759 
3760 /** HostCmd_DS_802_11_ASSOCIATE */
3761 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_ASSOCIATE {
3762 	/** Peer STA address */
3763 	t_u8 peer_sta_addr[MLAN_MAC_ADDR_LENGTH];
3764 	/** Capability information */
3765 	IEEEtypes_CapInfo_t cap_info;
3766 	/** Listen interval */
3767 	t_u16 listen_interval;
3768 	/** Beacon period */
3769 	t_u16 beacon_period;
3770 	/** DTIM period */
3771 	t_u8 dtim_period;
3772 
3773 	/**
3774 	 *  MrvlIEtypes_SsIdParamSet_t  SsIdParamSet;
3775 	 *  MrvlIEtypes_PhyParamSet_t   PhyParamSet;
3776 	 *  MrvlIEtypes_SsParamSet_t    SsParamSet;
3777 	 *  MrvlIEtypes_RatesParamSet_t RatesParamSet;
3778 	 */
3779 } MLAN_PACK_END HostCmd_DS_802_11_ASSOCIATE;
3780 
3781 /** HostCmd_CMD_802_11_ASSOCIATE response */
3782 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_ASSOCIATE_RSP {
3783 	/** Association response structure */
3784 	IEEEtypes_AssocRsp_t assoc_rsp;
3785 } MLAN_PACK_END HostCmd_DS_802_11_ASSOCIATE_RSP;
3786 
3787 /** HostCmd_DS_802_11_AD_HOC_START*/
3788 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_AD_HOC_START {
3789 	/** AdHoc SSID */
3790 	t_u8 ssid[MLAN_MAX_SSID_LENGTH];
3791 	/** BSS mode */
3792 	t_u8 bss_mode;
3793 	/** Beacon period */
3794 	t_u16 beacon_period;
3795 	/** DTIM period */
3796 	t_u8 dtim_period;
3797 	/** SS parameter set */
3798 	IEEEtypes_SsParamSet_t ss_param_set;
3799 	/** PHY parameter set */
3800 	IEEEtypes_PhyParamSet_t phy_param_set;
3801 	/** Reserved field */
3802 	t_u16 reserved1;
3803 	/** Capability information */
3804 	IEEEtypes_CapInfo_t cap;
3805 	/** Supported data rates */
3806 	t_u8 DataRate[HOSTCMD_SUPPORTED_RATES];
3807 } MLAN_PACK_END HostCmd_DS_802_11_AD_HOC_START;
3808 
3809 /**  HostCmd_CMD_802_11_AD_HOC_START response */
3810 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_AD_HOC_START_RESULT {
3811 	/** Padding */
3812 	t_u8 pad[3];
3813 	/** AdHoc BSSID */
3814 	t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
3815 	/** Padding to sync with FW structure*/
3816 	t_u8 pad2[2];
3817 	/** Result */
3818 	t_u8 result;
3819 } MLAN_PACK_END HostCmd_DS_802_11_AD_HOC_START_RESULT;
3820 
3821 /**  HostCmd_CMD_802_11_AD_HOC_START response */
3822 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_AD_HOC_JOIN_RESULT {
3823 	/** Result */
3824 	t_u8 result;
3825 } MLAN_PACK_END HostCmd_DS_802_11_AD_HOC_JOIN_RESULT;
3826 
3827 /** AdHoc_BssDesc_t */
3828 typedef MLAN_PACK_START struct _AdHoc_BssDesc_t {
3829 	/** BSSID */
3830 	t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
3831 	/** SSID */
3832 	t_u8 ssid[MLAN_MAX_SSID_LENGTH];
3833 	/** BSS mode */
3834 	t_u8 bss_mode;
3835 	/** Beacon period */
3836 	t_u16 beacon_period;
3837 	/** DTIM period */
3838 	t_u8 dtim_period;
3839 	/** Timestamp */
3840 	t_u8 time_stamp[8];
3841 	/** Local time */
3842 	t_u8 local_time[8];
3843 	/** PHY parameter set */
3844 	IEEEtypes_PhyParamSet_t phy_param_set;
3845 	/** SS parameter set */
3846 	IEEEtypes_SsParamSet_t ss_param_set;
3847 	/** Capability information */
3848 	IEEEtypes_CapInfo_t cap;
3849 	/** Supported data rates */
3850 	t_u8 data_rates[HOSTCMD_SUPPORTED_RATES];
3851 
3852 	/*
3853 	 *  DO NOT ADD ANY FIELDS TO THIS STRUCTURE.
3854 	 *  It is used in the Adhoc join command and will cause a
3855 	 *  binary layout mismatch with the firmware
3856 	 */
3857 } MLAN_PACK_END AdHoc_BssDesc_t;
3858 
3859 /** HostCmd_DS_802_11_AD_HOC_JOIN */
3860 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_AD_HOC_JOIN {
3861 	/** AdHoc BSS descriptor */
3862 	AdHoc_BssDesc_t bss_descriptor;
3863 	/** Reserved field */
3864 	t_u16 reserved1;
3865 	/** Reserved field */
3866 	t_u16 reserved2;
3867 } MLAN_PACK_END HostCmd_DS_802_11_AD_HOC_JOIN;
3868 
3869 #if defined(SDIO)
3870 /** Interrupt Raising Edge */
3871 #define INT_RASING_EDGE 0
3872 /** Interrupt Falling Edge */
3873 #define INT_FALLING_EDGE 1
3874 
3875 /** Delay 1 usec */
3876 #define DELAY_1_US 1
3877 
3878 typedef MLAN_PACK_START struct _HostCmd_DS_SDIO_GPIO_INT_CONFIG {
3879 	/** Action */
3880 	t_u16 action;
3881 	/** GPIO interrupt pin */
3882 	t_u16 gpio_pin;
3883 	/** GPIO interrupt edge, 1: failing edge; 0: raising edge */
3884 	t_u16 gpio_int_edge;
3885 	/** GPIO interrupt pulse widthin usec units */
3886 	t_u16 gpio_pulse_width;
3887 } MLAN_PACK_END HostCmd_DS_SDIO_GPIO_INT_CONFIG;
3888 #endif /* GPIO_SDIO_INT_CTRL */
3889 
3890 typedef MLAN_PACK_START struct _HostCmd_DS_SDIO_PULL_CTRL {
3891 	/** Action */
3892 	t_u16 action;
3893 	/** The delay of pulling up in us */
3894 	t_u16 pull_up;
3895 	/** The delay of pulling down in us */
3896 	t_u16 pull_down;
3897 } MLAN_PACK_END HostCmd_DS_SDIO_PULL_CTRL;
3898 
3899 /** HostCmd_DS_802_11_GET_LOG */
3900 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_GET_LOG {
3901 	/** Number of multicast transmitted frames */
3902 	t_u32 mcast_tx_frame;
3903 	/** Number of failures */
3904 	t_u32 failed;
3905 	/** Number of retries */
3906 	t_u32 retry;
3907 	/** Number of multiretries */
3908 	t_u32 multiretry;
3909 	/** Number of duplicate frames */
3910 	t_u32 frame_dup;
3911 	/** Number of RTS success */
3912 	t_u32 rts_success;
3913 	/** Number of RTS failure */
3914 	t_u32 rts_failure;
3915 	/** Number of acknowledgement failure */
3916 	t_u32 ack_failure;
3917 	/** Number of fragmented packets received */
3918 	t_u32 rx_frag;
3919 	/** Number of multicast frames received */
3920 	t_u32 mcast_rx_frame;
3921 	/** FCS error */
3922 	t_u32 fcs_error;
3923 	/** Number of transmitted frames */
3924 	t_u32 tx_frame;
3925 	/** Reserved field */
3926 	t_u32 reserved;
3927 	/** Number of WEP icv error for each key */
3928 	t_u32 wep_icv_err_cnt[4];
3929 	/** Beacon received count */
3930 	t_u32 bcn_rcv_cnt;
3931 	/** Beacon missed count */
3932 	t_u32 bcn_miss_cnt;
3933 	/** Tx frag count */
3934 	t_u32 tx_frag_cnt;
3935 	/** Qos Tx frag count */
3936 	t_u32 qos_tx_frag_cnt[8];
3937 	/** Qos failed count */
3938 	t_u32 qos_failed_cnt[8];
3939 	/** Qos retry count */
3940 	t_u32 qos_retry_cnt[8];
3941 	/** Qos multi retry count */
3942 	t_u32 qos_multi_retry_cnt[8];
3943 	/** Qos frame dup count */
3944 	t_u32 qos_frm_dup_cnt[8];
3945 	/** Qos rts success count */
3946 	t_u32 qos_rts_suc_cnt[8];
3947 	/** Qos rts failure count */
3948 	t_u32 qos_rts_failure_cnt[8];
3949 	/** Qos ack failure count */
3950 	t_u32 qos_ack_failure_cnt[8];
3951 	/** Qos Rx frag count */
3952 	t_u32 qos_rx_frag_cnt[8];
3953 	/** Qos Tx frame count */
3954 	t_u32 qos_tx_frm_cnt[8];
3955 	/** Qos discarded frame count */
3956 	t_u32 qos_discarded_frm_cnt[8];
3957 	/** Qos mpdus Rx count */
3958 	t_u32 qos_mpdus_rx_cnt[8];
3959 	/** Qos retry rx count */
3960 	t_u32 qos_retries_rx_cnt[8];
3961 	/** CMAC ICV errors count */
3962 	t_u32 cmacicv_errors;
3963 	/** CMAC replays count */
3964 	t_u32 cmac_replays;
3965 	/** mgmt CCMP replays count */
3966 	t_u32 mgmt_ccmp_replays;
3967 	/** TKIP ICV errors count */
3968 	t_u32 tkipicv_errors;
3969 	/** TKIP replays count */
3970 	t_u32 tkip_replays;
3971 	/** CCMP decrypt errors count */
3972 	t_u32 ccmp_decrypt_errors;
3973 	/** CCMP replays count */
3974 	t_u32 ccmp_replays;
3975 	/** Tx amsdu count */
3976 	t_u32 tx_amsdu_cnt;
3977 	/** failed amsdu count */
3978 	t_u32 failed_amsdu_cnt;
3979 	/** retry amsdu count */
3980 	t_u32 retry_amsdu_cnt;
3981 	/** multi-retry amsdu count */
3982 	t_u32 multi_retry_amsdu_cnt;
3983 	/** Tx octets in amsdu count */
3984 	t_u64 tx_octets_in_amsdu_cnt;
3985 	/** amsdu ack failure count */
3986 	t_u32 amsdu_ack_failure_cnt;
3987 	/** Rx amsdu count */
3988 	t_u32 rx_amsdu_cnt;
3989 	/** Rx octets in amsdu count */
3990 	t_u64 rx_octets_in_amsdu_cnt;
3991 	/** Tx ampdu count */
3992 	t_u32 tx_ampdu_cnt;
3993 	/** tx mpdus in ampdu count */
3994 	t_u32 tx_mpdus_in_ampdu_cnt;
3995 	/** tx octets in ampdu count */
3996 	t_u64 tx_octets_in_ampdu_cnt;
3997 	/** ampdu Rx count */
3998 	t_u32 ampdu_rx_cnt;
3999 	/** mpdu in Rx ampdu count */
4000 	t_u32 mpdu_in_rx_ampdu_cnt;
4001 	/** Rx octets ampdu count */
4002 	t_u64 rx_octets_in_ampdu_cnt;
4003 	/** ampdu delimiter CRC error count */
4004 	t_u32 ampdu_delimiter_crc_error_cnt;
4005 	/** Rx Stuck Related Info*/
4006 	/** Rx Stuck Issue count */
4007 	t_u32 rx_stuck_issue_cnt[2];
4008 	/** Rx Stuck Recovery count */
4009 	t_u32 rx_stuck_recovery_cnt;
4010 	/** Rx Stuck TSF */
4011 	t_u64 rx_stuck_tsf[2];
4012 	/** Tx Watchdog Recovery Related Info */
4013 	/** Tx Watchdog Recovery count */
4014 	t_u32 tx_watchdog_recovery_cnt;
4015 	/** Tx Watchdog TSF */
4016 	t_u64 tx_watchdog_tsf[2];
4017 	/** Channel Switch Related Info */
4018 	/** Channel Switch Announcement Sent */
4019 	t_u32 channel_switch_ann_sent;
4020 	/** Channel Switch State */
4021 	t_u32 channel_switch_state;
4022 	/** Register Class */
4023 	t_u32 reg_class;
4024 	/** Channel Number */
4025 	t_u32 channel_number;
4026 	/** Channel Switch Mode */
4027 	t_u32 channel_switch_mode;
4028 	/** Reset Rx Mac Count */
4029 	t_u32 rx_reset_mac_recovery_cnt;
4030 	/** ISR2 Not Done Count*/
4031 	t_u32 rx_Isr2_NotDone_Cnt;
4032 	/** GDMA Abort Count */
4033 	t_u32 gdma_abort_cnt;
4034 	/** Rx Reset MAC Count */
4035 	t_u32 g_reset_rx_mac_cnt;
4036 	// Ownership error counters
4037 	/*Error Ownership error count*/
4038 	t_u32 dwCtlErrCnt;
4039 	/*Control Ownership error count*/
4040 	t_u32 dwBcnErrCnt;
4041 	/*Control Ownership error count*/
4042 	t_u32 dwMgtErrCnt;
4043 	/*Control Ownership error count*/
4044 	t_u32 dwDatErrCnt;
4045 	/*BIGTK MME good count*/
4046 	t_u32 bigtk_mmeGoodCnt;
4047 	/*BIGTK Replay error count*/
4048 	t_u32 bigtk_replayErrCnt;
4049 	/*BIGTK MIC error count*/
4050 	t_u32 bigtk_micErrCnt;
4051 	/*BIGTK MME not included count*/
4052 	t_u32 bigtk_mmeNotFoundCnt;
4053 } MLAN_PACK_END HostCmd_DS_802_11_GET_LOG;
4054 
4055 /* maln wifi rate */
4056 typedef MLAN_PACK_START struct _mlan_wifi_rate {
4057 	/** 0: OFDM, 1:CCK, 2:HT 3:VHT 4..7 reserved */
4058 	t_u8 preamble;
4059 	/** 0:1x1, 1:2x2, 3:3x3, 4:4x4 */
4060 	t_u8 nss;
4061 	/** 0:20MHz, 1:40Mhz, 2:80Mhz, 3:160Mhz */
4062 	t_u8 bw;
4063 	/** OFDM/CCK rate code would be as per ieee std in the units of 0.5mbps
4064 	 */
4065 	/** HT/VHT it would be mcs index */
4066 	t_u8 rateMcsIdx;
4067 	/** units of 100 Kbps */
4068 	t_u32 bitrate;
4069 } MLAN_PACK_START mlan_wifi_rate;
4070 
4071 /** channel information */
4072 typedef MLAN_PACK_START struct {
4073 	/** channel width (20, 40, 80, 80+80, 160) */
4074 	t_u32 width;
4075 	/** primary 20 MHz channel */
4076 	t_u32 center_freq;
4077 	/** center frequency (MHz) first segment */
4078 	t_u32 center_freq0;
4079 	/** center frequency (MHz) second segment */
4080 	t_u32 center_freq1;
4081 } MLAN_PACK_END mlan_wifi_channel_info;
4082 
4083 /** channel statistics */
4084 typedef MLAN_PACK_START struct {
4085 	/** channel */
4086 	mlan_wifi_channel_info channel;
4087 	/** msecs the radio is awake (32 bits number accruing over time) */
4088 	t_u32 on_time;
4089 	/** msecs the CCA register is busy (32 bits number accruing over time)
4090 	 */
4091 	t_u32 cca_busy_time;
4092 } MLAN_PACK_END mlan_wifi_channel_stat;
4093 
4094 /** radio statistics */
4095 typedef MLAN_PACK_START struct {
4096 	/** supported wifi in case of multi radio */
4097 	t_u32 radio;
4098 	/** msecs the radio is awake */
4099 	t_u32 on_time;
4100 	/** msecs the radio is transmitting */
4101 	t_u32 tx_time;
4102 	/**  TBD: num_tx_levels: number of radio transmit power levels */
4103 	t_u32 reserved0;
4104 	/** TBD: tx_time_per_levels: pointer to an array of radio transmit per
4105 	 * power levels in msecs accured over time */
4106 	t_u32 reserved1;
4107 	/** msecs the radio is in active receive */
4108 	t_u32 rx_time;
4109 	/** msecs the radio is awake due to all scan */
4110 	t_u32 on_time_scan;
4111 	/** msecs the radio is awake due to NAN */
4112 	t_u32 on_time_nbd;
4113 	/** msecs the radio is awake due to G?scan */
4114 	t_u32 on_time_gscan;
4115 	/** msecs the radio is awake due to roam?scan */
4116 	t_u32 on_time_roam_scan;
4117 	/** msecs the radio is awake due to PNO scan */
4118 	t_u32 on_time_pno_scan;
4119 	/** msecs the radio is awake due to HS2.0 scans and GAS exchange */
4120 	t_u32 on_time_hs20;
4121 	/** number of channels */
4122 	t_u32 num_channels;
4123 	/** channel statistics */
4124 	mlan_wifi_channel_stat channels[MAX_NUM_CHAN]; // support only 1
4125 						       // channel, so keep it.
4126 } MLAN_PACK_END mlan_wifi_radio_stat;
4127 
4128 /** per rate statistics */
4129 typedef MLAN_PACK_START struct {
4130 	/** rate information */
4131 	mlan_wifi_rate rate;
4132 	/** number of successfully transmitted data pkts (ACK rcvd) */
4133 	t_u32 tx_mpdu;
4134 	/** number of received data pkts */
4135 	t_u32 rx_mpdu;
4136 	/** number of data packet losses (no ACK) */
4137 	t_u32 mpdu_lost;
4138 	/** total number of data pkt retries */
4139 	t_u32 retries;
4140 	/** number of short data pkt retries */
4141 	t_u32 retries_short;
4142 	/** number of long data pkt retries */
4143 	t_u32 retries_long;
4144 } MLAN_PACK_END mlan_wifi_rate_stat;
4145 
4146 /** per peer statistics */
4147 typedef MLAN_PACK_START struct {
4148 	/** peer type (AP, TDLS, GO etc.) */
4149 	t_u8 type;
4150 	/** mac address */
4151 	t_u8 peer_mac_address[6];
4152 	/** peer WIFI_CAPABILITY_XXX */
4153 	t_u32 capabilities;
4154 	/** number of rates */
4155 	t_u32 num_rate;
4156 	/** per rate statistics, number of entries  = num_rate */
4157 	mlan_wifi_rate_stat rate_stats[];
4158 } MLAN_PACK_END mlan_wifi_peer_info;
4159 
4160 /* per access category statistics */
4161 typedef MLAN_PACK_START struct {
4162 	/** access category (VI, VO, BE, BK) */
4163 	t_u32 ac;
4164 	/** number of successfully transmitted unicast data pkts (ACK rcvd) */
4165 	t_u32 tx_mpdu;
4166 	/** number of received unicast mpdus */
4167 	t_u32 rx_mpdu;
4168 	/** number of succesfully transmitted multicast data packets */
4169 	/** STA case: implies ACK received from AP for the unicast packet in
4170 	 * which mcast pkt was sent */
4171 	t_u32 tx_mcast;
4172 	/** number of received multicast data packets */
4173 	t_u32 rx_mcast;
4174 	/** number of received unicast a-mpdus */
4175 	t_u32 rx_ampdu;
4176 	/** number of transmitted unicast a-mpdus */
4177 	t_u32 tx_ampdu;
4178 	/** number of data pkt losses (no ACK) */
4179 	t_u32 mpdu_lost;
4180 	/** total number of data pkt retries */
4181 	t_u32 retries;
4182 	/** number of short data pkt retries */
4183 	t_u32 retries_short;
4184 	/** number of long data pkt retries */
4185 	t_u32 retries_long;
4186 	/** data pkt min contention time (usecs) */
4187 	t_u32 contention_time_min;
4188 	/** data pkt max contention time (usecs) */
4189 	t_u32 contention_time_max;
4190 	/** data pkt avg contention time (usecs) */
4191 	t_u32 contention_time_avg;
4192 	/** num of data pkts used for contention statistics */
4193 	t_u32 contention_num_samples;
4194 } MLAN_PACK_END mlan_wifi_wmm_ac_stat;
4195 
4196 /** interface statistics */
4197 typedef MLAN_PACK_START struct {
4198 	/** access point beacon received count from connected AP */
4199 	t_u32 beacon_rx;
4200 	/** Average beacon offset encountered (beacon_TSF - TBTT)
4201 	 *    the average_tsf_offset field is used so as to calculate the
4202 	 *    typical beacon contention time on the channel as well may be
4203 	 *    used to debug beacon synchronization and related power consumption
4204 	 * issue
4205 	 */
4206 	t_u64 average_tsf_offset;
4207 	/** indicate that this AP typically leaks packets beyond the driver
4208 	 * guard time */
4209 	t_u32 leaky_ap_detected;
4210 	/** average number of frame leaked by AP after frame with PM bit set was
4211 	 * ACK'ed by AP */
4212 	t_u32 leaky_ap_avg_num_frames_leaked;
4213 	/** Guard time currently in force (when implementing IEEE power
4214 	 * management based on frame control PM bit), How long driver waits
4215 	 * before shutting down the radio and after receiving an ACK for a data
4216 	 * frame with PM bit set)
4217 	 */
4218 	t_u32 leaky_ap_guard_time;
4219 	/** access point mgmt frames received count from connected AP (including
4220 	 * Beacon) */
4221 	t_u32 mgmt_rx;
4222 	/** action frames received count */
4223 	t_u32 mgmt_action_rx;
4224 	/** action frames transmit count */
4225 	t_u32 mgmt_action_tx;
4226 	/** access Point Beacon and Management frames RSSI (averaged) */
4227 	t_u32 rssi_mgmt;
4228 	/** access Point Data Frames RSSI (averaged) from connected AP */
4229 	t_u32 rssi_data;
4230 	/** access Point ACK RSSI (averaged) from connected AP */
4231 	t_u32 rssi_ack;
4232 	/** per ac data packet statistics */
4233 	mlan_wifi_wmm_ac_stat ac[MAX_AC_QUEUES];
4234 	/** number of peers */
4235 	t_u32 num_peers;
4236 	/** per peer statistics */
4237 	mlan_wifi_peer_info peer_info[];
4238 } MLAN_PACK_END mlan_wifi_iface_stat;
4239 
4240 /** MrvlIETypes_llStatIface_t */
4241 typedef MLAN_PACK_START struct _MrvlIETypes_llStatIface_t {
4242 	/** Type */
4243 	t_u16 type;
4244 	/** Length */
4245 	t_u16 len;
4246 	/** Frame Control */
4247 	mlan_wifi_iface_stat ifaceStat;
4248 	/* t_u8 frame_contents[]; */
4249 } MLAN_PACK_END MrvlIETypes_llStatIface_t;
4250 
4251 /** MrvlIETypes_llStatRadio_t */
4252 typedef MLAN_PACK_START struct _MrvlIETypes_llStatRadio_t {
4253 	/** Type */
4254 	t_u16 type;
4255 	/** Length */
4256 	t_u16 len;
4257 	/** Frame Control */
4258 	mlan_wifi_radio_stat radioStat[MAX_RADIO];
4259 	/* t_u8 frame_contents[]; */
4260 } MLAN_PACK_END MrvlIETypes_llStatRadio_t;
4261 
4262 #define TYPE_IFACE_STAT MBIT(0)
4263 #define TYPE_RADIO_STAT MBIT(1)
4264 #define TYPE_PEER_INFO MBIT(2)
4265 /** HostCmd_DS_802_11_LINK_STATISTIC */
4266 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_LINK_STATISTIC {
4267 	/** Action : HostCmd_ACT_GEN_GET/SET/REMOVE */
4268 	t_u16 action;
4269 	/** statistic which would be get in action HostCmd_ACT_GEN_GET :
4270 	 * TYPE_IFACE_STAT/RADIO_STAT/PEER_INFO */
4271 	t_u16 stat_type;
4272 	/* threshold to classify the pkts as short or long, packet size <
4273 	 * mpdu_size_threshold => short */
4274 	t_u32 mpdu_size_threshold;
4275 	/* set for field debug mode. Driver should collect all statistics
4276 	 * regardless of performance impact. */
4277 	t_u32 aggressive_statistics_gathering;
4278 	/** Value */
4279 	t_u8 value[];
4280 } MLAN_PACK_END HostCmd_DS_802_11_LINK_STATISTIC;
4281 
4282 /**_HostCmd_TX_RATE_QUERY */
4283 typedef MLAN_PACK_START struct _HostCmd_TX_RATE_QUERY {
4284 	/** Tx rate */
4285 	t_u8 tx_rate;
4286 	/** V14 FW: Ht Info
4287 	 * [Bit 0] RxRate format: LG=0, HT=1
4288 	 * [Bit 1] HT Bandwidth: BW20 = 0, BW40 = 1
4289 	 * [Bit 2] HT Guard Interval: LGI = 0, SGI = 1 */
4290 	/** Tx Rate Info:
4291 	 * [Bit 0-1] tx rate formate: LG = 0, HT = 1, VHT = 2
4292 	 * [Bit 2-3] HT/VHT Bandwidth: BW20 = 0, BW40 = 1, BW80 = 2, BW160 = 3
4293 	 * [Bit 4]   HT/VHT Guard Interval: LGI = 0, SGI = 1
4294 	 * [Bit4,Bit7] AX Guard Interval: 00, 01, 02 */
4295 	t_u8 tx_rate_info;
4296 	/**
4297 	 * BIT0: DCM
4298 	 * BIT3-BIT1: tone mode
4299 	 **  000: 26  tone
4300 	 **  001: 52  tone
4301 	 **  010: 106 tone
4302 	 **  011: 242 tone
4303 	 **  100: 484 tone
4304 	 **  101: 996 tone
4305 	 * BIT7-BIT4: resvd
4306 	 **/
4307 	t_u8 ext_tx_rate_info;
4308 } MLAN_PACK_END HostCmd_TX_RATE_QUERY;
4309 
4310 typedef MLAN_PACK_START struct _hs_config_param {
4311 	/** bit0=1: broadcast data
4312 	 * bit1=1: unicast data
4313 	 * bit2=1: mac events
4314 	 * bit3=1: multicast data
4315 	 */
4316 	t_u32 conditions;
4317 	/** GPIO pin or 0xff for interface */
4318 	t_u8 gpio;
4319 	/** gap in milliseconds or or 0xff for special setting when
4320 	 *  GPIO is used to wakeup host
4321 	 */
4322 	t_u8 gap;
4323 } MLAN_PACK_END hs_config_param;
4324 
4325 /** HS Action 0x0001 - Configure enhanced host sleep mode,
4326  * 0x0002 - Activate enhanced host sleep mode
4327  */
4328 typedef enum _Host_Sleep_Action {
4329 	HS_CONFIGURE = 0x0001,
4330 	HS_ACTIVATE = 0x0002,
4331 } Host_Sleep_Action;
4332 
4333 /** Structure definition for activating enhanced hs */
4334 typedef MLAN_PACK_START struct __hs_activate_param {
4335 	/** response control 0x00 - response not needed, 0x01 - response needed
4336 	 */
4337 	t_u16 resp_ctrl;
4338 } MLAN_PACK_END hs_activate_param;
4339 
4340 /** HostCmd_DS_802_11_HS_CFG_ENH */
4341 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_HS_CFG_ENH {
4342 	/** Action 0x0001 - Configure enhanced host sleep mode,
4343 	 *  0x0002 - Activate enhanced host sleep mode
4344 	 */
4345 	t_u16 action;
4346 
4347 	union {
4348 		/** Configure enhanced hs */
4349 		hs_config_param hs_config;
4350 		/** Activate enhanced hs */
4351 		hs_activate_param hs_activate;
4352 	} params;
4353 } MLAN_PACK_END HostCmd_DS_802_11_HS_CFG_ENH;
4354 
4355 /** HostCmd_CMD_802_11_ROBUSTCOEX */
4356 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_ROBUSTCOEX {
4357 	/** Action */
4358 	t_u16 action;
4359 	/** RSVD */
4360 	t_u16 rsvd;
4361 	t_u8 tlv_buf[];
4362 } MLAN_PACK_END HostCmd_DS_802_11_ROBUSTCOEX;
4363 
4364 /** HostCmd_CMD_DMCS_CFG */
4365 typedef MLAN_PACK_START struct _HostCmd_DS_DMCS_CFG {
4366 	/** Action */
4367 	t_u16 action;
4368 	/** SubCmd of DMCS */
4369 	t_u16 subcmd;
4370 	t_u8 tlv_buf[];
4371 } MLAN_PACK_END HostCmd_DS_DMCS_CFG;
4372 
4373 #if defined(PCIE)
4374 /** HostCmd_CMD_SSU */
4375 typedef MLAN_PACK_START struct _HostCmd_DS_SSU_CFG {
4376 	/** Action */
4377 	t_u16 action;
4378 	/** # of FFT sample to skip */
4379 	t_u32 nskip;
4380 	/** # of FFT sample selected to dump */
4381 	t_u32 nsel;
4382 	/** Down sample ADC input for buffering */
4383 	t_u32 adcdownsample;
4384 	/** Mask Out ADC Data From Spectral Packet */
4385 	t_u32 mask_adc_pkt;
4386 	/** Enable 16-Bit FFT Output Data Precision in Spectral Packet */
4387 	t_u32 out_16bits;
4388 	/** Enable power spectrum in dB for spectral packet */
4389 	t_u32 spec_pwr_enable;
4390 	/** Enable Spectral Packet Rate Reduction in dB output format */
4391 	t_u32 rate_deduction;
4392 	/** # of Spectral packets over which spectral data to be averaged */
4393 	t_u32 n_pkt_avg;
4394 	/** ret: Calculated fft length in dw */
4395 	t_u32 fft_len;
4396 	/** ret: Calculated adc length in dw */
4397 	t_u32 adc_len;
4398 	/** ret: Calculated record length in dw */
4399 	t_u32 rec_len;
4400 	/** Mapped address of DMA buffer */
4401 	t_u32 buffer_base_addr[2];
4402 	/** Total size of allocated buffer for SSU DMA */
4403 	t_u32 buffer_pool_size;
4404 	/** ret: Calculated buffer numbers */
4405 	t_u32 number_of_buffers;
4406 	/** ret: Calculated buffer size in byte for each descriptor */
4407 	t_u32 buffer_size;
4408 } MLAN_PACK_END HostCmd_DS_SSU_CFG;
4409 #endif
4410 
4411 /** HostCmd_CMD_CSI_START */
4412 typedef MLAN_PACK_START struct _HostCmd_DS_CSI_CFG {
4413 	/** Action */
4414 	t_u16 action;
4415 	/** Header ID*/
4416 	t_u32 head_id;
4417 	/** Tail ID */
4418 	t_u32 tail_id;
4419 	/** Number of CSI filters */
4420 	t_u8 csi_filter_cnt;
4421 	/** Chip ID */
4422 	t_u8 chip_id;
4423 	/** CSI filters */
4424 	mlan_csi_filter_t csi_filter[CSI_FILTER_MAX];
4425 } MLAN_PACK_END HostCmd_DS_CSI_CFG;
4426 
4427 typedef MLAN_PACK_START struct _HostCmd_DS_HAL_PHY_CFG {
4428 	/** Action */
4429 	t_u16 action;
4430 	/** 11b pwr spectral density mask enable/disable */
4431 	t_u8 dot11b_psd_mask_cfg;
4432 	/** reserved fields for future hal/phy cfg use */
4433 	t_u8 reserved[7];
4434 } MLAN_PACK_END HostCmd_DS_HAL_PHY_CFG;
4435 
4436 /** SNMP_MIB_INDEX */
4437 typedef enum _SNMP_MIB_INDEX {
4438 	OpRateSet_i = 1,
4439 	DtimPeriod_i = 3,
4440 	RtsThresh_i = 5,
4441 	ShortRetryLim_i = 6,
4442 	LongRetryLim_i = 7,
4443 	FragThresh_i = 8,
4444 	Dot11D_i = 9,
4445 	Dot11H_i = 10,
4446 	WwsMode_i = 17,
4447 	Thermal_i = 34,
4448 	NullPktPeriod_i = 37,
4449 	SignalextEnable_i = 41,
4450 	ECSAEnable_i = 42,
4451 	StopDeauth_i = 44,
4452 	Dot11H_fakeRadar = 45,
4453 	ChanTrackParam_i = 46,
4454 } SNMP_MIB_INDEX;
4455 
4456 /** max SNMP buf size */
4457 #define MAX_SNMP_BUF_SIZE 128
4458 
4459 #ifdef UAP_SUPPORT
4460 /**  HostCmd_CMD_802_11_SNMP_MIB */
4461 typedef MLAN_PACK_START struct _HostCmd_DS_UAP_802_11_SNMP_MIB {
4462 	/** SNMP query type */
4463 	t_u16 query_type;
4464 	/** snmp oid buf */
4465 	t_u8 snmp_data[];
4466 } MLAN_PACK_END HostCmd_DS_UAP_802_11_SNMP_MIB;
4467 #endif
4468 
4469 /**  HostCmd_CMD_802_11_SNMP_MIB */
4470 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SNMP_MIB {
4471 	/** SNMP query type */
4472 	t_u16 query_type;
4473 	/** SNMP object ID */
4474 	t_u16 oid;
4475 	/** SNMP buffer size */
4476 	t_u16 buf_size;
4477 	/** Value */
4478 	t_u8 value[1];
4479 } MLAN_PACK_END HostCmd_DS_802_11_SNMP_MIB;
4480 
4481 /** Radio on */
4482 #define RADIO_ON 0x01
4483 /** Radio off */
4484 #define RADIO_OFF 0x00
4485 
4486 /** HostCmd_CMD_802_11_RADIO_CONTROL */
4487 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RADIO_CONTROL {
4488 	/** Action */
4489 	t_u16 action;
4490 	/** Control */
4491 	t_u16 control;
4492 } MLAN_PACK_END HostCmd_DS_802_11_RADIO_CONTROL;
4493 
4494 /** MrvlRateScope_t */
4495 typedef MLAN_PACK_START struct _MrvlRateScope_t {
4496 	/** Header Type */
4497 	t_u16 type;
4498 	/** Header Length */
4499 	t_u16 length;
4500 	/** Bitmap of HR/DSSS rates */
4501 	t_u16 hr_dsss_rate_bitmap;
4502 	/** Bitmap of OFDM rates */
4503 	t_u16 ofdm_rate_bitmap;
4504 	/** Bitmap of HT-MCSs allowed for initial rate */
4505 	t_u16 ht_mcs_rate_bitmap[8];
4506 	t_u16 vht_mcs_rate_bitmap[8];
4507 	t_u16 he_mcs_rate_bitmap[8];
4508 } MLAN_PACK_END MrvlRateScope_t;
4509 
4510 /** MrvlRateDropPattern_t */
4511 typedef MLAN_PACK_START struct _MrvlRateDropPattern_t {
4512 	/** Header Type */
4513 	t_u16 type;
4514 	/** Header Length */
4515 	t_u16 length;
4516 	/** Rate Drop Mode */
4517 	t_u32 rate_drop_mode;
4518 	/* MrvlRateDropControl_t RateDropControl[]; */
4519 } MLAN_PACK_END MrvlRateDropPattern_t;
4520 
4521 typedef MLAN_PACK_START struct _MrvlIETypes_rate_setting_t {
4522 	/** Header */
4523 	MrvlIEtypesHeader_t header;
4524 	/** Rate Setting */
4525 	t_u16 rate_setting;
4526 } MLAN_PACK_END MrvlIETypes_rate_setting_t;
4527 
4528 /** HostCmd_DS_TX_RATE_CFG */
4529 typedef MLAN_PACK_START struct _HostCmd_DS_TX_RATE_CFG {
4530 	/** Action */
4531 	t_u16 action;
4532 	/** V14 FW: cfg_index */
4533 	/** V15+ FW: reserved_1 */
4534 	t_u16 cfg_index;
4535 	/* MrvlRateScope_t RateScope;
4536 	 * MrvlRateDropPattern_t RateDrop; */
4537 	t_u8 tlv_buf[];
4538 } MLAN_PACK_END HostCmd_DS_TX_RATE_CFG;
4539 
4540 /** Power_Group_t */
4541 typedef MLAN_PACK_START struct _Power_Group_t {
4542 	/** Modulation Class */
4543 	t_u8 modulation_class;
4544 	/** MCS Code or Legacy RateID */
4545 	t_u8 first_rate_code;
4546 	/** MCS Code or Legacy RateID */
4547 	t_u8 last_rate_code;
4548 	/** Power Adjustment Step */
4549 	t_s8 power_step;
4550 	/** Minimal Tx Power Level [dBm] */
4551 	t_s8 power_min;
4552 	/** Maximal Tx Power Level [dBm] */
4553 	t_s8 power_max;
4554 	/** 0: HTBW20, 1: HTBW40 */
4555 	t_u8 ht_bandwidth;
4556 	/** Reserved */
4557 	t_u8 reserved;
4558 } MLAN_PACK_END Power_Group_t;
4559 
4560 /** MrvlTypes_Power_Group_t */
4561 typedef MLAN_PACK_START struct _MrvlTypes_Power_Group_t {
4562 	/** Header Type */
4563 	t_u16 type;
4564 	/** Header Length */
4565 	t_u16 length;
4566 	/* Power_Group_t PowerGroups */
4567 } MLAN_PACK_END MrvlTypes_Power_Group_t;
4568 
4569 /** HostCmd_CMD_TXPWR_CFG */
4570 typedef MLAN_PACK_START struct _HostCmd_DS_TXPWR_CFG {
4571 	/** Action */
4572 	t_u16 action;
4573 	/** Power group configuration index */
4574 	t_u16 cfg_index;
4575 	/** Power group configuration mode */
4576 	t_u32 mode;
4577 	/* MrvlTypes_Power_Group_t PowerGrpCfg[]*/
4578 	t_u8 tlv_buf[];
4579 } MLAN_PACK_END HostCmd_DS_TXPWR_CFG;
4580 
4581 /** HostCmd_CMD_802_11_RF_TX_POWER */
4582 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RF_TX_POWER {
4583 	/** Action */
4584 	t_u16 action;
4585 	/** Current power level */
4586 	t_s16 current_level;
4587 	/** Maximum power */
4588 	t_s8 max_power;
4589 	/** Minimum power */
4590 	t_s8 min_power;
4591 } MLAN_PACK_END HostCmd_DS_802_11_RF_TX_POWER;
4592 
4593 /** Connection type infra */
4594 #define CONNECTION_TYPE_INFRA 0
4595 /** Connection type adhoc */
4596 #define CONNECTION_TYPE_ADHOC 1
4597 #ifdef WIFI_DIRECT_SUPPORT
4598 /** BSS Mode: WIFIDIRECT Client */
4599 #define BSS_MODE_WIFIDIRECT_CLIENT 0
4600 /** BSS Mode: WIFIDIRECT GO */
4601 #define BSS_MODE_WIFIDIRECT_GO 2
4602 #endif
4603 /** HostCmd_DS_SET_BSS_MODE */
4604 typedef MLAN_PACK_START struct _HostCmd_DS_SET_BSS_MODE {
4605 	/** connection type */
4606 	t_u8 con_type;
4607 } MLAN_PACK_END HostCmd_DS_SET_BSS_MODE;
4608 
4609 /** HT Capabilities element */
4610 typedef MLAN_PACK_START struct _MrvlIETypes_HTCap_t {
4611 	/** Header */
4612 	MrvlIEtypesHeader_t header;
4613 
4614 	/** HTCap struct */
4615 	HTCap_t ht_cap;
4616 } MLAN_PACK_END MrvlIETypes_HTCap_t;
4617 /** VHT Capabilities element */
4618 typedef MLAN_PACK_START struct _MrvlIETypes_VHTCap_t {
4619 	/** Header */
4620 	MrvlIEtypesHeader_t header;
4621 
4622 	/** VHTCap struct */
4623 	VHT_capa_t vht_cap;
4624 } MLAN_PACK_END MrvlIETypes_VHTCap_t;
4625 
4626 /** HostCmd_DS_REMAIN_ON_CHANNEL */
4627 typedef MLAN_PACK_START struct _HostCmd_DS_REMAIN_ON_CHANNEL {
4628 	/** Action 0-GET, 1-SET, 4 CLEAR*/
4629 	t_u16 action;
4630 	/** Not used set to zero */
4631 	t_u8 status;
4632 	/** Not used set to zero */
4633 	t_u8 reserved;
4634 	/** Band cfg */
4635 	Band_Config_t bandcfg;
4636 	/** channel */
4637 	t_u8 channel;
4638 	/** remain time: Unit ms*/
4639 	t_u32 remain_period;
4640 } MLAN_PACK_END HostCmd_DS_REMAIN_ON_CHANNEL;
4641 
4642 #ifdef WIFI_DIRECT_SUPPORT
4643 /** HostCmd_DS_WIFI_DIRECT_MODE */
4644 typedef MLAN_PACK_START struct _HostCmd_DS_WIFI_DIRECT_MODE {
4645 	/** Action 0-GET, 1-SET*/
4646 	t_u16 action;
4647 	/**0:disable 1:listen 2:GO 3:p2p client 4:find 5:stop find*/
4648 	t_u16 mode;
4649 } MLAN_PACK_END HostCmd_DS_WIFI_DIRECT_MODE;
4650 
4651 /** MrvlIEtypes_NoA_setting_t */
4652 typedef MLAN_PACK_START struct _MrvlIEtypes_NoA_setting_t {
4653 	/** Header */
4654 	MrvlIEtypesHeader_t header;
4655 	/** enable/disable */
4656 	t_u8 enable;
4657 	/** index */
4658 	t_u16 index;
4659 	/** NoA count */
4660 	t_u8 noa_count;
4661 	/** NoA duration */
4662 	t_u32 noa_duration;
4663 	/** NoA interval */
4664 	t_u32 noa_interval;
4665 } MLAN_PACK_END MrvlIEtypes_NoA_setting_t;
4666 
4667 /** MrvlIEtypes_NoA_setting_t */
4668 typedef MLAN_PACK_START struct _MrvlIEtypes_OPP_PS_setting_t {
4669 	/** Header */
4670 	MrvlIEtypesHeader_t header;
4671 	/** enable/disable && ct_window */
4672 	t_u8 enable;
4673 } MLAN_PACK_END MrvlIEtypes_OPP_PS_setting_t;
4674 
4675 /** HostCmd_DS_WIFI_DIRECT_PARAM_CONFIG */
4676 typedef MLAN_PACK_START struct _HostCmd_DS_WIFI_DIRECT_PARAM_CONFIG {
4677 	/** Action 0-GET, 1-SET */
4678 	t_u16 action;
4679 	/** MrvlIEtypes_NoA_setting_t
4680 	 *  MrvlIEtypes_OPP_PS_setting_t
4681 	 */
4682 	t_u8 tlv_buf[];
4683 } MLAN_PACK_END HostCmd_DS_WIFI_DIRECT_PARAM_CONFIG;
4684 #endif
4685 
4686 /** MrvlIEtypes_GPIO_TSF_LATCH_CONFIG*/
4687 typedef MLAN_PACK_START struct _MrvlIEtypes_GPIO_TSF_LATCH_CONFIG {
4688 	/** Header */
4689 	MrvlIEtypesHeader_t header;
4690 	/**clock sync Mode */
4691 	t_u8 clock_sync_mode;
4692 	/**clock sync Role */
4693 	t_u8 clock_sync_Role;
4694 	/**clock sync GPIO Pin Number */
4695 	t_u8 clock_sync_gpio_pin_number;
4696 	/**clock sync GPIO Level or Toggle */
4697 	t_u8 clock_sync_gpio_level_toggle;
4698 	/**clock sync GPIO Pulse Width */
4699 	t_u16 clock_sync_gpio_pulse_width;
4700 
4701 } MLAN_PACK_END MrvlIEtypes_GPIO_TSF_LATCH_CONFIG;
4702 
4703 /** MrvlIEtypes_GPIO_TSF_LATCH_REPORT */
4704 typedef MLAN_PACK_START struct _MrvlIEtypes_GPIO_TSF_LATCH_REPORT {
4705 	/** Header */
4706 	MrvlIEtypesHeader_t header;
4707 	/**get tsf info format */
4708 	t_u16 tsf_format;
4709 	/**tsf info */
4710 	t_u16 tsf_info;
4711 	/**tsf */
4712 	t_u64 tsf;
4713 	/**Positive or negative offset in microsecond from Beacon TSF to GPIO
4714 	 * toggle TSF  */
4715 	t_s32 tsf_offset;
4716 } MLAN_PACK_END MrvlIEtypes_GPIO_TSF_LATCH_REPORT;
4717 
4718 /** HostCmd_DS_GPIO_TSF_LATCH_PARAM_CONFIG */
4719 typedef MLAN_PACK_START struct _HostCmd_DS_GPIO_TSF_LATCH_PARAM_CONFIG {
4720 	/** Action 0-GET, 1-SET */
4721 	t_u16 action;
4722 	/** MrvlIEtypes_GPIO_TSF_LATCH_CONFIG
4723 	 *  MrvlIEtypes_GPIO_TSF_LATCH_REPORT
4724 	 */
4725 	t_u8 tlv_buf[];
4726 } MLAN_PACK_END HostCmd_DS_GPIO_TSF_LATCH_PARAM_CONFIG;
4727 
4728 MLAN_PACK_START struct coalesce_filt_field_param {
4729 	t_u8 operation;
4730 	t_u8 operand_len;
4731 	t_u16 offset;
4732 	t_u8 operand_byte_stream[4];
4733 } MLAN_PACK_END;
4734 
4735 MLAN_PACK_START struct coalesce_receive_filt_rule {
4736 	MrvlIEtypesHeader_t header;
4737 	t_u8 num_of_fields;
4738 	t_u8 pkt_type;
4739 	t_u16 max_coalescing_delay;
4740 	struct coalesce_filt_field_param params[1];
4741 } MLAN_PACK_END;
4742 
4743 /** HostCmd_DS_COALESCE_CONFIG */
4744 typedef MLAN_PACK_START struct _HostCmd_DS_COALESCE_CONFIG {
4745 	/** Action 0-GET, 1-SET */
4746 	t_u16 action;
4747 	t_u16 num_of_rules;
4748 	struct coalesce_receive_filt_rule rule[1];
4749 } MLAN_PACK_END HostCmd_DS_COALESCE_CONFIG;
4750 
4751 /** TLV type : FW support max connection TLV */
4752 #define TLV_TYPE_MAX_CONN (PROPRIETARY_TLV_BASE_ID + 0x117) /* 0x0217 */
4753 /** MrvlIEtypes_Max_Conn_t */
4754 typedef MLAN_PACK_START struct _MrvlIEtypes_Max_Conn_t {
4755 	/** Header */
4756 	MrvlIEtypesHeader_t header;
4757 	/** FW support max P2P connection */
4758 	t_u8 max_p2p_conn;
4759 	/** FW support max STA connection */
4760 	t_u8 max_sta_conn;
4761 } MLAN_PACK_END MrvlIEtypes_Max_Conn_t;
4762 
4763 /** exceed max p2p connection event */
4764 typedef MLAN_PACK_START struct _event_exceed_max_p2p_conn {
4765 	/** Event ID */
4766 	t_u16 event_id;
4767 	/** BSS index number for multiple BSS support */
4768 	t_u8 bss_index;
4769 	/** BSS type */
4770 	t_u8 bss_type;
4771 	/** When exceed max, the mac address who request p2p connect */
4772 	t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH];
4773 } MLAN_PACK_END event_exceed_max_p2p_conn;
4774 
4775 #ifdef STA_SUPPORT
4776 
4777 /**
4778  * @brief Structure used internally in the wlan driver to configure a scan.
4779  *
4780  * Sent to the command process module to configure the firmware
4781  *   scan command prepared by wlan_cmd_802_11_scan.
4782  *
4783  * @sa wlan_scan_networks
4784  *
4785  */
4786 typedef MLAN_PACK_START struct _wlan_scan_cmd_config {
4787 	/**
4788 	 *  BSS Type to be sent in the firmware command
4789 	 *
4790 	 *  Field can be used to restrict the types of networks returned in the
4791 	 *    scan.  Valid settings are:
4792 	 *
4793 	 *   - MLAN_SCAN_MODE_BSS  (infrastructure)
4794 	 *   - MLAN_SCAN_MODE_IBSS (adhoc)
4795 	 *   - MLAN_SCAN_MODE_ANY  (unrestricted, adhoc and infrastructure)
4796 	 */
4797 	t_u8 bss_mode;
4798 
4799 	/**
4800 	 *  Specific BSSID used to filter scan results in the firmware
4801 	 */
4802 	t_u8 specific_bssid[MLAN_MAC_ADDR_LENGTH];
4803 
4804 	/**
4805 	 *  Length of TLVs sent in command starting at tlvBuffer
4806 	 */
4807 	t_u32 tlv_buf_len;
4808 
4809 	/**
4810 	 *  SSID TLV(s) and ChanList TLVs to be sent in the firmware command
4811 	 *
4812 	 *  TLV_TYPE_CHANLIST, MrvlIEtypes_ChanListParamSet_t
4813 	 *  TLV_TYPE_SSID, MrvlIEtypes_SsIdParamSet_t
4814 	 */
4815 	t_u8 tlv_buf[1]; /* SSID TLV(s) and ChanList TLVs are stored here */
4816 } MLAN_PACK_END wlan_scan_cmd_config;
4817 
4818 /**
4819  *  Sructure to retrieve the scan table
4820  */
4821 typedef MLAN_PACK_START struct {
4822 	/**
4823 	 *  - Zero based scan entry to start retrieval in command request
4824 	 *  - Number of scans entries returned in command response
4825 	 */
4826 	t_u32 scan_number;
4827 	/**
4828 	 * Buffer marker for multiple wlan_ioctl_get_scan_table_entry
4829 	 * structures. Each struct is padded to the nearest 32 bit boundary.
4830 	 */
4831 	t_u8 scan_table_entry_buf[1];
4832 } MLAN_PACK_END wlan_get_scan_table_info;
4833 
4834 /** Generic structure defined for parsing WPA/RSN IEs for GTK/PTK OUIs */
4835 typedef MLAN_PACK_START struct {
4836 	/** Group key oui */
4837 	t_u8 GrpKeyOui[4];
4838 	/** Number of PTKs */
4839 	t_u8 PtkCnt[2];
4840 	/** Ptk body starts here */
4841 	t_u8 PtkBody[4];
4842 } MLAN_PACK_END IEBody;
4843 #endif /* STA_SUPPORT */
4844 
4845 /*
4846  * This scan handle Country Information IE(802.11d compliant)
4847  * Define data structure for HostCmd_CMD_802_11_SCAN
4848  */
4849 /** HostCmd_DS_802_11_SCAN */
4850 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SCAN {
4851 	/** BSS mode */
4852 	t_u8 bss_mode;
4853 	/** BSSID */
4854 	t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
4855 	/** TLV buffer */
4856 	t_u8 tlv_buffer[1];
4857 	/** MrvlIEtypes_SsIdParamSet_t      SsIdParamSet;
4858 	 *  MrvlIEtypes_ChanListParamSet_t  ChanListParamSet;
4859 	 *  MrvlIEtypes_RatesParamSet_t     OpRateSet;
4860 	 */
4861 } MLAN_PACK_END HostCmd_DS_802_11_SCAN;
4862 
4863 /** fw_cap_info bit to indicate enhance ext scan type */
4864 #define ENHANCE_EXT_SCAN_ENABLE MBIT(19)
4865 /** mlan_event_scan_result data structure */
4866 typedef MLAN_PACK_START struct _mlan_event_scan_result {
4867 	/** Event ID */
4868 	t_u16 event_id;
4869 	/** BSS index number for multiple BSS support */
4870 	t_u8 bss_index;
4871 	/** BSS type */
4872 	t_u8 bss_type;
4873 	/** More event available or not */
4874 	t_u8 more_event;
4875 	/** Reserved */
4876 	t_u8 reserved[3];
4877 	/** Size of the response buffer */
4878 	t_u16 buf_size;
4879 	/** Number of BSS in scan response */
4880 	t_u8 num_of_set;
4881 } MLAN_PACK_END mlan_event_scan_result, *pmlan_event_scan_result;
4882 
4883 /** ext scan status report event */
4884 typedef MLAN_PACK_START struct _mlan_event_scan_status {
4885 	/** Event ID */
4886 	t_u16 event_id;
4887 	/** BSS index number for multiple BSS support */
4888 	t_u8 bss_index;
4889 	/** BSS type */
4890 	t_u8 bss_type;
4891 	/** scan status */
4892 	t_u8 scan_status;
4893 	/** result */
4894 	t_u16 buf_len;
4895 	/** event buf */
4896 	t_u8 event_buf[];
4897 } MLAN_PACK_END mlan_event_scan_status, *pmlan_event_scan_status;
4898 
4899 /*
4900  * This scan handle Country Information IE(802.11d compliant)
4901  * Define data structure for HostCmd_CMD_802_11_SCAN_EXT
4902  */
4903 /** HostCmd_DS_802_11_SCAN_EXT */
4904 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SCAN_EXT {
4905 	/** Scan type for ext scan
4906 	 *  0: default type: cmd resp after ext scan report event
4907 	 *  1: enhanced type: cmd resp before ext scan report event
4908 	 *  2: scan cancelled: cancel scan during scan processing
4909 	 */
4910 	t_u8 ext_scan_type;
4911 	/** Reserved */
4912 	t_u8 reserved[3];
4913 	/** TLV buffer */
4914 	t_u8 tlv_buffer[1];
4915 	/** MrvlIEtypes_Bssid_List_t            BssIdList;
4916 	 *  MrvlIEtypes_SsIdParamSet_t          SSIDParamSet;
4917 	 *  MrvlIEtypes_ChanListParamSet_t      ChanListParamSet;
4918 	 *  MrvlIEtypes_RatesParamSet_t         OpRateSet;
4919 	 *  MrvlIEtypes_NumProbes_t             NumProbes;
4920 	 *  MrvlIEtypes_WildCardSsIdParamSet_t  WildCardSSIDParamSet;
4921 	 *  MrvlIEtypes_BssMode_t               BssMode;
4922 	 */
4923 } MLAN_PACK_END HostCmd_DS_802_11_SCAN_EXT;
4924 
4925 /** MrvlIEtypes_BssMode */
4926 typedef MLAN_PACK_START struct _MrvlIEtypes_BssMode_t {
4927 	/** Header */
4928 	MrvlIEtypesHeader_t header;
4929 	/* INFRA/IBSS/AUTO */
4930 	t_u8 bss_mode;
4931 } MLAN_PACK_END MrvlIEtypes_BssMode_t;
4932 
4933 /** BSS scan Rsp */
4934 typedef MLAN_PACK_START struct _MrvlIEtypes_Bss_Scan_Rsp_t {
4935 	/** Header */
4936 	MrvlIEtypesHeader_t header;
4937 	/** BSSID of the BSS descriptor */
4938 	t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
4939 	/** Beacon/Probe response buffer */
4940 	t_u8 frame_body[1];
4941 } MLAN_PACK_END MrvlIEtypes_Bss_Scan_Rsp_t;
4942 
4943 typedef MLAN_PACK_START struct _MrvlIEtypes_Bss_Scan_Info_t {
4944 	/** Header */
4945 	MrvlIEtypesHeader_t header;
4946 	/** RSSI for scan entry */
4947 	t_s16 rssi;
4948 	/** Channel ANPI */
4949 	t_s16 anpi;
4950 	/** Channel load (parts per 255) */
4951 	t_u8 cca_busy_fraction;
4952 	/** Band */
4953 	Band_Config_t bandcfg;
4954 	/** Channel */
4955 	t_u8 channel;
4956 	/** Reserved */
4957 	t_u8 reserved;
4958 	/** TSF data */
4959 	t_u64 tsf;
4960 } MLAN_PACK_END MrvlIEtypes_Bss_Scan_Info_t;
4961 
4962 /** HostCmd_DS_RX_MGMT_IND */
4963 typedef MLAN_PACK_START struct _HostCmd_DS_RX_MGMT_IND {
4964 	/** Action */
4965 	t_u16 action;
4966 	/** Mgmt frame subtype mask */
4967 	t_u32 mgmt_subtype_mask;
4968 } MLAN_PACK_END HostCmd_DS_RX_MGMT_IND;
4969 
4970 /** HostCmd_DS_802_11_SCAN_RSP */
4971 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SCAN_RSP {
4972 	/** Size of BSS descriptor */
4973 	t_u16 bss_descript_size;
4974 	/** Numner of sets */
4975 	t_u8 number_of_sets;
4976 	/** BSS descriptor and TLV buffer */
4977 	t_u8 bss_desc_and_tlv_buffer[1];
4978 } MLAN_PACK_END HostCmd_DS_802_11_SCAN_RSP;
4979 
4980 /** HostCmd_DS_802_11_BG_SCAN_CONFIG */
4981 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_BG_SCAN_CONFIG {
4982 	/** action */
4983 	t_u16 action;
4984 	/** 0: disable, 1: enable */
4985 	t_u8 enable;
4986 	/** bss type */
4987 	t_u8 bss_type;
4988 	/** num of channel per scan */
4989 	t_u8 chan_per_scan;
4990 	/** reserved field */
4991 	t_u8 reserved;
4992 	/** reserved field */
4993 	t_u16 reserved1;
4994 	/** interval between consecutive scans */
4995 	t_u32 scan_interval;
4996 	/** reserved field */
4997 	t_u32 reserved2;
4998 	/** condition to trigger report to host */
4999 	t_u32 report_condition;
5000 	/** reserved field */
5001 	t_u16 reserved3;
5002 } MLAN_PACK_END HostCmd_DS_802_11_BG_SCAN_CONFIG;
5003 
5004 /** HostCmd_DS_802_11_BG_SCAN_QUERY */
5005 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_BG_SCAN_QUERY {
5006 	/** Flush */
5007 	t_u8 flush;
5008 } MLAN_PACK_END HostCmd_DS_802_11_BG_SCAN_QUERY;
5009 
5010 /** HostCmd_DS_802_11_BG_SCAN_QUERY_RSP */
5011 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_BG_SCAN_QUERY_RSP {
5012 	/** Report condition */
5013 	t_u32 report_condition;
5014 	/** Scan response */
5015 	HostCmd_DS_802_11_SCAN_RSP scan_resp;
5016 } MLAN_PACK_END HostCmd_DS_802_11_BG_SCAN_QUERY_RSP;
5017 
5018 /** MrvlIEtypes_StartLater_t */
5019 typedef MLAN_PACK_START struct _MrvlIEtypes_StartLater_t {
5020 	/** Header */
5021 	MrvlIEtypesHeader_t header;
5022 	/* 0 - BGScan start immediately, 1 - BGScan will start later after "Scan
5023 	 * Interval" */
5024 	t_u16 value;
5025 } MLAN_PACK_END MrvlIEtypes_StartLater_t;
5026 
5027 /** MrvlIEtypes_RepeatCount_t */
5028 typedef MLAN_PACK_START struct _MrvlIEtypes_RepeatCount_t {
5029 	/** Header */
5030 	MrvlIEtypesHeader_t header;
5031 	/* Repeat count */
5032 	t_u16 repeat_count;
5033 } MLAN_PACK_END MrvlIEtypes_RepeatCount_t;
5034 
5035 /** MrvlIEtypes_DomainParamSet_t */
5036 typedef MLAN_PACK_START struct _MrvlIEtypes_DomainParamSet {
5037 	/** Header */
5038 	MrvlIEtypesHeader_t header;
5039 	/** Country code */
5040 	t_u8 country_code[COUNTRY_CODE_LEN];
5041 	/** Set of subbands */
5042 	IEEEtypes_SubbandSet_t sub_band[1];
5043 } MLAN_PACK_END MrvlIEtypes_DomainParamSet_t;
5044 
5045 /** HostCmd_DS_802_11D_DOMAIN_INFO */
5046 typedef MLAN_PACK_START struct _HostCmd_DS_802_11D_DOMAIN_INFO {
5047 	/** Action */
5048 	t_u16 action;
5049 	/** Domain parameter set */
5050 	MrvlIEtypes_DomainParamSet_t domain;
5051 } MLAN_PACK_END HostCmd_DS_802_11D_DOMAIN_INFO;
5052 
5053 /** HostCmd_DS_802_11D_DOMAIN_INFO_RSP */
5054 typedef MLAN_PACK_START struct _HostCmd_DS_802_11D_DOMAIN_INFO_RSP {
5055 	/** Action */
5056 	t_u16 action;
5057 	/** Domain parameter set */
5058 	MrvlIEtypes_DomainParamSet_t domain;
5059 } MLAN_PACK_END HostCmd_DS_802_11D_DOMAIN_INFO_RSP;
5060 
5061 /** HostCmd_DS_11N_ADDBA_REQ */
5062 typedef MLAN_PACK_START struct _HostCmd_DS_11N_ADDBA_REQ {
5063 	/** Result of the ADDBA Request Operation */
5064 	t_u8 add_req_result;
5065 	/** Peer MAC address */
5066 	t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH];
5067 	/** Dialog Token */
5068 	t_u8 dialog_token;
5069 	/** Block Ack Parameter Set */
5070 	t_u16 block_ack_param_set;
5071 	/** Block Act Timeout Value */
5072 	t_u16 block_ack_tmo;
5073 	/** Starting Sequence Number */
5074 	t_u16 ssn;
5075 } MLAN_PACK_END HostCmd_DS_11N_ADDBA_REQ;
5076 
5077 /** HostCmd_DS_11N_ADDBA_RSP */
5078 typedef MLAN_PACK_START struct _HostCmd_DS_11N_ADDBA_RSP {
5079 	/** Result of the ADDBA Response Operation */
5080 	t_u8 add_rsp_result;
5081 	/** Peer MAC address */
5082 	t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH];
5083 	/** Dialog Token */
5084 	t_u8 dialog_token;
5085 	/** Status Code */
5086 	t_u16 status_code;
5087 	/** Block Ack Parameter Set */
5088 	t_u16 block_ack_param_set;
5089 	/** Block Act Timeout Value */
5090 	t_u16 block_ack_tmo;
5091 	/** Starting Sequence Number */
5092 	t_u16 ssn;
5093 } MLAN_PACK_END HostCmd_DS_11N_ADDBA_RSP;
5094 
5095 /** HostCmd_DS_11N_DELBA */
5096 typedef MLAN_PACK_START struct _HostCmd_DS_11N_DELBA {
5097 	/** Result of the ADDBA Request Operation */
5098 	t_u8 del_result;
5099 	/** Peer MAC address */
5100 	t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH];
5101 	/** Delete Block Ack Parameter Set */
5102 	t_u16 del_ba_param_set;
5103 	/** Reason Code sent for DELBA */
5104 	t_u16 reason_code;
5105 	/** Reserved */
5106 	t_u8 reserved;
5107 } MLAN_PACK_END HostCmd_DS_11N_DELBA;
5108 
5109 /** HostCmd_DS_11N_BATIMEOUT */
5110 typedef MLAN_PACK_START struct _HostCmd_DS_11N_BATIMEOUT {
5111 	/** TID */
5112 	t_u8 tid;
5113 	/** Peer MAC address */
5114 	t_u8 peer_mac_addr[MLAN_MAC_ADDR_LENGTH];
5115 	/** Delete Block Ack Parameter Set */
5116 	t_u8 origninator;
5117 } MLAN_PACK_END HostCmd_DS_11N_BATIMEOUT;
5118 
5119 /** HostCmd_DS_11N_CFG */
5120 typedef MLAN_PACK_START struct _HostCmd_DS_11N_CFG {
5121 	/** Action */
5122 	t_u16 action;
5123 	/** HTTxCap */
5124 	t_u16 ht_tx_cap;
5125 	/** HTTxInfo */
5126 	t_u16 ht_tx_info;
5127 	/** Misc configuration */
5128 	t_u16 misc_config;
5129 } MLAN_PACK_END HostCmd_DS_11N_CFG;
5130 
5131 /** HostCmd_DS_11N_CFG */
5132 typedef MLAN_PACK_START struct _HostCmd_DS_REJECT_ADDBA_REQ {
5133 	/** Action */
5134 	t_u16 action;
5135 	/** Bit0    : host sleep activated
5136 	 *  Bit1    : auto reconnect enabled
5137 	 *  Others  : reserved
5138 	 */
5139 	t_u32 conditions;
5140 } MLAN_PACK_END HostCmd_DS_REJECT_ADDBA_REQ;
5141 
5142 /** HostCmd_DS_TXBUF_CFG*/
5143 typedef MLAN_PACK_START struct _HostCmd_DS_TXBUF_CFG {
5144 	/** Action */
5145 	t_u16 action;
5146 	/** Buffer Size */
5147 	t_u16 buff_size;
5148 	/** End Port_for Multiport */
5149 	t_u16 mp_end_port;
5150 	/** Reserved */
5151 	t_u16 reserved3;
5152 } MLAN_PACK_END HostCmd_DS_TXBUF_CFG;
5153 
5154 /** HostCmd_DS_AMSDU_AGGR_CTRL */
5155 typedef MLAN_PACK_START struct _HostCmd_DS_AMSDU_AGGR_CTRL {
5156 	/** Action */
5157 	t_u16 action;
5158 	/** Enable */
5159 	t_u16 enable;
5160 	/** Get the current Buffer Size valid */
5161 	t_u16 curr_buf_size;
5162 } MLAN_PACK_END HostCmd_DS_AMSDU_AGGR_CTRL;
5163 
5164 /** HostCmd_DS_11AC_CFG */
5165 typedef MLAN_PACK_START struct _HostCmd_DS_11AC_CFG {
5166 	/** Action */
5167 	t_u16 action;
5168 	/** BandConfig */
5169 	t_u8 band_config;
5170 	/** Misc Configuration */
5171 	t_u8 misc_config;
5172 	/** VHT Capability Info */
5173 	t_u32 vht_cap_info;
5174 	/** VHT Support MCS Set */
5175 	t_u8 vht_supp_mcs_set[VHT_MCS_SET_LEN];
5176 } MLAN_PACK_END HostCmd_DS_11AC_CFG;
5177 
5178 /** HostCmd_DS_11ACTXBUF_CFG*/
5179 typedef MLAN_PACK_START struct _HostCmd_DS_11ACTXBUF_CFG {
5180 	/** Action */
5181 	t_u16 action;
5182 	/** Buffer Size */
5183 	t_u16 buff_size;
5184 	/** End Port_for Multiport */
5185 	t_u16 mp_end_port;
5186 	/** Reserved */
5187 	t_u16 reserved3;
5188 } MLAN_PACK_END HostCmd_DS_11ACTXBUF_CFG;
5189 
5190 /** HostCmd_DS_11AX_CFG */
5191 typedef MLAN_PACK_START struct _HostCmd_DS_11AX_CFG {
5192 	/** Action */
5193 	t_u16 action;
5194 	/** BandConfig */
5195 	t_u8 band_config;
5196 	/** TLV for HE capability or HE operation */
5197 	t_u8 val[];
5198 } MLAN_PACK_END HostCmd_DS_11AX_CFG;
5199 
5200 /** HostCmd_DS_11AX_CMD_CFG */
5201 typedef MLAN_PACK_START struct _HostCmd_DS_11AX_CMD_CFG {
5202 	/** Action */
5203 	t_u16 action;
5204 	/** CMD_SUBID */
5205 	t_u16 sub_id;
5206 	/** TLV or value for cmd */
5207 	t_u8 val[];
5208 } MLAN_PACK_END HostCmd_DS_11AX_CMD_CFG;
5209 
5210 /** HostCmd_DS_RANGE_EXT */
5211 typedef MLAN_PACK_START struct _HostCmd_DS_RANGE_EXT {
5212 	/** Action */
5213 	t_u16 action;
5214 	/** Range ext mode */
5215 	t_u8 mode;
5216 } MLAN_PACK_END HostCmd_DS_RANGE_EXT;
5217 
5218 /** Type definition of hostcmd_twt_setup */
5219 typedef struct MLAN_PACK_START _hostcmd_twt_setup {
5220 	/** Implicit, 0: TWT session is explicit, 1: Session is implicit */
5221 	t_u8 implicit;
5222 	/** Announced, 0: Unannounced, 1: Announced TWT */
5223 	t_u8 announced;
5224 	/** Trigger Enabled, 0: Non-Trigger enabled, 1: Trigger enabled TWT */
5225 	t_u8 trigger_enabled;
5226 	/** TWT Information Disabled, 0: TWT info enabled, 1: TWT info disabled
5227 	 */
5228 	t_u8 twt_info_disabled;
5229 	/** Negotiation Type, 0: Future Individual TWT SP start time, 1: Next
5230 	 * Wake TBTT time */
5231 	t_u8 negotiation_type;
5232 	/** TWT Wakeup Duration, time after which the TWT requesting STA can
5233 	 * transition to doze state */
5234 	t_u8 twt_wakeup_duration;
5235 	/** Flow Identifier. Range: [0-7]*/
5236 	t_u8 flow_identifier;
5237 	/** Hard Constraint, 0: FW can tweak the TWT setup parameters if it is
5238 	 *rejected by AP.
5239 	 ** 1: Firmware should not tweak any parameters. */
5240 	t_u8 hard_constraint;
5241 	/** TWT Exponent, Range: [0-63] */
5242 	t_u8 twt_exponent;
5243 	/** TWT Mantissa Range: [0-sizeof(UINT16)] */
5244 	t_u16 twt_mantissa;
5245 	/** TWT Request Type, 0: REQUEST_TWT, 1: SUGGEST_TWT*/
5246 	t_u8 twt_request;
5247 	/** TWT Setup State. Set to 0 by driver, filled by FW in response*/
5248 	t_u8 twt_setup_state;
5249 	/** Reserved, set to 0. */
5250 	t_u8 reserved[2];
5251 } MLAN_PACK_END hostcmd_twt_setup, *phostcmd_twt_setup;
5252 
5253 /** Type definition of hostcmd_twt_teardown */
5254 typedef struct MLAN_PACK_START _hostcmd_twt_teardown {
5255 	/** TWT Flow Identifier. Range: [0-7] */
5256 	t_u8 flow_identifier;
5257 	/** Negotiation Type. 0: Future Individual TWT SP start time, 1: Next
5258 	 * Wake TBTT time */
5259 	t_u8 negotiation_type;
5260 	/** Tear down all TWT. 1: To teardown all TWT, 0 otherwise */
5261 	t_u8 teardown_all_twt;
5262 	/** TWT Teardown State. Set to 0 by driver, filled by FW in response */
5263 	t_u8 twt_teardown_state;
5264 	/** Reserved, set to 0. */
5265 	t_u8 reserved[3];
5266 } MLAN_PACK_END hostcmd_twt_teardown, *phostcmd_twt_teardown;
5267 
5268 /** HostCmd_DS_TWT_CFG */
5269 typedef MLAN_PACK_START struct _HostCmd_DS_TWT_CFG {
5270 	/** Action */
5271 	t_u16 action;
5272 	/** CMD_SUBID */
5273 	t_u16 sub_id;
5274 	/** TWT Setup/Teardown configuration parameters */
5275 	union {
5276 		/** TWT Setup config for Sub ID: MLAN_11AX_TWT_SETUP_SUBID */
5277 		hostcmd_twt_setup twt_setup;
5278 		/** TWT Teardown config for Sub ID: MLAN_11AX_TWT_TEARDOWN_SUBID
5279 		 */
5280 		hostcmd_twt_teardown twt_teardown;
5281 	} param;
5282 } MLAN_PACK_END HostCmd_DS_TWT_CFG;
5283 
5284 /** HostCmd_DS_ECL_SYSTEM_CLOCK_CONFIG */
5285 typedef MLAN_PACK_START struct _HostCmd_DS_ECL_SYSTEM_CLOCK_CONFIG {
5286 	/** Action */
5287 	t_u16 action;
5288 	/** Current system clock */
5289 	t_u16 cur_sys_clk;
5290 	/** Clock type */
5291 	t_u16 sys_clk_type;
5292 	/** Length of clocks */
5293 	t_u16 sys_clk_len;
5294 	/** System clocks */
5295 	t_u16 sys_clk[16];
5296 } MLAN_PACK_END HostCmd_DS_ECL_SYSTEM_CLOCK_CONFIG;
5297 
5298 /** MrvlIEtypes_WmmParamSet_t */
5299 typedef MLAN_PACK_START struct _MrvlIEtypes_WmmParamSet_t {
5300 	/** Header */
5301 	MrvlIEtypesHeader_t header;
5302 	/** WMM IE */
5303 	t_u8 wmm_ie[1];
5304 } MLAN_PACK_END MrvlIEtypes_WmmParamSet_t;
5305 
5306 /** MrvlIEtypes_WmmQueueStatus_t */
5307 typedef MLAN_PACK_START struct {
5308 	/** Header */
5309 	MrvlIEtypesHeader_t header;
5310 	/** Queue index */
5311 	t_u8 queue_index;
5312 	/** Disabled flag */
5313 	t_u8 disabled;
5314 	/** Medium time allocation in 32us units*/
5315 	t_u16 medium_time;
5316 	/** Flow required flag */
5317 	t_u8 flow_required;
5318 	/** Flow created flag */
5319 	t_u8 flow_created;
5320 	/** Reserved */
5321 	t_u32 reserved;
5322 } MLAN_PACK_END MrvlIEtypes_WmmQueueStatus_t;
5323 
5324 /** Size of a TSPEC.  Used to allocate necessary buffer space in commands */
5325 #define WMM_TSPEC_SIZE 63
5326 
5327 /** Extra IE bytes allocated in messages for appended IEs after a TSPEC */
5328 #define WMM_ADDTS_EXTRA_IE_BYTES 256
5329 
5330 /** Extra TLV bytes allocated in messages for configuring WMM Queues */
5331 #define WMM_QUEUE_CONFIG_EXTRA_TLV_BYTES 64
5332 
5333 /** Number of bins in the histogram for the HostCmd_DS_WMM_QUEUE_STATS */
5334 #define WMM_STATS_PKTS_HIST_BINS 7
5335 
5336 /**
5337  *  @brief Firmware command structure to retrieve the firmware WMM status.
5338  *
5339  *  Used to retrieve the status of each WMM AC Queue in TLV
5340  *    format (MrvlIEtypes_WmmQueueStatus_t) as well as the current WMM
5341  *    parameter IE advertised by the AP.
5342  *
5343  *  Used in response to a EVENT_WMM_STATUS_CHANGE event signaling
5344  *    a QOS change on one of the ACs or a change in the WMM Parameter in
5345  *    the Beacon.
5346  *
5347  *  TLV based command, byte arrays used for max sizing purpose. There are no
5348  *    arguments sent in the command, the TLVs are returned by the firmware.
5349  */
5350 typedef MLAN_PACK_START struct {
5351 	/** Queue status TLV */
5352 	t_u8 queue_status_tlv[sizeof(MrvlIEtypes_WmmQueueStatus_t) *
5353 			      MAX_AC_QUEUES];
5354 	/** WMM parameter TLV */
5355 	t_u8 wmm_param_tlv[sizeof(IEEEtypes_WmmParameter_t) + 2];
5356 } MLAN_PACK_END HostCmd_DS_WMM_GET_STATUS;
5357 
5358 /**
5359  *  @brief Command structure for the HostCmd_CMD_WMM_ADDTS_REQ firmware command
5360  */
5361 typedef MLAN_PACK_START struct {
5362 	mlan_cmd_result_e command_result; /**< Command result */
5363 	t_u32 timeout_ms; /**< Timeout value in milliseconds */
5364 	t_u8 dialog_token; /**< Dialog token */
5365 	t_u8 ieee_status_code; /**< IEEE status code */
5366 	t_u8 tspec_data[WMM_TSPEC_SIZE]; /**< TSPEC data */
5367 	t_u8 addts_extra_ie_buf[WMM_ADDTS_EXTRA_IE_BYTES]; /**< Extra IE buffer
5368 							    */
5369 } MLAN_PACK_END HostCmd_DS_WMM_ADDTS_REQ;
5370 
5371 /**
5372  *  @brief Command structure for the HostCmd_CMD_WMM_DELTS_REQ firmware command
5373  */
5374 typedef MLAN_PACK_START struct {
5375 	mlan_cmd_result_e command_result; /**< Command result */
5376 	t_u8 dialog_token; /**< Dialog token */
5377 	t_u8 ieee_reason_code; /**< IEEE reason code */
5378 	t_u8 tspec_data[WMM_TSPEC_SIZE]; /**< TSPEC data */
5379 } MLAN_PACK_END HostCmd_DS_WMM_DELTS_REQ;
5380 
5381 /**
5382  *  @brief Command structure for the HostCmd_CMD_WMM_QUEUE_CONFIG firmware cmd
5383  *
5384  *  Set/Get/Default the Queue parameters for a specific AC in the firmware.
5385  */
5386 typedef MLAN_PACK_START struct {
5387 	mlan_wmm_queue_config_action_e action; /**< Set, Get, or Default */
5388 	mlan_wmm_ac_e access_category; /**< WMM_AC_BK(0) to WMM_AC_VO(3) */
5389 	/** @brief MSDU lifetime expiry per 802.11e
5390 	 *
5391 	 *   - Ignored if 0 on a set command
5392 	 *   - Set to the 802.11e specified 500 TUs when defaulted
5393 	 */
5394 	t_u16 msdu_lifetime_expiry;
5395 	t_u8 tlv_buffer[WMM_QUEUE_CONFIG_EXTRA_TLV_BYTES]; /**< Not supported */
5396 } MLAN_PACK_END HostCmd_DS_WMM_QUEUE_CONFIG;
5397 
5398 /**
5399  *  @brief Command structure for the HostCmd_CMD_WMM_QUEUE_STATS firmware cmd
5400  *
5401  *  Turn statistical collection on/off for a given AC or retrieve the
5402  *    accumulated stats for an AC and clear them in the firmware.
5403  */
5404 typedef MLAN_PACK_START struct {
5405 	mlan_wmm_queue_stats_action_e action; /**< Start, Stop, or Get */
5406 #ifdef BIG_ENDIAN_SUPPORT
5407 	t_u8 select_bin : 7; /**< WMM_AC_BK(0) to WMM_AC_VO(3), or TID */
5408 	t_u8 select_is_userpri : 1; /**< Set if select_bin is UP, Clear for AC
5409 				     */
5410 #else
5411 	t_u8 select_is_userpri : 1; /**< Set if select_bin is UP, Clear for AC
5412 				     */
5413 	t_u8 select_bin : 7; /**< WMM_AC_BK(0) to WMM_AC_VO(3), or TID */
5414 #endif
5415 	t_u16 pkt_count; /**< Number of successful packets transmitted */
5416 	t_u16 pkt_loss; /**< Packets lost; not included in pktCount */
5417 	t_u32 avg_queue_delay; /**< Average Queue delay in microsec */
5418 	t_u32 avg_tx_delay; /**< Average Transmission delay in microsec */
5419 	t_u16 used_time; /**< Calc used time - units of 32 microsec */
5420 	t_u16 policed_time; /**< Calc policed time - units of 32 microsec */
5421 	/** @brief Queue Delay Histogram; number of packets per queue delay
5422 	 * range
5423 	 *
5424 	 *  [0] -  0ms <= delay < 5ms
5425 	 *  [1] -  5ms <= delay < 10ms
5426 	 *  [2] - 10ms <= delay < 20ms
5427 	 *  [3] - 20ms <= delay < 30ms
5428 	 *  [4] - 30ms <= delay < 40ms
5429 	 *  [5] - 40ms <= delay < 50ms
5430 	 *  [6] - 50ms <= delay < msduLifetime (TUs)
5431 	 */
5432 	t_u16 delay_histogram[WMM_STATS_PKTS_HIST_BINS];
5433 	/** Reserved */
5434 	t_u16 reserved_1;
5435 } MLAN_PACK_END HostCmd_DS_WMM_QUEUE_STATS;
5436 
5437 /**
5438  *  @brief Command structure for the HostCmd_CMD_WMM_TS_STATUS firmware cmd
5439  *
5440  *  Query the firmware to get the status of the WMM Traffic Streams
5441  */
5442 typedef MLAN_PACK_START struct {
5443 	/** TSID: Range: 0->7 */
5444 	t_u8 tid;
5445 	/** TSID specified is valid */
5446 	t_u8 valid;
5447 	/** AC TSID is active on */
5448 	t_u8 access_category;
5449 	/** UP specified for the TSID */
5450 	t_u8 user_priority;
5451 	/** Power save mode for TSID: 0 (legacy), 1 (UAPSD) */
5452 	t_u8 psb;
5453 	/** Uplink(1), Downlink(2), Bidirectional(3) */
5454 	t_u8 flow_dir;
5455 	/** Medium time granted for the TSID */
5456 	t_u16 medium_time;
5457 } MLAN_PACK_END HostCmd_DS_WMM_TS_STATUS;
5458 
5459 /** Firmware status for a specific AC */
5460 typedef MLAN_PACK_START struct {
5461 	/** Disabled flag */
5462 	t_u8 disabled;
5463 	/** Flow required flag */
5464 	t_u8 flow_required;
5465 	/** Flow created flag */
5466 	t_u8 flow_created;
5467 } MLAN_PACK_END WmmAcStatus_t;
5468 
5469 /**  Local Power Capability */
5470 typedef MLAN_PACK_START struct _MrvlIEtypes_PowerCapability_t {
5471 	/** Header */
5472 	MrvlIEtypesHeader_t header;
5473 	/** Minmum power */
5474 	t_s8 min_power;
5475 	/** Maximum power */
5476 	t_s8 max_power;
5477 } MLAN_PACK_END MrvlIEtypes_PowerCapability_t;
5478 
5479 /** HT Information element */
5480 typedef MLAN_PACK_START struct _MrvlIETypes_HTInfo_t {
5481 	/** Header */
5482 	MrvlIEtypesHeader_t header;
5483 
5484 	/** HTInfo struct */
5485 	HTInfo_t ht_info;
5486 } MLAN_PACK_END MrvlIETypes_HTInfo_t;
5487 
5488 /** 20/40 BSS Coexistence element */
5489 typedef MLAN_PACK_START struct _MrvlIETypes_2040BSSCo_t {
5490 	/** Header */
5491 	MrvlIEtypesHeader_t header;
5492 
5493 	/** BSSCo2040_t struct */
5494 	BSSCo2040_t bss_co_2040;
5495 } MLAN_PACK_END MrvlIETypes_2040BSSCo_t;
5496 
5497 /** Extended Capabilities element */
5498 typedef MLAN_PACK_START struct _MrvlIETypes_ExtCap_t {
5499 	/** Header */
5500 	MrvlIEtypesHeader_t header;
5501 
5502 	/** ExtCap_t struct */
5503 	ExtCap_t ext_cap;
5504 } MLAN_PACK_END MrvlIETypes_ExtCap_t;
5505 
5506 /** Supported operating classes element */
5507 typedef MLAN_PACK_START struct _MrvlIETypes_SuppOperClass_t {
5508 	/** Header */
5509 	MrvlIEtypesHeader_t header;
5510 	/** Current operationg class **/
5511 	t_u8 current_oper_class;
5512 	/** Operating class list */
5513 	t_u8 oper_class[1];
5514 } MLAN_PACK_END MrvlIETypes_SuppOperClass_t;
5515 
5516 /** Oper_class channel bandwidth element */
5517 typedef MLAN_PACK_START struct _MrvlIEtypes_chan_bw_oper_t {
5518 	/** Header */
5519 	MrvlIEtypesHeader_t header;
5520 	/** channel oper bandwidth*/
5521 	mlan_ds_bw_chan_oper ds_chan_bw_oper;
5522 } MLAN_PACK_END MrvlIEtypes_chan_bw_oper_t;
5523 
5524 /** Qos Info */
5525 typedef MLAN_PACK_START struct _MrvlIETypes_qosinfo_t {
5526 	/** Header */
5527 	MrvlIEtypesHeader_t header;
5528 	/** qos_info*/
5529 	t_u8 qos_info;
5530 } MLAN_PACK_END MrvlIETypes_qosinfo_t;
5531 
5532 /** Overlapping BSS Scan Parameters element */
5533 typedef MLAN_PACK_START struct _MrvlIETypes_OverlapBSSScanParam_t {
5534 	/** Header */
5535 	MrvlIEtypesHeader_t header;
5536 
5537 	/** OBSSScanParam_t struct */
5538 	OBSSScanParam_t obss_scan_param;
5539 } MLAN_PACK_END MrvlIETypes_OverlapBSSScanParam_t;
5540 
5541 /** Set of MCS values that STA desires to use within the BSS */
5542 typedef MLAN_PACK_START struct _MrvlIETypes_HTOperationalMCSSet_t {
5543 	/** Header */
5544 	MrvlIEtypesHeader_t header;
5545 
5546 	/** Bitmap indicating MCSs that STA desires to use within the BSS */
5547 	t_u8 ht_operational_mcs_bitmap[16];
5548 } MLAN_PACK_END MrvlIETypes_HTOperationalMCSSet_t;
5549 
5550 /** VHT Operations IE */
5551 typedef MLAN_PACK_START struct _MrvlIETypes_VHTOprat_t {
5552 	/** Header */
5553 	MrvlIEtypesHeader_t header;
5554 
5555 	t_u8 chan_width;
5556 	t_u8 chan_center_freq_1;
5557 	t_u8 chan_center_freq_2;
5558 	/** Basic MCS set map, each 2 bits stands for a Nss */
5559 	t_u16 basic_MCS_map;
5560 } MLAN_PACK_END MrvlIETypes_VHTOprat_t;
5561 
5562 /** VHT Transmit Power Envelope IE */
5563 typedef MLAN_PACK_START struct _MrvlIETypes_VHTtxpower_t {
5564 	/** Header */
5565 	MrvlIEtypesHeader_t header;
5566 
5567 	t_u8 max_tx_power;
5568 	t_u8 chan_center_freq;
5569 	t_u8 chan_width;
5570 } MLAN_PACK_END MrvlIETypes_VHTtxpower_t;
5571 
5572 /** Extended Power Constraint IE */
5573 typedef MLAN_PACK_START struct _MrvlIETypes_ExtPwerCons_t {
5574 	/** Header */
5575 	MrvlIEtypesHeader_t header;
5576 
5577 	/** channel width */
5578 	t_u8 chan_width;
5579 	/** local power constraint */
5580 	t_u8 local_power_cons;
5581 } MLAN_PACK_END MrvlIETypes_ExtPwerCons_t;
5582 
5583 /** Extended BSS Load IE */
5584 typedef MLAN_PACK_START struct _MrvlIETypes_ExtBSSload_t {
5585 	/** Header */
5586 	MrvlIEtypesHeader_t header;
5587 
5588 	t_u8 MU_MIMO_capa_count;
5589 	t_u8 stream_underutilization;
5590 	t_u8 VHT40_util;
5591 	t_u8 VHT80_util;
5592 	t_u8 VHT160_util;
5593 } MLAN_PACK_END MrvlIETypes_ExtBSSload_t;
5594 
5595 /** Quiet Channel IE */
5596 typedef MLAN_PACK_START struct _MrvlIETypes_QuietChan_t {
5597 	/** Header */
5598 	MrvlIEtypesHeader_t header;
5599 
5600 	t_u8 AP_quiet_mode;
5601 	t_u8 quiet_count;
5602 	t_u8 quiet_period;
5603 	t_u16 quiet_dur;
5604 	t_u16 quiet_offset;
5605 } MLAN_PACK_END MrvlIETypes_QuietChan_t;
5606 
5607 /** Wide Bandwidth Channel Switch IE */
5608 typedef MLAN_PACK_START struct _MrvlIETypes_BWSwitch_t {
5609 	/** Header */
5610 	MrvlIEtypesHeader_t header;
5611 
5612 	t_u8 new_chan_width;
5613 	t_u8 new_chan_center_freq_1;
5614 	t_u8 new_chan_center_freq_2;
5615 } MLAN_PACK_END MrvlIETypes_BWSwitch_t;
5616 
5617 /** AID IE */
5618 typedef MLAN_PACK_START struct _MrvlIETypes_AID_t {
5619 	/** Header */
5620 	MrvlIEtypesHeader_t header;
5621 
5622 	/** AID number */
5623 	t_u16 AID;
5624 } MLAN_PACK_END MrvlIETypes_AID_t;
5625 
5626 /** Operating Mode Notification IE */
5627 typedef MLAN_PACK_START struct _MrvlIETypes_OperModeNtf_t {
5628 	/** Header */
5629 	MrvlIEtypesHeader_t header;
5630 
5631 	/** operating mdoe */
5632 	t_u8 oper_mode;
5633 } MLAN_PACK_END MrvlIETypes_OperModeNtf_t;
5634 
5635 /** bf global args */
5636 typedef struct MLAN_PACK_START _bf_global_cfg_args {
5637 	/** Global enable/disable bf */
5638 	t_u8 bf_enbl;
5639 	/** Global enable/disable sounding */
5640 	t_u8 sounding_enbl;
5641 	/** FB Type */
5642 	t_u8 fb_type;
5643 	/** SNR Threshold */
5644 	t_u8 snr_threshold;
5645 	/** Sounding interval */
5646 	t_u16 sounding_interval;
5647 	/** BF mode */
5648 	t_u8 bf_mode;
5649 	/** Reserved */
5650 	t_u8 reserved;
5651 } MLAN_PACK_END bf_global_cfg_args;
5652 
5653 /** bf_trigger_sound_args_t */
5654 typedef MLAN_PACK_START struct _bf_trigger_sound_args_t {
5655 	/** Peer MAC address */
5656 	t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH];
5657 	/** Status */
5658 	t_u8 status;
5659 } MLAN_PACK_END bf_trigger_sound_args_t;
5660 
5661 /** bf periodicity args */
5662 typedef MLAN_PACK_START struct _bf_periodicity_args {
5663 	/** Peer MAC address */
5664 	t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH];
5665 	/** Current Tx BF Interval */
5666 	t_u16 interval;
5667 	/** Status */
5668 	t_u8 status;
5669 } MLAN_PACK_END bf_periodicity_args;
5670 
5671 /** bf peer configuration args */
5672 typedef struct MLAN_PACK_START _bf_peer_args {
5673 	/** Peer MAC address */
5674 	t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH];
5675 	/** Reserved */
5676 	t_u16 reserved;
5677 	/** Enable/Disable Beamforming */
5678 	t_u8 bf_enbl;
5679 	/** Enable/Disable sounding */
5680 	t_u8 sounding_enbl;
5681 	/** FB Type */
5682 	t_u8 fb_type;
5683 } MLAN_PACK_END bf_peer_args;
5684 
5685 /** bf_snr_thr_t */
5686 typedef MLAN_PACK_START struct _bf_snr_thr_t {
5687 	/** Peer MAC address */
5688 	t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH];
5689 	/** SNR */
5690 	t_u8 snr;
5691 } MLAN_PACK_END bf_snr_thr_t;
5692 
5693 /** HostCmd_DS_TX_BF_CFG */
5694 typedef MLAN_PACK_START struct _HostCmd_DS_TX_BF_CFG {
5695 	/* Beamforming action */
5696 	t_u16 bf_action;
5697 	/* action - SET/GET*/
5698 	t_u16 action;
5699 
5700 	MLAN_PACK_START union {
5701 		bf_global_cfg_args bf_global_cfg;
5702 		bf_trigger_sound_args_t bf_sound_args;
5703 		bf_periodicity_args bf_periodicity;
5704 		bf_peer_args tx_bf_peer;
5705 		bf_snr_thr_t bf_snr;
5706 	} MLAN_PACK_END body;
5707 } MLAN_PACK_END HostCmd_DS_TX_BF_CFG;
5708 
5709 #ifdef WIFI_DIRECT_SUPPORT
5710 /** MrvlIEtypes_psk_t */
5711 typedef MLAN_PACK_START struct _MrvlIEtypes_psk_t {
5712 	/** Header */
5713 	MrvlIEtypesHeader_t header;
5714 	/** PSK */
5715 	t_u8 psk[MLAN_MAX_KEY_LENGTH];
5716 } MLAN_PACK_END MrvlIEtypes_psk_t;
5717 #endif /* WIFI_DIRECT_SUPPORT */
5718 
5719 /** Data structure for Link ID */
5720 typedef MLAN_PACK_START struct _MrvlIETypes_LinkIDElement_t {
5721 	/** Header */
5722 	MrvlIEtypesHeader_t header;
5723 	/** Bssid */
5724 	t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
5725 	/** initial sta address*/
5726 	t_u8 init_sta[MLAN_MAC_ADDR_LENGTH];
5727 	/** respose sta address */
5728 	t_u8 resp_sta[MLAN_MAC_ADDR_LENGTH];
5729 } MLAN_PACK_END MrvlIETypes_LinkIDElement_t;
5730 
5731 /** MrvlIEtypes_PMK_t */
5732 typedef MLAN_PACK_START struct _MrvlIEtypes_PMK_t {
5733 	/** Header */
5734 	MrvlIEtypesHeader_t header;
5735 	/** PMK */
5736 	t_u8 pmk[1];
5737 } MLAN_PACK_END MrvlIEtypes_PMK_t;
5738 
5739 /** MrvlIEtypes_Passphrase_t */
5740 typedef MLAN_PACK_START struct _MrvlIEtypes_Passphrase_t {
5741 	/** Header */
5742 	MrvlIEtypesHeader_t header;
5743 	/** Passphrase */
5744 	char passphrase[1];
5745 } MLAN_PACK_END MrvlIEtypes_Passphrase_t;
5746 
5747 /** MrvlIEtypes_SAE_Password_t */
5748 typedef MLAN_PACK_START struct _MrvlIEtypes_SAE_Password_t {
5749 	/** Header */
5750 	MrvlIEtypesHeader_t header;
5751 	/** SAE Password */
5752 	char sae_password[1];
5753 } MLAN_PACK_END MrvlIEtypes_SAE_Password_t;
5754 
5755 /** MrvlIEtypes_SAE_PWE_Mode_t */
5756 typedef MLAN_PACK_START struct _MrvlIEtypes_SAE_PWE_Mode_t {
5757 	/** Header */
5758 	MrvlIEtypesHeader_t header;
5759 	/** WPA3 SAE mechanism for PWE derivation */
5760 	char pwe[1];
5761 } MLAN_PACK_END MrvlIEtypes_SAE_PWE_Mode_t;
5762 
5763 /** SAE H2E capability bit in RSNX */
5764 #define SAE_H2E_BIT 5
5765 
5766 /* rsnMode -
5767  *      Bit 0    : No RSN
5768  *      Bit 1-2  : RFU
5769  *      Bit 3    : WPA
5770  *      Bit 4    : WPA-NONE
5771  *      Bit 5    : WPA2
5772  *      Bit 6    : AES CCKM
5773  *      Bit 7-15 : RFU
5774  */
5775 /** MrvlIEtypes_EncrProto_t */
5776 typedef MLAN_PACK_START struct _MrvlIEtypes_EncrProto_t {
5777 	/** Header */
5778 	MrvlIEtypesHeader_t header;
5779 	/** EncrProto */
5780 	t_u16 rsn_mode;
5781 } MLAN_PACK_END MrvlIEtypes_EncrProto_t;
5782 
5783 /** MrvlIEtypes_Bssid_t */
5784 typedef MLAN_PACK_START struct _MrvlIEtypes_Bssid_t {
5785 	/** Header */
5786 	MrvlIEtypesHeader_t header;
5787 	/** Bssid */
5788 	t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
5789 } MLAN_PACK_END MrvlIEtypes_Bssid_t;
5790 
5791 /*
5792  * This struct will handle GET,SET,CLEAR function for embedded
5793  * supplicant.
5794  * Define data structure for HostCmd_CMD_802_11_SUPPLICANT_PMK
5795  */
5796 /** HostCmd_DS_802_11_SUPPLICANT_PMK */
5797 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SUPPLICANT_PMK {
5798 	/** CMD Action GET/SET/CLEAR */
5799 	t_u16 action;
5800 	/** CacheResult initialized to 0 */
5801 	t_u16 cache_result;
5802 	/** TLV Buffer */
5803 	t_u8 tlv_buffer[1];
5804 	/** MrvlIEtypes_SsidParamSet_t  SsidParamSet;
5805 	 * MrvlIEtypes_PMK_t           Pmk;
5806 	 * MrvlIEtypes_Passphrase_t    Passphrase;
5807 	 * MrvlIEtypes_Bssid_t         Bssid;
5808 	 **/
5809 } MLAN_PACK_END HostCmd_DS_802_11_SUPPLICANT_PMK;
5810 
5811 /*
5812  * This struct will GET the Supplicant supported bitmaps
5813  * The GET_CURRENT action will get the network profile used
5814  * for the current assocation.
5815  * Define data structure for HostCmd_CMD_802_11_SUPPLICANT_PROFILE
5816  */
5817 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_SUPPLICANT_PROFILE {
5818 	/** GET/SET/GET_CURRENT */
5819 	t_u16 action;
5820 	/** Reserved */
5821 	t_u16 reserved;
5822 	/** TLVBuffer */
5823 	t_u8 tlv_buf[1];
5824 	/* MrvlIEtypes_EncrProto_t */
5825 } MLAN_PACK_END HostCmd_DS_802_11_SUPPLICANT_PROFILE;
5826 
5827 /* unicastCipher -
5828  *      Bit 0   : RFU
5829  *      Bit 1   : RFU
5830  *      Bit 2   : TKIP
5831  *      Bit 3   : AES CCKM
5832  *      Bit 2-7 : RFU
5833  * multicastCipher -
5834  *      Bit 0   : WEP40
5835  *      Bit 1   : WEP104
5836  *      Bit 2   : TKIP
5837  *      Bit 3   : AES
5838  *      Bit 4-7 : Reserved for now
5839  */
5840 /** MrvlIEtypes_Cipher_t */
5841 typedef MLAN_PACK_START struct _MrvlIEtypes_Cipher_t {
5842 	/** Header */
5843 	MrvlIEtypesHeader_t header;
5844 	/** PairCipher */
5845 	t_u8 pair_cipher;
5846 	/** GroupCipher */
5847 	t_u8 group_cipher;
5848 } MLAN_PACK_END MrvlIEtypes_Cipher_t;
5849 
5850 /** RFType */
5851 typedef MLAN_PACK_START struct _RFType_t {
5852 	/** band info */
5853 	Band_Config_t bandcfg;
5854 	/** reserved */
5855 	t_u8 reserved;
5856 } MLAN_PACK_END RFType_t;
5857 
5858 /** HostCmd_CMD_802_11_RF_CHANNEL */
5859 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RF_CHANNEL {
5860 	/** Action */
5861 	t_u16 action;
5862 	/** Current channel */
5863 	t_u16 current_channel;
5864 	/** RF type */
5865 	RFType_t rf_type;
5866 	/** Reserved field */
5867 	t_u16 reserved;
5868 #ifdef STA_SUPPORT
5869 	/** Reserved */
5870 	t_u8 reserved_1[32];
5871 #else /* STA_SUPPORT */
5872 	/** List of channels */
5873 	t_u8 channel_list[32];
5874 #endif /* !STA_SUPPORT */
5875 } MLAN_PACK_END HostCmd_DS_802_11_RF_CHANNEL;
5876 
5877 /** HostCmd_DS_VERSION_EXT */
5878 typedef MLAN_PACK_START struct _HostCmd_DS_VERSION_EXT {
5879 	/** Selected version string */
5880 	t_u8 version_str_sel;
5881 	/** Version string */
5882 	char version_str[128];
5883 } MLAN_PACK_END HostCmd_DS_VERSION_EXT;
5884 
5885 #define TLV_TYPE_CHAN_ATTR_CFG (PROPRIETARY_TLV_BASE_ID + 237)
5886 #define TLV_TYPE_REGION_INFO (PROPRIETARY_TLV_BASE_ID + 238)
5887 #define TLV_TYPE_POWER_TABLE (PROPRIETARY_TLV_BASE_ID + 262)
5888 #define TLV_TYPE_POWER_TABLE_ATTR (PROPRIETARY_TLV_BASE_ID + 317)
5889 /** HostCmd_DS_CHAN_REGION_CFG */
5890 typedef MLAN_PACK_START struct _HostCmd_DS_CHAN_REGION_CFG {
5891 	/** Action */
5892 	t_u16 action;
5893 } MLAN_PACK_END HostCmd_DS_CHAN_REGION_CFG;
5894 
5895 /** HostCmd_CMD_CW_MODE_CTRL */
5896 typedef MLAN_PACK_START struct _HostCmd_DS_CW_MODE_CTRL {
5897 	/** Action for CW Tone Control */
5898 	t_u16 action;
5899 	/** Mode of Operation 0: Disbale 1: Tx Continuous Packet 2: Tx
5900 	 * Continuous Wave */
5901 	t_u8 mode;
5902 	/** channel */
5903 	t_u8 channel;
5904 	/** channel info*/
5905 	t_u8 chanInfo;
5906 	/** Tx Power level in dBm */
5907 	t_u16 txPower;
5908 	/** Packet Length */
5909 	t_u16 pktLength;
5910 	/** bit rate Info */
5911 	t_u32 rateInfo;
5912 } MLAN_PACK_END HostCmd_DS_CW_MODE_CTRL;
5913 
5914 /** HostCmd_CMD_802_11_RF_ANTENNA */
5915 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_RF_ANTENNA {
5916 	/** Action for Tx antenna */
5917 	t_u16 action_tx;
5918 	/** Tx antenna mode Bit0:1, Bit1:2, Bit0-1:1+2, 0xffff: diversity */
5919 	t_u16 tx_antenna_mode;
5920 	/** Action for Rx antenna */
5921 	t_u16 action_rx;
5922 	/** Rx antenna mode Bit0:1, Bit1:2, Bit0-1:1+2, 0xffff: diversity */
5923 	t_u16 rx_antenna_mode;
5924 } MLAN_PACK_END HostCmd_DS_802_11_RF_ANTENNA;
5925 
5926 /** HostCmd_DS_802_11_IBSS_STATUS */
5927 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_IBSS_STATUS {
5928 	/** Action */
5929 	t_u16 action;
5930 	/** Enable */
5931 	t_u16 enable;
5932 	/** BSSID */
5933 	t_u8 bssid[MLAN_MAC_ADDR_LENGTH];
5934 	/** Beacon interval */
5935 	t_u16 beacon_interval;
5936 	/** ATIM window interval */
5937 	t_u16 atim_window;
5938 	/** User G rate protection */
5939 	t_u16 use_g_rate_protect;
5940 } MLAN_PACK_END HostCmd_DS_802_11_IBSS_STATUS;
5941 
5942 /** HostCmd_DS_MGMT_IE_LIST_CFG */
5943 typedef MLAN_PACK_START struct _HostCmd_DS_MGMT_IE_LIST {
5944 	/** Action */
5945 	t_u16 action;
5946 	/** Get/Set mgmt IE */
5947 	mlan_ds_misc_custom_ie ds_mgmt_ie;
5948 } MLAN_PACK_END HostCmd_DS_MGMT_IE_LIST_CFG;
5949 
5950 /** HostCmd_DS_TDLS_CONFIG */
5951 typedef MLAN_PACK_START struct _HostCmd_DS_TDLS_CONFIG {
5952 	/** Set TDLS configuration */
5953 	mlan_ds_misc_tdls_config tdls_info;
5954 } MLAN_PACK_END HostCmd_DS_TDLS_CONFIG;
5955 
5956 /**Action ID for TDLS delete link*/
5957 #define TDLS_DELETE 0x00
5958 /**Action ID for TDLS create link*/
5959 #define TDLS_CREATE 0x01
5960 /**Action ID for TDLS config link*/
5961 #define TDLS_CONFIG 0x02
5962 /** HostCmd_DS_TDLS_OPER */
5963 typedef MLAN_PACK_START struct _HostCmd_DS_TDLS_OPER {
5964 	/** Action */
5965 	t_u16 tdls_action;
5966 	/**reason*/
5967 	t_u16 reason;
5968 	/** peer mac */
5969 	t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH];
5970 } MLAN_PACK_END HostCmd_DS_TDLS_OPER;
5971 
5972 /** HostCmd_CMD_MAC_REG_ACCESS */
5973 typedef MLAN_PACK_START struct _HostCmd_DS_MAC_REG_ACCESS {
5974 	/** Action */
5975 	t_u16 action;
5976 	/** MAC register offset */
5977 	t_u16 offset;
5978 	/** MAC register value */
5979 	t_u32 value;
5980 } MLAN_PACK_END HostCmd_DS_MAC_REG_ACCESS;
5981 
5982 /** HostCmd_CMD_BCA_REG_ACCESS */
5983 typedef MLAN_PACK_START struct _HostCmd_DS_BCA_REG_ACCESS {
5984 	/** Action */
5985 	t_u16 action;
5986 	/** BCA register offset */
5987 	t_u16 offset;
5988 	/** BCA register value */
5989 	t_u32 value;
5990 } MLAN_PACK_END HostCmd_DS_BCA_REG_ACCESS;
5991 
5992 /** HostCmd_CMD_BBP_REG_ACCESS */
5993 typedef MLAN_PACK_START struct _HostCmd_DS_BBP_REG_ACCESS {
5994 	/** Acion */
5995 	t_u16 action;
5996 	/** BBP register offset */
5997 	t_u16 offset;
5998 	/** BBP register value */
5999 	t_u8 value;
6000 	/** Reserved field */
6001 	t_u8 reserved[3];
6002 } MLAN_PACK_END HostCmd_DS_BBP_REG_ACCESS;
6003 
6004 /**  HostCmd_CMD_RF_REG_ACCESS */
6005 typedef MLAN_PACK_START struct _HostCmd_DS_RF_REG_ACCESS {
6006 	/** Action */
6007 	t_u16 action;
6008 	/** RF register offset */
6009 	t_u16 offset;
6010 	/** RF register value */
6011 	t_u8 value;
6012 	/** Reserved field */
6013 	t_u8 reserved[3];
6014 } MLAN_PACK_END HostCmd_DS_RF_REG_ACCESS;
6015 
6016 /** HostCmd_DS_802_11_EEPROM_ACCESS */
6017 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_EEPROM_ACCESS {
6018 	/** Action */
6019 	t_u16 action;
6020 
6021 	/** multiple 4 */
6022 	t_u16 offset;
6023 	/** Number of bytes */
6024 	t_u16 byte_count;
6025 	/** Value */
6026 	t_u8 value;
6027 } MLAN_PACK_END HostCmd_DS_802_11_EEPROM_ACCESS;
6028 
6029 /** HostCmd_DS_MEM_ACCESS */
6030 typedef MLAN_PACK_START struct _HostCmd_DS_MEM_ACCESS {
6031 	/** Action */
6032 	t_u16 action;
6033 	/** Reserved field */
6034 	t_u16 reserved;
6035 	/** Address */
6036 	t_u32 addr;
6037 	/** Value */
6038 	t_u32 value;
6039 } MLAN_PACK_END HostCmd_DS_MEM_ACCESS;
6040 
6041 /** HostCmd_CMD_REG_ACCESS */
6042 typedef MLAN_PACK_START struct _HostCmd_DS_REG_ACCESS {
6043 	/** Action */
6044 	t_u16 action;
6045 	/** reg type */
6046 	t_u16 reg_type;
6047 	/** reserved */
6048 	t_u16 reserved;
6049 	/** register offset */
6050 	t_u16 offset;
6051 	/** register value */
6052 	t_u32 value;
6053 } MLAN_PACK_END HostCmd_DS_REG_ACCESS;
6054 
6055 /** HostCmd_DS_TARGET_ACCESS */
6056 typedef MLAN_PACK_START struct _HostCmd_DS_TARGET_ACCESS {
6057 	/** Action */
6058 	t_u16 action;
6059 	/** CSU Target Device. 1: CSU, 2: PSU */
6060 	t_u16 csu_target;
6061 	/** Target Device Address */
6062 	t_u16 address;
6063 	/** Data */
6064 	t_u8 data;
6065 } MLAN_PACK_END HostCmd_DS_TARGET_ACCESS;
6066 
6067 /** HostCmd_DS_SUBSCRIBE_EVENT */
6068 typedef MLAN_PACK_START struct _HostCmd_DS_SUBSCRIBE_EVENT {
6069 	/** Action */
6070 	t_u16 action;
6071 	/** Bitmap of subscribed events */
6072 	t_u16 event_bitmap;
6073 } MLAN_PACK_END HostCmd_DS_SUBSCRIBE_EVENT;
6074 
6075 /** HostCmd_DS_OTP_USER_DATA */
6076 typedef MLAN_PACK_START struct _HostCmd_DS_OTP_USER_DATA {
6077 	/** Action */
6078 	t_u16 action;
6079 	/** Reserved field */
6080 	t_u16 reserved;
6081 	/** User data length */
6082 	t_u16 user_data_length;
6083 	/** User data */
6084 	t_u8 user_data[1];
6085 } MLAN_PACK_END HostCmd_DS_OTP_USER_DATA;
6086 
6087 /** HostCmd_DS_FW_AUTO_RECONNECT */
6088 typedef MLAN_PACK_START struct _HostCmd_DS_FW_AUTO_RECONNECT {
6089 	/** ACT_GET/ACT_SET */
6090 	t_u16 action;
6091 	/** reconnect counter:
6092 	 * [0x0]: Do not attempt auto reconnect i.e. disable auto-reconnect
6093 	 * [0x1-0xFE]: Number of times reconnection needs to be attempted
6094 	 * [0xFF]: Attempt auto-reconnection forever */
6095 	t_u8 reconnect_counter;
6096 	/** reconnect interval */
6097 	t_u8 reconnect_interval;
6098 	/** flags:
6099 	 * [Bit 0]: Set to 1: Firmware should report link-loss to host if AP
6100 	 * rejects authentication/association while reconnecting Set to 0:
6101 	 * Default behavior: Firmware does not report link-loss to host on AP
6102 	 * rejection and continues internally [Bit 1-15]: Reserved */
6103 	t_u16 flags;
6104 } MLAN_PACK_END HostCmd_DS_FW_AUTO_RECONNECT;
6105 
6106 /** HostCmd_CMD_HS_WAKEUP_REASON */
6107 typedef MLAN_PACK_START struct _HostCmd_DS_HS_WAKEUP_REASON {
6108 	/** wakeupReason:
6109 	 * 0: unknown
6110 	 * 1: Broadcast data matched
6111 	 * 2: Multicast data matched
6112 	 * 3: Unicast data matched
6113 	 * 4: Maskable event matched
6114 	 * 5. Non-maskable event matched
6115 	 * 6: Non-maskable condition matched (EAPoL rekey)
6116 	 * 7: Magic pattern matched
6117 	 * Others: reserved. (set to 0) */
6118 	t_u16 wakeup_reason;
6119 } MLAN_PACK_END HostCmd_DS_HS_WAKEUP_REASON;
6120 
6121 /** MrvlIEtypes_HsWakeHoldoff_t */
6122 typedef MLAN_PACK_START struct _MrvlIEtypes_HsWakeHoldoff_t {
6123 	/** Header */
6124 	MrvlIEtypesHeader_t header;
6125 	/** Minimum delay between HsActive and HostWake (in msec) */
6126 	t_u16 min_wake_holdoff;
6127 } MLAN_PACK_END MrvlIEtypes_HsWakeHoldoff_t;
6128 
6129 /** MrvlIEtypes_PsParamsInHs_t */
6130 typedef MLAN_PACK_START struct _MrvlIEtypes_PsParamsInHs_t {
6131 	/** Header */
6132 	MrvlIEtypesHeader_t header;
6133 	/** Host sleep wake interval(in msec) */
6134 	t_u32 hs_wake_interval;
6135 	/** Host sleep inactivity timeout (in msec) */
6136 	t_u32 hs_inactivity_timeout;
6137 } MLAN_PACK_END MrvlIEtypes_PsParamsInHs_t;
6138 
6139 /** MrvlIEtypes_WakeupSourceGPIO_t */
6140 typedef MLAN_PACK_START struct _MrvlIEtypes_WakeupSourceGPIO_t {
6141 	/** Header */
6142 	MrvlIEtypesHeader_t header;
6143 	/** GPIO for indication of wakeup source */
6144 	t_u8 ind_gpio;
6145 	/** Level on ind_gpio for normal wakeup source */
6146 	t_u8 level;
6147 } MLAN_PACK_END MrvlIEtypes_WakeupSourceGPIO_t;
6148 
6149 /** MrvlIEtypes_RobustcoexSourceGPIO_t */
6150 typedef MLAN_PACK_START struct _MrvlIEtypes_RobustcoexSourceGPIO_t {
6151 	/** Header */
6152 	MrvlIEtypesHeader_t header;
6153 	/** GPIO cfg for external bt request */
6154 	t_u8 enable;
6155 	/** GPIO number */
6156 	t_u8 gpio_num;
6157 	/** GPIO Polarity */
6158 	t_u8 gpio_polarity;
6159 } MLAN_PACK_END MrvlIEtypes_RobustcoexSourceGPIO_t;
6160 
6161 #define MAX_NUM_MAC 2
6162 
6163 typedef MLAN_PACK_START struct _dmcs_chan_status {
6164 	/** Channel number */
6165 	t_u8 channel;
6166 	/** Number of AP on this channel */
6167 	t_u8 ap_count;
6168 	/** Number of STA on this channel*/
6169 	t_u8 sta_count;
6170 } MLAN_PACK_END dmcs_chan_status;
6171 
6172 typedef MLAN_PACK_START struct _dmcs_status_data {
6173 	/** radio ID */
6174 	t_u8 radio_id;
6175 	/** Running mode
6176 	 ** 0 - Idle
6177 	 ** 1 - DBC
6178 	 ** 2 - DRCS
6179 	 */
6180 	t_u8 running_mode;
6181 	/** Channel status of this radio */
6182 	dmcs_chan_status chan_status[2];
6183 } MLAN_PACK_END dmcs_status_data;
6184 
6185 /** MrvlIEtypes_DmcsConfig_t */
6186 typedef MLAN_PACK_START struct _MrvlIEtypes_DmcsConfig_t {
6187 	/** Header */
6188 	MrvlIEtypesHeader_t header;
6189 	/** Mapping policy */
6190 	t_u8 mapping_policy;
6191 	/** Radio status of DMCS */
6192 	dmcs_status_data radio_status[MAX_NUM_MAC];
6193 } MLAN_PACK_END MrvlIEtypes_DmcsStatus_t;
6194 
6195 #define ANTMODE_FW_DECISION 0xff
6196 /** MrvlIEtypes_HS_Antmode_t */
6197 typedef MLAN_PACK_START struct _MrvlIEtypes_HS_Antmode_t {
6198 	/** Header */
6199 	MrvlIEtypesHeader_t header;
6200 	/** Tx Path antenna mode*/
6201 	t_u8 txpath_antmode;
6202 	/** Rx Path antenna mode */
6203 	t_u8 rxpath_antmode;
6204 } MLAN_PACK_END MrvlIEtypes_HS_Antmode_t;
6205 
6206 typedef MLAN_PACK_START struct _MrvlIEtypes_WakeupExtend_t {
6207 	/** Header */
6208 	MrvlIEtypesHeader_t header;
6209 	/** Events that will be forced ignore **/
6210 	t_u32 event_force_ignore;
6211 	/** Events that will use extend gap to inform host*/
6212 	t_u32 event_use_ext_gap;
6213 	/** Extend gap*/
6214 	t_u8 ext_gap;
6215 	/** GPIO wave level*/
6216 	t_u8 gpio_wave;
6217 } MLAN_PACK_END MrvlIEtypes_WakeupExtend_t;
6218 
6219 #define EVENT_MANAGEMENT_FRAME_WAKEUP 0x00000088
6220 typedef MLAN_PACK_START struct _mgmt_frame_filter {
6221 	/** action - bitmap
6222 	 ** On matching rx'd pkt and filter during NON_HOSTSLEEP mode:
6223 	 **   Action[1]=0  Discard
6224 	 **   Action[1]=1  Allow
6225 	 ** Note that default action on non-match is "Allow".
6226 	 **
6227 	 ** On matching rx'd pkt and filter during HOSTSLEEP mode:
6228 	 **   Action[1:0]=00  Discard and Not Wake host
6229 	 **   Action[1:0]=01  Discard and Wake host
6230 	 **   Action[1:0]=10  Invalid
6231 	 ** Note that default action on non-match is "Discard and Not Wake
6232 	 *host".
6233 	 **/
6234 	t_u8 action;
6235 	/** Frame type(p2p...)
6236 	 ** type=0: invalid
6237 	 ** type=1: p2p
6238 	 ** type=0xff: management frames(assoc req/rsp, probe req/rsp,...)
6239 	 ** type=others: reserved
6240 	 **/
6241 	t_u8 type;
6242 	/** Frame mask according to each type
6243 	 ** When type=1 for p2p, frame-mask have following define:
6244 	 **    Bit      Frame
6245 	 **     0       GO Negotiation Request
6246 	 **     1       GO Negotiation Response
6247 	 **     2       GO Negotiation Confirmation
6248 	 **     3       P2P Invitation Request
6249 	 **     4       P2P Invitation Response
6250 	 **     5       Device Discoverability Request
6251 	 **     6       Device Discoverability Response
6252 	 **     7       Provision Discovery Request
6253 	 **     8       Provision Discovery Response
6254 	 **     9       Notice of Absence
6255 	 **     10      P2P Presence Request
6256 	 **     11      P2P Presence Response
6257 	 **     12      GO Discoverability Request
6258 	 **     13-31   Reserved
6259 	 **
6260 	 ** When type=others, frame-mask is reserved.
6261 	 **/
6262 	t_u32 frame_mask;
6263 } MLAN_PACK_END mgmt_frame_filter;
6264 
6265 #define MAX_MGMT_FRAME_FILTER 2
6266 /** MrvlIEtypes_MgmtFrameFilter_t */
6267 typedef MLAN_PACK_START struct _MrvlIEtypes_MgmtFrameFilter_t {
6268 	/** Header */
6269 	MrvlIEtypesHeader_t header;
6270 	/** management frame filters */
6271 	mgmt_frame_filter filter[MAX_MGMT_FRAME_FILTER];
6272 } MLAN_PACK_END MrvlIEtypes_MgmtFrameFilter_t;
6273 
6274 /** HostCmd_DS_INACTIVITY_TIMEOUT_EXT */
6275 typedef MLAN_PACK_START struct _HostCmd_DS_INACTIVITY_TIMEOUT_EXT {
6276 	/** ACT_GET/ACT_SET */
6277 	t_u16 action;
6278 	/** uS, 0 means 1000uS(1ms) */
6279 	t_u16 timeout_unit;
6280 	/** Inactivity timeout for unicast data */
6281 	t_u16 unicast_timeout;
6282 	/** Inactivity timeout for multicast data */
6283 	t_u16 mcast_timeout;
6284 	/** Timeout for additional RX traffic after Null PM1 packet exchange */
6285 	t_u16 ps_entry_timeout;
6286 	/** Reserved to further expansion */
6287 	t_u16 reserved;
6288 } MLAN_PACK_END HostCmd_DS_INACTIVITY_TIMEOUT_EXT;
6289 
6290 /** HostCmd_DS_INDEPENDENT_RESET_CFG */
6291 typedef MLAN_PACK_START struct _HostCmd_DS_INDEPENDENT_RESET_CFG {
6292 	/** ACT_GET/ACT_SET */
6293 	t_u16 action;
6294 	/** out band independent reset */
6295 	t_u8 ir_mode;
6296 	/** gpio pin */
6297 	t_u8 gpio_pin;
6298 } MLAN_PACK_END HostCmd_DS_INDEPENDENT_RESET_CFG;
6299 
6300 /** HostCmd_DS_802_11_PS_INACTIVITY_TIMEOUT */
6301 typedef MLAN_PACK_START struct _HostCmd_DS_802_11_PS_INACTIVITY_TIMEOUT {
6302 	/** ACT_GET/ACT_SET */
6303 	t_u16 action;
6304 	/** ps inactivity timeout value */
6305 	t_u16 inact_tmo;
6306 } MLAN_PACK_END HostCmd_DS_802_11_PS_INACTIVITY_TIMEOUT;
6307 
6308 /** TLV type : STA Mac address */
6309 #define TLV_TYPE_STA_MAC_ADDRESS (PROPRIETARY_TLV_BASE_ID + 0x20) /* 0x0120 */
6310 
6311 #define TLV_TYPE_RANDOM_MAC (PROPRIETARY_TLV_BASE_ID + 0xEC) /*0x01EC*/
6312 
6313 /** MrvlIEtypes_MacAddr_t */
6314 typedef MLAN_PACK_START struct _MrvlIEtypes_MacAddr_t {
6315 	/** Header */
6316 	MrvlIEtypesHeader_t header;
6317 	/** mac address */
6318 	t_u8 mac[MLAN_MAC_ADDR_LENGTH];
6319 } MLAN_PACK_END MrvlIEtypes_MacAddr_t;
6320 
6321 /** Assoc Request */
6322 #define SUBTYPE_ASSOC_REQUEST 0
6323 /** ReAssoc Request */
6324 #define SUBTYPE_REASSOC_REQUEST 2
6325 /** Probe Resp */
6326 #define SUBTYPE_PROBE_RESP 5
6327 /** Disassoc Request */
6328 #define SUBTYPE_DISASSOC 10
6329 /** Auth Request */
6330 #define SUBTYPE_AUTH 11
6331 /** Deauth Request */
6332 #define SUBTYPE_DEAUTH 12
6333 /** Action frame */
6334 #define SUBTYPE_ACTION 13
6335 /** beacon */
6336 #define SUBTYPE_BEACON 8
6337 
6338 #ifdef UAP_SUPPORT
6339 /** TLV type : AP Channel band Config */
6340 #define TLV_TYPE_UAP_CHAN_BAND_CONFIG                                          \
6341 	(PROPRIETARY_TLV_BASE_ID + 0x2a) /* 0x012a */
6342 /** TLV type : AP Mac address */
6343 #define TLV_TYPE_UAP_MAC_ADDRESS (PROPRIETARY_TLV_BASE_ID + 0x2b) /* 0x012b */
6344 /** TLV type : AP Beacon period */
6345 #define TLV_TYPE_UAP_BEACON_PERIOD                                             \
6346 	(PROPRIETARY_TLV_BASE_ID + 0x2c) /* 0x012c                             \
6347 					  */
6348 /** TLV type : AP DTIM period */
6349 #define TLV_TYPE_UAP_DTIM_PERIOD (PROPRIETARY_TLV_BASE_ID + 0x2d) /* 0x012d */
6350 /** TLV type : AP Tx power */
6351 #define TLV_TYPE_UAP_TX_POWER (PROPRIETARY_TLV_BASE_ID + 0x2f) /* 0x012f */
6352 /** TLV type : AP SSID broadcast control */
6353 #define TLV_TYPE_UAP_BCAST_SSID_CTL                                            \
6354 	(PROPRIETARY_TLV_BASE_ID + 0x30) /* 0x0130 */
6355 /** TLV type : AP Preamble control */
6356 #define TLV_TYPE_UAP_PREAMBLE_CTL                                              \
6357 	(PROPRIETARY_TLV_BASE_ID + 0x31) /* 0x0131                             \
6358 					  */
6359 /** TLV type : AP Antenna control */
6360 #define TLV_TYPE_UAP_ANTENNA_CTL (PROPRIETARY_TLV_BASE_ID + 0x32) /* 0x0132 */
6361 /** TLV type : AP RTS threshold */
6362 #define TLV_TYPE_UAP_RTS_THRESHOLD                                             \
6363 	(PROPRIETARY_TLV_BASE_ID + 0x33) /* 0x0133                             \
6364 					  */
6365 /** TLV type : AP Tx data rate */
6366 #define TLV_TYPE_UAP_TX_DATA_RATE                                              \
6367 	(PROPRIETARY_TLV_BASE_ID + 0x35) /* 0x0135                             \
6368 					  */
6369 /** TLV type: AP Packet forwarding control */
6370 #define TLV_TYPE_UAP_PKT_FWD_CTL (PROPRIETARY_TLV_BASE_ID + 0x36) /* 0x0136 */
6371 /** TLV type: STA information */
6372 #define TLV_TYPE_UAP_STA_INFO (PROPRIETARY_TLV_BASE_ID + 0x37) /* 0x0137 */
6373 /** TLV type: AP STA MAC address filter */
6374 #define TLV_TYPE_UAP_STA_MAC_ADDR_FILTER                                       \
6375 	(PROPRIETARY_TLV_BASE_ID + 0x38) /* 0x0138 */
6376 /** TLV type: AP STA ageout timer */
6377 #define TLV_TYPE_UAP_STA_AGEOUT_TIMER                                          \
6378 	(PROPRIETARY_TLV_BASE_ID + 0x39) /* 0x0139 */
6379 /** TLV type: AP WEP keys */
6380 #define TLV_TYPE_UAP_WEP_KEY (PROPRIETARY_TLV_BASE_ID + 0x3b) /* 0x013b */
6381 /** TLV type: AP WPA passphrase */
6382 #define TLV_TYPE_UAP_WPA_PASSPHRASE                                            \
6383 	(PROPRIETARY_TLV_BASE_ID + 0x3c) /* 0x013c */
6384 /** TLV type: AP protocol */
6385 #define TLV_TYPE_UAP_ENCRYPT_PROTOCOL                                          \
6386 	(PROPRIETARY_TLV_BASE_ID + 0x40) /* 0x0140 */
6387 /** TLV type: AP AKMP */
6388 #define TLV_TYPE_UAP_AKMP (PROPRIETARY_TLV_BASE_ID + 0x41) /* 0x0141 */
6389 /** TLV type: AP Fragment threshold */
6390 #define TLV_TYPE_UAP_FRAG_THRESHOLD                                            \
6391 	(PROPRIETARY_TLV_BASE_ID + 0x46) /* 0x0146 */
6392 /** TLV type: AP Group rekey timer */
6393 #define TLV_TYPE_UAP_GRP_REKEY_TIME                                            \
6394 	(PROPRIETARY_TLV_BASE_ID + 0x47) /* 0x0147 */
6395 /**TLV type : AP Max Station number */
6396 #define TLV_TYPE_UAP_MAX_STA_CNT (PROPRIETARY_TLV_BASE_ID + 0x55) /* 0x0155 */
6397 /**TLV type : AP Max Station number per chip */
6398 #define TLV_TYPE_UAP_MAX_STA_CNT_PER_CHIP                                      \
6399 	(PROPRIETARY_TLV_BASE_ID + 0x140) /* 0x0240 */
6400 /**TLV type : AP Retry limit */
6401 #define TLV_TYPE_UAP_RETRY_LIMIT (PROPRIETARY_TLV_BASE_ID + 0x5d) /* 0x015d */
6402 /** TLV type : AP MCBC data rate */
6403 #define TLV_TYPE_UAP_MCBC_DATA_RATE                                            \
6404 	(PROPRIETARY_TLV_BASE_ID + 0x62) /* 0x0162 */
6405 /**TLV type: AP RSN replay protection */
6406 #define TLV_TYPE_UAP_RSN_REPLAY_PROTECT                                        \
6407 	(PROPRIETARY_TLV_BASE_ID + 0x64) /* 0x0164 */
6408 /**TLV type: AP mgmt IE passthru mask */
6409 #define TLV_TYPE_UAP_MGMT_IE_PASSTHRU_MASK                                     \
6410 	(PROPRIETARY_TLV_BASE_ID + 0x70) /* 0x0170 */
6411 
6412 /**TLV type: AP pairwise handshake timeout */
6413 #define TLV_TYPE_UAP_EAPOL_PWK_HSK_TIMEOUT                                     \
6414 	(PROPRIETARY_TLV_BASE_ID + 0x75) /* 0x0175 */
6415 /**TLV type: AP pairwise handshake retries */
6416 #define TLV_TYPE_UAP_EAPOL_PWK_HSK_RETRIES                                     \
6417 	(PROPRIETARY_TLV_BASE_ID + 0x76) /* 0x0176 */
6418 /**TLV type: AP groupwise handshake timeout */
6419 #define TLV_TYPE_UAP_EAPOL_GWK_HSK_TIMEOUT                                     \
6420 	(PROPRIETARY_TLV_BASE_ID + 0x77) /* 0x0177 */
6421 /**TLV type: AP groupwise handshake retries */
6422 #define TLV_TYPE_UAP_EAPOL_GWK_HSK_RETRIES                                     \
6423 	(PROPRIETARY_TLV_BASE_ID + 0x78) /* 0x0178 */
6424 /** TLV type: AP PS STA ageout timer */
6425 #define TLV_TYPE_UAP_PS_STA_AGEOUT_TIMER                                       \
6426 	(PROPRIETARY_TLV_BASE_ID + 0x7b) /* 0x017b */
6427 /** TLV type : Pairwise Cipher */
6428 #define TLV_TYPE_PWK_CIPHER (PROPRIETARY_TLV_BASE_ID + 0x91) /* 0x0191 */
6429 /** TLV type : Group Cipher */
6430 #define TLV_TYPE_GWK_CIPHER (PROPRIETARY_TLV_BASE_ID + 0x92) /* 0x0192 */
6431 /** TLV type : BSS Status */
6432 #define TLV_TYPE_BSS_STATUS (PROPRIETARY_TLV_BASE_ID + 0x93) /* 0x0193 */
6433 /** TLV type :  AP WMM params */
6434 #define TLV_TYPE_AP_WMM_PARAM (PROPRIETARY_TLV_BASE_ID + 0xd0) /* 0x01d0 */
6435 /** TLV type : AP Tx beacon rate */
6436 #define TLV_TYPE_UAP_TX_BEACON_RATE (PROPRIETARY_TLV_BASE_ID + 288) /* 0x0220  \
6437 								     */
6438 #define NXP_802_11_PER_PEER_STATS_CFG_TLV_ID                                   \
6439 	(PROPRIETARY_TLV_BASE_ID + 346) /* 0x025A */
6440 #define NXP_802_11_PER_PEER_STATS_ENTRY_TLV_ID                                 \
6441 	(PROPRIETARY_TLV_BASE_ID + 347) /* 0x025B */
6442 
6443 /** MrvlIEtypes_beacon_period_t */
6444 typedef MLAN_PACK_START struct _MrvlIEtypes_beacon_period_t {
6445 	/** Header */
6446 	MrvlIEtypesHeader_t header;
6447 	/** beacon period */
6448 	t_u16 beacon_period;
6449 } MLAN_PACK_END MrvlIEtypes_beacon_period_t;
6450 
6451 /** MrvlIEtypes_dtim_period_t */
6452 typedef MLAN_PACK_START struct _MrvlIEtypes_dtim_period_t {
6453 	/** Header */
6454 	MrvlIEtypesHeader_t header;
6455 	/** DTIM period */
6456 	t_u8 dtim_period;
6457 } MLAN_PACK_END MrvlIEtypes_dtim_period_t;
6458 
6459 /** MrvlIEtypes_tx_rate_t */
6460 typedef MLAN_PACK_START struct _MrvlIEtypes_tx_rate_t {
6461 	/** Header */
6462 	MrvlIEtypesHeader_t header;
6463 	/** tx data rate */
6464 	t_u16 tx_data_rate;
6465 } MLAN_PACK_END MrvlIEtypes_tx_rate_t;
6466 
6467 /** MrvlIEtypes_mcbc_rate_t */
6468 typedef MLAN_PACK_START struct _MrvlIEtypes_mcbc_rate_t {
6469 	/** Header */
6470 	MrvlIEtypesHeader_t header;
6471 	/** mcbc data rate */
6472 	t_u16 mcbc_data_rate;
6473 } MLAN_PACK_END MrvlIEtypes_mcbc_rate_t;
6474 
6475 /** MrvlIEtypes_tx_power_t */
6476 typedef MLAN_PACK_START struct _MrvlIEtypes_tx_power_t {
6477 	/** Header */
6478 	MrvlIEtypesHeader_t header;
6479 	/** tx power */
6480 	t_u8 tx_power;
6481 } MLAN_PACK_END MrvlIEtypes_tx_power_t;
6482 
6483 /** MrvlIEtypes_bcast_ssid_t */
6484 typedef MLAN_PACK_START struct _MrvlIEtypes_bcast_ssid_t {
6485 	/** Header */
6486 	MrvlIEtypesHeader_t header;
6487 	/** bcast ssid control*/
6488 	t_u8 bcast_ssid_ctl;
6489 } MLAN_PACK_END MrvlIEtypes_bcast_ssid_t;
6490 
6491 /** MrvlIEtypes_antenna_mode_t */
6492 typedef MLAN_PACK_START struct _MrvlIEtypes_antenna_mode_t {
6493 	/** Header */
6494 	MrvlIEtypesHeader_t header;
6495 	/** which antenna */
6496 	t_u8 which_antenna;
6497 	/** antenna mode*/
6498 	t_u8 antenna_mode;
6499 } MLAN_PACK_END MrvlIEtypes_antenna_mode_t;
6500 
6501 /** MrvlIEtypes_pkt_forward_t */
6502 typedef MLAN_PACK_START struct _MrvlIEtypes_pkt_forward_t {
6503 	/** Header */
6504 	MrvlIEtypesHeader_t header;
6505 	/** pkt foward control */
6506 	t_u8 pkt_forward_ctl;
6507 } MLAN_PACK_END MrvlIEtypes_pkt_forward_t;
6508 
6509 /** MrvlIEtypes_max_sta_count_t */
6510 typedef MLAN_PACK_START struct _MrvlIEtypes_max_sta_count_t {
6511 	/** Header */
6512 	MrvlIEtypesHeader_t header;
6513 	/** max station count */
6514 	t_u16 max_sta_count;
6515 } MLAN_PACK_END MrvlIEtypes_max_sta_count_t;
6516 
6517 /** MrvlIEtypes_uap_max_sta_cnt */
6518 typedef MLAN_PACK_START struct _MrvlIEtypes_uap_max_sta_cnt_t {
6519 	/** Header */
6520 	MrvlIEtypesHeader_t header;
6521 	/** max station count */
6522 	t_u16 uap_max_sta;
6523 } MLAN_PACK_END MrvlIEtypes_uap_max_sta_cnt_t;
6524 
6525 #define MRVL_ACTION_CHAN_SWITCH_ANNOUNCE (PROPRIETARY_TLV_BASE_ID + 342)
6526 
6527 /** MrvlIEtypes_uap_chan_switch */
6528 typedef MLAN_PACK_START struct _MrvlIEtypes_action_chan_switch_t {
6529 	/** Header */
6530 	MrvlIEtypesHeader_t header;
6531 	/* 0 send broadcast CSA action frame, 1 send unicast CSA action frame */
6532 	t_u8 mode;
6533 	/* number of frame */
6534 	t_u8 num_pkt;
6535 	/** reserved */
6536 	t_u16 reserved;
6537 	/**ie buf*/
6538 	t_u8 ie_buf[];
6539 } MLAN_PACK_END MrvlIEtypes_action_chan_switch_t;
6540 
6541 /** MrvlIEtypes_sta_ageout_t */
6542 typedef MLAN_PACK_START struct _MrvlIEtypes_sta_ageout_t {
6543 	/** Header */
6544 	MrvlIEtypesHeader_t header;
6545 	/** station age out timer */
6546 	t_u32 sta_ageout_timer;
6547 } MLAN_PACK_END MrvlIEtypes_sta_ageout_t;
6548 
6549 /** MrvlIEtypes_rts_threshold_t */
6550 typedef MLAN_PACK_START struct _MrvlIEtypes_rts_threshold_t {
6551 	/** Header */
6552 	MrvlIEtypesHeader_t header;
6553 	/** rts threshold */
6554 	t_u16 rts_threshold;
6555 } MLAN_PACK_END MrvlIEtypes_rts_threshold_t;
6556 
6557 /** MrvlIEtypes_frag_threshold_t */
6558 typedef MLAN_PACK_START struct _MrvlIEtypes_frag_threshold_t {
6559 	/** Header */
6560 	MrvlIEtypesHeader_t header;
6561 	/** frag threshold */
6562 	t_u16 frag_threshold;
6563 } MLAN_PACK_END MrvlIEtypes_frag_threshold_t;
6564 
6565 /** MrvlIEtypes_retry_limit_t */
6566 typedef MLAN_PACK_START struct _MrvlIEtypes_retry_limit_t {
6567 	/** Header */
6568 	MrvlIEtypesHeader_t header;
6569 	/** retry limit */
6570 	t_u8 retry_limit;
6571 } MLAN_PACK_END MrvlIEtypes_retry_limit_t;
6572 
6573 /** MrvlIEtypes_eapol_pwk_hsk_timeout_t */
6574 typedef MLAN_PACK_START struct _MrvlIEtypes_eapol_pwk_hsk_timeout_t {
6575 	/** Header */
6576 	MrvlIEtypesHeader_t header;
6577 	/** pairwise update timeout in milliseconds */
6578 	t_u32 pairwise_update_timeout;
6579 } MLAN_PACK_END MrvlIEtypes_eapol_pwk_hsk_timeout_t;
6580 
6581 /** MrvlIEtypes_eapol_pwk_hsk_retries_t */
6582 typedef MLAN_PACK_START struct _MrvlIEtypes_eapol_pwk_hsk_retries_t {
6583 	/** Header */
6584 	MrvlIEtypesHeader_t header;
6585 	/** pairwise handshake retries */
6586 	t_u32 pwk_retries;
6587 } MLAN_PACK_END MrvlIEtypes_eapol_pwk_hsk_retries_t;
6588 
6589 /** MrvlIEtypes_eapol_gwk_hsk_timeout_t */
6590 typedef MLAN_PACK_START struct _MrvlIEtypes_eapol_gwk_hsk_timeout_t {
6591 	/** Header */
6592 	MrvlIEtypesHeader_t header;
6593 	/** groupwise update timeout in milliseconds */
6594 	t_u32 groupwise_update_timeout;
6595 } MLAN_PACK_END MrvlIEtypes_eapol_gwk_hsk_timeout_t;
6596 
6597 /** MrvlIEtypes_eapol_gwk_hsk_retries_t */
6598 typedef MLAN_PACK_START struct _MrvlIEtypes_eapol_gwk_hsk_retries_t {
6599 	/** Header */
6600 	MrvlIEtypesHeader_t header;
6601 	/** groupwise handshake retries */
6602 	t_u32 gwk_retries;
6603 } MLAN_PACK_END MrvlIEtypes_eapol_gwk_hsk_retries_t;
6604 
6605 /** MrvlIEtypes_mgmt_ie_passthru_t */
6606 typedef MLAN_PACK_START struct _MrvlIEtypes_mgmt_ie_passthru_t {
6607 	/** Header */
6608 	MrvlIEtypesHeader_t header;
6609 	/** mgmt IE mask value */
6610 	t_u32 mgmt_ie_mask;
6611 } MLAN_PACK_END MrvlIEtypes_mgmt_ie_passthru_t;
6612 
6613 /** MrvlIEtypes_mac_filter_t */
6614 typedef MLAN_PACK_START struct _MrvlIEtypes_mac_filter_t {
6615 	/** Header */
6616 	MrvlIEtypesHeader_t header;
6617 	/** Filter mode */
6618 	t_u8 filter_mode;
6619 	/** Number of STA MACs */
6620 	t_u8 count;
6621 	/** STA MAC addresses buffer */
6622 	t_u8 mac_address[1];
6623 } MLAN_PACK_END MrvlIEtypes_mac_filter_t;
6624 
6625 /** MrvlIEtypes_auth_type_t */
6626 typedef MLAN_PACK_START struct _MrvlIEtypes_auth_type_t {
6627 	/** Header */
6628 	MrvlIEtypesHeader_t header;
6629 	/** Authentication type */
6630 	t_u8 auth_type;
6631 	/** PWE derivation */
6632 	t_u8 PWE_derivation;
6633 	/** transition disable */
6634 	t_u8 transition_disable;
6635 } MLAN_PACK_END MrvlIEtypes_auth_type_t;
6636 
6637 /** MrvlIEtypes_encrypt_protocol_t */
6638 typedef MLAN_PACK_START struct _MrvlIEtypes_encrypt_protocol_t {
6639 	/** Header */
6640 	MrvlIEtypesHeader_t header;
6641 	/** encryption protocol */
6642 	t_u16 protocol;
6643 } MLAN_PACK_END MrvlIEtypes_encrypt_protocol_t;
6644 
6645 /** MrvlIEtypes_pwk_cipher_t */
6646 typedef MLAN_PACK_START struct _MrvlIEtypes_pwk_cipher_t {
6647 	/** Header */
6648 	MrvlIEtypesHeader_t header;
6649 	/** protocol */
6650 	t_u16 protocol;
6651 	/** pairwise cipher */
6652 	t_u8 pairwise_cipher;
6653 	/** reserved */
6654 	t_u8 reserved;
6655 } MLAN_PACK_END MrvlIEtypes_pwk_cipher_t;
6656 
6657 /** MrvlIEtypes_gwk_cipher_t */
6658 typedef MLAN_PACK_START struct _MrvlIEtypes_gwk_cipher_t {
6659 	/** Header */
6660 	MrvlIEtypesHeader_t header;
6661 	/** group cipher */
6662 	t_u8 group_cipher;
6663 	/** reserved */
6664 	t_u8 reserved;
6665 } MLAN_PACK_END MrvlIEtypes_gwk_cipher_t;
6666 
6667 /** MrvlIEtypes_akmp_t */
6668 typedef MLAN_PACK_START struct _MrvlIEtypes_akmp_t {
6669 	/** Header */
6670 	MrvlIEtypesHeader_t header;
6671 	/** key management */
6672 	t_u16 key_mgmt;
6673 	/** key management operation */
6674 	t_u16 key_mgmt_operation;
6675 } MLAN_PACK_END MrvlIEtypes_akmp_t;
6676 
6677 /** MrvlIEtypes_passphrase_t */
6678 typedef MLAN_PACK_START struct _MrvlIEtypes_passphrase_t {
6679 	/** Header */
6680 	MrvlIEtypesHeader_t header;
6681 	/** passphrase */
6682 	t_u8 passphrase[1];
6683 } MLAN_PACK_END MrvlIEtypes_passphrase_t;
6684 
6685 /** MrvlIEtypes_rsn_replay_prot_t */
6686 typedef MLAN_PACK_START struct _MrvlIEtypes_rsn_replay_prot_t {
6687 	/** Header */
6688 	MrvlIEtypesHeader_t header;
6689 	/** rsn replay proection */
6690 	t_u8 rsn_replay_prot;
6691 } MLAN_PACK_END MrvlIEtypes_rsn_replay_prot_t;
6692 
6693 /** MrvlIEtypes_group_rekey_time_t */
6694 typedef MLAN_PACK_START struct _MrvlIEtypes_group_rekey_time_t {
6695 	/** Header */
6696 	MrvlIEtypesHeader_t header;
6697 	/** group key rekey time */
6698 	t_u32 gk_rekey_time;
6699 } MLAN_PACK_END MrvlIEtypes_group_rekey_time_t;
6700 
6701 /** MrvlIEtypes_wep_key_t */
6702 typedef MLAN_PACK_START struct _MrvlIEtypes_wep_key_t {
6703 	/** Header */
6704 	MrvlIEtypesHeader_t header;
6705 	/** key index */
6706 	t_u8 key_index;
6707 	/** is default */
6708 	t_u8 is_default;
6709 	/** key data */
6710 	t_u8 key[1];
6711 } MLAN_PACK_END MrvlIEtypes_wep_key_t;
6712 
6713 /** MrvlIEtypes_bss_status_t */
6714 typedef MLAN_PACK_START struct _MrvlIEtypes_bss_status_t {
6715 	/** Header */
6716 	MrvlIEtypesHeader_t header;
6717 	/** BSS status, READ only */
6718 	t_u16 bss_status;
6719 } MLAN_PACK_END MrvlIEtypes_bss_status_t;
6720 
6721 /** MrvlIEtypes_preamble_t */
6722 typedef MLAN_PACK_START struct _MrvlIEtypes_preamble_t {
6723 	/** Header */
6724 	MrvlIEtypesHeader_t header;
6725 	/** preamble type, READ only */
6726 	t_u8 preamble_type;
6727 } MLAN_PACK_END MrvlIEtypes_preamble_t;
6728 
6729 /** MrvlIEtypes_wmm_parameter_t */
6730 typedef MLAN_PACK_START struct _MrvlIEtypes_wmm_parameter_t {
6731 	/** Header */
6732 	MrvlIEtypesHeader_t header;
6733 	/** WMM parameter */
6734 	WmmParameter_t wmm_para;
6735 } MLAN_PACK_END MrvlIEtypes_wmm_parameter_t;
6736 
6737 /** MrvlIEtypes_wacp_mode_t */
6738 typedef MLAN_PACK_START struct _MrvlIEtypes_wacp_mode_t {
6739 	/** Header */
6740 	MrvlIEtypesHeader_t header;
6741 	/** wacp_mode */
6742 	t_u8 wacp_mode;
6743 } MLAN_PACK_END MrvlIEtypes_wacp_mode_t;
6744 
6745 /** SNMP_MIB_UAP_INDEX */
6746 typedef enum _SNMP_MIB_UAP_INDEX {
6747 	tkip_mic_failures = 0x0b,
6748 	ccmp_decrypt_errors = 0x0c,
6749 	wep_undecryptable_count = 0x0d,
6750 	wep_icv_error_count = 0x0e,
6751 	decrypt_failure_count = 0xf,
6752 	dot11_failed_count = 0x12,
6753 	dot11_retry_count = 0x13,
6754 	dot11_multi_retry_count = 0x14,
6755 	dot11_frame_dup_count = 0x15,
6756 	dot11_rts_success_count = 0x16,
6757 	dot11_rts_failure_count = 0x17,
6758 	dot11_ack_failure_count = 0x18,
6759 	dot11_rx_fragment_count = 0x19,
6760 	dot11_mcast_rx_frame_count = 0x1a,
6761 	dot11_fcs_error_count = 0x1b,
6762 	dot11_tx_frame_count = 0x1c,
6763 	dot11_rsna_tkip_cm_invoked = 0x1d,
6764 	dot11_rsna_4way_hshk_failures = 0x1e,
6765 	dot11_mcast_tx_count = 0x1f,
6766 } SNMP_MIB_UAP_INDEX;
6767 
6768 /** MrvlIEtypes_snmp_oid_t */
6769 typedef MLAN_PACK_START struct _MrvlIEtypes_snmp_oid_t {
6770 	/** Header */
6771 	MrvlIEtypesHeader_t header;
6772 	/** data */
6773 	t_u32 data;
6774 } MLAN_PACK_END MrvlIEtypes_snmp_oid_t;
6775 
6776 /** HostCmd_SYS_CONFIG */
6777 typedef MLAN_PACK_START struct _HostCmd_DS_SYS_CONFIG {
6778 	/** CMD Action GET/SET*/
6779 	t_u16 action;
6780 	/** Tlv buffer */
6781 	t_u8 tlv_buffer[1];
6782 } MLAN_PACK_END HostCmd_DS_SYS_CONFIG;
6783 
6784 /** HostCmd_SYS_CONFIG */
6785 typedef MLAN_PACK_START struct _HostCmd_DS_SYS_INFO {
6786 	/** sys info */
6787 	t_u8 sys_info[64];
6788 } MLAN_PACK_END HostCmd_DS_SYS_INFO;
6789 
6790 /** HostCmd_DS_STA_DEAUTH */
6791 typedef MLAN_PACK_START struct _HostCmd_DS_STA_DEAUTH {
6792 	/** mac address */
6793 	t_u8 mac[MLAN_MAC_ADDR_LENGTH];
6794 	/** reason code */
6795 	t_u16 reason;
6796 } MLAN_PACK_END HostCmd_DS_STA_DEAUTH;
6797 
6798 /** HostCmd_DS_REPORT_MIC */
6799 typedef MLAN_PACK_START struct _HostCmd_DS_REPORT_MIC {
6800 	/** mac address */
6801 	t_u8 mac[MLAN_MAC_ADDR_LENGTH];
6802 } MLAN_PACK_END HostCmd_DS_REPORT_MIC;
6803 
6804 /** HostCmd_UAP_OPER_CTRL */
6805 typedef MLAN_PACK_START struct _HostCmd_DS_UAP_OPER_CTRL {
6806 	/** CMD Action GET/SET*/
6807 	t_u16 action;
6808 	/** control*/
6809 	t_u16 ctrl;
6810 	/**channel operation*/
6811 	t_u16 chan_opt;
6812 	/**channel band tlv*/
6813 	MrvlIEtypes_channel_band_t channel_band;
6814 } MLAN_PACK_END HostCmd_DS_UAP_OPER_CTRL;
6815 
6816 /** Host Command id: POWER_MGMT  */
6817 #define HOST_CMD_POWER_MGMT_EXT 0x00ef
6818 /** TLV type: AP Sleep param */
6819 #define TLV_TYPE_AP_SLEEP_PARAM (PROPRIETARY_TLV_BASE_ID + 0x6a) /* 0x016a */
6820 /** TLV type: AP Inactivity Sleep param */
6821 #define TLV_TYPE_AP_INACT_SLEEP_PARAM                                          \
6822 	(PROPRIETARY_TLV_BASE_ID + 0x6b) /* 0x016b */
6823 
6824 /** MrvlIEtypes_sleep_param_t */
6825 typedef MLAN_PACK_START struct _MrvlIEtypes_sleep_param_t {
6826 	/** Header */
6827 	MrvlIEtypesHeader_t header;
6828 	/** control bitmap */
6829 	t_u32 ctrl_bitmap;
6830 	/** min_sleep */
6831 	t_u32 min_sleep;
6832 	/** max_sleep */
6833 	t_u32 max_sleep;
6834 } MLAN_PACK_END MrvlIEtypes_sleep_param_t;
6835 
6836 /** MrvlIEtypes_inact_sleep_param_t */
6837 typedef MLAN_PACK_START struct _MrvlIEtypes_inact_sleep_param_t {
6838 	/** Header */
6839 	MrvlIEtypesHeader_t header;
6840 	/** inactivity timeout */
6841 	t_u32 inactivity_to;
6842 
6843 	/** min_awake */
6844 	t_u32 min_awake;
6845 	/** max_awake */
6846 	t_u32 max_awake;
6847 } MLAN_PACK_END MrvlIEtypes_inact_sleep_param_t;
6848 
6849 /** HostCmd_DS_POWER_MGMT */
6850 typedef MLAN_PACK_START struct _HostCmd_DS_POWER_MGMT_EXT {
6851 	/** CMD Action Get/Set*/
6852 	t_u16 action;
6853 	/** power mode */
6854 	t_u16 power_mode;
6855 } MLAN_PACK_END HostCmd_DS_POWER_MGMT_EXT;
6856 
6857 /** MrvlIEtypes_ps_sta_ageout_t */
6858 typedef MLAN_PACK_START struct _MrvlIEtypes_ps_sta_ageout_t {
6859 	/** Header */
6860 	MrvlIEtypesHeader_t header;
6861 	/** station age out timer */
6862 	t_u32 ps_sta_ageout_timer;
6863 } MLAN_PACK_END MrvlIEtypes_ps_sta_ageout_t;
6864 
6865 /** MrvlIEtypes_sta_info_t */
6866 typedef MLAN_PACK_START struct _MrvlIEtypes_sta_info_t {
6867 	/** Header */
6868 	MrvlIEtypesHeader_t header;
6869 	/** STA MAC address */
6870 	t_u8 mac_address[MLAN_MAC_ADDR_LENGTH];
6871 	/** Power Mgmt status */
6872 	t_u8 power_mgmt_status;
6873 	/** RSSI */
6874 	t_s8 rssi;
6875 	/** ie_buf */
6876 	t_u8 ie_buf[];
6877 } MLAN_PACK_END MrvlIEtypes_sta_info_t;
6878 
6879 /** HostCmd_DS_STA_LIST */
6880 typedef MLAN_PACK_START struct _HostCmd_DS_STA_LIST {
6881 	/** Number of STAs */
6882 	t_u16 sta_count;
6883 	/* MrvlIEtypes_sta_info_t sta_info[]; */
6884 	t_u8 tlv_buf[];
6885 } MLAN_PACK_END HostCmd_DS_STA_LIST;
6886 
6887 /** TLV ID : WAPI Information */
6888 #define TLV_TYPE_AP_WAPI_INFO (PROPRIETARY_TLV_BASE_ID + 0x67) /* 0x0167 */
6889 
6890 /** MrvlIEtypes_sta_info_t */
6891 typedef MLAN_PACK_START struct _MrvlIEtypes_wapi_info_t {
6892 	/** Header */
6893 	MrvlIEtypesHeader_t header;
6894 	/** Multicast PN */
6895 	t_u8 multicast_PN[16];
6896 } MLAN_PACK_END MrvlIEtypes_wapi_info_t;
6897 #endif /* UAP_SUPPORT */
6898 
6899 /** HostCmd_DS_TX_RX_HISTOGRAM */
6900 typedef MLAN_PACK_START struct _HostCmd_DS_TX_RX_HISTOGRAM {
6901 	/**  Enable or disable  */
6902 	t_u8 enable;
6903 	/** Choose to get TX, RX or both */
6904 	t_u16 action;
6905 } MLAN_PACK_END HostCmd_DS_TX_RX_HISTOGRAM;
6906 
6907 /** TLV buffer : 2040 coex config */
6908 typedef MLAN_PACK_START struct _MrvlIEtypes_2040_coex_enable_t {
6909 	/** Header */
6910 	MrvlIEtypesHeader_t header;
6911 	/** Enable */
6912 	t_u8 enable_2040coex;
6913 } MLAN_PACK_END MrvlIEtypes_2040_coex_enable_t;
6914 
6915 /**BT coexit scan time setting*/
6916 typedef MLAN_PACK_START struct _MrvlIEtypes_BtCoexScanTime_t {
6917 	/** Header */
6918 	MrvlIEtypesHeader_t header;
6919 	/**coex scan state  0: disable 1: enable*/
6920 	t_u8 coex_scan;
6921 	/**reserved*/
6922 	t_u8 reserved;
6923 	/**min scan time*/
6924 	t_u16 min_scan_time;
6925 	/**max scan time*/
6926 	t_u16 max_scan_time;
6927 } MLAN_PACK_END MrvlIEtypes_BtCoexScanTime_t;
6928 
6929 /**BT coexit aggr win size */
6930 typedef MLAN_PACK_START struct _MrvlIETypes_BtCoexAggrWinSize_t {
6931 	/** Header */
6932 	MrvlIEtypesHeader_t header;
6933 	/**winsize  0: restore default winsize, 1: use below winsize */
6934 	t_u8 coex_win_size;
6935 	/**tx win size*/
6936 	t_u8 tx_win_size;
6937 	/**rx win size*/
6938 	t_u8 rx_win_size;
6939 	/**reserved*/
6940 	t_u8 reserved;
6941 } MLAN_PACK_END MrvlIETypes_BtCoexAggrWinSize_t;
6942 
6943 /** MrvlIEtypes_eapol_pkt_t */
6944 typedef MLAN_PACK_START struct _MrvlIEtypes_eapol_pkt_t {
6945 	/** Header */
6946 	MrvlIEtypesHeader_t header;
6947 	/** eapol pkt buf */
6948 	t_u8 pkt_buf[];
6949 } MLAN_PACK_END MrvlIEtypes_eapol_pkt_t;
6950 
6951 /** HostCmd_DS_EAPOL_PKT */
6952 typedef MLAN_PACK_START struct _HostCmd_DS_EAPOL_PKT {
6953 	/** Action */
6954 	t_u16 action;
6955 	/** TLV buffer */
6956 	MrvlIEtypes_eapol_pkt_t tlv_eapol;
6957 } MLAN_PACK_END HostCmd_DS_EAPOL_PKT;
6958 
6959 /** HostCmd_DS_OXYGEN_MIMO_SWITCH */
6960 typedef MLAN_PACK_START struct _HostCmd_DS_MIMO_SWITCH {
6961 	/** Tx path antanne mode */
6962 	t_u8 txpath_antmode;
6963 	/** Rx path antanne mode */
6964 	t_u8 rxpath_antmode;
6965 } MLAN_PACK_END HostCmd_DS_MIMO_SWITCH;
6966 
6967 #ifdef RX_PACKET_COALESCE
6968 typedef MLAN_PACK_START struct _HostCmd_DS_RX_PKT_COAL_CFG {
6969 	/** Action */
6970 	t_u16 action;
6971 	/** Packet threshold */
6972 	t_u32 packet_threshold;
6973 	/** Timeout */
6974 	t_u16 delay;
6975 } MLAN_PACK_END HostCmd_DS_RX_PKT_COAL_CFG;
6976 #endif
6977 
6978 /** TLV buffer : firmware roam keys */
6979 typedef MLAN_PACK_START struct _MrvlIEtypes_keyParams_t {
6980 	/** Header */
6981 	MrvlIEtypesHeader_t header;
6982 	/** Tlv buffer */
6983 	t_u8 tlv_buffer[];
6984 } MLAN_PACK_END MrvlIEtypes_keyParams_t;
6985 
6986 /** TLV buffer : firmware roam enable */
6987 typedef MLAN_PACK_START struct _MrvlIEtypes_fw_roam_enable_t {
6988 	/** Header */
6989 	MrvlIEtypesHeader_t header;
6990 	/** Enable */
6991 	t_u8 roam_enable;
6992 	/** User set passphrase*/
6993 	t_u8 userset_passphrase;
6994 } MLAN_PACK_END MrvlIEtypes_fw_roam_enable_t;
6995 /** HostCmd_DS_ROAM_OFFLOAD */
6996 typedef MLAN_PACK_START struct _HostCmd_DS_ROAM_OFFLOAD {
6997 	/** Action */
6998 	t_u16 action;
6999 	/** tlv */
7000 	t_u8 tlv[];
7001 } MLAN_PACK_END HostCmd_DS_ROAM_OFFLOAD;
7002 /** HostCmd_DS_ROAM_OFFLOAD_APLIST */
7003 typedef MLAN_PACK_START struct _MrvlIEtypes_roam_aplist_t {
7004 	/** Header */
7005 	MrvlIEtypesHeader_t header;
7006 	/** AP mac addrs**/
7007 	t_u8 ap_mac[][MLAN_MAC_ADDR_LENGTH];
7008 } MLAN_PACK_END MrvlIEtypes_roam_aplist_t;
7009 /** MrvlIEtypes_fw_roam_trigger_condition_t */
7010 typedef MLAN_PACK_START struct _MrvlIEtypes_fw_roam_trigger_condition_t {
7011 	/** Header */
7012 	MrvlIEtypesHeader_t header;
7013 	/** Roam offload trigger condition**/
7014 	t_u16 trigger_condition;
7015 } MLAN_PACK_END MrvlIEtypes_fw_roam_trigger_condition_t;
7016 /** MrvlIEtypes_fw_roam_retry_count_t */
7017 typedef MLAN_PACK_START struct _MrvlIEtypes_fw_roam_retry_count_t {
7018 	/** Header */
7019 	MrvlIEtypesHeader_t header;
7020 	/** Roam offload retry count**/
7021 	t_u16 retry_count;
7022 } MLAN_PACK_END MrvlIEtypes_fw_roam_retry_count_t;
7023 /** MrvlIEtypes_fw_roam_bgscan_setting_t */
7024 typedef MLAN_PACK_START struct _MrvlIEtypes_fw_roam_bgscan_setting_t {
7025 	/** Header */
7026 	MrvlIEtypesHeader_t header;
7027 	/** Bss type of BG scan during fw roam**/
7028 	t_u8 bss_type;
7029 	/** Number of channels scanned during each scan**/
7030 	t_u8 channels_perscan;
7031 	/** Interval between consecutive scans**/
7032 	t_u32 scan_interval;
7033 	/** Condition to trigger report to host**/
7034 	t_u32 report_condition;
7035 } MLAN_PACK_END MrvlIEtypes_fw_roam_bgscan_setting_t;
7036 /** MrvlIEtypes_para_rssi_t */
7037 typedef MLAN_PACK_START struct _MrvlIEtypes_para_rssi_t {
7038 	/** Header */
7039 	MrvlIEtypesHeader_t header;
7040 	/** Max value of RSSI threshold**/
7041 	t_u8 max_rssi;
7042 	/** Min value of RSSI threshold**/
7043 	t_u8 min_rssi;
7044 	/** Adjusting step value of RSSI threshold**/
7045 	t_u8 step_rssi;
7046 } MLAN_PACK_END MrvlIEtypes_para_rssi_t;
7047 /** MrvlIEtypes_band_rssi_t */
7048 typedef MLAN_PACK_START struct _MrvlIEtypes_band_rssi_t {
7049 	/** Header */
7050 	MrvlIEtypesHeader_t header;
7051 	/** BAND and RSSI gap*/
7052 	mlan_ds_misc_band_rssi band_rssi;
7053 } MLAN_PACK_END MrvlIEtypes_band_rssi_t;
7054 /** MrvlIEtypes_ees_param_set_t */
7055 typedef MLAN_PACK_START struct _MrvlIEtypes_ees_param_set_t {
7056 	/** Header */
7057 	MrvlIEtypesHeader_t header;
7058 	/** ees params*/
7059 	mlan_ds_misc_ees_cfg ees_cfg;
7060 } MLAN_PACK_END MrvlIEtypes_ees_param_set_t;
7061 /** MrvlIEtypes_roam_blacklist_t */
7062 typedef MLAN_PACK_START struct _MrvlIEtypes_roam_blacklist_t {
7063 	/** Header */
7064 	MrvlIEtypesHeader_t header;
7065 	/* Black list(BSSID list)*/
7066 	mlan_ds_misc_roam_offload_aplist blacklist;
7067 } MLAN_PACK_END MrvlIEtypes_roam_blacklist_t;
7068 /** MrvlIEtypes_beacon_miss_threshold_t */
7069 typedef MLAN_PACK_START struct _MrvlIEtypes_beacon_miss_threshold_t {
7070 	/** Header */
7071 	MrvlIEtypesHeader_t header;
7072 	/* Beacon miss threshold*/
7073 	t_u8 bcn_miss_threshold;
7074 } MLAN_PACK_END MrvlIEtypes_beacon_miss_threshold_t;
7075 /** MrvlIEtypes_pre_beacon_miss_threshold_t */
7076 typedef MLAN_PACK_START struct _MrvlIEtypes_pre_beacon_miss_threshold_t {
7077 	/** Header */
7078 	MrvlIEtypesHeader_t header;
7079 	/* Pre-Beacon miss threshold*/
7080 	t_u8 pre_bcn_miss_threshold;
7081 } MLAN_PACK_END MrvlIEtypes_pre_beacon_miss_threshold_t;
7082 
7083 /** HostCmd_DS_DYN_BW */
7084 typedef MLAN_PACK_START struct _HostCmd_DS_DYN_BW {
7085 	/** Action */
7086 	t_u16 action;
7087 	/** Dynamic bandwidth */
7088 	t_u16 dyn_bw;
7089 } MLAN_PACK_END HostCmd_DS_DYN_BW;
7090 
7091 /** Host Command ID : Packet aggregation CTRL */
7092 #define HostCmd_CMD_PACKET_AGGR_CTRL 0x0251
7093 
7094 /** HostCmd_DS_PACKET_AGGR_CTRL */
7095 typedef MLAN_PACK_START struct _HostCmd_DS_PACKET_AGGR_AGGR_CTRL {
7096 	/** ACT_GET/ACT_SET */
7097 	t_u16 action;
7098 	/** enable aggregation, BIT(0) TX, BIT(1)RX */
7099 	t_u16 aggr_enable;
7100 	/** Tx aggregation alignment */
7101 	t_u16 tx_aggr_max_size;
7102 	/** Tx aggregation max packet number */
7103 	t_u16 tx_aggr_max_num;
7104 	/** Tx aggregation alignment */
7105 	t_u16 tx_aggr_align;
7106 } MLAN_PACK_END HostCmd_DS_PACKET_AGGR_CTRL;
7107 
7108 #ifdef USB
7109 /** Host Command ID : Packet aggregation over host interface */
7110 #define HostCmd_CMD_PACKET_AGGR_OVER_HOST_INTERFACE 0x0117
7111 
7112 /** TLV ID : USB Aggregation parameters */
7113 #define MRVL_USB_AGGR_PARAM_TLV_ID                                             \
7114 	(PROPRIETARY_TLV_BASE_ID + 0xB1) /* 0x1B1                              \
7115 					  */
7116 
7117 /** TLV size : USB Aggregation parameters, except header */
7118 #define MRVL_USB_AGGR_PARAM_TLV_LEN (14)
7119 
7120 /** VHT Operations IE */
7121 typedef MLAN_PACK_START struct _MrvlIETypes_USBAggrParam_t {
7122 	/** Header */
7123 	MrvlIEtypesHeader_t header;
7124 
7125 	/** Enable */
7126 	t_u16 enable;
7127 	/** Rx aggregation mode */
7128 	t_u16 rx_aggr_mode;
7129 	/** Rx aggregation alignment */
7130 	t_u16 rx_aggr_align;
7131 	/** Rx aggregation max packet/size */
7132 	t_u16 rx_aggr_max;
7133 	/** Rx aggrgation timeout, in microseconds */
7134 	t_u16 rx_aggr_tmo;
7135 	/** Tx aggregation mode */
7136 	t_u16 tx_aggr_mode;
7137 	/** Tx aggregation alignment */
7138 	t_u16 tx_aggr_align;
7139 } MLAN_PACK_END MrvlIETypes_USBAggrParam_t;
7140 
7141 /** HostCmd_DS_PACKET_AGGR_OVER_HOST_INTERFACE */
7142 typedef MLAN_PACK_START struct _HostCmd_DS_PACKET_AGGR_OVER_HOST_INTERFACE {
7143 	/** ACT_GET/ACT_SET */
7144 	t_u16 action;
7145 	/**
7146 	 *  Host interface aggregation control TLV(s) to be sent in the firmware
7147 	 * command
7148 	 *
7149 	 *  TLV_USB_AGGR_PARAM, MrvlIETypes_USBAggrParam_t
7150 	 */
7151 	t_u8 tlv_buf[1];
7152 } MLAN_PACK_END HostCmd_DS_PACKET_AGGR_OVER_HOST_INTERFACE;
7153 #endif /* USB */
7154 
7155 /** HostCmd_CONFIG_LOW_PWR_MODE */
7156 typedef MLAN_PACK_START struct _HostCmd_CONFIG_LOW_PWR_MODE {
7157 	/** Enable LPM */
7158 	t_u8 enable;
7159 } MLAN_PACK_END HostCmd_CONFIG_LOW_PWR_MODE;
7160 
7161 /** HostCmd_CMD_GET_TSF */
7162 typedef MLAN_PACK_START struct _HostCmd_DS_TSF {
7163 	/** tsf value*/
7164 	t_u64 tsf;
7165 } MLAN_PACK_END HostCmd_DS_TSF;
7166 /* WLAN_GET_TSF*/
7167 
7168 typedef struct _HostCmd_DS_DFS_REPEATER_MODE {
7169 	/** Set or Get */
7170 	t_u16 action;
7171 	/** 1 on or 0 off */
7172 	t_u16 mode;
7173 } HostCmd_DS_DFS_REPEATER_MODE;
7174 
7175 /** HostCmd_DS_BOOT_SLEEP */
7176 typedef MLAN_PACK_START struct _HostCmd_DS_BOOT_SLEEP {
7177 	/** Set or Get */
7178 	t_u16 action;
7179 	/** 1 on or 0 off */
7180 	t_u16 enable;
7181 } MLAN_PACK_END HostCmd_DS_BOOT_SLEEP;
7182 
7183 /**
7184  * @brief 802.11h Local Power Constraint NXP extended TLV
7185  */
7186 typedef MLAN_PACK_START struct {
7187 	MrvlIEtypesHeader_t header; /**< NXP TLV header: ID/Len */
7188 	t_u8 chan; /**< Channel local constraint applies to */
7189 
7190 	/** Power constraint included in beacons
7191 	 *  and used by fw to offset 11d info
7192 	 */
7193 	t_u8 constraint;
7194 
7195 } MLAN_PACK_END MrvlIEtypes_LocalPowerConstraint_t;
7196 
7197 /*
7198  *
7199  * Data structures for driver/firmware command processing
7200  *
7201  */
7202 
7203 /**  TPC Info structure sent in CMD_802_11_TPC_INFO command to firmware */
7204 typedef MLAN_PACK_START struct {
7205 	/**< Local constraint */
7206 	MrvlIEtypes_LocalPowerConstraint_t local_constraint;
7207 	/**< Power Capability */
7208 	MrvlIEtypes_PowerCapability_t power_cap;
7209 
7210 } MLAN_PACK_END HostCmd_DS_802_11_TPC_INFO;
7211 
7212 /**  TPC Request structure sent in CMD_802_11_TPC_ADAPT_REQ
7213  *  command to firmware
7214  */
7215 typedef MLAN_PACK_START struct {
7216 	t_u8 dest_mac[MLAN_MAC_ADDR_LENGTH]; /**< Destination STA address  */
7217 	t_u16 timeout; /**< Response timeout in ms */
7218 	t_u8 rate_index; /**< IEEE Rate index to send request */
7219 
7220 } MLAN_PACK_END HostCmd_TpcRequest;
7221 
7222 /**  TPC Response structure received from the
7223  *   CMD_802_11_TPC_ADAPT_REQ command
7224  */
7225 typedef MLAN_PACK_START struct {
7226 	t_u8 tpc_ret_code; /**< Firmware command result status code */
7227 	t_s8 tx_power; /**< Reported TX Power from the TPC Report element */
7228 	t_s8 link_margin; /**< Reported link margin from the TPC Report element
7229 			   */
7230 	t_s8 rssi; /**< RSSI of the received TPC Report frame */
7231 
7232 } MLAN_PACK_END HostCmd_TpcResponse;
7233 
7234 /**  CMD_802_11_TPC_ADAPT_REQ substruct.
7235  *   Union of the TPC request and response
7236  */
7237 typedef MLAN_PACK_START union {
7238 	HostCmd_TpcRequest req; /**< Request struct sent to firmware */
7239 	HostCmd_TpcResponse resp; /**< Response struct received from firmware */
7240 
7241 } MLAN_PACK_END HostCmd_DS_802_11_TPC_ADAPT_REQ;
7242 
7243 /**  CMD_802_11_CHAN_SW_ANN firmware command substructure */
7244 typedef MLAN_PACK_START struct {
7245 	t_u8 switch_mode; /**< Set to 1 for a quiet switch request, no STA tx */
7246 	t_u8 new_chan; /**< Requested new channel */
7247 	t_u8 switch_count; /**< Number of TBTTs until the switch is to occur */
7248 } MLAN_PACK_END HostCmd_DS_802_11_CHAN_SW_ANN;
7249 
7250 /**
7251  * @brief Enumeration of measurement types, including max supported
7252  *        enum for 11h/11k
7253  */
7254 typedef MLAN_PACK_START enum _MeasType_t {
7255 	WLAN_MEAS_BASIC = 0, /**< 11h: Basic */
7256 	WLAN_MEAS_NUM_TYPES, /**< Number of enumerated measurements */
7257 	WLAN_MEAS_11H_MAX_TYPE = WLAN_MEAS_BASIC, /**< Max 11h measurement */
7258 
7259 } MLAN_PACK_END MeasType_t;
7260 
7261 /**
7262  * @brief Mode octet of the measurement request element (7.3.2.21)
7263  */
7264 typedef MLAN_PACK_START struct {
7265 #ifdef BIG_ENDIAN_SUPPORT
7266 	/**< Reserved */
7267 	t_u8 rsvd5_7 : 3;
7268 	/**< 11k: duration spec. for meas. is mandatory */
7269 	t_u8 duration_mandatory : 1;
7270 	/**< 11h: en/disable report rcpt. of spec. type */
7271 	t_u8 report : 1;
7272 	/**< 11h: en/disable requests of specified type */
7273 	t_u8 request : 1;
7274 	/**< 11h: enable report/request bits */
7275 	t_u8 enable : 1;
7276 	/**< 11k: series or parallel with previous meas */
7277 	t_u8 parallel : 1;
7278 #else
7279 	/**< 11k: series or parallel with previous meas */
7280 	t_u8 parallel : 1;
7281 	/**< 11h: enable report/request bits */
7282 	t_u8 enable : 1;
7283 	/**< 11h: en/disable requests of specified type */
7284 	t_u8 request : 1;
7285 	/**< 11h: en/disable report rcpt. of spec. type */
7286 	t_u8 report : 1;
7287 	/**< 11k: duration spec. for meas. is mandatory */
7288 	t_u8 duration_mandatory : 1;
7289 	/**< Reserved */
7290 	t_u8 rsvd5_7 : 3;
7291 #endif /* BIG_ENDIAN_SUPPORT */
7292 
7293 } MLAN_PACK_END MeasReqMode_t;
7294 
7295 /**
7296  * @brief Common measurement request structure (7.3.2.21.1 to 7.3.2.21.3)
7297  */
7298 typedef MLAN_PACK_START struct {
7299 	t_u8 channel; /**< Channel to measure */
7300 	t_u64 start_time; /**< TSF Start time of measurement (0 for immediate)
7301 			   */
7302 	t_u16 duration; /**< TU duration of the measurement */
7303 
7304 } MLAN_PACK_END MeasReqCommonFormat_t;
7305 
7306 /**
7307  * @brief Basic measurement request structure (7.3.2.21.1)
7308  */
7309 typedef MeasReqCommonFormat_t MeasReqBasic_t;
7310 
7311 /**
7312  * @brief CCA measurement request structure (7.3.2.21.2)
7313  */
7314 typedef MeasReqCommonFormat_t MeasReqCCA_t;
7315 
7316 /**
7317  * @brief RPI measurement request structure (7.3.2.21.3)
7318  */
7319 typedef MeasReqCommonFormat_t MeasReqRPI_t;
7320 
7321 /**
7322  * @brief Union of the availble measurement request types.  Passed in the
7323  *        driver/firmware interface.
7324  */
7325 typedef union {
7326 	MeasReqBasic_t basic; /**< Basic measurement request */
7327 	MeasReqCCA_t cca; /**< CCA measurement request */
7328 	MeasReqRPI_t rpi; /**< RPI measurement request */
7329 
7330 } MeasRequest_t;
7331 
7332 /**
7333  * @brief Mode octet of the measurement report element (7.3.2.22)
7334  */
7335 typedef MLAN_PACK_START struct {
7336 #ifdef BIG_ENDIAN_SUPPORT
7337 	t_u8 rsvd3_7 : 5; /**< Reserved */
7338 	t_u8 refused : 1; /**< Measurement refused */
7339 	t_u8 incapable : 1; /**< Incapable of performing measurement */
7340 	t_u8 late : 1; /**< Start TSF time missed for measurement */
7341 #else
7342 	t_u8 late : 1; /**< Start TSF time missed for measurement */
7343 	t_u8 incapable : 1; /**< Incapable of performing measurement */
7344 	t_u8 refused : 1; /**< Measurement refused */
7345 	t_u8 rsvd3_7 : 5; /**< Reserved */
7346 #endif /* BIG_ENDIAN_SUPPORT */
7347 
7348 } MLAN_PACK_END MeasRptMode_t;
7349 
7350 /**
7351  * @brief Basic measurement report (7.3.2.22.1)
7352  */
7353 typedef MLAN_PACK_START struct {
7354 	t_u8 channel; /**< Channel to measured */
7355 	t_u64 start_time; /**< Start time (TSF) of measurement */
7356 	t_u16 duration; /**< Duration of measurement in TUs */
7357 	MeasRptBasicMap_t map; /**< Basic measurement report */
7358 
7359 } MLAN_PACK_END MeasRptBasic_t;
7360 
7361 /**
7362  * @brief CCA measurement report (7.3.2.22.2)
7363  */
7364 typedef MLAN_PACK_START struct {
7365 	t_u8 channel; /**< Channel to measured */
7366 	t_u64 start_time; /**< Start time (TSF) of measurement */
7367 	t_u16 duration; /**< Duration of measurement in TUs  */
7368 	t_u8 busy_fraction; /**< Fractional duration CCA indicated chan busy */
7369 
7370 } MLAN_PACK_END MeasRptCCA_t;
7371 
7372 /**
7373  * @brief RPI measurement report (7.3.2.22.3)
7374  */
7375 typedef MLAN_PACK_START struct {
7376 	t_u8 channel; /**< Channel to measured  */
7377 	t_u64 start_time; /**< Start time (TSF) of measurement */
7378 	t_u16 duration; /**< Duration of measurement in TUs  */
7379 	t_u8 density[8]; /**< RPI Density histogram report */
7380 
7381 } MLAN_PACK_END MeasRptRPI_t;
7382 
7383 /**
7384  * @brief Union of the availble measurement report types.  Passed in the
7385  *        driver/firmware interface.
7386  */
7387 typedef union {
7388 	MeasRptBasic_t basic; /**< Basic measurement report */
7389 	MeasRptCCA_t cca; /**< CCA measurement report */
7390 	MeasRptRPI_t rpi; /**< RPI measurement report */
7391 
7392 } MeasReport_t;
7393 
7394 /**
7395  * @brief Structure passed to firmware to perform a measurement
7396  */
7397 typedef MLAN_PACK_START struct {
7398 	t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH]; /**< Reporting STA address */
7399 	t_u8 dialog_token; /**< Measurement dialog toke */
7400 	MeasReqMode_t req_mode; /**< Report mode  */
7401 	MeasType_t meas_type; /**< Measurement type */
7402 	MeasRequest_t req; /**< Measurement request data */
7403 
7404 } MLAN_PACK_END HostCmd_DS_MEASUREMENT_REQUEST,
7405 	*pHostCmd_DS_MEASUREMENT_REQUEST;
7406 
7407 /**
7408  * @brief Structure passed back from firmware with a measurement report,
7409  *        also can be to send a measurement report to another STA
7410  */
7411 typedef MLAN_PACK_START struct {
7412 	t_u8 mac_addr[MLAN_MAC_ADDR_LENGTH]; /**< Reporting STA address */
7413 	t_u8 dialog_token; /**< Measurement dialog token */
7414 	MeasRptMode_t rpt_mode; /**< Report mode */
7415 	MeasType_t meas_type; /**< Measurement type */
7416 	MeasReport_t rpt; /**< Measurement report data */
7417 
7418 } MLAN_PACK_END HostCmd_DS_MEASUREMENT_REPORT, *pHostCmd_DS_MEASUREMENT_REPORT;
7419 
7420 typedef MLAN_PACK_START struct {
7421 	t_u16 startFreq;
7422 	Band_Config_t bandcfg;
7423 	t_u8 chanNum;
7424 
7425 } MLAN_PACK_END MrvlChannelDesc_t;
7426 
7427 #ifdef OPCHAN
7428 typedef MLAN_PACK_START struct {
7429 	MrvlIEtypesHeader_t header; /**< Header */
7430 
7431 	MrvlChannelDesc_t chanDesc;
7432 
7433 	t_u16 controlFlags;
7434 	t_u16 reserved;
7435 
7436 	t_u8 actPower;
7437 	t_u8 mdMinPower;
7438 	t_u8 mdMaxPower;
7439 	t_u8 mdPower;
7440 
7441 } MLAN_PACK_END MrvlIEtypes_ChanControlDesc_t;
7442 
7443 typedef MLAN_PACK_START struct {
7444 	MrvlIEtypesHeader_t header; /**< Header */
7445 
7446 	t_u16 chanGroupBitmap;
7447 	ChanScanMode_t scanMode;
7448 	t_u8 numChan;
7449 
7450 	MrvlChannelDesc_t chanDesc[50];
7451 
7452 } MLAN_PACK_END MrvlIEtypes_ChanGroupControl_t;
7453 
7454 typedef MLAN_PACK_START struct {
7455 	t_u16 action; /**< CMD Action Get/Set*/
7456 
7457 	t_u8 tlv_buffer[1];
7458 
7459 } MLAN_PACK_END HostCmd_DS_OPCHAN_CONFIG;
7460 
7461 typedef MLAN_PACK_START struct {
7462 	t_u16 action; /**< CMD Action Get/Set*/
7463 
7464 	t_u8 tlv_buffer[1];
7465 
7466 } MLAN_PACK_END HostCmd_DS_OPCHAN_CHANGROUP_CONFIG;
7467 
7468 #define HostCmd_CMD_OPCHAN_CONFIG 0x00f8
7469 #define HostCmd_CMD_OPCHAN_CHANGROUP_CONFIG 0x00f9
7470 #endif
7471 
7472 typedef MLAN_PACK_START struct {
7473 	MrvlIEtypesHeader_t Header; /**< Header */
7474 
7475 	MeasRptBasicMap_t map; /**< IEEE 802.11h basic meas report */
7476 } MLAN_PACK_END MrvlIEtypes_ChanRpt11hBasic_t;
7477 
7478 /* MrvlIEtypes_ZeroDfsOperation_t */
7479 typedef MLAN_PACK_START struct {
7480 	/* header */
7481 	MrvlIEtypesHeader_t Header;
7482 	/**< 0-DFS Enable/Disable> */
7483 	t_u8 zero_dfs_enbl;
7484 
7485 } MLAN_PACK_END MrvlIEtypes_ZeroDfsOperation_t;
7486 
7487 /* MrvlIEtypes_DfsW53Cfg_t*/
7488 typedef MLAN_PACK_START struct {
7489 	/* header */
7490 	MrvlIEtypesHeader_t Header;
7491 	/** df53cfg vlue*/
7492 	t_u8 dfs53cfg;
7493 } MLAN_PACK_END MrvlIEtypes_DfsW53Cfg_t;
7494 
7495 /* MrvlIEtypes_Rgn_dom_code_t*/
7496 typedef MLAN_PACK_START struct {
7497 	/* header */
7498 	MrvlIEtypesHeader_t header;
7499 	/** Domain Code */
7500 	t_u8 domain_code;
7501 	/** Reserved field */
7502 	t_u8 reserved;
7503 } MLAN_PACK_END MrvlIEtypes_Rgn_dom_code_t;
7504 
7505 typedef MLAN_PACK_START struct {
7506 	MrvlChannelDesc_t chan_desc; /**< Channel band, number */
7507 	t_u32 millisec_dwell_time; /**< Channel dwell time in milliseconds */
7508 } MLAN_PACK_END HostCmd_DS_CHAN_RPT_REQ;
7509 
7510 typedef MLAN_PACK_START struct {
7511 	t_u32 cmd_result; /**< Rpt request command result (0 == SUCCESS) */
7512 	t_u64 start_tsf; /**< TSF Measurement started */
7513 	t_u32 duration; /**< Duration of measurement in microsecs */
7514 	t_u8 tlv_buffer[1]; /**< TLV Buffer */
7515 } MLAN_PACK_END HostCmd_DS_CHAN_RPT_RSP;
7516 
7517 /** statistics threshold */
7518 typedef MLAN_PACK_START struct {
7519 	/** Header */
7520 	MrvlIEtypesHeader_t header;
7521 	/** value */
7522 	t_u8 value;
7523 	/** reporting frequency */
7524 	t_u8 frequency;
7525 } MLAN_PACK_END MrvlIEtypes_BeaconHighRssiThreshold_t,
7526 	MrvlIEtypes_BeaconLowRssiThreshold_t,
7527 	MrvlIEtypes_BeaconHighSnrThreshold_t,
7528 	MrvlIEtypes_BeaconLowSnrThreshold_t, MrvlIEtypes_FailureCount_t,
7529 	MrvlIEtypes_DataLowRssiThreshold_t, MrvlIEtypes_DataHighRssiThreshold_t,
7530 	MrvlIEtypes_DataLowSnrThreshold_t, MrvlIEtypes_DataHighSnrThreshold_t,
7531 	MrvlIETypes_PreBeaconMissed_t, MrvlIEtypes_BeaconsMissed_t;
7532 
7533 /** statistics threshold for LinkQuality */
7534 typedef MLAN_PACK_START struct {
7535 	/** Header */
7536 	MrvlIEtypesHeader_t header;
7537 	/** Link SNR threshold (dB) */
7538 	t_u16 link_snr;
7539 	/** Link SNR frequency */
7540 	t_u16 link_snr_freq;
7541 	/* Second minimum rate value as per the rate table below */
7542 	t_u16 link_rate;
7543 	/* Second minimum rate frequency */
7544 	t_u16 link_rate_freq;
7545 	/* Tx latency value (us) */
7546 	t_u16 link_tx_latency;
7547 	/* Tx latency frequency */
7548 	t_u16 link_tx_lantency_freq;
7549 } MLAN_PACK_END MrvlIEtypes_LinkQualityThreshold_t;
7550 
7551 #ifdef PCIE
7552 /** PCIE dual descriptor for data/event */
7553 typedef MLAN_PACK_START struct _dual_desc_buf {
7554 	/** buf size */
7555 	t_u16 len;
7556 	/** buffer descriptor flags */
7557 	t_u16 flags;
7558 	/** pkt size */
7559 	t_u16 pkt_size;
7560 	/** reserved */
7561 	t_u16 reserved;
7562 	/** Physical address of the buffer */
7563 	t_u64 paddr;
7564 } MLAN_PACK_END adma_dual_desc_buf, *padma_dual_desc_buf;
7565 
7566 #if defined(PCIE8997) || defined(PCIE8897)
7567 /** PCIE ring buffer description for DATA */
7568 typedef MLAN_PACK_START struct _mlan_pcie_data_buf {
7569 	/** Buffer descriptor flags */
7570 	t_u16 flags;
7571 	/** Offset of fragment/pkt to start of ip header */
7572 	t_u16 offset;
7573 	/** Fragment length of the buffer */
7574 	t_u16 frag_len;
7575 	/** Length of the buffer */
7576 	t_u16 len;
7577 	/** Physical address of the buffer */
7578 	t_u64 paddr;
7579 	/** Reserved */
7580 	t_u32 reserved;
7581 } MLAN_PACK_END mlan_pcie_data_buf, *pmlan_pcie_data_buf;
7582 
7583 /** PCIE ring buffer description for EVENT */
7584 typedef MLAN_PACK_START struct _mlan_pcie_evt_buf {
7585 	/** Physical address of the buffer */
7586 	t_u64 paddr;
7587 	/** Length of the buffer */
7588 	t_u16 len;
7589 	/** Buffer descriptor flags */
7590 	t_u16 flags;
7591 } MLAN_PACK_END mlan_pcie_evt_buf, *pmlan_pcie_evt_buf;
7592 
7593 /** PCIE host buffer configuration */
7594 typedef MLAN_PACK_START struct _HostCmd_DS_PCIE_HOST_BUF_DETAILS {
7595 	/** TX buffer descriptor ring address */
7596 	t_u32 txbd_addr_lo;
7597 	t_u32 txbd_addr_hi;
7598 	/** TX buffer descriptor ring count */
7599 	t_u32 txbd_count;
7600 
7601 	/** RX buffer descriptor ring address */
7602 	t_u32 rxbd_addr_lo;
7603 	t_u32 rxbd_addr_hi;
7604 	/** RX buffer descriptor ring count */
7605 	t_u32 rxbd_count;
7606 
7607 	/** Event buffer descriptor ring address */
7608 	t_u32 evtbd_addr_lo;
7609 	t_u32 evtbd_addr_hi;
7610 	/** Event buffer descriptor ring count */
7611 	t_u32 evtbd_count;
7612 } HostCmd_DS_PCIE_HOST_BUF_DETAILS;
7613 #endif
7614 #endif
7615 
7616 typedef MLAN_PACK_START struct _HostCmd_DS_SENSOR_TEMP {
7617 	t_u32 temperature;
7618 } MLAN_PACK_END HostCmd_DS_SENSOR_TEMP;
7619 
7620 #define TLV_TYPE_IPV6_RA_OFFLOAD (PROPRIETARY_TLV_BASE_ID + 0xE6) /** 0x1E6*/
7621 typedef MLAN_PACK_START struct {
7622 	MrvlIEtypesHeader_t Header;
7623 	t_u8 ipv6_addr[16];
7624 } MLAN_PACK_END MrvlIETypes_IPv6AddrParamSet_t;
7625 
7626 typedef MLAN_PACK_START struct _HostCmd_DS_IPV6_RA_OFFLOAD {
7627 	/** 0x0000: Get IPv6 RA Offload configuration
7628 	 *  0x0001: Set IPv6 RA Offload configuration
7629 	 */
7630 	t_u16 action;
7631 	/** 0x00: disable IPv6 RA Offload; 0x01: enable IPv6 RA offload */
7632 	t_u8 enable;
7633 	MrvlIETypes_IPv6AddrParamSet_t ipv6_addr_param;
7634 } MLAN_PACK_END HostCmd_DS_IPV6_RA_OFFLOAD;
7635 
7636 #ifdef STA_SUPPORT
7637 typedef MLAN_PACK_START struct _HostCmd_DS_STA_CONFIGURE {
7638 	/** Action Set or get */
7639 	t_u16 action;
7640 	/** Tlv buffer */
7641 	t_u8 tlv_buffer[];
7642 	/**MrvlIEtypes_channel_band_t band_channel; */
7643 } MLAN_PACK_END HostCmd_DS_STA_CONFIGURE;
7644 #endif
7645 
7646 /** HostCmd_DS_AUTO_TX structure */
7647 typedef MLAN_PACK_START struct _HostCmd_DS_AUTO_TX {
7648 	/** Action Set or get */
7649 	t_u16 action;
7650 	/** Tlv buffer */
7651 	t_u8 tlv_buffer[];
7652 } MLAN_PACK_END HostCmd_DS_AUTO_TX;
7653 
7654 #define OID_CLOUD_KEEP_ALIVE 0
7655 #define EVENT_CLOUD_KEEP_ALIVE_RETRY_FAIL 0x00000085
7656 /** TLV for cloud keep alive control info */
7657 #define TLV_TYPE_CLOUD_KEEP_ALIVE                                              \
7658 	(PROPRIETARY_TLV_BASE_ID + 0x102) /* 0x0100 + 258 */
7659 typedef MLAN_PACK_START struct _MrvlIEtypes_Cloud_Keep_Alive_t {
7660 	/** Header */
7661 	MrvlIEtypesHeader_t header;
7662 	/** ID for cloud keep alive */
7663 	t_u8 keep_alive_id;
7664 	/** Enable/disable for this ID */
7665 	t_u8 enable;
7666 	/** TLV buffer */
7667 	t_u8 tlv[];
7668 } MLAN_PACK_END MrvlIEtypes_Cloud_Keep_Alive_t;
7669 
7670 /** TLV for cloud keep alive control info */
7671 #define TLV_TYPE_KEEP_ALIVE_CTRL                                               \
7672 	(PROPRIETARY_TLV_BASE_ID + 0x103) /* 0x0100 + 259 */
7673 typedef MLAN_PACK_START struct _MrvlIEtypes_Keep_Alive_Ctrl_t {
7674 	/** Header */
7675 	MrvlIEtypesHeader_t header;
7676 	/** period to send keep alive packet */
7677 	t_u32 snd_interval;
7678 	/** period to send retry packet */
7679 	t_u16 retry_interval;
7680 	/** count to send retry packet */
7681 	t_u16 retry_count;
7682 } MLAN_PACK_END MrvlIEtypes_Keep_Alive_Ctrl_t;
7683 
7684 /** TLV for cloud keep alive packet */
7685 #define TLV_TYPE_KEEP_ALIVE_PKT                                                \
7686 	(PROPRIETARY_TLV_BASE_ID + 0x104) /* 0x0100 + 260 */
7687 typedef MLAN_PACK_START struct _MrvlIEtypes_Keep_Alive_Pkt_t {
7688 	/** Header */
7689 	MrvlIEtypesHeader_t header;
7690 	/** Ethernet Header */
7691 	Eth803Hdr_t eth_header;
7692 	/** packet buffer*/
7693 	t_u8 ip_packet[];
7694 } MLAN_PACK_END MrvlIEtypes_Keep_Alive_Pkt_t;
7695 
7696 /** TLV to indicate firmware only keep probe response while scan */
7697 #define TLV_TYPE_ONLYPROBERESP (PROPRIETARY_TLV_BASE_ID + 0xE9) /* 0x01E9 */
7698 typedef MLAN_PACK_START struct _MrvlIEtypes_OnlyProberesp_t {
7699 	/** Header */
7700 	MrvlIEtypesHeader_t header;
7701 	/** only keep probe response */
7702 	t_u8 proberesp_only;
7703 } MLAN_PACK_END MrvlIEtypes_OnlyProberesp_t;
7704 
7705 #if defined(DRV_EMBEDDED_AUTHENTICATOR) || defined(DRV_EMBEDDED_SUPPLICANT)
7706 #define HostCmd_CMD_CRYPTO 0x025e
7707 
7708 #define HostCmd_CMD_CRYPTO_SUBCMD_PRF_HMAC_SHA1 (0x1)
7709 #define HostCmd_CMD_CRYPTO_SUBCMD_HMAC_SHA1 (0x2)
7710 #define HostCmd_CMD_CRYPTO_SUBCMD_HMAC_SHA256 (0x3)
7711 #define HostCmd_CMD_CRYPTO_SUBCMD_SHA256 (0x4)
7712 #define HostCmd_CMD_CRYPTO_SUBCMD_RIJNDAEL (0x5)
7713 #define HostCmd_CMD_CRYPTO_SUBCMD_RC4 (0x6)
7714 #define HostCmd_CMD_CRYPTO_SUBCMD_MD5 (0x7)
7715 #define HostCmd_CMD_CRYPTO_SUBCMD_MRVL_F (0x8)
7716 #define HostCmd_CMD_CRYPTO_SUBCMD_SHA256_KDF (0x9)
7717 
7718 #define TLV_TYPE_CRYPTO_KEY (PROPRIETARY_TLV_BASE_ID + 308)
7719 #define TLV_TYPE_CRYPTO_KEY_IV (PROPRIETARY_TLV_BASE_ID + 309)
7720 #define TLV_TYPE_CRYPTO_KEY_PREFIX (PROPRIETARY_TLV_BASE_ID + 310)
7721 #define TLV_TYPE_CRYPTO_KEY_DATA_BLK (PROPRIETARY_TLV_BASE_ID + 311)
7722 
7723 /** MrvlIEParamSet_t */
7724 typedef MLAN_PACK_START struct {
7725 	/** Type */
7726 	t_u16 Type;
7727 	/** Length */
7728 	t_u16 Length;
7729 } MLAN_PACK_END MrvlIEParamSet_t;
7730 
7731 /** HostCmd_DS_CRYPTO */
7732 typedef MLAN_PACK_START struct _HostCmd_DS_CRYPTO {
7733 	/** action */
7734 	t_u16 action;
7735 	/** subCmdCode */
7736 	t_u8 subCmdCode;
7737 	/** subCmd start */
7738 	t_u8 subCmd[];
7739 } MLAN_PACK_END HostCmd_DS_CRYPTO;
7740 
7741 /** subcmd_prf_hmac_sha1 used by prf_hmac_sha1, md5 and sha256_kdf */
7742 typedef MLAN_PACK_START struct _subcmd_prf_hmac_sha1 {
7743 	/** output_len */
7744 	t_u16 output_len;
7745 	/** tlv start */
7746 	t_u8 tlv[];
7747 } MLAN_PACK_END subcmd_prf_hmac_sha1_t, subcmd_md5_t, subcmd_sha256_kdf_t;
7748 
7749 /** subcmd_hmac_sha1 used by hmac_sha1, hmac_sha256, sha256 */
7750 typedef MLAN_PACK_START struct _subcmd_hmac_sha1 {
7751 	/** output_len */
7752 	t_u16 output_len;
7753 	/** number of data blocks */
7754 	t_u16 data_blks_nr;
7755 	/** tlv start */
7756 	t_u8 tlv[];
7757 } MLAN_PACK_END subcmd_hmac_sha1_t, subcmd_hmac_sha256_t, subcmd_sha256_t;
7758 
7759 /** subcmd_rijndael, used by rijndael */
7760 typedef MLAN_PACK_START struct _subcmd_rijndael {
7761 	/** output_len */
7762 	t_u16 output_len;
7763 	/** sub action code */
7764 	t_u8 sub_action_code;
7765 	/** tlv start */
7766 	t_u8 tlv[];
7767 } MLAN_PACK_END subcmd_rijndael_t;
7768 
7769 /** subcmd_rc4, used by rc4 */
7770 typedef MLAN_PACK_START struct _subcmd_rc4 {
7771 	/** output_len */
7772 	t_u16 output_len;
7773 	/** skip bytes */
7774 	t_u16 skip_bytes;
7775 	/** tlv start */
7776 	t_u8 tlv[];
7777 } MLAN_PACK_END subcmd_rc4_t;
7778 
7779 /** subcmd_mrvf_f, used by mrvl_f*/
7780 typedef MLAN_PACK_START struct _subcmd_mrvf_f {
7781 	/** output_len */
7782 	t_u16 output_len;
7783 	/** iterations */
7784 	t_u32 iterations;
7785 	/** count */
7786 	t_u32 count;
7787 	/** tlv start */
7788 	t_u8 tlv[];
7789 } MLAN_PACK_END subcmd_mrvl_f_t;
7790 
7791 #endif
7792 
7793 #ifdef UAP_SUPPORT
7794 /** action add station */
7795 #define HostCmd_ACT_ADD_STA 0x1
7796 /** remove station */
7797 #define HostCmd_ACT_REMOVE_STA 0x0
7798 /** HostCmd_DS_ADD_STATION */
7799 typedef MLAN_PACK_START struct _HostCmd_DS_ADD_STATION {
7800 	/** 1 -add, 0 --delete */
7801 	t_u16 action;
7802 	/** aid */
7803 	t_u16 aid;
7804 	/** peer_mac */
7805 	t_u8 peer_mac[MLAN_MAC_ADDR_LENGTH];
7806 	/** Listen Interval */
7807 	int listen_interval;
7808 	/** Capability Info */
7809 	t_u16 cap_info;
7810 	/** tlv start */
7811 	t_u8 tlv[];
7812 } MLAN_PACK_END HostCmd_DS_ADD_STATION;
7813 
7814 /** Host Command ID : Add New Station */
7815 #define HostCmd_CMD_ADD_NEW_STATION 0x025f
7816 /** TLV id: station flag */
7817 #define TLV_TYPE_UAP_STA_FLAGS (PROPRIETARY_TLV_BASE_ID + 313)
7818 /**MrvlIEtypes_Sta_Flag_t */
7819 typedef MLAN_PACK_START struct _MrvlIEtypes_StaFlag_t {
7820 	/** Header */
7821 	MrvlIEtypesHeader_t header;
7822 	/** station flag     */
7823 	t_u32 sta_flags;
7824 } MLAN_PACK_END MrvlIEtypes_StaFlag_t;
7825 #endif
7826 
7827 /** Host Command ID : _HostCmd_DS_BAND_STEERING */
7828 typedef MLAN_PACK_START struct _HostCmd_DS_BAND_STEERING {
7829 	/** ACT_GET/ACT_SET */
7830 	t_u8 action;
7831 	/** State */
7832 	t_u8 state;
7833 	/** probe requests to be blocked on 2g */
7834 	t_u8 block_2g_prb_req;
7835 	/** limit the btm request sent to STA at <max_btm_req_allowed>*/
7836 	t_u8 max_btm_req_allowed;
7837 } MLAN_PACK_END HostCmd_DS_BAND_STEERING;
7838 
7839 /** HostCmd_CMD_RX_ABORT_CFG */
7840 typedef MLAN_PACK_START struct _HostCmd_DS_CMD_RX_ABORT_CFG {
7841 	/** Action */
7842 	t_u16 action;
7843 	/** Enable/disable rx abort on weak pkt rssi */
7844 	t_u8 enable;
7845 	/** rx weak rssi pkt threshold */
7846 	t_s8 rssi_threshold;
7847 } MLAN_PACK_END HostCmd_DS_CMD_RX_ABORT_CFG;
7848 /** HostCmd_CMD_RX_ABORT_CFG_EXT */
7849 typedef MLAN_PACK_START struct _HostCmd_DS_CMD_RX_ABORT_CFG_EXT {
7850 	/** Action */
7851 	t_u16 action;
7852 	/** Enable/disable dyn rx abort on weak pkt rssi */
7853 	t_u8 enable;
7854 	/** specify rssi margin */
7855 	t_s8 rssi_margin;
7856 	/** specify ceil rssi threshold */
7857 	t_s8 ceil_rssi_threshold;
7858 } MLAN_PACK_END HostCmd_DS_CMD_RX_ABORT_CFG_EXT;
7859 
7860 /** HostCmd_CMD_ARB_CONFIG */
7861 typedef MLAN_PACK_START struct _HostCmd_DS_CMD_ARB_CONFIG {
7862 	/** Action */
7863 	t_u16 action;
7864 	/** 0-4 */
7865 	t_u32 arb_mode;
7866 	/** 1: use FW enhancement, 0: use FW default */
7867 	t_u32 reserved;
7868 } MLAN_PACK_END HostCmd_DS_CMD_ARB_CONFIG;
7869 
7870 /** HostCmd_DS_CMD_TX_AMPDU_PROT_MODE */
7871 typedef MLAN_PACK_START struct _HostCmd_DS_CMD_TX_AMPDU_PROT_MODE {
7872 	/** Action */
7873 	t_u16 action;
7874 	/** Prot mode */
7875 	t_u16 mode;
7876 } MLAN_PACK_END HostCmd_DS_CMD_TX_AMPDU_PROT_MODE;
7877 
7878 /** HostCmd_DS_CMD_DOT11MC_UNASSOC_FTM_CFG */
7879 typedef MLAN_PACK_START struct _HostCmd_DS_CMD_DOT11MC_UNASSOC_FTM_CFG {
7880 	/** Action */
7881 	t_u16 action;
7882 	/** Cfg state */
7883 	t_u16 state;
7884 } MLAN_PACK_END HostCmd_DS_CMD_DOT11MC_UNASSOC_FTM_CFG;
7885 
7886 /** HostCmd_CMD_RATE_ADAPT_CFG */
7887 typedef MLAN_PACK_START struct _HostCmd_DS_CMD_RATE_ADAPT_CFG {
7888 	/** Action */
7889 	t_u16 action;
7890 	/** SR Rateadapt*/
7891 	t_u8 sr_rateadapt;
7892 	/** set low threshold */
7893 	t_u8 ra_low_thresh;
7894 	/** set high threshold */
7895 	t_u8 ra_high_thresh;
7896 	/** set interval */
7897 	t_u16 ra_interval;
7898 } MLAN_PACK_END HostCmd_DS_CMD_RATE_ADAPT_CFG;
7899 
7900 /** HostCmd_CMD_CCK_DESENSE_CFG */
7901 typedef MLAN_PACK_START struct _HostCmd_DS_CMD_CCK_DESENSE_CFG {
7902 	/** Action */
7903 	t_u16 action;
7904 	/** cck desense mode: 0:disable 1:normal 2:dynamic */
7905 	t_u16 mode;
7906 	/** specify rssi margin */
7907 	t_s8 margin;
7908 	/** specify ceil rssi threshold */
7909 	t_s8 ceil_thresh;
7910 	/** cck desense "on" interval count */
7911 	t_u8 num_on_intervals;
7912 	/** cck desense "off" interval count */
7913 	t_u8 num_off_intervals;
7914 } MLAN_PACK_END HostCmd_DS_CMD_CCK_DESENSE_CFG;
7915 
7916 /** HostCmd_DS_COMMAND */
7917 typedef struct MLAN_PACK_START _HostCmd_DS_COMMAND {
7918 	/** Command Header : Command */
7919 	t_u16 command;
7920 	/** Command Header : Size */
7921 	t_u16 size;
7922 	/** Command Header : Sequence number */
7923 	t_u16 seq_num;
7924 	/** Command Header : Result */
7925 	t_u16 result;
7926 	/** Command Body */
7927 	union {
7928 		/** Hardware specifications */
7929 		HostCmd_DS_GET_HW_SPEC hw_spec;
7930 #ifdef SDIO
7931 		HostCmd_DS_SDIO_SP_RX_AGGR_CFG sdio_rx_aggr;
7932 #endif
7933 		/** Cfg data */
7934 		HostCmd_DS_802_11_CFG_DATA cfg_data;
7935 		/** MAC control */
7936 		HostCmd_DS_MAC_CONTROL mac_ctrl;
7937 		/** MAC address */
7938 		HostCmd_DS_802_11_MAC_ADDRESS mac_addr;
7939 		/** MAC muticast address */
7940 		HostCmd_DS_MAC_MULTICAST_ADR mc_addr;
7941 		/** Get log */
7942 		HostCmd_DS_802_11_GET_LOG get_log;
7943 		/** Get link layer statistic */
7944 		HostCmd_DS_802_11_LINK_STATISTIC get_link_statistic;
7945 		/** RSSI information */
7946 		HostCmd_DS_802_11_RSSI_INFO_EXT rssi_info_ext;
7947 		/** RSSI information */
7948 		HostCmd_DS_802_11_RSSI_INFO rssi_info;
7949 		/** RSSI information response */
7950 		HostCmd_DS_802_11_RSSI_INFO_RSP rssi_info_rsp;
7951 		/** SNMP MIB */
7952 		HostCmd_DS_802_11_SNMP_MIB smib;
7953 #ifdef UAP_SUPPORT
7954 		/** UAP SNMP MIB */
7955 		HostCmd_DS_UAP_802_11_SNMP_MIB uap_smib;
7956 #endif
7957 		/** Radio control */
7958 		HostCmd_DS_802_11_RADIO_CONTROL radio;
7959 		/** RF channel */
7960 		HostCmd_DS_802_11_RF_CHANNEL rf_channel;
7961 		/** Tx rate query */
7962 		HostCmd_TX_RATE_QUERY tx_rate;
7963 		/** Tx rate configuration */
7964 		HostCmd_DS_TX_RATE_CFG tx_rate_cfg;
7965 		/** Tx power configuration */
7966 		HostCmd_DS_TXPWR_CFG txp_cfg;
7967 		/** RF Tx power configuration */
7968 		HostCmd_DS_802_11_RF_TX_POWER txp;
7969 
7970 		/** RF antenna */
7971 		HostCmd_DS_802_11_RF_ANTENNA antenna;
7972 
7973 		/** CW Mode: Tx CW Level control */
7974 		HostCmd_DS_CW_MODE_CTRL cwmode;
7975 		/** Enhanced power save command */
7976 		HostCmd_DS_802_11_PS_MODE_ENH psmode_enh;
7977 		HostCmd_DS_802_11_HS_CFG_ENH opt_hs_cfg;
7978 		/** Scan */
7979 		HostCmd_DS_802_11_SCAN scan;
7980 		/** Extended Scan */
7981 		HostCmd_DS_802_11_SCAN_EXT ext_scan;
7982 
7983 		/** Mgmt frame subtype mask */
7984 		HostCmd_DS_RX_MGMT_IND rx_mgmt_ind;
7985 		/** Scan response */
7986 		HostCmd_DS_802_11_SCAN_RSP scan_resp;
7987 
7988 		HostCmd_DS_802_11_BG_SCAN_CONFIG bg_scan_config;
7989 		HostCmd_DS_802_11_BG_SCAN_QUERY bg_scan_query;
7990 		HostCmd_DS_802_11_BG_SCAN_QUERY_RSP bg_scan_query_resp;
7991 		HostCmd_DS_SUBSCRIBE_EVENT subscribe_event;
7992 		HostCmd_DS_OTP_USER_DATA otp_user_data;
7993 		/** Associate */
7994 		HostCmd_DS_802_11_ASSOCIATE associate;
7995 
7996 		/** Associate response */
7997 		HostCmd_DS_802_11_ASSOCIATE_RSP associate_rsp;
7998 		/** Deauthenticate */
7999 		HostCmd_DS_802_11_DEAUTHENTICATE deauth;
8000 		/** Ad-Hoc start */
8001 		HostCmd_DS_802_11_AD_HOC_START adhoc_start;
8002 		/** Ad-Hoc start result */
8003 		HostCmd_DS_802_11_AD_HOC_START_RESULT adhoc_start_result;
8004 		/** Ad-Hoc join result */
8005 		HostCmd_DS_802_11_AD_HOC_JOIN_RESULT adhoc_join_result;
8006 		/** Ad-Hoc join */
8007 		HostCmd_DS_802_11_AD_HOC_JOIN adhoc_join;
8008 		/** Domain information */
8009 		HostCmd_DS_802_11D_DOMAIN_INFO domain_info;
8010 		/** Domain information response */
8011 		HostCmd_DS_802_11D_DOMAIN_INFO_RSP domain_info_resp;
8012 		HostCmd_DS_802_11_TPC_ADAPT_REQ tpc_req;
8013 		HostCmd_DS_802_11_TPC_INFO tpc_info;
8014 		HostCmd_DS_802_11_CHAN_SW_ANN chan_sw_ann;
8015 		HostCmd_DS_CHAN_RPT_REQ chan_rpt_req;
8016 		HostCmd_DS_MEASUREMENT_REQUEST meas_req;
8017 		HostCmd_DS_MEASUREMENT_REPORT meas_rpt;
8018 		/** Add BA request */
8019 		HostCmd_DS_11N_ADDBA_REQ add_ba_req;
8020 		/** Add BA response */
8021 		HostCmd_DS_11N_ADDBA_RSP add_ba_rsp;
8022 		/** Delete BA entry */
8023 		HostCmd_DS_11N_DELBA del_ba;
8024 		/** Tx buffer configuration */
8025 		HostCmd_DS_TXBUF_CFG tx_buf;
8026 		/** AMSDU Aggr Ctrl configuration */
8027 		HostCmd_DS_AMSDU_AGGR_CTRL amsdu_aggr_ctrl;
8028 		/** 11n configuration */
8029 		HostCmd_DS_11N_CFG htcfg;
8030 		/** reject addba req conditions configuration */
8031 		HostCmd_DS_REJECT_ADDBA_REQ rejectaddbareq;
8032 		/* RANDYTODO need add more */
8033 		/** HostCmd_DS_11AC_CFG */
8034 		HostCmd_DS_11AC_CFG vhtcfg;
8035 		/** HostCmd_DS_11ACTXBUF_CFG*/
8036 		HostCmd_DS_11ACTXBUF_CFG ac_tx_buf;
8037 		/** 11n configuration */
8038 		HostCmd_DS_TX_BF_CFG tx_bf_cfg;
8039 		/** WMM status get */
8040 		HostCmd_DS_WMM_GET_STATUS get_wmm_status;
8041 		/** WMM ADDTS */
8042 		HostCmd_DS_WMM_ADDTS_REQ add_ts;
8043 		/** WMM DELTS */
8044 		HostCmd_DS_WMM_DELTS_REQ del_ts;
8045 		/** WMM set/get queue config */
8046 		HostCmd_DS_WMM_QUEUE_CONFIG queue_config;
8047 		/** WMM param config*/
8048 		HostCmd_DS_WMM_PARAM_CONFIG param_config;
8049 		/** WMM on/of/get queue statistics */
8050 		HostCmd_DS_WMM_QUEUE_STATS queue_stats;
8051 		/** WMM get traffic stream status */
8052 		HostCmd_DS_WMM_TS_STATUS ts_status;
8053 		/** Key material */
8054 		HostCmd_DS_802_11_KEY_MATERIAL key_material;
8055 		/** GTK Rekey parameters */
8056 		HostCmd_DS_GTK_REKEY_PARAMS gtk_rekey;
8057 		/** E-Supplicant PSK */
8058 		HostCmd_DS_802_11_SUPPLICANT_PMK esupplicant_psk;
8059 		/** E-Supplicant profile */
8060 		HostCmd_DS_802_11_SUPPLICANT_PROFILE esupplicant_profile;
8061 		/** Extended version */
8062 		HostCmd_DS_VERSION_EXT verext;
8063 		/** Adhoc Coalescing */
8064 		HostCmd_DS_802_11_IBSS_STATUS ibss_coalescing;
8065 		/** Mgmt IE list configuration */
8066 		HostCmd_DS_MGMT_IE_LIST_CFG mgmt_ie_list;
8067 		/** TDLS configuration command */
8068 		HostCmd_DS_TDLS_CONFIG tdls_config_data;
8069 		/** TDLS operation command */
8070 		HostCmd_DS_TDLS_OPER tdls_oper_data;
8071 		/** System clock configuration */
8072 		HostCmd_DS_ECL_SYSTEM_CLOCK_CONFIG sys_clock_cfg;
8073 		/** MAC register access */
8074 		HostCmd_DS_MAC_REG_ACCESS mac_reg;
8075 		/** BBP register access */
8076 		HostCmd_DS_BBP_REG_ACCESS bbp_reg;
8077 		/** RF register access */
8078 		HostCmd_DS_RF_REG_ACCESS rf_reg;
8079 		/** EEPROM register access */
8080 		HostCmd_DS_802_11_EEPROM_ACCESS eeprom;
8081 		/** Memory access */
8082 		HostCmd_DS_MEM_ACCESS mem;
8083 		/** Target device access */
8084 		HostCmd_DS_TARGET_ACCESS target;
8085 		/** BCA register access */
8086 		HostCmd_DS_BCA_REG_ACCESS bca_reg;
8087 		/** register access */
8088 		HostCmd_DS_REG_ACCESS reg;
8089 		/** Inactivity timeout extend */
8090 		HostCmd_DS_INACTIVITY_TIMEOUT_EXT inactivity_to;
8091 #ifdef UAP_SUPPORT
8092 		HostCmd_DS_SYS_CONFIG sys_config;
8093 		HostCmd_DS_SYS_INFO sys_info;
8094 		HostCmd_DS_STA_DEAUTH sta_deauth;
8095 		HostCmd_DS_STA_LIST sta_list;
8096 		HostCmd_DS_POWER_MGMT_EXT pm_cfg;
8097 		HostCmd_DS_REPORT_MIC report_mic;
8098 		HostCmd_DS_UAP_OPER_CTRL uap_oper_ctrl;
8099 #endif /* UAP_SUPPORT */
8100 		HostCmd_DS_TX_RX_HISTOGRAM tx_rx_histogram;
8101 
8102 		/** Sleep period command */
8103 		HostCmd_DS_802_11_SLEEP_PERIOD sleep_pd;
8104 		/** Sleep params command */
8105 		HostCmd_DS_802_11_SLEEP_PARAMS sleep_param;
8106 
8107 #ifdef SDIO
8108 		/** SDIO GPIO interrupt config command */
8109 		HostCmd_DS_SDIO_GPIO_INT_CONFIG sdio_gpio_int;
8110 		HostCmd_DS_SDIO_PULL_CTRL sdio_pull_ctl;
8111 #endif
8112 		HostCmd_DS_SET_BSS_MODE bss_mode;
8113 		HostCmd_DS_802_11_NET_MONITOR net_mon;
8114 		HostCmd_DS_CMD_TX_DATA_PAUSE tx_data_pause;
8115 #if defined(PCIE)
8116 #if defined(PCIE8997) || defined(PCIE8897)
8117 		HostCmd_DS_PCIE_HOST_BUF_DETAILS pcie_host_spec;
8118 #endif
8119 #endif
8120 		HostCmd_DS_REMAIN_ON_CHANNEL remain_on_chan;
8121 #ifdef WIFI_DIRECT_SUPPORT
8122 		HostCmd_DS_WIFI_DIRECT_MODE wifi_direct_mode;
8123 		HostCmd_DS_WIFI_DIRECT_PARAM_CONFIG p2p_params_config;
8124 #endif
8125 		HostCmd_DS_GPIO_TSF_LATCH_PARAM_CONFIG gpio_tsf_latch;
8126 		HostCmd_DS_COALESCE_CONFIG coalesce_config;
8127 		HostCmd_DS_FW_AUTO_RECONNECT fw_auto_reconnect_cmd;
8128 		HostCmd_DS_HS_WAKEUP_REASON hs_wakeup_reason;
8129 		HostCmd_DS_PACKET_AGGR_CTRL aggr_ctrl;
8130 #ifdef USB
8131 		HostCmd_DS_PACKET_AGGR_OVER_HOST_INTERFACE packet_aggr;
8132 #endif
8133 		HostCmd_CONFIG_LOW_PWR_MODE low_pwr_mode_cfg;
8134 		HostCmd_DS_TSF tsf;
8135 		HostCmd_DS_DFS_REPEATER_MODE dfs_repeater;
8136 #ifdef RX_PACKET_COALESCE
8137 		HostCmd_DS_RX_PKT_COAL_CFG rx_pkt_coal_cfg;
8138 #endif
8139 		HostCmd_DS_EAPOL_PKT eapol_pkt;
8140 		HostCmd_DS_SENSOR_TEMP temp_sensor;
8141 		HostCMD_DS_APCMD_ACS_SCAN acs_scan;
8142 		HostCmd_DS_MIMO_SWITCH mimo_switch;
8143 		HostCmd_DS_IPV6_RA_OFFLOAD ipv6_ra_offload;
8144 #ifdef STA_SUPPORT
8145 		HostCmd_DS_STA_CONFIGURE sta_cfg;
8146 #endif
8147 		/** GPIO Independent reset configure */
8148 		HostCmd_DS_INDEPENDENT_RESET_CFG ind_rst_cfg;
8149 		HostCmd_DS_802_11_PS_INACTIVITY_TIMEOUT ps_inact_tmo;
8150 		HostCmd_DS_ROAM_OFFLOAD roam_offload;
8151 		HostCmd_DS_CHAN_REGION_CFG reg_cfg;
8152 		HostCmd_DS_AUTO_TX auto_tx;
8153 		HostCmd_DS_DYN_BW dyn_bw;
8154 		HostCmd_DS_802_11_ROBUSTCOEX robustcoexparams;
8155 		HostCmd_DS_DMCS_CFG dmcs;
8156 #if defined(PCIE)
8157 		HostCmd_DS_SSU_CFG ssu_params;
8158 #endif
8159 		HostCmd_DS_CSI_CFG csi_params;
8160 		/** boot sleep configure */
8161 		HostCmd_DS_BOOT_SLEEP boot_sleep;
8162 #if defined(DRV_EMBEDDED_AUTHENTICATOR) || defined(DRV_EMBEDDED_SUPPLICANT)
8163 		/** crypto cmd */
8164 		HostCmd_DS_CRYPTO crypto_cmd;
8165 #endif
8166 #ifdef UAP_SUPPORT
8167 		/** Add station cmd */
8168 		HostCmd_DS_ADD_STATION sta_info;
8169 #endif
8170 		/** HostCmd_DS_11AX_CFG */
8171 		HostCmd_DS_11AX_CFG axcfg;
8172 		/** HostCmd_DS_11AX_CMD_CFG */
8173 		HostCmd_DS_11AX_CMD_CFG axcmd;
8174 		HostCmd_DS_RANGE_EXT range_ext;
8175 		/** HostCmd_DS_TWT_CFG */
8176 		HostCmd_DS_TWT_CFG twtcfg;
8177 
8178 		HostCmd_DS_CMD_RX_ABORT_CFG rx_abort_cfg;
8179 		HostCmd_DS_CMD_RX_ABORT_CFG_EXT rx_abort_cfg_ext;
8180 		HostCmd_DS_CMD_TX_AMPDU_PROT_MODE tx_ampdu_prot_mode;
8181 		HostCmd_DS_CMD_RATE_ADAPT_CFG rate_adapt_cfg;
8182 		HostCmd_DS_CMD_CCK_DESENSE_CFG cck_desense_cfg;
8183 		/** trpc_config */
8184 		HostCmd_DS_CHANNEL_TRPC_CONFIG ch_trpc_config;
8185 		HostCmd_DS_LOW_POWER_MODE_CFG lpm_cfg;
8186 		HostCmd_DS_BAND_STEERING band_steer_info;
8187 		HostCmd_DS_BEACON_STUCK_CFG beacon_stuck_cfg;
8188 		struct mfg_cmd_generic_cfg mfg_generic_cfg;
8189 		struct mfg_cmd_tx_cont mfg_tx_cont;
8190 		struct mfg_cmd_tx_frame2 mfg_tx_frame2;
8191 		struct mfg_Cmd_HE_TBTx_t mfg_he_power;
8192 		HostCmd_DS_CMD_ARB_CONFIG arb_cfg;
8193 		HostCmd_DS_CMD_DOT11MC_UNASSOC_FTM_CFG dot11mc_unassoc_ftm_cfg;
8194 		HostCmd_DS_HAL_PHY_CFG hal_phy_cfg_params;
8195 		HostCmd_DS_IPS_CONFIG ips_cfg;
8196 		HostCmd_DS_MC_AGGR_CFG mc_aggr_cfg;
8197 		HostCmd_DS_STATS stats;
8198 		HostCmd_DS_GET_CH_LOAD ch_load;
8199 	} params;
8200 } MLAN_PACK_END HostCmd_DS_COMMAND, *pHostCmd_DS_COMMAND;
8201 
8202 /** PS_CMD_ConfirmSleep */
8203 typedef MLAN_PACK_START struct _OPT_Confirm_Sleep {
8204 	/** Command */
8205 	t_u16 command;
8206 	/** Size */
8207 	t_u16 size;
8208 	/** Sequence number */
8209 	t_u16 seq_num;
8210 	/** Result */
8211 	t_u16 result;
8212 	/** Action */
8213 	t_u16 action;
8214 	/** Sleep comfirm param definition */
8215 	sleep_confirm_param sleep_cfm;
8216 } MLAN_PACK_END OPT_Confirm_Sleep;
8217 
8218 typedef struct MLAN_PACK_START _opt_sleep_confirm_buffer {
8219 	/** Header for interface */
8220 	t_u32 hdr;
8221 	/** New power save command used to send
8222 	 *  sleep confirmation to the firmware */
8223 	OPT_Confirm_Sleep ps_cfm_sleep;
8224 } MLAN_PACK_END opt_sleep_confirm_buffer;
8225 
8226 typedef MLAN_PACK_START struct _MrvlIEtypes_Secure_Boot_Uuid_t {
8227 	/** Header */
8228 	MrvlIEtypesHeader_t header;
8229 
8230 	/** Secure boot uuid lower and higher 8 bytes */
8231 	t_u64 uuid_lo;
8232 	t_u64 uuid_hi;
8233 } MLAN_PACK_END MrvlIEtypes_Secure_Boot_Uuid_t;
8234 
8235 /** req host side download vdll block */
8236 #define VDLL_IND_TYPE_REQ 0
8237 /** notify vdll start offset in firmware image */
8238 #define VDLL_IND_TYPE_OFFSET 1
8239 /** notify vdll download error: signature error */
8240 #define VDLL_IND_TYPE_ERR_SIG 2
8241 /** notify vdll download error: ID error */
8242 #define VDLL_IND_TYPE_ERR_ID 3
8243 
8244 /** vdll indicate event structure */
8245 typedef MLAN_PACK_START struct _vdll_ind {
8246 	/*VDLL ind type*/
8247 	t_u16 type;
8248 	/*reserved*/
8249 	t_u16 reserved;
8250 	/*indicate the offset downloaded so far*/
8251 	t_u32 offset;
8252 	/*VDLL block size*/
8253 	t_u16 block_len;
8254 } MLAN_PACK_END vdll_ind, *pvdll_ind;
8255 #ifdef PRAGMA_PACK
8256 #pragma pack(pop)
8257 #endif
8258 
8259 #endif /* !_MLAN_FW_H_ */
8260