blob: ef3f2b00f9316f692c4a84e22e638d69bcdd513b [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lam842dad02014-02-18 18:44:02 -08002 * Copyright (c) 2011-2014 The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
23 * Copyright (c) 2011-2014 Qualcomm Atheros, Inc.
24 * All Rights Reserved.
25 * Qualcomm Atheros Confidential and Proprietary.
26 *
27 */
28
Kiran Kumar Lokere458d7322013-05-29 14:29:43 -070029
Jeff Johnson295189b2012-06-20 16:38:30 -070030/*
Jeff Johnson295189b2012-06-20 16:38:30 -070031 * This file sirMacProtDef.h contains the MAC/PHY protocol
32 * definitions used across various projects.
33 * Author: Chandra Modumudi
34 * Date: 02/27/02
35 * History:-
36 * Date Modified by Modification Information
37 * --------------------------------------------------------------------
38 *
39 */
40#ifndef __MAC_PROT_DEFS_H
41#define __MAC_PROT_DEFS_H
42
43#include "palTypes.h"
44#include "sirTypes.h"
Jeff Johnson62c27982013-02-27 17:53:55 -080045#include "wniCfgSta.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070046#include "aniCompiler.h"
47
48
49///Capability information related
50#define CAPABILITY_INFO_DELAYED_BA_BIT 14
51#define CAPABILITY_INFO_IMMEDIATE_BA_BIT 15
52
53/// 11d MAC defaults
54#define SIR_11B_CHANNEL_ID_BEGIN 1
55#define SIR_TOTAL_NUM_11B_CHANNELS 14
56#define SIR_11B_DEFAULT_MAX_TRANSMIT_POWER 20
57#define SIR_11A_CHANNEL_ID_BEGIN 240
58#define SIR_TOTAL_NUM_11A_CHANNELS 34
59#define SIR_11A_DEFAULT_MAX_TRANSMIT_POWER 16
60
61/// 11h MAC defaults
62#define SIR_11A_CHANNEL_BEGIN 34
63#define SIR_11A_CHANNEL_END 165
64#define SIR_11B_CHANNEL_BEGIN 1
65#define SIR_11B_CHANNEL_END 14
66#define SIR_11A_FREQUENCY_OFFSET 4
67#define SIR_11B_FREQUENCY_OFFSET 1
68
69
70#define PRIM_DEVICE_LEN (8)
71
72/// Maximum fragment size
73#define SIR_MAC_MAX_FRAG_SIZE 2398
74
75// maximum 802.11 PDU size
76#define SIR_MAC_MAX_PDU_SIZE 2346
77
78/// Length of the Frame Check Sum field at the end of every MAC frame
79#define SIR_MAC_FCS_LENGTH 4
80
81// Sizes of control frames
82#define SIR_MAC_ACK_SIZE 14
83#define SIR_MAC_CTS_SIZE 14
84#define SIR_MAC_RTS_SIZE 20
85#define SIR_MAC_BRQ_SIZE 24
86#define SIR_MAC_BACK_SIZE 26
87
88/// Current version of 802.11
89#define SIR_MAC_PROTOCOL_VERSION 0
90
91// Frame Type definitions
92
93#define SIR_MAC_MGMT_FRAME 0x0
94#define SIR_MAC_CTRL_FRAME 0x1
95#define SIR_MAC_DATA_FRAME 0x2
96
97#define SIR_MAC_FRAME_TYPE_START 0x0
98#define SIR_MAC_FRAME_TYPE_END 0x3
99
100// Control frame subtype definitions
101
102#define SIR_MAC_CTRL_RR 4
103#define SIR_MAC_CTRL_BAR 8
104#define SIR_MAC_CTRL_BA 9
105#define SIR_MAC_CTRL_PS_POLL 10
106#define SIR_MAC_CTRL_RTS 11
107#define SIR_MAC_CTRL_CTS 12
108#define SIR_MAC_CTRL_ACK 13
109#define SIR_MAC_CTRL_CF_END 14
110#define SIR_MAC_CTRL_CF_END_ACK 15
111
112#define GEN4_SCAN 1
113#ifdef GEN4_SCAN
114#define SIR_MAC_MAX_DURATION_MICRO_SECONDS 32767
115#endif // GEN4_SCAN
116
117// Data frame subtype definitions
118#define SIR_MAC_DATA_DATA 0
119#define SIR_MAC_DATA_DATA_ACK 1
120#define SIR_MAC_DATA_DATA_POLL 2
121#define SIR_MAC_DATA_DATA_ACK_POLL 3
122#define SIR_MAC_DATA_NULL 4
123#define SIR_MAC_DATA_NULL_ACK 5
124#define SIR_MAC_DATA_NULL_POLL 6
125#define SIR_MAC_DATA_NULL_ACK_POLL 7
126#define SIR_MAC_DATA_QOS_DATA 8
127#define SIR_MAC_DATA_QOS_DATA_ACK 9
128#define SIR_MAC_DATA_QOS_DATA_POLL 10
129#define SIR_MAC_DATA_QOS_DATA_ACK_POLL 11
130#define SIR_MAC_DATA_QOS_NULL 12
131#define SIR_MAC_DATA_QOS_NULL_ACK 13
132#define SIR_MAC_DATA_QOS_NULL_POLL 14
133#define SIR_MAC_DATA_QOS_NULL_ACK_POLL 15
134
135#define SIR_MAC_FRAME_SUBTYPE_START 0
136#define SIR_MAC_FRAME_SUBTYPE_END 16
137
138#define SIR_MAC_DATA_QOS_MASK 8
139#define SIR_MAC_DATA_NULL_MASK 4
140#define SIR_MAC_DATA_POLL_MASK 2
141#define SIR_MAC_DATA_ACK_MASK 1
142
143// Management frame subtype definitions
144
145#define SIR_MAC_MGMT_ASSOC_REQ 0x0
146#define SIR_MAC_MGMT_ASSOC_RSP 0x1
147#define SIR_MAC_MGMT_REASSOC_REQ 0x2
148#define SIR_MAC_MGMT_REASSOC_RSP 0x3
149#define SIR_MAC_MGMT_PROBE_REQ 0x4
150#define SIR_MAC_MGMT_PROBE_RSP 0x5
151#define SIR_MAC_MGMT_BEACON 0x8
152#define SIR_MAC_MGMT_ATIM 0x9
153#define SIR_MAC_MGMT_DISASSOC 0xA
154#define SIR_MAC_MGMT_AUTH 0xB
155#define SIR_MAC_MGMT_DEAUTH 0xC
156#define SIR_MAC_MGMT_ACTION 0xD
157#define SIR_MAC_MGMT_RESERVED15 0xF
158
159// Action frame categories
160
161#define SIR_MAC_ACTION_SPECTRUM_MGMT 0
162#define SIR_MAC_ACTION_QOS_MGMT 1
163#define SIR_MAC_ACTION_DLP 2
164#define SIR_MAC_ACTION_BLKACK 3
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800165#define SIR_MAC_ACTION_PUBLIC_USAGE 4
Jeff Johnson295189b2012-06-20 16:38:30 -0700166#if defined WLAN_FEATURE_VOWIFI
167#define SIR_MAC_ACTION_RRM 5
168#endif
169#define SIR_MAC_ACTION_HT 7
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800170#ifdef FEATURE_WLAN_TDLS
171#define SIR_MAC_ACTION_TDLS 12
Jeff Johnson295189b2012-06-20 16:38:30 -0700172#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800173#define SIR_MAC_ACTION_WME 17
Mohit Khanna4a70d262012-09-11 16:30:12 -0700174#ifdef WLAN_FEATURE_11AC
175#define SIR_MAC_ACTION_VHT 21
176#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700177
178// QoS management action codes
179
180#define SIR_MAC_QOS_ADD_TS_REQ 0
181#define SIR_MAC_QOS_ADD_TS_RSP 1
182#define SIR_MAC_QOS_DEL_TS_REQ 2
183#define SIR_MAC_QOS_SCHEDULE 3
184// and these are proprietary
185#define SIR_MAC_QOS_DEF_BA_REQ 4
186#define SIR_MAC_QOS_DEF_BA_RSP 5
187#define SIR_MAC_QOS_DEL_BA_REQ 6
188#define SIR_MAC_QOS_DEL_BA_RSP 7
189
190#ifdef ANI_SUPPORT_11H
191// Spectrum management action codes
192#define SIR_MAC_ACTION_MEASURE_REQUEST_ID 0
193#define SIR_MAC_ACTION_MEASURE_REPORT_ID 1
194#define SIR_MAC_ACTION_TPC_REQUEST_ID 2
195#define SIR_MAC_ACTION_TPC_REPORT_ID 3
196#endif //ANI_SUPPORT_11H
197#define SIR_MAC_ACTION_CHANNEL_SWITCH_ID 4
198
199
200#ifdef ANI_SUPPORT_11H
201// Measurement Request/Report Type
202#define SIR_MAC_BASIC_MEASUREMENT_TYPE 0
203#define SIR_MAC_CCA_MEASUREMENT_TYPE 1
204#define SIR_MAC_RPI_MEASUREMENT_TYPE 2
205#endif //ANI_SUPPORT_11H
206
207//RRM related.
208//Refer IEEE Std 802.11k-2008, Section 7.3.2.21, table 7.29
209#if defined WLAN_FEATURE_VOWIFI
210
211#define SIR_MAC_RRM_CHANNEL_LOAD_TYPE 3
212#define SIR_MAC_RRM_NOISE_HISTOGRAM_BEACON 4
213#define SIR_MAC_RRM_BEACON_TYPE 5
214#define SIR_MAC_RRM_FRAME_TYPE 6
215#define SIR_MAC_RRM_STA_STATISTICS_TYPE 7
216#define SIR_MAC_RRM_LCI_TYPE 8
217#define SIR_MAC_RRM_TSM_TYPE 9
218
219//RRM action codes
220#define SIR_MAC_RRM_RADIO_MEASURE_REQ 0
221#define SIR_MAC_RRM_RADIO_MEASURE_RPT 1
222#define SIR_MAC_RRM_LINK_MEASUREMENT_REQ 2
223#define SIR_MAC_RRM_LINK_MEASUREMENT_RPT 3
224#define SIR_MAC_RRM_NEIGHBOR_REQ 4
225#define SIR_MAC_RRM_NEIGHBOR_RPT 5
226
227#endif
228
Mohit Khanna4a70d262012-09-11 16:30:12 -0700229//VHT Action Field
230#ifdef WLAN_FEATURE_11AC
231#define SIR_MAC_VHT_OPMODE_NOTIFICATION 2
232#endif
233
Jeff Johnson295189b2012-06-20 16:38:30 -0700234// HT Action Field Codes
235#define SIR_MAC_SM_POWER_SAVE 1
236
237// DLP action frame types
238#define SIR_MAC_DLP_REQ 0
239#define SIR_MAC_DLP_RSP 1
240#define SIR_MAC_DLP_TEARDOWN 2
241
242// block acknowledgement action frame types
243#define SIR_MAC_BLKACK_ADD_REQ 0
244#define SIR_MAC_BLKACK_ADD_RSP 1
245#define SIR_MAC_BLKACK_DEL 2
Jeff Johnson295189b2012-06-20 16:38:30 -0700246#define SIR_MAC_ACTION_VENDOR_SPECIFIC 9
247#define SIR_MAC_ACTION_VENDOR_SPECIFIC_CATEGORY 0x7F
248#define SIR_MAC_ACTION_P2P_SUBTYPE_PRESENCE_RSP 2
Jeff Johnson295189b2012-06-20 16:38:30 -0700249
250#ifdef WLAN_FEATURE_11W
251//11w SA query request/response action frame category code
Chet Lanctot186b5732013-03-18 10:26:30 -0700252#define SIR_MAC_ACTION_SA_QUERY 8
253#define SIR_MAC_SA_QUERY_REQ 0
254#define SIR_MAC_SA_QUERY_RSP 1
Jeff Johnson295189b2012-06-20 16:38:30 -0700255#endif
256
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800257#ifdef FEATURE_WLAN_TDLS
258#define SIR_MAC_TDLS_SETUP_REQ 0
259#define SIR_MAC_TDLS_SETUP_RSP 1
260#define SIR_MAC_TDLS_SETUP_CNF 2
261#define SIR_MAC_TDLS_TEARDOWN 3
262#define SIR_MAC_TDLS_PEER_TRAFFIC_IND 4
263#define SIR_MAC_TDLS_CH_SWITCH_REQ 5
264#define SIR_MAC_TDLS_CH_SWITCH_RSP 6
265#define SIR_MAC_TDLS_PEER_TRAFFIC_RSP 9
266#define SIR_MAC_TDLS_DIS_REQ 10
267#define SIR_MAC_TDLS_DIS_RSP 14
268#endif
269
Jeff Johnson295189b2012-06-20 16:38:30 -0700270#define SIR_MAC_MAX_RANDOM_LENGTH 2306
271
272//-----------------------------------------------------------------------------
273// EID (Element ID) definitions
274// and their min/max lengths
275//-----------------------------------------------------------------------------
276
277#define SIR_MAC_SSID_EID 0
278#define SIR_MAC_SSID_EID_MIN 0
279#define SIR_MAC_SSID_EID_MAX 32
280#define SIR_MAC_RATESET_EID 1
281#define SIR_MAC_RATESET_EID_MIN 1
282#define SIR_MAC_RATESET_EID_MAX 12
283#define SIR_MAC_FH_PARAM_SET_EID 2
284#define SIR_MAC_FH_PARAM_SET_EID_MIN 5
285#define SIR_MAC_FH_PARAM_SET_EID_MAX 5
286#define SIR_MAC_DS_PARAM_SET_EID 3
287#define SIR_MAC_DS_PARAM_SET_EID_MIN 1
288#define SIR_MAC_DS_PARAM_SET_EID_MAX 1
289#define SIR_MAC_CF_PARAM_SET_EID 4
290#define SIR_MAC_CF_PARAM_SET_EID_MIN 6
291#define SIR_MAC_CF_PARAM_SET_EID_MAX 6
292#define SIR_MAC_TIM_EID 5
293#define SIR_MAC_TIM_EID_MIN 3
294#define SIR_MAC_TIM_EID_MAX 254
295#define SIR_MAC_IBSS_PARAM_SET_EID 6
296#define SIR_MAC_IBSS_PARAM_SET_EID_MIN 2
297#define SIR_MAC_IBSS_PARAM_SET_EID_MAX 2
298#define SIR_MAC_COUNTRY_EID 7
299#define SIR_MAC_COUNTRY_EID_MIN 6
300#define SIR_MAC_COUNTRY_EID_MAX 254
301#define SIR_MAC_FH_PARAMS_EID 8
302#define SIR_MAC_FH_PARAMS_EID_MIN 4
303#define SIR_MAC_FH_PARAMS_EID_MAX 4
304#define SIR_MAC_FH_PATTERN_EID 9
305#define SIR_MAC_FH_PATTERN_EID_MIN 4
306#define SIR_MAC_FH_PATTERN_EID_MAX 254
307#define SIR_MAC_REQUEST_EID 10
308#define SIR_MAC_REQUEST_EID_MIN 1
309#define SIR_MAC_REQUEST_EID_MAX 255
310#define SIR_MAC_QBSS_LOAD_EID 11
311#define SIR_MAC_QBSS_LOAD_EID_MIN 5
312#define SIR_MAC_QBSS_LOAD_EID_MAX 5
313#define SIR_MAC_EDCA_PARAM_SET_EID 12 // EDCA parameter set
314#define SIR_MAC_EDCA_PARAM_SET_EID_MIN 18
315#define SIR_MAC_EDCA_PARAM_SET_EID_MAX 20 // TBD temp - change backto 18
316#define SIR_MAC_TSPEC_EID 13
317#define SIR_MAC_TSPEC_EID_MIN 55
318#define SIR_MAC_TSPEC_EID_MAX 55
319#define SIR_MAC_TCLAS_EID 14
320#define SIR_MAC_TCLAS_EID_MIN 4
321#define SIR_MAC_TCLAS_EID_MAX 255
322#define SIR_MAC_QOS_SCHEDULE_EID 15
323#define SIR_MAC_QOS_SCHEDULE_EID_MIN 14
324#define SIR_MAC_QOS_SCHEDULE_EID_MAX 14
325#define SIR_MAC_CHALLENGE_TEXT_EID 16
326#define SIR_MAC_CHALLENGE_TEXT_EID_MIN 1
327#define SIR_MAC_CHALLENGE_TEXT_EID_MAX 253
328// reserved 17-31
329#define SIR_MAC_PWR_CONSTRAINT_EID 32
330#define SIR_MAC_PWR_CONSTRAINT_EID_MIN 1
331#define SIR_MAC_PWR_CONSTRAINT_EID_MAX 1
332#define SIR_MAC_PWR_CAPABILITY_EID 33
333#define SIR_MAC_PWR_CAPABILITY_EID_MIN 2
334#define SIR_MAC_PWR_CAPABILITY_EID_MAX 2
335#define SIR_MAC_TPC_REQ_EID 34
336#define SIR_MAC_TPC_REQ_EID_MIN 0
337#define SIR_MAC_TPC_REQ_EID_MAX 255
338// SIR_MAC_EXTENDED_CAP_EID 35
339#define SIR_MAC_TPC_RPT_EID 35
340#define SIR_MAC_TPC_RPT_EID_MIN 2
341#define SIR_MAC_TPC_RPT_EID_MAX 2
342#define SIR_MAC_SPRTD_CHNLS_EID 36
343#define SIR_MAC_SPRTD_CHNLS_EID_MIN 2
344#define SIR_MAC_SPRTD_CHNLS_EID_MAX 254
345#define SIR_MAC_CHNL_SWITCH_ANN_EID 37
346#define SIR_MAC_CHNL_SWITCH_ANN_EID_MIN 3
347#define SIR_MAC_CHNL_SWITCH_ANN_EID_MAX 3
348#define SIR_MAC_MEAS_REQ_EID 38
349#define SIR_MAC_MEAS_REQ_EID_MIN 3
350#define SIR_MAC_MEAS_REQ_EID_MAX 255
351#define SIR_MAC_MEAS_RPT_EID 39
352#define SIR_MAC_MEAS_RPT_EID_MIN 3
353#define SIR_MAC_MEAS_RPT_EID_MAX 255
354#define SIR_MAC_QUIET_EID 40
355#define SIR_MAC_QUIET_EID_MIN 6
356#define SIR_MAC_QUIET_EID_MAX 6
357#define SIR_MAC_IBSS_DFS_EID 41
358#define SIR_MAC_IBSS_DFS_EID_MIN 7
359#define SIR_MAC_IBSS_DFS_EID_MAX 255
360#define SIR_MAC_ERP_INFO_EID 42
361#define SIR_MAC_ERP_INFO_EID_MIN 0
362#define SIR_MAC_ERP_INFO_EID_MAX 255
363#define SIR_MAC_TS_DELAY_EID 43
364#define SIR_MAC_TS_DELAY_EID_MIN 4
365#define SIR_MAC_TS_DELAY_EID_MAX 4
366#define SIR_MAC_TCLAS_PROC_EID 44
367#define SIR_MAC_TCLAS_PROC_EID_MIN 1
368#define SIR_MAC_TCLAS_PROC_EID_MAX 1
369#define SIR_MAC_QOS_CAPABILITY_EID 46
370#define SIR_MAC_QOS_CAPABILITY_EID_MIN 1
371#define SIR_MAC_QOS_CAPABILITY_EID_MAX 1
372#define SIR_MAC_RSN_EID 48
373#define SIR_MAC_RSN_EID_MIN 4
374#define SIR_MAC_RSN_EID_MAX 254
375
376//using reserved EID for Qos Action IE for now,
377//need to check 11e spec for the actual EID
378#define SIR_MAC_QOS_ACTION_EID 49
379#define SIR_MAC_QOS_ACTION_EID_MIN 4
380#define SIR_MAC_QOS_ACTION_EID_MAX 255
381#define SIR_MAC_EXTENDED_RATE_EID 50
382#define SIR_MAC_EXTENDED_RATE_EID_MIN 0
383#define SIR_MAC_EXTENDED_RATE_EID_MAX 255
Srinivas Girigowda91ccbe82013-11-10 16:37:38 -0800384// reserved 51-69
385#define SIR_MAC_RM_ENABLED_CAPABILITY_EID 70
386#define SIR_MAC_RM_ENABLED_CAPABILITY_EID_MIN 5
387#define SIR_MAC_RM_ENABLED_CAPABILITY_EID_MAX 5
388// reserved 71-220
Jeff Johnson295189b2012-06-20 16:38:30 -0700389#define SIR_MAC_WPA_EID 221
390#define SIR_MAC_WPA_EID_MIN 0
391#define SIR_MAC_WPA_EID_MAX 255
392
393#define SIR_MAC_EID_VENDOR 221
394
395// reserved 222-254
396#define SIR_MAC_HT_CAPABILITIES_EID 45
397#define SIR_MAC_HT_CAPABILITIES_EID_MIN 0
398#define SIR_MAC_HT_CAPABILITIES_EID_MAX 255
399#define SIR_MAC_HT_INFO_EID 61
400#define SIR_MAC_HT_INFO_EID_MIN 0
401#define SIR_MAC_HT_INFO_EID_MAX 255
Sandeep Puligilla11d49a62014-01-30 12:05:16 +0530402#define SIR_MAC_OBSS_SCAN_PARAMETERS_EID 74
Jeff Johnson295189b2012-06-20 16:38:30 -0700403
Jeff Johnsone7245742012-09-05 17:12:55 -0700404#ifdef WLAN_FEATURE_11AC
405#define SIR_MAC_VHT_CAPABILITIES_EID 191
406#define SIR_MAC_VHT_OPERATION_EID 192
407#define SIR_MAC_VHT_EXT_BSS_LOAD_EID 193
Mohit Khanna4a70d262012-09-11 16:30:12 -0700408#define SIR_MAC_VHT_OPMODE_EID 199
Jeff Johnsone7245742012-09-05 17:12:55 -0700409#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700410#define SIR_MAC_MAX_SUPPORTED_MCS_SET 16
411
412/// Workaround IE to change beacon length when it is 4*n+1
413#define SIR_MAC_ANI_WORKAROUND_EID 255
414#define SIR_MAC_ANI_WORKAROUND_EID_MIN 0
415#define SIR_MAC_ANI_WORKAROUND_EID_MAX 255
416
417/// Maximum length of each IE
418#define SIR_MAC_MAX_IE_LENGTH 255
419
420/// Maximum length of each IE
421#define SIR_MAC_RSN_IE_MAX_LENGTH 255
422#define SIR_MAC_WPA_IE_MAX_LENGTH 255
423/// Minimum length of each IE
424#define SIR_MAC_RSN_IE_MIN_LENGTH 2
425#define SIR_MAC_WPA_IE_MIN_LENGTH 6
426
427#ifdef FEATURE_WLAN_CCX
428#define CCX_VERSION_4 4
429#define CCX_VERSION_SUPPORTED CCX_VERSION_4
430
431// When station sends Radio Management Cap.
432// State should be normal=1
433// Mbssid Mask should be 0
434#define RM_STATE_NORMAL 1
435#endif
436
437#define SIR_MAC_OUI_VERSION_1 1
438
439// OUI and type definition for WPA IE in network byte order
440#define SIR_MAC_WPA_OUI 0x01F25000
441#define SIR_MAC_WME_OUI 0x02F25000
442#define SIR_MAC_WSM_OUI SIR_MAC_WME_OUI
443#define SIR_MAC_WSC_OUI "\x00\x50\xf2\x04"
444#define SIR_MAC_WSC_OUI_SIZE 4
Jeff Johnson295189b2012-06-20 16:38:30 -0700445#define SIR_MAC_P2P_OUI "\x50\x6f\x9a\x09"
446#define SIR_MAC_P2P_OUI_SIZE 4
447#define SIR_P2P_NOA_ATTR 12
448#define SIR_MAX_NOA_ATTR_LEN 31
449#define SIR_MAX_NOA_DESCR 2
450#define SIR_P2P_IE_HEADER_LEN 6
Jeff Johnson295189b2012-06-20 16:38:30 -0700451
Agarwal Ashish87039eb2014-01-15 14:13:15 +0530452#define SIR_MAC_CISCO_OUI "\x00\x40\x96"
453#define SIR_MAC_CISCO_OUI_SIZE 3
454
Jeff Johnson295189b2012-06-20 16:38:30 -0700455// min size of wme oui header: oui(3) + type + subtype + version
456#define SIR_MAC_OUI_WME_HDR_MIN 6
457
458// OUI subtype and their lengths
459#define SIR_MAC_OUI_SUBTYPE_WME_INFO 0
460#define SIR_MAC_OUI_WME_INFO_MIN 7
461#define SIR_MAC_OUI_WME_INFO_MAX 7
462
463#define SIR_MAC_OUI_SUBTYPE_WME_PARAM 1
464#define SIR_MAC_OUI_WME_PARAM_MIN 24
465#define SIR_MAC_OUI_WME_PARAM_MAX 24
466
467#define SIR_MAC_OUI_SUBTYPE_WME_TSPEC 2
468#define SIR_MAC_OUI_WME_TSPEC_MIN 61
469#define SIR_MAC_OUI_WME_TSPEC_MAX 61
470
471#define SIR_MAC_OUI_SUBTYPE_WSM_TSPEC 2 // same as WME TSPEC
472#define SIR_MAC_OUI_WSM_TSPEC_MIN 61
473#define SIR_MAC_OUI_WSM_TSPEC_MAX 61
474
475// reserved subtypes 3-4
476// WSM capability
477#define SIR_MAC_OUI_SUBTYPE_WSM_CAPABLE 5
478#define SIR_MAC_OUI_WSM_CAPABLE_MIN 7
479#define SIR_MAC_OUI_WSM_CAPABLE_MAX 7
480// WSM classifier
481#define SIR_MAC_OUI_SUBTYPE_WSM_TCLAS 6
482#define SIR_MAC_OUI_WSM_TCLAS_MIN 10
483#define SIR_MAC_OUI_WSM_TCLAS_MAX 255
484// classifier processing element
485#define SIR_MAC_OUI_SUBTYPE_WSM_TCLASPROC 7
486#define SIR_MAC_OUI_WSM_TCLASPROC_MIN 7
487#define SIR_MAC_OUI_WSM_TCLASPROC_MAX 7
488// tspec delay element
489#define SIR_MAC_OUI_SUBTYPE_WSM_TSDELAY 8
490#define SIR_MAC_OUI_WSM_TSDELAY_MIN 10
491#define SIR_MAC_OUI_WSM_TSDELAY_MAX 10
492// schedule element
493#define SIR_MAC_OUI_SUBTYPE_WSM_SCHEDULE 9
494#define SIR_MAC_OUI_WSM_SCHEDULE_MIN 20
495#define SIR_MAC_OUI_WSM_SCHEDULE_MAX 20
496
497#ifdef WLAN_NS_OFFLOAD
Gopichand Nakkala746a9452013-06-11 12:45:54 +0530498#define SIR_MAC_NS_OFFLOAD_SIZE 1 //support only one IPv6 offload
Jeff Johnson295189b2012-06-20 16:38:30 -0700499#define SIR_MAC_NUM_TARGET_IPV6_NS_OFFLOAD_NA 2 //Number of target IP in NA frames. It must be at least 2
Gopichand Nakkala746a9452013-06-11 12:45:54 +0530500#define SIR_MAC_IPV6_ADDR_LEN 16
501#define SIR_IPV6_ADDR_VALID 1
Jeff Johnson295189b2012-06-20 16:38:30 -0700502#endif //WLAN_NS_OFFLOAD
503#define SIR_MAC_ARP_OFFLOAD_SIZE 1
504
505// total length of an Info element including T/L fields
506#define EID_LEN(eid) (2 + (eid))
507
508// support for radar Detect, Channel Switch
509#define CHANNEL_SWITCH_MAX_FRAME_SIZE 256
510
511
512// Length of Channel Switch related message
Jeff Johnsone7245742012-09-05 17:12:55 -0700513#define SIR_SME_CHANNEL_SWITCH_SIZE (sizeof(tANI_U8) + 2 *sizeof(tANI_U16) + sizeof(tANI_U32) + sizeof(ePhyChanBondState))
Jeff Johnson295189b2012-06-20 16:38:30 -0700514#define SIR_CHANNEL_SWITCH_IE_SIZE EID_LEN(SIR_MAC_CHNL_SWITCH_ANN_EID_MIN)
515
516//Measurement Request/Report messages
517#define SIR_MEAS_REQ_FIELD_SIZE 11
518#define SIR_MEAS_REQ_IE_SIZE (5 + SIR_MEAS_REQ_FIELD_SIZE)
519#define SIR_MEAS_REQ_ACTION_FRAME_SIZE (3 + SIR_MEAS_REQ_IE_SIZE)
520#define SIR_MEAS_MAX_FRAME_SIZE 256
521#define SIR_MEAS_REPORT_MIN_FRAME_SIZE (3 + EID_LEN(SIR_MAC_MEAS_RPT_EID_MIN))
522
523#define SIR_MAC_SET_MEAS_REQ_ENABLE(x) (((tANI_U8) x) | 2)
524#define SIR_MAC_SET_MEAS_REQ_REQUEST(x) (((tANI_U8) x) | 4)
525#define SIR_MAC_SET_MEAS_REQ_REPORT(x) (((tANI_U8) x) | 8)
526
527#define SIR_MAC_SET_MEAS_REPORT_LATE(x) (((tANI_U8) x) | 1)
528#define SIR_MAC_SET_MEAS_REPORT_INCAPABLE(x) (((tANI_U8) x) | 2)
529#define SIR_MAC_SET_MEAS_REPORT_REFUSE(x) (((tANI_U8) x) | 4)
530
531// Length of TPC Request Action Frame
532#define SIR_TPC_REQ_ACTION_FRAME_SIZE (3 + EID_LEN(SIR_MAC_TPC_REQ_EID_MIN))
533#define SIR_TPC_REPORT_ACTION_FRAME_SIZE (3 + EID_LEN(SIR_MAC_TPC_RPT_EID_MIN))
534#define SIR_TPC_MAX_FRAME_SIZE 256
535//-----------------------------------------------------------------------------
536
537// OFFSET definitions for fixed fields in Management frames
538
539// Beacon/Probe Response offsets
540#define SIR_MAC_TS_OFFSET 0
541#define SIR_MAC_BEACON_INT_OFFSET 8 // Beacon Interval offset
542#define SIR_MAC_B_PR_CAPAB_OFFSET 10
543#define SIR_MAC_B_PR_SSID_OFFSET 12
544
545// Association/Reassociation offsets
546#define SIR_MAC_ASSOC_CAPAB_OFFSET 0
547#define SIR_MAC_LISTEN_INT_OFFSET 2 // Listen Interval offset
548#define SIR_MAC_ASSOC_SSID_OFFSET 4
549#define SIR_MAC_CURRENT_AP_OFFSET 4
550#define SIR_MAC_REASSOC_SSID_OFFSET 10
551#define SIR_MAC_ASSOC_STATUS_CODE_OFFSET 2
552#define SIR_MAC_ASSOC_AID_OFFSET 4
553#define SIR_MAC_ASSOC_RSP_RATE_OFFSET 6
554
555// Disassociation/Deauthentication offsets
556#define SIR_MAC_REASON_CODE_OFFSET 0
557
558// Probe Request offset
559#define SIR_MAC_PROBE_REQ_SSID_OFFSET 0
560
561// Authentication offsets
562#define SIR_MAC_AUTH_ALGO_OFFSET 0
563#define SIR_MAC_AUTH_XACT_SEQNUM_OFFSET 2
564#define SIR_MAC_AUTH_STATUS_CODE_OFFSET 4
565#define SIR_MAC_AUTH_CHALLENGE_OFFSET 6
566
567/// Transaction sequence number definitions (used in Authentication frames)
568#define SIR_MAC_AUTH_FRAME_1 1
569#define SIR_MAC_AUTH_FRAME_2 2
570#define SIR_MAC_AUTH_FRAME_3 3
571#define SIR_MAC_AUTH_FRAME_4 4
572
573/// Protocol defined MAX definitions
574#define SIR_MAC_ADDR_LENGTH 6
575#define SIR_MAC_MAX_SSID_LENGTH 32
576#define SIR_MAC_MAX_NUMBER_OF_RATES 12
577#define SIR_MAC_MAX_NUM_OF_DEFAULT_KEYS 4
578#define SIR_MAC_KEY_LENGTH 13 // WEP Maximum key length size
579#define SIR_MAC_AUTH_CHALLENGE_LENGTH 128
580#define SIR_MAC_WEP_IV_LENGTH 4
581#define SIR_MAC_WEP_ICV_LENGTH 4
582
583/// MAX key length when ULA is used
584#define SIR_MAC_MAX_KEY_LENGTH 32
585
586/// Macro definitions for get/set on FC fields
587#define SIR_MAC_GET_PROT_VERSION(x) ((((tANI_U16) x) & 0x0300) >> 8)
588#define SIR_MAC_GET_FRAME_TYPE(x) ((((tANI_U16) x) & 0x0C00) >> 8)
589#define SIR_MAC_GET_FRAME_SUB_TYPE(x) ((((tANI_U16) x) & 0xF000) >> 12)
590#define SIR_MAC_GET_WEP_BIT_IN_FC(x) (((tANI_U16) x) & 0x0040)
591#define SIR_MAC_SET_PROT_VERSION(x) ((tANI_U16) x)
592#define SIR_MAC_SET_FRAME_TYPE(x) (((tANI_U16) x) << 2)
593#define SIR_MAC_SET_FRAME_SUB_TYPE(x) (((tANI_U16) x) << 4)
594#define SIR_MAC_SET_WEP_BIT_IN_FC(x) (((tANI_U16) x) << 14)
595
596/// Macro definitions for get/set on capabilityInfo bits
597#define SIR_MAC_GET_ESS(x) (((tANI_U16) x) & 0x0001)
598#define SIR_MAC_GET_IBSS(x) ((((tANI_U16) x) & 0x0002) >> 1)
599#define SIR_MAC_GET_CF_POLLABLE(x) ((((tANI_U16) x) & 0x0004) >> 2)
600#define SIR_MAC_GET_CF_POLL_REQ(x) ((((tANI_U16) x) & 0x0008) >> 3)
601#define SIR_MAC_GET_PRIVACY(x) ((((tANI_U16) x) & 0x0010) >> 4)
602#define SIR_MAC_GET_SHORT_PREAMBLE(x) ((((tANI_U16) x) & 0x0020) >> 5)
603#define SIR_MAC_GET_SPECTRUM_MGMT(x) ((((tANI_U16) x) & 0x0100) >> 8)
604#define SIR_MAC_GET_QOS(x) ((((tANI_U16) x) & 0x0200) >> 9)
605#define SIR_MAC_GET_SHORT_SLOT_TIME(x) ((((tANI_U16) x) & 0x0400) >> 10)
606#define SIR_MAC_GET_APSD(x) ((((tANI_U16) x) & 0x0800) >> 11)
607#if defined WLAN_FEATURE_VOWIFI
608#define SIR_MAC_GET_RRM(x) ((((tANI_U16) x) & 0x1000) >> 12)
609#endif
610#define SIR_MAC_GET_BLOCK_ACK(x) ((((tANI_U16) x) & 0xc000) >> CAPABILITY_INFO_DELAYED_BA_BIT)
611#define SIR_MAC_SET_ESS(x) (((tANI_U16) x) | 0x0001)
612#define SIR_MAC_SET_IBSS(x) (((tANI_U16) x) | 0x0002)
613#define SIR_MAC_SET_CF_POLLABLE(x) (((tANI_U16) x) | 0x0004)
614#define SIR_MAC_SET_CF_POLL_REQ(x) (((tANI_U16) x) | 0x0008)
615#define SIR_MAC_SET_PRIVACY(x) (((tANI_U16) x) | 0x0010)
616#define SIR_MAC_SET_SHORT_PREAMBLE(x) (((tANI_U16) x) | 0x0020)
617#define SIR_MAC_SET_SPECTRUM_MGMT(x) (((tANI_U16) x) | 0x0100)
618#define SIR_MAC_SET_QOS(x) (((tANI_U16) x) | 0x0200)
619#define SIR_MAC_SET_SHORT_SLOT_TIME(x) (((tANI_U16) x) | 0x0400)
620#define SIR_MAC_SET_APSD(x) (((tANI_U16) x) | 0x0800)
621#if defined WLAN_FEATURE_VOWIFI
622#define SIR_MAC_SET_RRM(x) (((tANI_U16) x) | 0x1000)
623#endif
624#define SIR_MAC_SET_GROUP_ACK(x) (((tANI_U16) x) | 0x4000)
625
626// bitname must be one of the above, eg ESS, CF_POLLABLE, etc.
627#define SIR_MAC_CLEAR_CAPABILITY(u16value, bitname) \
Madan Mohan Koyyalamudia53c4dc2012-11-13 10:35:42 -0800628 ((u16value) &= (~(SIR_MAC_SET_##bitname(0))))
Jeff Johnson295189b2012-06-20 16:38:30 -0700629
Srinivas Girigowdaad34ca92013-10-22 10:54:29 -0700630#define IS_WES_MODE_ENABLED(x) \
631 ((x)->roam.configParam.isWESModeEnabled)
632
Kiran Kumar Lokere458d7322013-05-29 14:29:43 -0700633#define BA_RECIPIENT 1
634#define BA_INITIATOR 2
635#define BA_BOTH_DIRECTIONS 3
636
Jeff Johnson295189b2012-06-20 16:38:30 -0700637/// Status Code (present in Management response frames) enum
638
639typedef enum eSirMacStatusCodes
640{
641 eSIR_MAC_SUCCESS_STATUS = 0, //Reserved
642 eSIR_MAC_UNSPEC_FAILURE_STATUS = 1, //Unspecified reason
643 // 802.11 reserved 2-9
644 /*
645 WMM status codes(standard 1.1 table 9)
646 Table 9 ADDTS Response Status Codes
647 Value Operation
648 0 Admission accepted
649 1 Invalid parameters
650 2 Reserved
651 3 Refused
652 4-255 Reserved
653 */
654 eSIR_MAC_WME_INVALID_PARAMS_STATUS = 1, // ??
655 eSIR_MAC_WME_REFUSED_STATUS = 3, // ??
656 eSIR_MAC_CAPABILITIES_NOT_SUPPORTED_STATUS = 10, //Cannot support all requested capabilities in the Capability Information field
657 eSIR_MAC_INABLITY_TO_CONFIRM_ASSOC_STATUS = 11, //Reassociation denied due to inability to confirm that association exists
658 eSIR_MAC_OUTSIDE_SCOPE_OF_SPEC_STATUS = 12, //Association denied due to reason outside the scope of this standard
659 eSIR_MAC_AUTH_ALGO_NOT_SUPPORTED_STATUS = 13, //Responding station does not support the specified authentication algorithm
660 eSIR_MAC_AUTH_FRAME_OUT_OF_SEQ_STATUS = 14, //Received an Authentication frame with authentication transaction sequence number
661 //out of expected sequence
662 eSIR_MAC_CHALLENGE_FAILURE_STATUS = 15, //Authentication rejected because of challenge failure
663 eSIR_MAC_AUTH_RSP_TIMEOUT_STATUS = 16, //Authentication rejected due to timeout waiting for next frame in sequence
664 eSIR_MAC_MAX_ASSOC_STA_REACHED_STATUS = 17, //Association denied because AP is unable to handle additional associated stations
665 eSIR_MAC_BASIC_RATES_NOT_SUPPORTED_STATUS = 18, //Association denied due to requesting station not supporting all of the data rates in the
666 //BSSBasicRateSet parameter
667 eSIR_MAC_SHORT_PREAMBLE_NOT_SUPPORTED_STATUS = 19, //Association denied due to requesting station not supporting the short preamble
668 //option
669 eSIR_MAC_PBCC_NOT_SUPPORTED_STATUS = 20, //Association denied due to requesting station not supporting the PBCC modulation
670 //option
671 eSIR_MAC_CHANNEL_AGILITY_NOT_SUPPORTED_STATUS = 21, //Association denied due to requesting station not supporting the Channel Agility
672 //option
673 eSIR_MAC_SPECTRUM_MGMT_REQD_STATUS = 22, //Association request rejected because Spectrum Management capability is required
674 eSIR_MAC_PWR_CAPABILITY_BAD_STATUS = 23, //Association request rejected because the information in the Power Capability
675 //element is unacceptable
676 eSIR_MAC_SPRTD_CHANNELS_BAD_STATUS = 24, //Association request rejected because the information in the Supported Channels
677 //element is unacceptable
678 eSIR_MAC_SHORT_SLOT_NOT_SUPORTED_STATUS = 25, //Association denied due to requesting station not supporting the Short Slot Time
679 //option
680 eSIR_MAC_DSSS_OFDM_NOT_SUPPORTED_STATUS = 26, //Association denied due to requesting station not supporting the DSSS-OFDM option
681 // reserved 27-31
682 eSIR_MAC_QOS_UNSPECIFIED_FAILURE_STATUS = 32, //Unspecified, QoS-related failure
683 eSIR_MAC_QAP_NO_BANDWIDTH_STATUS = 33, //Association denied because QoS AP has insufficient bandwidth to handle another
684 //QoS STA
685 eSIR_MAC_XS_FRAME_LOSS_STATUS = 34, //Association denied due to excessive frame loss rates and/or poor conditions on cur-
686 //rent operating channel
687 eSIR_MAC_STA_QOS_NOT_SUPPORTED_STATUS = 35, //Association (with QoS BSS) denied because the requesting STA does not support the
688 //QoS facility
689 eSIR_MAC_STA_BLK_ACK_NOT_SUPPORTED_STATUS = 36, //Reserved
690 eSIR_MAC_REQ_DECLINED_STATUS = 37, //The request has been declined
691 eSIR_MAC_INVALID_PARAM_STATUS = 38, //The request has not been successful as one or more parameters have invalid values
692 eSIR_MAC_TS_NOT_HONOURED_STATUS = 39, //The TS has not been created because the request cannot be honored; however, a suggested
693 //TSPEC is provided so that the initiating STA may attempt to set another TS
694 //with the suggested changes to the TSPEC
695 eSIR_MAC_INVALID_INFORMATION_ELEMENT_STATUS = 40, //Invalid information element, i.e., an information element defined in this standard for
696 //which the content does not meet the specifications in Clause 7
697 eSIR_MAC_INVALID_GROUP_CIPHER_STATUS = 41, //Invalid group cipher
698 eSIR_MAC_INVALID_PAIRWISE_CIPHER_STATUS = 42, //Invalid pairwise cipher
699 eSIR_MAC_INVALID_AKMP_STATUS = 43, //Invalid AKMP
700 eSIR_MAC_UNSUPPORTED_RSN_IE_VERSION_STATUS = 44, //Unsupported RSN information element version
701 eSIR_MAC_INVALID_RSN_IE_CAPABILITIES_STATUS = 45, //Invalid RSN information element capabilities
702 eSIR_MAC_CIPHER_SUITE_REJECTED_STATUS = 46, //Cipher suite rejected because of security policy
703 eSIR_MAC_TS_NOT_CREATED_STATUS = 47, //The TS has not been created; however, the HC may be capable of creating a TS, in
704 //response to a request, after the time indicated in the TS Delay element
705 eSIR_MAC_DL_NOT_ALLOWED_STATUS = 48, //Direct link is not allowed in the BSS by policy
706 eSIR_MAC_DEST_STA_NOT_KNOWN_STATUS = 49, //The Destination STA is not present within this BSS
707 eSIR_MAC_DEST_STA_NOT_QSTA_STATUS = 50, //The Destination STA is not a QoS STA
708 eSIR_MAC_INVALID_LISTEN_INTERVAL_STATUS = 51, //Association denied because the ListenInterval is too large
709
710 eSIR_MAC_DSSS_CCK_RATE_MUST_SUPPORT_STATUS = 52, //FIXME:
711 eSIR_MAC_DSSS_CCK_RATE_NOT_SUPPORT_STATUS = 53,
712 eSIR_MAC_PSMP_CONTROLLED_ACCESS_ONLY_STATUS = 54,
713#ifdef FEATURE_WLAN_CCX
714 eSIR_MAC_CCX_UNSPECIFIED_QOS_FAILURE_STATUS = 200, //CCX-Unspecified, QoS related failure in (Re)Assoc response frames
715 eSIR_MAC_CCX_TSPEC_REQ_REFUSED_STATUS = 201, //CCX-TSPEC request refused due to AP's policy configuration in AddTs Rsp, (Re)Assoc Rsp.
716 eSIR_MAC_CCX_ASSOC_DENIED_INSUFF_BW_STATUS = 202, //CCX-Assoc denied due to insufficient bandwidth to handle new TS in (Re)Assoc Rsp.
717 eSIR_MAC_CCX_INVALID_PARAMETERS_STATUS = 203, //CCX-Invalid parameters. (Re)Assoc request had one or more TSPEC parameters with
718 //invalid values.
719#endif
720
721} tSirMacStatusCodes;
722
723/**
724 * Reason Code (present in Deauthentication/Disassociation
725 * Management frames) enum
726 */
727typedef enum eSirMacReasonCodes
728{
729 eSIR_MAC_UNSPEC_FAILURE_REASON = 1, //Unspecified reason
730 eSIR_MAC_PREV_AUTH_NOT_VALID_REASON = 2, //Previous authentication no longer valid
731 eSIR_MAC_DEAUTH_LEAVING_BSS_REASON = 3, //Deauthenticated because sending station is leaving (or has left) IBSS or ESS
732 eSIR_MAC_DISASSOC_DUE_TO_INACTIVITY_REASON = 4, //Disassociated due to inactivity
733 eSIR_MAC_DISASSOC_DUE_TO_DISABILITY_REASON = 5, //Disassociated because AP is unable to handle all currently associated stations
734 eSIR_MAC_CLASS2_FRAME_FROM_NON_AUTH_STA_REASON = 6, //Class 2 frame received from nonauthenticated station
735 eSIR_MAC_CLASS3_FRAME_FROM_NON_ASSOC_STA_REASON = 7, //Class 3 frame received from nonassociated station
736 eSIR_MAC_DISASSOC_LEAVING_BSS_REASON = 8, //Disassociated because sending station is leaving (or has left) BSS
737 eSIR_MAC_STA_NOT_PRE_AUTHENTICATED_REASON = 9, //Station requesting (re)association is not authenticated with responding station
738 eSIR_MAC_PWR_CAPABILITY_BAD_REASON = 10, //Disassociated because the information in the Power Capability element is unacceptable
739 eSIR_MAC_SPRTD_CHANNELS_BAD_REASON = 11, //Disassociated because the information in the Supported Channels element is unacceptable
740 // reserved 12
741 eSIR_MAC_INVALID_IE_REASON = 13, //Invalid information element, i.e., an information element defined in this standard for
742 //which the content does not meet the specifications in Clause 7
743 eSIR_MAC_MIC_FAILURE_REASON = 14, //Message integrity code (MIC) failure
744 eSIR_MAC_4WAY_HANDSHAKE_TIMEOUT_REASON = 15, //4-Way Handshake timeout
745 eSIR_MAC_GR_KEY_UPDATE_TIMEOUT_REASON = 16, //Group Key Handshake timeout
746 eSIR_MAC_RSN_IE_MISMATCH_REASON = 17, //Information element in 4-Way Handshake different from (Re)Association Request/Probe
747 //Response/Beacon frame
748 eSIR_MAC_INVALID_MC_CIPHER_REASON = 18, //Invalid group cipher
749 eSIR_MAC_INVALID_UC_CIPHER_REASON = 19, //Invalid pairwise cipher
750 eSIR_MAC_INVALID_AKMP_REASON = 20, //Invalid AKMP
751 eSIR_MAC_UNSUPPORTED_RSN_IE_VER_REASON = 21, //Unsupported RSN information element version
752 eSIR_MAC_INVALID_RSN_CAPABILITIES_REASON = 22, //Invalid RSN information element capabilities
753 eSIR_MAC_1X_AUTH_FAILURE_REASON = 23, //IEEE 802.1X authentication failed
754 eSIR_MAC_CIPHER_SUITE_REJECTED_REASON = 24, //Cipher suite rejected because of the security policy
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800755#ifdef FEATURE_WLAN_TDLS
756 eSIR_MAC_TDLS_TEARDOWN_PEER_UNREACHABLE = 25, //TDLS direct link teardown due to TDLS peer STA unreachable via the TDLS direct link
757 eSIR_MAC_TDLS_TEARDOWN_UNSPEC_REASON = 26, //TDLS direct link teardown for unspecified reason
758#endif
Chet Lanctot4b9abd72013-06-27 11:14:56 -0700759 // reserved 27 - 30
760#ifdef WLAN_FEATURE_11W
761 eSIR_MAC_ROBUST_MGMT_FRAMES_POLICY_VIOLATION = 31, //Robust management frames policy violation
762#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700763 eSIR_MAC_QOS_UNSPECIFIED_REASON = 32, //Disassociated for unspecified, QoS-related reason
764 eSIR_MAC_QAP_NO_BANDWIDTH_REASON = 33, //Disassociated because QoS AP lacks sufficient bandwidth for this QoS STA
765 eSIR_MAC_XS_UNACKED_FRAMES_REASON = 34, //Disassociated because excessive number of frames need to be acknowledged, but are not
766 //acknowledged due to AP transmissions and/or poor channel conditions
767 eSIR_MAC_BAD_TXOP_USE_REASON = 35, //Disassociated because STA is transmitting outside the limits of its TXOPs
768 eSIR_MAC_PEER_STA_REQ_LEAVING_BSS_REASON = 36, //Requested from peer STA as the STA is leaving the BSS (or resetting)
769 eSIR_MAC_PEER_REJECT_MECHANISIM_REASON = 37, //Requested from peer STA as it does not want to use the mechanism
770 eSIR_MAC_MECHANISM_NOT_SETUP_REASON = 38, //Requested from peer STA as the STA received frames using the mechanism for which a
771 //setup is required
772 eSIR_MAC_PEER_TIMEDOUT_REASON = 39, //Requested from peer STA due to timeout
773 eSIR_MAC_CIPHER_NOT_SUPPORTED_REASON = 45, //Peer STA does not support the requested cipher suite
774 eSIR_MAC_DISASSOC_DUE_TO_FTHANDOFF_REASON = 46, //FT reason
775 //reserved 47 - 65535.
776 eSIR_BEACON_MISSED = 65534, //We invented this to tell beacon missed case
777} tSirMacReasonCodes;
778
779
780typedef enum eSirMacChannelType
781{
782 eSIR_MAC_11A_BAND,
783 eSIR_MAC_11B_BAND,
784 eSIR_MAC_UNKNOWN_BAND
785} tSirMacChannelType;
786
787// BA Initiator v/s Recipient
788typedef enum eBADirection
789{
790 eBA_RECIPIENT,
791 eBA_INITIATOR
792} tBADirection;
793
794// A-MPDU/BA Enable/Disable in Tx/Rx direction
795typedef enum eBAEnable
796{
797 eBA_DISABLE,
798 eBA_ENABLE
799} tBAEnable;
800
801// A-MPDU/BA Policy
802typedef enum eBAPolicy
803{
804 eBA_UNCOMPRESSED,
805 eBA_COMPRESSED
806} tBAPolicy;
807
808// A-MPDU/BA Policy
809typedef enum eBAPolicyType
810{
811 eBA_POLICY_DELAYED,
812 eBA_POLICY_IMMEDIATE
813} tBAPolicyType;
814
815#ifdef WLAN_FEATURE_VOWIFI
816/* Based on table 7-43a from 802.11k Spec */
817typedef enum eRrmNeighborReachability
818{
819 eREACHABILITY_RESERVED,
820 eREACHABILITY_NOT_REACHABLE,
821 eREACHABILITY_UNKNOWN,
822 eREACHABILITY_REACHABLE,
823} tRrmNeighborReachability;
824#endif /* WLAN_FEATURE_VOWIFI */
825
826/// Frame control field format (2 bytes)
827typedef __ani_attr_pre_packed struct sSirMacFrameCtl
828{
829
830#ifndef ANI_LITTLE_BIT_ENDIAN
831
832 tANI_U8 subType :4;
833 tANI_U8 type :2;
834 tANI_U8 protVer :2;
835
836 tANI_U8 order :1;
837 tANI_U8 wep :1;
838 tANI_U8 moreData :1;
839 tANI_U8 powerMgmt :1;
840 tANI_U8 retry :1;
841 tANI_U8 moreFrag :1;
842 tANI_U8 fromDS :1;
843 tANI_U8 toDS :1;
844
845#else
846
847 tANI_U8 protVer :2;
848 tANI_U8 type :2;
849 tANI_U8 subType :4;
850
851 tANI_U8 toDS :1;
852 tANI_U8 fromDS :1;
853 tANI_U8 moreFrag :1;
854 tANI_U8 retry :1;
855 tANI_U8 powerMgmt :1;
856 tANI_U8 moreData :1;
857 tANI_U8 wep :1;
858 tANI_U8 order :1;
859
860#endif
861
862} __ani_attr_packed tSirMacFrameCtl, *tpSirMacFrameCtl;
863
864/// Sequence control field
865typedef __ani_attr_pre_packed struct sSirMacSeqCtl
866{
867
868#ifndef ANI_LITTLE_BIT_ENDIAN
869
870 tANI_U8 seqNumLo : 4;
871 tANI_U8 fragNum : 4;
872
873 tANI_U8 seqNumHi : 8;
874
875#else
876
877 tANI_U8 fragNum : 4;
878 tANI_U8 seqNumLo : 4;
879 tANI_U8 seqNumHi : 8;
880
881#endif
882} __ani_attr_packed tSirMacSeqCtl, *tpSirMacSeqCtl;
883
884// ACK policies
885
886typedef enum eSirMacAckPolicy
887{
888 eSIR_MAC_IMMEDIATE_ACK=0 ,
889 eSIR_MAC_NO_ACK,
890 eSIR_MAC_NO_EXPLICIT_ACK,
891 eSIR_MAC_BURST_ACK
892} tSirMacAckPolicy;
893
894/// QoS control field
895typedef __ani_attr_pre_packed struct sSirMacQosCtl
896{
897
898#ifndef ANI_LITTLE_BIT_ENDIAN
899
900 tANI_U8 rsvd : 1;
901 tANI_U8 ackPolicy : 2;
902 tANI_U8 esop_txopUnit : 1;
903 tANI_U8 tid : 4;
904
905 tANI_U8 txop : 8;
906
907#else
908
909 tANI_U8 tid : 4;
910 tANI_U8 esop_txopUnit : 1;
911 tANI_U8 ackPolicy : 2;
912 tANI_U8 rsvd : 1;
913
914 tANI_U8 txop : 8;
915
916#endif
917} __ani_attr_packed tSirMacQosCtl, *tpSirMacQosCtl;
918
919/// Length (in bytes) of MAC header in 3 address format
920#define SIR_MAC_HDR_LEN_3A 24
921
922/// Length (in bytes) of MAC header in 4 address format
923#define SIR_MAC_HDR_LEN_4A 30
924
925/// Length (in bytes) of the QoS control field in the MAC header
926#define SIR_MAC_QOS_CTL_LEN 2
927
928/// 3 address MAC data header format (24/26 bytes)
929typedef __ani_attr_pre_packed struct sSirMacDot3Hdr
930{
931 tANI_U8 da[6];
932 tANI_U8 sa[6];
933 tANI_U16 length;
934} __ani_attr_packed tSirMacDot3Hdr, *tpSirMacDot3Hdr;
935
936
937/// 3 address MAC data header format (24/26 bytes)
938typedef __ani_attr_pre_packed struct sSirMacDataHdr3a
939{
940 tSirMacFrameCtl fc;
941 tANI_U8 durationLo;
942 tANI_U8 durationHi;
943 tANI_U8 addr1[6];
944 tANI_U8 addr2[6];
945 tANI_U8 addr3[6];
946 tSirMacSeqCtl seqControl;
947 tSirMacQosCtl qosControl;
948} __ani_attr_packed tSirMacDataHdr3a, *tpSirMacDataHdr3a;
949
950/// 4 address MAC data header format (30/32 bytes)
951typedef __ani_attr_pre_packed struct sSirMacDataHdr4a
952{
953 tSirMacFrameCtl fc;
954 tANI_U8 durationLo;
955 tANI_U8 durationHi;
956 tANI_U8 addr1[6];
957 tANI_U8 addr2[6];
958 tANI_U8 addr3[6];
959 tSirMacSeqCtl seqControl;
960 tANI_U8 addr4[6];
961 tSirMacQosCtl qosControl;
962} __ani_attr_packed tSirMacDataHdr4a, *tpSirMacDataHdr4a;
963
964/// Management header format
965typedef __ani_attr_pre_packed struct sSirMacMgmtHdr
966{
967 tSirMacFrameCtl fc;
968 tANI_U8 durationLo;
969 tANI_U8 durationHi;
970 tANI_U8 da[6];
971 tANI_U8 sa[6];
972 tANI_U8 bssId[6];
973 tSirMacSeqCtl seqControl;
974} __ani_attr_packed tSirMacMgmtHdr, *tpSirMacMgmtHdr;
975
976/// PS-poll header format
977typedef __ani_attr_pre_packed struct sSirMacPSpoll
978{
979 tSirMacFrameCtl fc;
980 tANI_U8 aidLo;
981 tANI_U8 aidHi;
982 tANI_U8 bssId[6];
983 tANI_U8 ta[6];
984 tANI_U8 fcs[4];
985} __ani_attr_packed tSirMacPSpoll, *tpSirMacPSpoll;
986
987/// ERP information field
988typedef __ani_attr_pre_packed struct sSirMacErpInfo
989{
990#ifndef ANI_LITTLE_BIT_ENDIAN
991 tANI_U8 reserved:5;
992 tANI_U8 barkerPreambleMode:1;
993 tANI_U8 useProtection:1;
994 tANI_U8 nonErpPresent:1;
995#else
996 tANI_U8 nonErpPresent:1;
997 tANI_U8 useProtection:1;
998 tANI_U8 barkerPreambleMode:1;
999 tANI_U8 reserved:5;
1000#endif
1001} __ani_attr_packed tSirMacErpInfo, *tpSirMacErpInfo;
1002
1003/// Capability information field
1004typedef __ani_attr_pre_packed struct sSirMacCapabilityInfo
1005{
1006#ifndef ANI_LITTLE_BIT_ENDIAN
1007 tANI_U16 immediateBA:1;
1008 tANI_U16 delayedBA:1;
1009 tANI_U16 dsssOfdm:1;
1010 tANI_U16 rrm:1;
1011 tANI_U16 apsd:1;
1012 tANI_U16 shortSlotTime:1;
1013 tANI_U16 qos:1;
1014 tANI_U16 spectrumMgt:1;
1015 tANI_U16 channelAgility:1;
1016 tANI_U16 pbcc:1;
1017 tANI_U16 shortPreamble:1;
1018 tANI_U16 privacy:1;
1019 tANI_U16 cfPollReq:1;
1020 tANI_U16 cfPollable:1;
1021 tANI_U16 ibss:1;
1022 tANI_U16 ess:1;
1023#else
1024 tANI_U16 ess:1;
1025 tANI_U16 ibss:1;
1026 tANI_U16 cfPollable:1;
1027 tANI_U16 cfPollReq:1;
1028 tANI_U16 privacy:1;
1029 tANI_U16 shortPreamble:1;
1030 tANI_U16 pbcc:1;
1031 tANI_U16 channelAgility:1;
1032 tANI_U16 spectrumMgt:1;
1033 tANI_U16 qos:1;
1034 tANI_U16 shortSlotTime:1;
1035 tANI_U16 apsd:1;
1036 tANI_U16 rrm:1;
1037 tANI_U16 dsssOfdm:1;
1038 tANI_U16 delayedBA:1;
1039 tANI_U16 immediateBA:1;
1040#endif
1041} __ani_attr_packed tSirMacCapabilityInfo, *tpSirMacCapabilityInfo;
1042
1043typedef __ani_attr_pre_packed struct sSirMacCfParamSet
1044{
1045 tANI_U8 cfpCount;
1046 tANI_U8 cfpPeriod;
1047 tANI_U16 cfpMaxDuration;
1048 tANI_U16 cfpDurRemaining;
1049} __ani_attr_packed tSirMacCfParamSet;
1050
1051typedef __ani_attr_pre_packed struct sSirMacTim
1052{
1053 tANI_U8 dtimCount;
1054 tANI_U8 dtimPeriod;
1055 tANI_U8 bitmapControl;
1056 tANI_U8 bitmapLength;
1057 tANI_U8 bitmap[251];
1058} __ani_attr_packed tSirMacTim;
1059
1060//12 Bytes long because this structure can be used to represent rate
1061//and extended rate set IEs
1062//The parser assume this to be at least 12
1063typedef __ani_attr_pre_packed struct sSirMacRateSet
1064{
1065 tANI_U8 numRates;
1066 tANI_U8 rate[SIR_MAC_RATESET_EID_MAX];
1067} __ani_attr_packed tSirMacRateSet;
1068
1069
1070typedef __ani_attr_pre_packed struct sSirMacSSid
1071{
1072 tANI_U8 length;
1073 tANI_U8 ssId[32];
1074} __ani_attr_packed tSirMacSSid;
1075
1076typedef __ani_attr_pre_packed struct sSirMacWpaInfo
1077{
1078 tANI_U8 length;
1079 tANI_U8 info[SIR_MAC_MAX_IE_LENGTH];
1080} __ani_attr_packed tSirMacWpaInfo, *tpSirMacWpaInfo, tSirMacRsnInfo, *tpSirMacRsnInfo;
1081
Srinivas Girigowda91ccbe82013-11-10 16:37:38 -08001082typedef __ani_attr_pre_packed struct sSirMacFHParamSet
1083{
1084 tANI_U16 dwellTime;
1085 tANI_U8 hopSet;
1086 tANI_U8 hopPattern;
1087 tANI_U8 hopIndex;
1088} tSirMacFHParamSet, *tpSirMacFHParamSet;
1089
1090typedef __ani_attr_pre_packed struct sSirMacIBSSParams
1091{
1092 tANI_U16 atim;
1093} tSirMacIBSSParams, *tpSirMacIBSSParams;
1094
1095typedef __ani_attr_pre_packed struct sSirMacRRMEnabledCap
1096{
1097#ifndef ANI_LITTLE_BIT_ENDIAN
1098 tANI_U8 reserved: 6;
1099 tANI_U8 AntennaInformation: 1;
1100 tANI_U8 BSSAvailAdmission: 1;
1101 tANI_U8 BssAvgAccessDelay: 1;
1102 tANI_U8 RSNIMeasurement: 1;
1103 tANI_U8 RCPIMeasurement: 1;
1104 tANI_U8 NeighborTSFOffset: 1;
1105 tANI_U8 MeasurementPilotEnabled: 1;
1106 tANI_U8 MeasurementPilot: 3;
1107 tANI_U8 nonOperatinChanMax: 3;
1108 tANI_U8 operatingChanMax: 3;
1109 tANI_U8 RRMMIBEnabled: 1;
1110 tANI_U8 APChanReport: 1;
1111 tANI_U8 triggeredTCM: 1;
1112 tANI_U8 TCMCapability: 1;
1113 tANI_U8 LCIAzimuth: 1;
1114 tANI_U8 LCIMeasurement: 1;
1115 tANI_U8 statistics: 1;
1116 tANI_U8 NoiseHistogram: 1;
1117 tANI_U8 ChannelLoad: 1;
1118 tANI_U8 FrameMeasurement: 1;
1119 tANI_U8 BeaconRepCond: 1;
1120 tANI_U8 BeaconTable: 1;
1121 tANI_U8 BeaconActive: 1;
1122 tANI_U8 BeaconPassive: 1;
1123 tANI_U8 repeated: 1;
1124 tANI_U8 parallel: 1;
1125 tANI_U8 NeighborRpt: 1;
1126 tANI_U8 LinkMeasurement: 1;
1127 tANI_U8 present;
1128#else
1129 tANI_U8 present;
1130 tANI_U8 LinkMeasurement: 1;
1131 tANI_U8 NeighborRpt: 1;
1132 tANI_U8 parallel: 1;
1133 tANI_U8 repeated: 1;
1134 tANI_U8 BeaconPassive: 1;
1135 tANI_U8 BeaconActive: 1;
1136 tANI_U8 BeaconTable: 1;
1137 tANI_U8 BeaconRepCond: 1;
1138 tANI_U8 FrameMeasurement: 1;
1139 tANI_U8 ChannelLoad: 1;
1140 tANI_U8 NoiseHistogram: 1;
1141 tANI_U8 statistics: 1;
1142 tANI_U8 LCIMeasurement: 1;
1143 tANI_U8 LCIAzimuth: 1;
1144 tANI_U8 TCMCapability: 1;
1145 tANI_U8 triggeredTCM: 1;
1146 tANI_U8 APChanReport: 1;
1147 tANI_U8 RRMMIBEnabled: 1;
1148 tANI_U8 operatingChanMax: 3;
1149 tANI_U8 nonOperatinChanMax: 3;
1150 tANI_U8 MeasurementPilot: 3;
1151 tANI_U8 MeasurementPilotEnabled: 1;
1152 tANI_U8 NeighborTSFOffset: 1;
1153 tANI_U8 RCPIMeasurement: 1;
1154 tANI_U8 RSNIMeasurement: 1;
1155 tANI_U8 BssAvgAccessDelay: 1;
1156 tANI_U8 BSSAvailAdmission: 1;
1157 tANI_U8 AntennaInformation: 1;
1158 tANI_U8 reserved: 6;
1159#endif
1160} tSirMacRRMEnabledCap, *tpSirMacRRMEnabledCap;
1161
Jeff Johnson295189b2012-06-20 16:38:30 -07001162
1163/* ----------------
1164 * EDCA Profiles
1165 * ---------------
1166 */
1167
1168#define EDCA_AC_BE 0
1169#define EDCA_AC_BK 1
1170#define EDCA_AC_VI 2
1171#define EDCA_AC_VO 3
1172#define AC_MGMT_LO 4
1173#define AC_MGMT_HI 5
1174#define MAX_NUM_AC 4
1175#define TOT_NUM_AC (MAX_NUM_AC + 2) /* +2 for AC_MGMT_xx */
1176
1177/*
1178#define EDCA_INDEX_0_RSVD 0
1179#define EDCA_INDEX_1_BEACON 1
1180#define EDCA_INDEX_2_MGMT_PROBERSP 2
1181#define EDCA_INDEX_3_MGMT_OTHER 3
1182#define EDCA_INDEX_4_AC_VO 4
1183#define EDCA_INDEX_5_AC_VI 5
1184#define EDCA_INDEX_6_AC_BE 6
1185#define EDCA_INDEX_7_AC_BK 7
1186*/
1187// access categories
1188#define SIR_MAC_EDCAACI_BESTEFFORT (EDCA_AC_BE)
1189#define SIR_MAC_EDCAACI_BACKGROUND (EDCA_AC_BK)
1190#define SIR_MAC_EDCAACI_VIDEO (EDCA_AC_VI)
1191#define SIR_MAC_EDCAACI_VOICE (EDCA_AC_VO)
1192
1193// access category record
1194typedef __ani_attr_pre_packed struct sSirMacAciAifsn
1195{
1196#ifndef ANI_LITTLE_BIT_ENDIAN
1197 tANI_U8 rsvd : 1;
1198 tANI_U8 aci : 2;
1199 tANI_U8 acm : 1;
1200 tANI_U8 aifsn : 4;
1201#else
1202 tANI_U8 aifsn : 4;
1203 tANI_U8 acm : 1;
1204 tANI_U8 aci : 2;
1205 tANI_U8 rsvd : 1;
1206#endif
1207} __ani_attr_packed tSirMacAciAifsn;
1208
1209// contention window size
1210typedef __ani_attr_pre_packed struct sSirMacCW
1211{
1212#ifndef ANI_LITTLE_BIT_ENDIAN
1213 tANI_U8 max : 4;
1214 tANI_U8 min : 4;
1215#else
1216 tANI_U8 min : 4;
1217 tANI_U8 max : 4;
1218#endif
1219} __ani_attr_packed tSirMacCW;
1220
1221typedef __ani_attr_pre_packed struct sSirMacEdcaParamRecord
1222{
1223 tSirMacAciAifsn aci;
1224 tSirMacCW cw;
1225 tANI_U16 txoplimit;
1226} __ani_attr_packed tSirMacEdcaParamRecord;
1227
1228typedef __ani_attr_pre_packed struct sSirMacQosInfo
1229{
1230#ifndef ANI_LITTLE_BIT_ENDIAN
1231 tANI_U8 uapsd : 1;
1232 tANI_U8 txopreq : 1;
1233 tANI_U8 qreq : 1;
1234 tANI_U8 qack : 1;
1235 tANI_U8 count : 4;
1236#else
1237 tANI_U8 count : 4;
1238 tANI_U8 qack : 1;
1239 tANI_U8 qreq : 1;
1240 tANI_U8 txopreq : 1;
1241 tANI_U8 uapsd : 1;
1242#endif
1243} __ani_attr_packed tSirMacQosInfo;
1244
1245
1246typedef __ani_attr_pre_packed struct sSirMacQosInfoStation
1247{
1248#ifdef ANI_LITTLE_BIT_ENDIAN
1249 tANI_U8 acvo_uapsd:1;
1250 tANI_U8 acvi_uapsd:1;
1251 tANI_U8 acbk_uapsd:1;
1252 tANI_U8 acbe_uapsd:1;
1253 tANI_U8 qack:1;
1254 tANI_U8 maxSpLen:2;
1255 tANI_U8 moreDataAck:1;
1256#else
1257 tANI_U8 moreDataAck:1;
1258 tANI_U8 maxSpLen:2;
1259 tANI_U8 qack:1;
1260 tANI_U8 acbe_uapsd:1;
1261 tANI_U8 acbk_uapsd:1;
1262 tANI_U8 acvi_uapsd:1;
1263 tANI_U8 acvo_uapsd:1;
1264#endif
1265} __ani_attr_packed tSirMacQosInfoStation, *tpSirMacQosInfoStation;
1266
1267
1268
1269typedef __ani_attr_pre_packed struct sSirMacEdcaParamSetIE
1270{
1271 tANI_U8 type;
1272 tANI_U8 length;
1273 tSirMacQosInfo qosInfo;
1274 tANI_U8 rsvd;
1275 tSirMacEdcaParamRecord acbe; // best effort
1276 tSirMacEdcaParamRecord acbk; // background
1277 tSirMacEdcaParamRecord acvi; // video
1278 tSirMacEdcaParamRecord acvo; // voice
1279} __ani_attr_packed tSirMacEdcaParamSetIE;
1280
1281#if 1
1282typedef __ani_attr_pre_packed struct sSirMacQoSParams
1283{
1284 tANI_U8 count;
1285 tANI_U16 limit;
1286 tANI_U8 CWmin[8];
1287 tANI_U8 AIFS[8];
1288} __ani_attr_packed tSirMacQoSParams;
1289#endif
1290
1291typedef __ani_attr_pre_packed struct sSirMacQbssLoadIE
1292{
1293 tANI_U8 type;
1294 tANI_U8 length;
1295 tANI_U16 staCount;
1296 tANI_U8 chnlUtil;
1297 tANI_U16 admitCapacity;
1298} __ani_attr_packed tSirMacQbssLoadIE;
1299
1300// ts info direction field can take any of these values
1301#define SIR_MAC_DIRECTION_UPLINK 0
1302#define SIR_MAC_DIRECTION_DNLINK 1
1303#define SIR_MAC_DIRECTION_DIRECT 2
1304#define SIR_MAC_DIRECTION_BIDIR 3
1305
1306// access policy
1307// reserved 0
1308#define SIR_MAC_ACCESSPOLICY_EDCA 1
1309#define SIR_MAC_ACCESSPOLICY_HCCA 2
1310#define SIR_MAC_ACCESSPOLICY_BOTH 3
1311
1312#define SIR_MAC_HCCA_TSID_MIN 8 // valid HCCA tsid's are 8 or higher
1313#define SIR_MAC_TID_MAX 15
1314#define MAC_BA_TID_MAX 8
1315
1316typedef __ani_attr_pre_packed struct sSirMacTSInfoTfc
1317{
1318#ifndef ANI_LITTLE_BIT_ENDIAN
1319 tANI_U8 burstSizeDefn : 1;
1320 tANI_U8 reserved :7;
1321#else
1322 tANI_U8 reserved :7;
1323 tANI_U8 burstSizeDefn : 1;
1324#endif
1325
1326#ifndef ANI_LITTLE_BIT_ENDIAN
1327 tANI_U16 ackPolicy : 2;
1328 tANI_U16 userPrio : 3;
1329 tANI_U16 psb : 1;
1330 tANI_U16 aggregation : 1;
1331 tANI_U16 accessPolicy : 2;
1332 tANI_U16 direction : 2;
1333 tANI_U16 tsid : 4;
1334 tANI_U16 trafficType : 1;
1335#else
1336 tANI_U16 trafficType : 1;
1337 tANI_U16 tsid : 4;
1338 tANI_U16 direction : 2;
1339 tANI_U16 accessPolicy : 2;
1340 tANI_U16 aggregation : 1;
1341 tANI_U16 psb : 1;
1342 tANI_U16 userPrio : 3;
1343 tANI_U16 ackPolicy : 2;
1344#endif
1345} __ani_attr_packed tSirMacTSInfoTfc;
1346
1347typedef __ani_attr_pre_packed struct sSirMacTSInfoSch
1348{
1349#ifndef ANI_LITTLE_BIT_ENDIAN
1350 tANI_U8 rsvd : 7;
1351 tANI_U8 schedule : 1;
1352#else
1353 tANI_U8 schedule : 1;
1354 tANI_U8 rsvd : 7;
1355#endif
1356} __ani_attr_packed tSirMacTSInfoSch;
1357
1358typedef __ani_attr_pre_packed struct sSirMacTSInfo
1359{
1360 tSirMacTSInfoTfc traffic;
1361 tSirMacTSInfoSch schedule;
1362} __ani_attr_packed tSirMacTSInfo;
1363
1364typedef __ani_attr_pre_packed struct sSirMacTspecIE
1365{
1366 tANI_U8 type;
1367 tANI_U8 length;
1368 tSirMacTSInfo tsinfo;
1369 tANI_U16 nomMsduSz;
1370 tANI_U16 maxMsduSz;
1371 tANI_U32 minSvcInterval;
1372 tANI_U32 maxSvcInterval;
1373 tANI_U32 inactInterval;
1374 tANI_U32 suspendInterval;
1375 tANI_U32 svcStartTime;
1376 tANI_U32 minDataRate;
1377 tANI_U32 meanDataRate;
1378 tANI_U32 peakDataRate;
1379 tANI_U32 maxBurstSz;
1380 tANI_U32 delayBound;
1381 tANI_U32 minPhyRate;
1382 tANI_U16 surplusBw;
1383 tANI_U16 mediumTime;
1384}
Jeff Johnson3368d4a2013-02-13 12:23:50 -08001385__ani_attr_packed tSirMacTspecIE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001386
1387// max size of the classifier params in the tclas IE
1388#define SIR_MAC_CLSPARAM_LEN 253
1389
1390// frame classifier types
1391#define SIR_MAC_TCLASTYPE_ETHERNET 0
1392#define SIR_MAC_TCLASTYPE_TCPUDPIP 1
1393#define SIR_MAC_TCLASTYPE_8021DQ 2
1394// reserved 3-255
1395
1396#define SIR_MAC_TCLAS_PARAM_ETHERNET_MIN 14
1397typedef __ani_attr_pre_packed struct sSirMacTclasParamEthernet
1398{
1399 tANI_U8 srcAddr[6];
1400 tANI_U8 dstAddr[6];
1401 tANI_U16 type;
1402}__ani_attr_packed tSirMacTclasParamEthernet;
1403
1404#define SIR_MAC_TCLAS_PARAM_IPV4_MIN 16
1405typedef __ani_attr_pre_packed struct sSirMacTclasParamIPv4
1406{
1407 tANI_U8 version;
1408 tANI_U32 srcIpAddr;
1409 tANI_U32 dstIpAddr;
1410 tANI_U16 srcPort;
1411 tANI_U16 dstPort;
1412 tANI_U8 dscp;
1413 tANI_U8 protocol;
1414 tANI_U8 rsvd;
1415} __ani_attr_packed tSirMacTclasParamIPv4;
1416
1417#define SIR_MAC_TCLAS_IPV4 4
1418#define SIR_MAC_TCLAS_IPV6 6
1419
1420#define SIR_MAC_TCLAS_PARAM_IPV6_MIN 40
1421typedef __ani_attr_pre_packed struct sSirMacTclasParamIPv6
1422{
1423 tANI_U8 version;
1424 tANI_U8 srcIpAddr[16];
1425 tANI_U8 dstIpAddr[16];
1426 tANI_U16 srcPort;
1427 tANI_U16 dstPort;
1428 tANI_U8 flowLabel[3];
1429} __ani_attr_packed tSirMacTclasParamIPv6;
1430
1431#define SIR_MAC_TCLAS_PARAM_8021DQ_MIN 2
1432typedef __ani_attr_pre_packed struct sSirMacTclasParam8021dq
1433{
1434 tANI_U16 tag;
1435} __ani_attr_packed tSirMacTclasParam8021dq;
1436
1437typedef __ani_attr_pre_packed struct sSirMacTclasIE
1438{
1439 tANI_U8 type;
1440 tANI_U8 length;
1441 tANI_U8 userPrio;
1442 tANI_U8 classifierType;
1443 tANI_U8 classifierMask;
1444} __ani_attr_packed tSirMacTclasIE;
1445
1446typedef __ani_attr_pre_packed struct sSirMacTsDelayIE
1447{
1448 tANI_U8 type;
1449 tANI_U8 length;
1450 tANI_U32 delay;
1451} __ani_attr_packed tSirMacTsDelayIE;
1452
1453typedef __ani_attr_pre_packed struct sSirMacTclasProcIE
1454{
1455 tANI_U8 type;
1456 tANI_U8 length;
1457 tANI_U8 processing;
1458} __ani_attr_packed tSirMacTclasProcIE;
1459
1460typedef __ani_attr_pre_packed struct sSirMacScheduleInfo
1461{
1462#ifndef ANI_LITTLE_BIT_ENDIAN
1463 tANI_U16 rsvd : 9;
1464 tANI_U16 direction : 2;
1465 tANI_U16 tsid : 4;
1466 tANI_U16 aggregation : 1;
1467#else
1468 tANI_U16 aggregation : 1;
1469 tANI_U16 tsid : 4;
1470 tANI_U16 direction : 2;
1471 tANI_U16 rsvd : 9;
1472#endif
1473} __ani_attr_packed tSirMacScheduleInfo;
1474
1475typedef __ani_attr_pre_packed struct sSirMacScheduleIE
1476{
1477 tANI_U8 type;
1478 tANI_U8 length;
1479 tSirMacScheduleInfo info;
1480 tANI_U32 svcStartTime;
1481 tANI_U32 svcInterval;
1482 tANI_U16 maxSvcDuration;
1483 tANI_U16 specInterval;
1484} __ani_attr_packed tSirMacScheduleIE;
1485
1486typedef __ani_attr_pre_packed struct sSirMacQosCapabilityIE
1487{
1488 tANI_U8 type;
1489 tANI_U8 length;
1490 tSirMacQosInfo qosInfo;
1491} __ani_attr_packed tSirMacQosCapabilityIE;
1492
1493typedef __ani_attr_pre_packed struct sSirMacQosCapabilityStaIE
1494{
1495 tANI_U8 type;
1496 tANI_U8 length;
1497 tSirMacQosInfoStation qosInfo;
1498} __ani_attr_packed tSirMacQosCapabilityStaIE;
1499
1500
1501#define ADDTS
1502typedef __ani_attr_pre_packed struct sSirMacQosActionIE
1503{
1504 tANI_U8 type;
1505 tANI_U8 length;
1506 tANI_U8 qosAction;
1507 tANI_U8 qosBody[1];
1508} __ani_attr_packed tSirMacQosActionIE;
1509
1510typedef tANI_U32 tSirMacTimeStamp[2];
1511
1512typedef tANI_U16 tSirMacBeaconInterval;
1513
1514typedef tANI_U16 tSirMacListenInterval;
1515
1516typedef tANI_U8 tSirMacChanNum;
1517
1518typedef tANI_U8 tSirMacAddr[6];
1519
1520
1521// IE definitions
1522typedef __ani_attr_pre_packed struct sSirMacIE
1523{
1524 tANI_U8 elementID;
1525 tANI_U8 length;
1526 tANI_U8 info[1];
1527} __ani_attr_packed tSirMacIE;
1528
1529typedef __ani_attr_pre_packed struct sSirMacSSidIE
1530{
1531 tANI_U8 type;
1532 tSirMacSSid ssId;
1533} __ani_attr_packed tSirMacSSidIE;
1534
1535typedef __ani_attr_pre_packed struct sSirMacRateSetIE
1536{
1537 tANI_U8 type;
1538 tSirMacRateSet supportedRateSet;
1539} __ani_attr_packed tSirMacRateSetIE;
1540
1541typedef __ani_attr_pre_packed struct sSirMacDsParamSetIE
1542{
1543 tANI_U8 type;
1544 tANI_U8 length;
1545 tSirMacChanNum channelNumber;
1546} __ani_attr_packed tSirMacDsParamSetIE;
1547
1548typedef __ani_attr_pre_packed struct sSirMacCfParamSetIE
1549{
1550 tANI_U8 type;
1551 tANI_U8 length;
1552 tSirMacCfParamSet cfParams;
1553} __ani_attr_packed tSirMacCfParamSetIE;
1554
1555typedef __ani_attr_pre_packed struct sSirMacChanInfo
1556{
1557 tSirMacChanNum firstChanNum;
1558 tANI_U8 numChannels;
1559 tANI_S8 maxTxPower;
1560} __ani_attr_packed tSirMacChanInfo;
1561
1562typedef __ani_attr_pre_packed struct sSirMacCountry
1563{
1564 tANI_U8 countryString[3]; // This from CFG_COUNTRY_STRING
1565 tANI_U8 numChanInfo;
1566 tSirMacChanInfo chanInfo[1];
1567} __ani_attr_packed tSirMacCountry;
1568
1569typedef __ani_attr_pre_packed struct sSirMacCountryIE
1570{
1571 tANI_U8 type;
1572 tANI_U8 length;
1573 tSirMacCountry country;
1574} __ani_attr_packed tSirMacCountryIE;
1575
1576typedef __ani_attr_pre_packed struct sSirMacNonErpPresentIE
1577{
1578 tANI_U8 type;
1579 tANI_U8 length;
1580 tANI_U8 erp;
1581} __ani_attr_packed tSirMacNonErpPresentIE;
1582
1583typedef __ani_attr_pre_packed struct sSirMacWpaIE
1584{
1585 tANI_U8 type;
1586 tSirMacWpaInfo wpa;
1587} __ani_attr_packed tSirMacWpaIE;
1588
1589typedef struct sSirMacPowerCapabilityIE
1590{
1591 tANI_U8 type;
1592 tANI_U8 length;
1593 tANI_U8 minTxPower;
1594 tANI_U8 maxTxPower;
1595} tSirMacPowerCapabilityIE;
1596
1597typedef struct sSirMacSupportedChannelIE
1598{
1599 tANI_U8 type;
1600 tANI_U8 length;
1601 tANI_U8 supportedChannels[96];
1602} tSirMacSupportedChannelIE;
1603
1604typedef struct sSirMacMeasReqField
1605{
1606 tANI_U8 channelNumber;
1607 tANI_U8 measStartTime[8];
1608 tANI_U16 measDuration;
1609} tSirMacMeasReqField, *tpSirMacMeasReqField;
1610
1611typedef struct sSirMacMeasReqIE
1612{
1613 tANI_U8 type;
1614 tANI_U8 length;
1615 tANI_U8 measToken;
1616 tANI_U8 measReqMode;
1617 tANI_U8 measType;
1618 tSirMacMeasReqField measReqField;
1619} tSirMacMeasReqIE, *tpSirMacMeasReqIE;
1620
1621// Basic Measurement Report
1622typedef struct sSirMacBasicReport
1623{
1624 tANI_U8 channelNumber;
1625 tANI_U8 measStartTime[8];
1626 tANI_U16 measDuration;
1627 tANI_U8 mapField;
1628} tSirMacBasicReport, *tpSirMacBasicReport;
1629
1630typedef struct sSirMacBasicReportIE
1631{
1632 tANI_U8 type;
1633 tANI_U8 length;
1634 tANI_U8 measToken;
1635 tANI_U8 measReportMode;
1636 tANI_U8 measType;
1637 tSirMacBasicReport basicReport;
1638} tSirMacBasicReportIE, *tpSirMacBasicReportIE;
1639
1640// CCA Measurement Report
1641typedef struct sSirMacCcaReport
1642{
1643 tANI_U8 channelNumber;
1644 tANI_U8 measStartTime[8];
1645 tANI_U16 measDuration;
1646 tANI_U8 ccaBusyFraction;
1647} tSirMacCcaReport, *tpSirMacCcaReport;
1648
1649typedef struct sSirMacCcaReportIE
1650{
1651 tANI_U8 type;
1652 tANI_U8 length;
1653 tANI_U8 measToken;
1654 tANI_U8 measReportMode;
1655 tANI_U8 measType;
1656 tSirMacCcaReport ccaReport;
1657} tSirMacCcaReportIE, *tpSirMacCcaReportIE;
1658
1659// RPI Histogram Measurement Report
1660typedef struct sSirMacRpiReport
1661{
1662 tANI_U8 channelNumber;
1663 tANI_U8 measStartTime[8];
1664 tANI_U16 measDuration;
1665 tANI_U8 rpiDensity[8];
1666} tSirMacRpiReport, *tpSirMacRpiReport;
1667
1668typedef struct sSirMacRpiReportIE
1669{
1670 tANI_U8 type;
1671 tANI_U8 length;
1672 tANI_U8 measToken;
1673 tANI_U8 measReportMode;
1674 tANI_U8 measType;
1675 tSirMacRpiReport rpiReport;
1676} tSirMacRpiReportIE, *tpSirMacRpiReportIE;
1677
Gopichand Nakkala681989c2013-03-06 22:27:48 -08001678#define SIR_MAC_MAX_SUPP_RATES 32
1679
Naresh Jayarambc62ba42014-02-12 21:39:14 +05301680#define SIR_MAC_MAX_SUPP_CHANNELS 100
1681#define SIR_MAC_MAX_SUPP_OPER_CLASSES 32
1682
Gopichand Nakkala681989c2013-03-06 22:27:48 -08001683#define SIR_MAC_MAX_EXTN_CAP 8
1684
1685// VHT Capabilities Info
1686typedef __ani_attr_pre_packed struct sSirMacVHTCapabilityInfo
1687{
1688#ifndef ANI_LITTLE_BIT_ENDIAN
1689 tANI_U32 reserved1: 2;
1690 tANI_U32 txAntPattern: 1;
1691 tANI_U32 rxAntPattern: 1;
1692 tANI_U32 vhtLinkAdaptCap: 2;
1693 tANI_U32 maxAMPDULenExp: 3;
1694 tANI_U32 htcVHTCap: 1;
1695 tANI_U32 vhtTXOPPS: 1;
1696 tANI_U32 muBeamformeeCap: 1;
1697 tANI_U32 muBeamformerCap: 1;
1698 tANI_U32 numSoundingDim: 3;
1699 tANI_U32 csnofBeamformerAntSup: 3;
1700 tANI_U32 suBeamformeeCap: 1;
1701 tANI_U32 suBeamFormerCap: 1;
1702 tANI_U32 rxSTBC: 3;
1703 tANI_U32 txSTBC: 1;
1704 tANI_U32 shortGI160and80plus80MHz: 1;
1705 tANI_U32 shortGI80MHz: 1;
1706 tANI_U32 ldpcCodingCap: 1;
1707 tANI_U32 supportedChannelWidthSet: 2;
1708 tANI_U32 maxMPDULen: 2;
1709#else
1710 tANI_U32 maxMPDULen: 2;
1711 tANI_U32 supportedChannelWidthSet: 2;
1712 tANI_U32 ldpcCodingCap: 1;
1713 tANI_U32 shortGI80MHz: 1;
1714 tANI_U32 shortGI160and80plus80MHz: 1;
1715 tANI_U32 txSTBC: 1;
1716 tANI_U32 rxSTBC: 3;
1717 tANI_U32 suBeamFormerCap: 1;
1718 tANI_U32 suBeamformeeCap: 1;
1719 tANI_U32 csnofBeamformerAntSup: 3;
1720 tANI_U32 numSoundingDim: 3;
1721 tANI_U32 muBeamformerCap: 1;
1722 tANI_U32 muBeamformeeCap: 1;
1723 tANI_U32 vhtTXOPPS: 1;
1724 tANI_U32 htcVHTCap: 1;
1725 tANI_U32 maxAMPDULenExp: 3;
1726 tANI_U32 vhtLinkAdaptCap: 2;
1727 tANI_U32 rxAntPattern: 1;
1728 tANI_U32 txAntPattern: 1;
1729 tANI_U32 reserved1: 2;
1730#endif
1731} __ani_attr_packed tSirMacVHTCapabilityInfo;
1732
1733typedef __ani_attr_pre_packed struct sSirMacVHTTxSupDataRateInfo
1734{
1735#ifndef ANI_LITTLE_BIT_ENDIAN
1736 tANI_U16 reserved: 3;
1737 tANI_U16 txSupDataRate: 13;
1738#else
1739 tANI_U16 txSupDataRate: 13;
1740 tANI_U16 reserved: 3;
1741#endif
1742}__ani_attr_packed tSirMacVHTTxSupDataRateInfo;
1743
1744typedef __ani_attr_pre_packed struct sSirMacVHTRxSupDataRateInfo
1745{
1746#ifndef ANI_LITTLE_BIT_ENDIAN
1747 tANI_U16 reserved: 3;
1748 tANI_U16 rxSupDataRate: 13;
1749#else
1750 tANI_U16 rxSupDataRate: 13;
1751 tANI_U16 reserved: 3;
1752#endif
1753}__ani_attr_packed tSirMacVHTRxSupDataRateInfo;
1754
1755/**
1756 * struct sSirVhtMcsInfo - VHT MCS information
1757 * @rx_mcs_map: RX MCS map 2 bits for each stream, total 8 streams
1758 * @rx_highest: Indicates highest long GI VHT PPDU data rate
1759 * STA can receive. Rate expressed in units of 1 Mbps.
1760 * If this field is 0 this value should not be used to
1761 * consider the highest RX data rate supported.
1762 * @tx_mcs_map: TX MCS map 2 bits for each stream, total 8 streams
1763 * @tx_highest: Indicates highest long GI VHT PPDU data rate
1764 * STA can transmit. Rate expressed in units of 1 Mbps.
1765 * If this field is 0 this value should not be used to
1766 * consider the highest TX data rate supported.
1767 */
1768typedef struct sSirVhtMcsInfo {
1769 tANI_U16 rxMcsMap;
1770 tANI_U16 rxHighest;
1771 tANI_U16 txMcsMap;
1772 tANI_U16 txHighest;
1773}tSirVhtMcsInfo;
1774
1775/**
1776 * struct sSirVHtCap - VHT capabilities
1777 *
1778 * This structure is the "VHT capabilities element" as
1779 * described in 802.11ac D3.0 8.4.2.160
1780 * @vht_cap_info: VHT capability info
1781 * @supp_mcs: VHT MCS supported rates
1782 */
1783typedef struct sSirVHtCap {
1784 tANI_U32 vhtCapInfo;
1785 tSirVhtMcsInfo suppMcs;
1786}tSirVHTCap;
1787
1788/**
1789 * struct sSirHtCap - HT capabilities
1790 *
1791 * This structure refers to "HT capabilities element" as
1792 * described in 802.11n draft section 7.3.2.52
1793 */
1794
1795
1796typedef struct sSirHtCap {
1797 tANI_U16 capInfo;
1798 tANI_U8 ampduParamsInfo;
1799 tANI_U8 suppMcsSet[16];
1800 tANI_U16 extendedHtCapInfo;
1801 tANI_U32 txBFCapInfo;
1802 tANI_U8 antennaSelectionInfo;
1803}tSirHTCap;
Jeff Johnson295189b2012-06-20 16:38:30 -07001804
1805// HT Cap and HT IE Size defines
1806#define HT_CAPABILITY_IE_SIZE 28
1807#define HT_INFO_IE_SIZE 24
1808
1809//
1810// Determines the current operating mode of the 802.11n STA
1811//
1812typedef enum eSirMacHTOperatingMode
1813{
1814 eSIR_HT_OP_MODE_PURE, // No Protection
1815 eSIR_HT_OP_MODE_OVERLAP_LEGACY, // Overlap Legacy device present, protection is optional
1816 eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT, // No legacy device, but 20 MHz HT present
1817 eSIR_HT_OP_MODE_MIXED // Protetion is required
1818} tSirMacHTOperatingMode;
1819
1820
1821// Spatial Multiplexing(SM) Power Save mode
1822typedef enum eSirMacHTMIMOPowerSaveState
1823{
1824 eSIR_HT_MIMO_PS_STATIC = 0, // Static SM Power Save mode
1825 eSIR_HT_MIMO_PS_DYNAMIC = 1, // Dynamic SM Power Save mode
1826 eSIR_HT_MIMO_PS_NA = 2, // reserved
1827 eSIR_HT_MIMO_PS_NO_LIMIT = 3 // SM Power Save disabled
1828} tSirMacHTMIMOPowerSaveState;
1829
1830
Jeff Johnson295189b2012-06-20 16:38:30 -07001831typedef enum eSirMacHTChannelWidth
1832{
1833 eHT_CHANNEL_WIDTH_20MHZ = 0,
Jeff Johnsone7245742012-09-05 17:12:55 -07001834 eHT_CHANNEL_WIDTH_40MHZ = 1,
1835#ifdef WLAN_FEATURE_11AC
1836 eHT_CHANNEL_WIDTH_80MHZ = 2,
1837#endif
1838 eHT_MAX_CHANNEL_WIDTH
Jeff Johnson295189b2012-06-20 16:38:30 -07001839} tSirMacHTChannelWidth;
1840
1841//Packet struct for HT capability
1842typedef __ani_attr_pre_packed struct sHtCaps {
1843 tANI_U16 advCodingCap: 1;
1844 tANI_U16 supportedChannelWidthSet: 1;
1845 tANI_U16 mimoPowerSave: 2;
1846 tANI_U16 greenField: 1;
1847 tANI_U16 shortGI20MHz: 1;
1848 tANI_U16 shortGI40MHz: 1;
1849 tANI_U16 txSTBC: 1;
1850 tANI_U16 rxSTBC: 2;
1851 tANI_U16 delayedBA: 1;
1852 tANI_U16 maximalAMSDUsize: 1;
1853 tANI_U16 dsssCckMode40MHz: 1;
1854 tANI_U16 psmp: 1;
1855 tANI_U16 stbcControlFrame: 1;
1856 tANI_U16 lsigTXOPProtection: 1;
1857 tANI_U8 maxRxAMPDUFactor: 2;
1858 tANI_U8 mpduDensity: 3;
1859 tANI_U8 reserved1: 3;
1860 tANI_U8 supportedMCSSet[16];
1861 tANI_U16 pco: 1;
1862 tANI_U16 transitionTime: 2;
1863 tANI_U16 reserved2: 5;
1864 tANI_U16 mcsFeedback: 2;
1865 tANI_U16 reserved3: 6;
1866 tANI_U32 txBF: 1;
1867 tANI_U32 rxStaggeredSounding: 1;
1868 tANI_U32 txStaggeredSounding: 1;
1869 tANI_U32 rxZLF: 1;
1870 tANI_U32 txZLF: 1;
1871 tANI_U32 implicitTxBF: 1;
1872 tANI_U32 calibration: 2;
1873 tANI_U32 explicitCSITxBF: 1;
1874 tANI_U32 explicitUncompressedSteeringMatrix: 1;
1875 tANI_U32 explicitBFCSIFeedback: 3;
1876 tANI_U32 explicitUncompressedSteeringMatrixFeedback: 3;
1877 tANI_U32 explicitCompressedSteeringMatrixFeedback: 3;
1878 tANI_U32 csiNumBFAntennae: 2;
1879 tANI_U32 uncompressedSteeringMatrixBFAntennae: 2;
1880 tANI_U32 compressedSteeringMatrixBFAntennae: 2;
1881 tANI_U32 reserved4: 7;
1882 tANI_U8 antennaSelection: 1;
1883 tANI_U8 explicitCSIFeedbackTx: 1;
1884 tANI_U8 antennaIndicesFeedbackTx: 1;
1885 tANI_U8 explicitCSIFeedback: 1;
1886 tANI_U8 antennaIndicesFeedback: 1;
1887 tANI_U8 rxAS: 1;
1888 tANI_U8 txSoundingPPDUs: 1;
1889 tANI_U8 reserved5: 1;
1890
1891} __ani_attr_packed tHtCaps;
1892
1893/* During 11h channel switch, the AP can indicate if the
1894 * STA needs to stop the transmission or continue until the
1895 * channel-switch.
1896 * eSIR_CHANSW_MODE_NORMAL - STA can continue transmission
1897 * eSIR_CHANSW_MODE_SILENT - STA should stop transmission
1898 */
1899typedef enum eSirMacChanSwMode
1900{
1901 eSIR_CHANSW_MODE_NORMAL = 0,
1902 eSIR_CHANSW_MODE_SILENT = 1
1903} tSirMacChanSwitchMode;
1904
1905
1906typedef __ani_attr_pre_packed struct _BarControl {
1907
1908#ifndef ANI_BIG_BYTE_ENDIAN
1909
1910 tANI_U16 barAckPolicy:1;
1911 tANI_U16 multiTID:1;
1912 tANI_U16 bitMap:1;
1913 tANI_U16 rsvd:9;
1914 tANI_U16 numTID:4;
1915
1916#else
1917 tANI_U16 numTID:4;
1918 tANI_U16 rsvd:9;
1919 tANI_U16 bitMap:1;
1920 tANI_U16 multiTID:1;
1921 tANI_U16 barAckPolicy:1;
1922
1923#endif
1924
1925}__ani_attr_packed barCtrlType;
1926
1927typedef __ani_attr_pre_packed struct _BARFrmStruct {
1928 tSirMacFrameCtl fc;
1929 tANI_U16 duration;
1930 tSirMacAddr rxAddr;
1931 tSirMacAddr txAddr;
1932 barCtrlType barControl;
1933 tSirMacSeqCtl ssnCtrl;
1934}__ani_attr_packed BARFrmType;
1935
1936
1937#if 0
1938// Typedef for HT Capability IE
1939// Typedef for HT Capability Info Field
1940#define SUPPORT_ADVANCE_CODING_1 1
1941#define NOT_SUPPORT_ADVANCE_CODING_0 0
1942#define SUPPORT_CHANNEL_WIDTH_SET_20_40_MHZ 1
1943#define NOT_SUPPORT_CHANNEL_WIDTH_SET_20_MHZ_ONLY 0
1944#define DO_NOT_SEND_MIMO_SEQ_STATIC_POWER_SAVE 0
1945#define RTS_PRECEDE_MIMO_SEQ_DYN_POWER_SAVE 1
1946#define MIMO_POWER_SAVE_NA 2
1947#define NO_LIMIT_ON_MIMO_SEQ 3
1948#define DEVICE_IS_ABLE_TO_RCVE_PPDU_WITH_GF_PREAMBLE 1
1949#define DEVICE_NOT_ABLE_TO_RCVE_PPDU_WITH_GF_PREAMBLE 0
1950#define SUPPORT_SHORT_GI_FOR_20_MHZ 1
1951#define NOT_SUPPORT_SHORT_GI_FOR_20_MHZ 0
1952#define SUPPORT_SHORT_GI_FOR_40_MHZ 1
1953#define NOT_SUPPORT_SHORT_GI_FOR_40_MHZ 0
1954#define TRANSMITTER_SUPPORT_STBC 1
1955#define TRANSMITTER_NOT_SUPPORT_STBC 0
1956#define RX_NOT_SUPPORT_STBC 0
1957#define RX_SUPPORT_STBC_ONE_SPATIAL_STREAM 1
1958#define RX_SUPPORT_STBC_ONE_AND_TWO_SPATIAL_STREAM 2
1959#define RX_SUPPORT_STBC_ONE_TWO_THREE_SPATIAL_STREAM 3
1960#define SUPPORT_DELAYED_BA 1
1961#define NOT_SUPPORT_DELAYED_BA 0
1962#define RECEIVER_MAX_A_MSDU_SIZE_7935 1
1963#define RECEIVER_MAX_A_MSDU_SIZE_3839 0
1964#define BSS_OR_DEVICE_ALLOW_USE_DSSS_CCK 1
1965#define BSS_OR_DEVICE_NOT_ALLOW_USE_DSSS_CCK 0
1966#define BSS_OR_DEVICE_SUPPORT_USE_PSMP 1
1967#define BSS_OR_DEVICE_NOT_SUPPORT_USE_PSMP 0
1968#define BSS_OR_DEVICE_SUPPORT_USE_STBC_CONTROL_FRAME 1
1969#define BSS_OR_DEVICE_NOT_SUPPORT_USE_STBC_CONTROL_FRAME 0
1970#define SUPPORT_L_SIG_TXOP_PROTECTION 1
1971#define NOT_SUPPORT_L_SIG_TXOP_PROTECTION 0
1972
1973// Typedef for HT Parameters Info Field
1974#define MAX_RX_AMPDU_FACTOR_0 0
1975#define MAX_RX_AMPDU_FACTOR_1 1
1976#define MAX_RX_AMPDU_FACTOR_2 2
1977#define MAX_RX_AMPDU_FACTOR_3 3
1978#define MPDU_DENSITY_NO_RESTRICTION 0
1979#define MPDU_DENSITY_ONE_EIGHTH_USECOND 1
1980#define MPDU_DENSITY_ONE_FOURTH_USECOND 2
1981#define MPDU_DENSITY_ONE_HALF_USECOND 3
1982#define MPDU_DENSITY_ONE_USECOND 4
1983#define MPDU_DENSITY_TWO_USECOND 5
1984#define MPDU_DENSITY_FOUR_USECOND 6
1985#define MPDU_DENSITY_EIGHT_USECOND 7
1986#endif
1987
1988// Supported MCS set
1989#define SIZE_OF_SUPPORTED_MCS_SET 16
1990#define SIZE_OF_BASIC_MCS_SET 16
1991#define VALID_MCS_SIZE 77 //0-76
1992#define MCS_RX_HIGHEST_SUPPORTED_RATE_BYTE_OFFSET 10
1993// This is not clear, Count 8 based from NV supported MCS count
1994#define VALID_MAX_MCS_INDEX 8
1995
1996#if 0
1997// Typedef Extended HT Capability Info Field
1998#define SUPPORT_PCO 1
1999#define NOT_SUPPORT_PCO 0
2000#define TRANSITION_TIME_0 0
2001#define STA_DOES_NOT_PROVIDE_MCS_FEEDBACK 0
2002#define RESERVE_VALUE_FOR_STA_MCS_FEEDBACK 1
2003#define STA_PROVIDE_UNSOLICITED_MCS_FEEDBACK 2
2004#define STA_PROVIDE_ON_MRQ_AND_UNSOLICITED_MCS_FEEDBACK 3
2005
2006// Typedef Transmit Beamforming Capability
2007#define TX_BEAMFORMING_CAPABLE 1
2008#define TX_BEAMFORMING_INCAPABLE 0
2009#define CAPABLE_RECEIVE_STAGGERED_SOUNDING 1
2010#define NOT_CAPABLE_RECEIVE_STAGGERED_SOUNDING 0
2011#define CAPABLE_TRANSMIT_STAGGERED_SOUNDING 1
2012#define NOT_CAPABLE_TRANSMIT_STAGGERED_SOUNDING 0
2013#define CAPABLE_RECEIVE_ZLF 1
2014#define NOT_CAPABLE_RECEIVE_ZLF 0
2015#define CAPABLE_TRANSMIT_ZLF 1
2016#define NOT_CAPABLE_TRANSMIT_ZLF 0
2017#define CAPABLE_IMPLICIT_TXBF 1
2018#define NOT_CAPABLE_IMPLICIT_TXBF 0
2019#define INCAPABLE_CALIBRATION 0
2020#define LIMITED_CALIBRATION_CANNOT_INITIATE 1
2021#define LIMITED_CALIBRATION_CAN_INITIATE 2
2022#define FULLT_CAPABLE_CALIBRATION 3
2023#define CAPABLE_EXPLICIT_CSI_TXBF 1
2024#define INCAPABLE_EXPLICIT_CSI_TXBF 0
2025#define CAPABLE_EXPLICIT_UNCOMPRESSED_STEERING_MATRIX 1
2026#define INCAPABLE_EXPLICIT_UNCOMPRESSED_STEERING_MATRIX 0
2027#define INCAPABLE_EXPLICIT_BFCI_FEEDBACK 0
2028#define CAPABLE_UNSOLICITED_BFCI_FEEDBACK 1
2029#define CAPABLE_IMMEDIATE_BFCI_FEEDBACK 2
2030#define CAPABLE_AGGREGATE_BFCI_FEEDBACK 4
2031#define INCAPABLE_EXPLICIT_UNCOMPRESSED_STEERING_MATRIX_FEEDBAC 0
2032#define CAPABLE_UNSOLICITED_UNCOMPRESSED_STEERING_MATRIX 1
2033#define CAPABLE_IMMEDIATE_UNCOMPRESSED_STEERING_MATRIX 2
2034#define CAPABLE_AGGREGATED_UNCOMPRESSED_STEERING_MATRIX 4
2035#define INCAPABLE_EXPLICIT_COMPRESSED_STEERING_MATRIX_FEEDBAC 0
2036#define CAPABLE_UNSOLICITED_COMPRESSED_STEERING_MATRIX 1
2037#define CAPABLE_IMMEDIATE_COMPRESSED_STEERING_MATRIX 2
2038#define CAPABLE_AGGREGATED_COMPRESSED_STEERING_MATRIX 4
2039#define SUPPORT_CSI_BEAMFORMING_SINGLE_TX_ANTENNA_SOUNDING 0
2040#define SUPPORT_CSI_BEAMFORMING_2_TX_ANTENNA_SOUNDING 1
2041#define SUPPORT_CSI_BEAMFORMING_3_TX_ANTENNA_SOUNDING 2
2042#define SUPPORT_CSI_BEAMFORMING_4_TX_ANTENNA_SOUNDING 3
2043#define SUPPORT_UNCOMPRESSED_STEERING_MATRIX_1_TX_ANTENNA_SOUNDING 0
2044#define SUPPORT_UNCOMPRESSED_STEERING_MATRIX_2_TX_ANTENNA_SOUNDING 1
2045#define SUPPORT_UNCOMPRESSED_STEERING_MATRIX_3_TX_ANTENNA_SOUNDING 2
2046#define SUPPORT_UNCOMPRESSED_STEERING_MATRIX_4_TX_ANTENNA_SOUNDING 3
2047#define SUPPORT_COMPRESSED_STEERING_MATRIX_1_TX_ANTENNA_SOUNDING 0
2048#define SUPPORT_COMPRESSED_STEERING_MATRIX_2_TX_ANTENNA_SOUNDING 1
2049#define SUPPORT_COMPRESSED_STEERING_MATRIX_3_TX_ANTENNA_SOUNDING 2
2050#define SUPPORT_COMPRESSED_STEERING_MATRIX_4_TX_ANTENNA_SOUNDING 3
2051
2052// Typedef Antenna Selection Capability
2053#define CAPABLE_ANTENNA_SELECTION 1
2054#define INCAPABLE_ANTENNA_SELECTION 0
2055#define CAPABLE_EXPLICIT_CSI_FEEDBACK_BASED_TX_AS 1
2056#define INCAPABLE_EXPLICIT_CSI_FEEDBACK_BASED_TX_AS 0
2057#define CAPABLE_ANTENNA_INDICES_FEEDBACK_BASED_TX_AS 1
2058#define INCAPABLE_ANTENNA_INDICES_FEEDBACK_BASED_TX_AS 0
2059#define CAPABLE_EXPLICIT_CSI_FEEDBACK 1
2060#define INCAPABLE_EXPLICIT_CSI_FEEDBACK 0
2061#define CAPABLE_ANTENNA_INDICES_FEEDBACK_BASED_TX_AS 1
2062#define INCAPABLE_ANTENNA_INDICES_FEEDBACK_BASED_TX_AS 0
2063#define CAPABLE_RX_AS 1
2064#define INCAPABLE_RX_AS 0
2065#define CAPABLE_TRANSMIT_SOUNDING_PPDU 1
2066#define INCAPABLE_TRANSMIT_SOUNDING_PPDU 0
2067
2068// Typedef Additional HT Infomation Elements
2069#define CONTROL_CHANNEL_1 1
2070
2071#define OFFSET_NO_EXTENSION_CHANNEL_IS_PRESENT 0
2072#define OFFSET_EXTENSION_CHANNEL_ABOVE_CONTROL_CHANNEL 1
2073#define OFFSET_EXTENSION_CHANNEL_BELOW_CONTROL_CHANNEL 3
2074#define USE_20_MHZ_CONTROL_CHANNEL 0
2075#define USE_ANY_SUPPORTED_CHANNEL_WIDTH 1
2076#define USE_RIFS_MODE_PROHIBITED 0
2077#define USE_RIFS_MODE_PERMITTED 1
2078#define CONTROLLED_ACCESS_NOT_ONLY_PSMP 0
2079#define CONTROLLED_ACCESS_ONLY_PSMP 1
2080#define SERVICE_INTERVAL_GRANULARITY_5MS 0
2081#define SERVICE_INTERVAL_GRANULARITY_10MS 1
2082#define SERVICE_INTERVAL_GRANULARITY_15MS 2
2083#define SERVICE_INTERVAL_GRANULARITY_20MS 3
2084#define SERVICE_INTERVAL_GRANULARITY_25MS 4
2085#define SERVICE_INTERVAL_GRANULARITY_30MS 5
2086#define SERVICE_INTERVAL_GRANULARITY_35MS 6
2087#define SERVICE_INTERVAL_GRANULARITY_40MS 7
2088
2089#define OPERATION_MODE_PURE_NO_PROTECTION 0
2090#define OPERATION_MODE_OPTIONAL_PROTECTION 1
2091#define OPERATION_MODE_NO_LEGACY_STA_40MHZ_PROTECTED 2
2092#define OPERATION_MODE_MIXED_PROTECTION 3
2093
2094#define DUAL_CTS_PROTECTION_IS_USED 1
2095#define REGULAR_RTS_CTS_IS_USED 0
2096#define SECONDARY_BEACON 1
2097#define PRIMARY_BEACON 0
2098#define LSIG_TXOP_PROTECTION_FULL_SUPPORT 1
2099#define LSIG_TXOP_PROTECTION_NOT_FULL_SUPPORT 0
2100#define PCO_IS_ACTIVATED_IN_BSS 1
2101#define PCO_IS_NOT_ACTIVATED_IN_BSS 0
2102#define PCO_PHASE_REQUEST_SWITCH_KEEP_TO_20MHZ 0
2103#define PCO_PHASE_REQUEST_SWITCH_KEEP_TO_40MHZ 1
2104#endif
2105
2106//
2107// The following enums will be used to get the "current" HT Capabilities of
2108// the local STA in a generic fashion. In other words, the following enums
2109// identify the HT capabilities that can be queried or set.
2110//
2111typedef enum eHTCapability
2112{
2113 eHT_LSIG_TXOP_PROTECTION,
2114 eHT_STBC_CONTROL_FRAME,
2115 eHT_PSMP,
2116 eHT_DSSS_CCK_MODE_40MHZ,
2117 eHT_MAX_AMSDU_LENGTH,
2118 eHT_DELAYED_BA,
2119 eHT_RX_STBC,
2120 eHT_TX_STBC,
2121 eHT_SHORT_GI_40MHZ,
2122 eHT_SHORT_GI_20MHZ,
2123 eHT_GREENFIELD,
2124 eHT_MIMO_POWER_SAVE,
2125 eHT_SUPPORTED_CHANNEL_WIDTH_SET,
2126 eHT_ADVANCED_CODING,
2127 eHT_MAX_RX_AMPDU_FACTOR,
2128 eHT_MPDU_DENSITY,
2129 eHT_PCO,
2130 eHT_TRANSITION_TIME,
2131 eHT_MCS_FEEDBACK,
2132 eHT_TX_BEAMFORMING,
2133 eHT_ANTENNA_SELECTION,
2134 // The following come under Additional HT Capabilities
2135 eHT_SI_GRANULARITY,
2136 eHT_CONTROLLED_ACCESS,
2137 eHT_RIFS_MODE,
2138 eHT_RECOMMENDED_TX_WIDTH_SET,
2139 eHT_EXTENSION_CHANNEL_OFFSET,
2140 eHT_OP_MODE,
2141 eHT_BASIC_STBC_MCS,
2142 eHT_DUAL_CTS_PROTECTION,
2143 eHT_LSIG_TXOP_PROTECTION_FULL_SUPPORT,
2144 eHT_PCO_ACTIVE,
2145 eHT_PCO_PHASE
2146} tHTCapability;
2147
2148// HT Capabilities Info
2149typedef __ani_attr_pre_packed struct sSirMacHTCapabilityInfo
2150{
2151#ifndef ANI_LITTLE_BIT_ENDIAN
2152 tANI_U16 lsigTXOPProtection:1; // Dynamic state
2153 tANI_U16 stbcControlFrame:1; // Static via CFG
2154 tANI_U16 psmp:1; // Static via CFG
2155 tANI_U16 dsssCckMode40MHz:1; // Static via CFG
2156 tANI_U16 maximalAMSDUsize:1; // Static via CFG
2157 tANI_U16 delayedBA:1; // Static via CFG
2158 tANI_U16 rxSTBC:2; // Static via CFG
2159 tANI_U16 txSTBC:1; // Static via CFG
2160 tANI_U16 shortGI40MHz:1; // Static via CFG
2161 tANI_U16 shortGI20MHz:1; // Static via CFG
2162 tANI_U16 greenField:1; // Static via CFG
2163 tANI_U16 mimoPowerSave:2; // Dynamic state
2164 tANI_U16 supportedChannelWidthSet:1; // Static via CFG
2165 tANI_U16 advCodingCap:1; // Static via CFG
2166#else
2167 tANI_U16 advCodingCap:1;
2168 tANI_U16 supportedChannelWidthSet:1;
2169 tANI_U16 mimoPowerSave:2;
2170 tANI_U16 greenField:1;
2171 tANI_U16 shortGI20MHz:1;
2172 tANI_U16 shortGI40MHz:1;
2173 tANI_U16 txSTBC:1;
2174 tANI_U16 rxSTBC:2;
2175 tANI_U16 delayedBA:1;
2176 tANI_U16 maximalAMSDUsize:1;
2177 tANI_U16 dsssCckMode40MHz:1;
2178 tANI_U16 psmp:1;
2179 tANI_U16 stbcControlFrame:1;
2180 tANI_U16 lsigTXOPProtection:1;
2181#endif
2182} __ani_attr_packed tSirMacHTCapabilityInfo;
2183
2184// HT Parameters Info
2185typedef __ani_attr_pre_packed struct sSirMacHTParametersInfo
2186{
2187#ifndef ANI_LITTLE_BIT_ENDIAN
2188 tANI_U8 reserved:3;
2189 tANI_U8 mpduDensity:3; // Dynamic state
2190 tANI_U8 maxRxAMPDUFactor:2; // Dynamic state
2191#else
2192 tANI_U8 maxRxAMPDUFactor:2;
2193 tANI_U8 mpduDensity:3;
2194 tANI_U8 reserved:3;
2195#endif
2196} __ani_attr_packed tSirMacHTParametersInfo;
2197
2198// Extended HT Capabilities Info
2199typedef __ani_attr_pre_packed struct sSirMacExtendedHTCapabilityInfo
2200{
2201#ifndef ANI_LITTLE_BIT_ENDIAN
2202 tANI_U16 reserved2:6;
2203 tANI_U16 mcsFeedback:2; // Static via CFG
2204 tANI_U16 reserved1:5;
2205 tANI_U16 transitionTime:2; // Static via CFG
2206 tANI_U16 pco:1; // Static via CFG
2207#else
2208 tANI_U16 pco:1;
2209 tANI_U16 transitionTime:2;
2210 tANI_U16 reserved1:5;
2211 tANI_U16 mcsFeedback:2;
2212 tANI_U16 reserved2:6;
2213#endif
2214} __ani_attr_packed tSirMacExtendedHTCapabilityInfo;
2215
2216//IEEE 802.11n/D7.0 - 7.3.2.57.4
2217//Part of the "supported MCS set field"
2218typedef __ani_attr_pre_packed struct sSirMacRxHighestSupportRate
2219{
2220#ifndef ANI_LITTLE_BIT_ENDIAN
2221 tANI_U16 reserved : 6;
2222 tANI_U16 rate : 10;
2223#else
2224 tANI_U16 rate : 10;
2225 tANI_U16 reserved : 6;
2226#endif
2227} __ani_attr_packed tSirMacRxHighestSupportRate, *tpSirMacRxHighestSupportRate;
2228
2229
2230// Transmit Beam Forming Capabilities Info
2231typedef __ani_attr_pre_packed struct sSirMacTxBFCapabilityInfo
2232{
2233#ifndef ANI_LITTLE_BIT_ENDIAN
2234 tANI_U32 reserved:7;
2235 tANI_U32 compressedSteeringMatrixBFAntennae:2; // Static via CFG
2236 tANI_U32 uncompressedSteeringMatrixBFAntennae:2; // Static via CFG
2237 tANI_U32 csiNumBFAntennae:2; // Static via CFG
2238 tANI_U32 explicitCompressedSteeringMatrixFeedback:3; // Static via CFG
2239 tANI_U32 explicitUncompressedSteeringMatrixFeedback:3; // Static via CFG
2240 tANI_U32 explicitBFCSIFeedback:3; // Static via CFG
2241 tANI_U32 explicitUncompressedSteeringMatrix:1; // Static via CFG
2242 tANI_U32 explicitCSITxBF:1; // Static via CFG
2243 tANI_U32 calibration:2; // Static via CFG
2244 tANI_U32 implicitTxBF:1; // Static via CFG
2245 tANI_U32 txZLF:1; // Static via CFG
2246 tANI_U32 rxZLF:1; // Static via CFG
2247 tANI_U32 txStaggeredSounding:1; // Static via CFG
2248 tANI_U32 rxStaggeredSounding:1; // Static via CFG
2249 tANI_U32 txBF:1; // Static via CFG
2250#else
2251 tANI_U32 txBF:1;
2252 tANI_U32 rxStaggeredSounding:1;
2253 tANI_U32 txStaggeredSounding:1;
2254 tANI_U32 rxZLF:1;
2255 tANI_U32 txZLF:1;
2256 tANI_U32 implicitTxBF:1;
2257 tANI_U32 calibration:2;
2258 tANI_U32 explicitCSITxBF:1;
2259 tANI_U32 explicitUncompressedSteeringMatrix:1;
2260 tANI_U32 explicitBFCSIFeedback:3;
2261 tANI_U32 explicitUncompressedSteeringMatrixFeedback:3;
2262 tANI_U32 explicitCompressedSteeringMatrixFeedback:3;
2263 tANI_U32 csiNumBFAntennae:2;
2264 tANI_U32 uncompressedSteeringMatrixBFAntennae:2;
2265 tANI_U32 compressedSteeringMatrixBFAntennae:2;
2266 tANI_U32 reserved:7;
2267#endif
2268} __ani_attr_packed tSirMacTxBFCapabilityInfo;
2269
2270// Antenna Selection Capability Info
2271typedef __ani_attr_pre_packed struct sSirMacASCapabilityInfo
2272{
2273#ifndef ANI_LITTLE_BIT_ENDIAN
2274 tANI_U8 reserved2:1;
2275 tANI_U8 txSoundingPPDUs:1; // Static via CFG
2276 tANI_U8 rxAS:1; // Static via CFG
2277 tANI_U8 antennaIndicesFeedback:1; // Static via CFG
2278 tANI_U8 explicitCSIFeedback:1; // Static via CFG
2279 tANI_U8 antennaIndicesFeedbackTx:1; // Static via CFG
2280 tANI_U8 explicitCSIFeedbackTx:1; // Static via CFG
2281 tANI_U8 antennaSelection:1; // Static via CFG
2282#else
2283 tANI_U8 antennaSelection:1;
2284 tANI_U8 explicitCSIFeedbackTx:1;
2285 tANI_U8 antennaIndicesFeedbackTx:1;
2286 tANI_U8 explicitCSIFeedback:1;
2287 tANI_U8 antennaIndicesFeedback:1;
2288 tANI_U8 rxAS:1;
2289 tANI_U8 txSoundingPPDUs:1;
2290 tANI_U8 reserved2:1;
2291#endif
2292} __ani_attr_packed tSirMacASCapabilityInfo;
2293
2294// Additional HT IE Field1
2295typedef __ani_attr_pre_packed struct sSirMacHTInfoField1
2296{
2297#ifndef ANI_LITTLE_BIT_ENDIAN
2298 tANI_U8 serviceIntervalGranularity:3; // Dynamic state
2299 tANI_U8 controlledAccessOnly:1; // Static via CFG
2300 tANI_U8 rifsMode:1; // Dynamic state
2301 tANI_U8 recommendedTxWidthSet:1; // Dynamic state
2302 tANI_U8 secondaryChannelOffset:2; // Dynamic state
2303#else
2304 tANI_U8 secondaryChannelOffset:2;
2305 tANI_U8 recommendedTxWidthSet:1;
2306 tANI_U8 rifsMode:1;
2307 tANI_U8 controlledAccessOnly:1;
2308 tANI_U8 serviceIntervalGranularity:3;
2309#endif
2310} __ani_attr_packed tSirMacHTInfoField1;
2311
2312// Additional HT IE Field2
2313typedef __ani_attr_pre_packed struct sSirMacHTInfoField2
2314{
2315#ifndef ANI_LITTLE_BIT_ENDIAN
2316 tANI_U16 reserved:11;
2317 tANI_U16 obssNonHTStaPresent:1; /*added for Obss */
2318 tANI_U16 transmitBurstLimit: 1;
2319 tANI_U16 nonGFDevicesPresent:1;
2320 tANI_U16 opMode:2; // Dynamic state
2321#else
2322 tANI_U16 opMode:2;
2323 tANI_U16 nonGFDevicesPresent:1;
2324 tANI_U16 transmitBurstLimit: 1;
2325 tANI_U16 obssNonHTStaPresent:1; /*added for Obss */
2326 tANI_U16 reserved:11;
2327#endif
2328} __ani_attr_packed tSirMacHTInfoField2;
2329
2330// Additional HT IE Field3
2331typedef __ani_attr_pre_packed struct sSirMacHTInfoField3
2332{
2333#ifndef ANI_LITTLE_BIT_ENDIAN
2334 tANI_U16 reserved:4;
2335 tANI_U16 pcoPhase:1; // Dynamic state
2336 tANI_U16 pcoActive:1; // Dynamic state
2337 tANI_U16 lsigTXOPProtectionFullSupport:1; // Dynamic state
2338 tANI_U16 secondaryBeacon:1; // Dynamic state
2339 tANI_U16 dualCTSProtection:1; // Dynamic state
2340 tANI_U16 basicSTBCMCS:7; // Dynamic state
2341#else
2342 tANI_U16 basicSTBCMCS:7;
2343 tANI_U16 dualCTSProtection:1;
2344 tANI_U16 secondaryBeacon:1;
2345 tANI_U16 lsigTXOPProtectionFullSupport:1;
2346 tANI_U16 pcoActive:1;
2347 tANI_U16 pcoPhase:1;
2348 tANI_U16 reserved:4;
2349#endif
2350} __ani_attr_packed tSirMacHTInfoField3;
2351
2352typedef __ani_attr_pre_packed struct sSirMacProbeReqFrame
2353{
2354 tSirMacSSidIE ssIdIE;
2355 tSirMacRateSetIE rateSetIE;
2356 tSirMacRateSetIE extendedRateSetIE;
2357} __ani_attr_packed tSirMacProbeReqFrame, *tpSirMacProbeReqFrame;
2358
2359typedef __ani_attr_pre_packed struct sSirMacProbeRspFrame
2360{
2361 tSirMacTimeStamp ts;
2362 tSirMacBeaconInterval beaconInterval;
2363 tSirMacCapabilityInfo capabilityInfo;
2364 tSirMacSSidIE ssIdIE;
2365 tSirMacRateSetIE rateSetIE;
2366 tSirMacRateSetIE extendedRateSetIE;
2367 tSirMacNonErpPresentIE nonErpPresent;
2368 tSirMacDsParamSetIE dsParamsIE;
2369 tSirMacCfParamSetIE cfParamsIE;
2370} __ani_attr_packed tSirMacProbeRspFrame, *tpSirMacProbeRspFrame;
2371
2372typedef __ani_attr_pre_packed struct sSirMacAuthFrameBody
2373{
2374 tANI_U16 authAlgoNumber;
2375 tANI_U16 authTransactionSeqNumber;
2376 tANI_U16 authStatusCode;
2377 tANI_U8 type; // = SIR_MAC_CHALLENGE_TEXT_EID
2378 tANI_U8 length; // = SIR_MAC_AUTH_CHALLENGE_LENGTH
2379 tANI_U8 challengeText[SIR_MAC_AUTH_CHALLENGE_LENGTH];
2380} __ani_attr_packed tSirMacAuthFrameBody, *tpSirMacAuthFrameBody;
2381
2382typedef __ani_attr_pre_packed struct sSirMacAuthenticationFrame
2383{
2384 tSirMacAuthFrameBody authFrameBody;
2385} __ani_attr_packed tSirMacAuthFrame, *tpSirMacAuthFrame;
2386
2387typedef __ani_attr_pre_packed struct sSirMacAssocReqFrame
2388{
2389 tSirMacCapabilityInfo capabilityInfo;
2390 tANI_U16 listenInterval;
2391 tSirMacSSidIE ssIdIE;
2392 tSirMacRateSetIE rateSetIE;
2393 tSirMacRateSetIE extendedRateSetIE;
2394} __ani_attr_packed tSirMacAssocReqFrame, *tpSirMacAssocReqFrame;
2395
2396typedef __ani_attr_pre_packed struct sSirMacAssocRspFrame
2397{
2398 tSirMacCapabilityInfo capabilityInfo;
2399 tANI_U16 statusCode;
2400 tANI_U16 aid;
2401 tSirMacRateSetIE supportedRates;
2402 tSirMacRateSetIE extendedRateSetIE;
2403} __ani_attr_packed tSirMacAssocRspFrame, *tpSirMacAssocRspFrame;
2404
2405typedef __ani_attr_pre_packed struct sSirMacDisassocFrame
2406{
2407 tANI_U16 reasonCode;
2408} __ani_attr_packed tSirMacDisassocFrame, *tpSirMacDisassocFrame;
2409
2410typedef __ani_attr_pre_packed struct sDSirMacDeauthFrame
2411{
2412 tANI_U16 reasonCode;
2413} __ani_attr_packed tSirMacDeauthFrame, *tpSirMacDeauthFrame;
2414
2415/// Common header for all action frames
2416typedef __ani_attr_pre_packed struct sSirMacActionFrameHdr
2417{
2418 tANI_U8 category;
2419 tANI_U8 actionID;
2420} __ani_attr_packed tSirMacActionFrameHdr, *tpSirMacActionFrameHdr;
2421
Srinivas Girigowda100eb322013-03-15 16:48:20 -07002422#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
2423typedef __ani_attr_pre_packed struct sSirMacVendorSpecificFrameHdr
2424{
2425 tANI_U8 category;
2426 tANI_U8 Oui[4];
2427} __ani_attr_packed tSirMacVendorSpecificFrameHdr, *tpSirMacVendorSpecificFrameHdr;
2428#endif
2429
Jeff Johnson295189b2012-06-20 16:38:30 -07002430typedef __ani_attr_pre_packed struct sSirMacVendorSpecificPublicActionFrameHdr
2431{
2432 tANI_U8 category;
2433 tANI_U8 actionID;
2434 tANI_U8 Oui[4];
2435 tANI_U8 OuiSubType;
2436 tANI_U8 dialogToken;
2437} __ani_attr_packed tSirMacVendorSpecificPublicActionFrameHdr, *tpSirMacVendorSpecificPublicActionFrameHdr;
2438
2439typedef __ani_attr_pre_packed struct sSirMacP2PActionFrameHdr
2440{
2441 tANI_U8 category;
2442 tANI_U8 Oui[4];
2443 tANI_U8 OuiSubType;
2444 tANI_U8 dialogToken;
2445} __ani_attr_packed tSirMacP2PActionFrameHdr, *tpSirMacP2PActionFrameHdr;
2446
2447
Jeff Johnson295189b2012-06-20 16:38:30 -07002448
2449typedef struct sSirMacMeasActionFrameHdr
2450{
2451 tANI_U8 category;
2452 tANI_U8 actionID;
2453 tANI_U8 dialogToken;
2454} tSirMacMeasActionFrameHdr, *tpSirMacMeasActionFrameHdr;
2455
2456
2457#ifdef ANI_SUPPORT_11H
2458typedef struct sSirMacTpcReqActionFrame
2459{
2460 tSirMacMeasActionFrameHdr actionHeader;
2461 tANI_U8 type;
2462 tANI_U8 length;
2463} tSirMacTpcReqActionFrame, *tpSirMacTpcReqActionFrame;
2464
2465typedef struct sSirMacMeasReqActionFrame
2466{
2467 tSirMacMeasActionFrameHdr actionHeader;
2468 tSirMacMeasReqIE measReqIE;
2469} tSirMacMeasReqActionFrame, *tpSirMacMeasReqActionFrame;
2470#endif
2471
2472typedef struct sSirMacBasicMeasReportActionFrame
2473{
2474 tSirMacMeasActionFrameHdr actionHeader;
2475 tSirMacBasicReportIE measReportIE;
2476} tSirMacBasicMeasReportActionFrame, *tpSirMacBasicMeasReportActionFrame;
2477
2478typedef struct sSirMacCcaMeasReportActionFrame
2479{
2480 tSirMacMeasActionFrameHdr actionHeader;
2481 tSirMacCcaReportIE measReportIE;
2482} tSirMacCcaMeasReportActionFrame, *tpSirMacCcaMeasReportActionFrame;
2483
2484typedef struct sSirMacRpiMeasReportActionFrame
2485{
2486 tSirMacMeasActionFrameHdr actionHeader;
2487 tSirMacRpiReportIE measReportIE;
2488} tSirMacRpiMeasReportActionFrame, *tpSirMacRpiMeasReportActionFrame;
2489
2490#if defined WLAN_FEATURE_VOWIFI
2491
2492typedef struct sSirMacNeighborReportReq
2493{
2494 tANI_U8 dialogToken;
2495 tANI_U8 ssid_present;
2496 tSirMacSSid ssid;
2497} tSirMacNeighborReportReq, *tpSirMacNeighborReportReq;
2498
2499typedef struct sSirMacLinkReport
2500{
2501 tANI_U8 dialogToken;
2502 tANI_U8 txPower;
2503 tANI_U8 rxAntenna;
2504 tANI_U8 txAntenna;
2505 tANI_U8 rcpi;
2506 tANI_U8 rsni;
2507} tSirMacLinkReport, *tpSirMacLinkReport;
2508
2509#define BEACON_REPORT_MAX_IES 224 //Refer IEEE 802.11k-2008, Table 7-31d
2510typedef struct sSirMacBeaconReport
2511{
2512 tANI_U8 regClass;
2513 tANI_U8 channel;
2514 tANI_U8 measStartTime[8];
2515 tANI_U8 measDuration;
2516 tANI_U8 phyType;
2517 tANI_U8 bcnProbeRsp;
2518 tANI_U8 rsni;
2519 tANI_U8 rcpi;
2520 tSirMacAddr bssid;
2521 tANI_U8 antennaId;
2522 tANI_U32 parentTSF;
2523 tANI_U8 numIes;
2524 tANI_U8 Ies[BEACON_REPORT_MAX_IES];
2525
2526} tSirMacBeaconReport, *tpSirMacBeaconReport;
2527
2528#define RADIO_REPORTS_MAX_IN_A_FRAME 4
2529typedef struct sSirMacRadioMeasureReport
2530{
2531 tANI_U8 token;
2532 tANI_U8 refused;
2533 tANI_U8 incapable;
2534 tANI_U8 type;
2535 union
2536 {
2537 tSirMacBeaconReport beaconReport;
2538 }report;
2539
2540}tSirMacRadioMeasureReport, *tpSirMacRadioMeasureReport;
2541
2542#endif
2543
2544// QOS action frame definitions
2545
2546// max number of possible tclas elements in any frame
2547#define SIR_MAC_TCLASIE_MAXNUM 2
2548
2549// ADDTS request
2550typedef __ani_attr_pre_packed struct sSirMacQosAddtsReqAF
2551{
2552 tSirMacActionFrameHdr afHdr;
2553 tANI_U8 dlgToken;
2554 tSirMacTspecIE tspec;
2555 tANI_U8 tclas[1]; // variable length element
2556} __ani_attr_packed tSirMacQosAddtsReqAF;
2557
2558// ADDTS response
2559typedef __ani_attr_pre_packed struct sSirMacQosAddtsRspAF
2560{
2561 tSirMacActionFrameHdr afHdr;
2562 tANI_U8 dlgToken;
2563 tSirMacStatusCodes status;
2564 tSirMacTsDelayIE delay;
2565 tSirMacTspecIE tspec;
2566 tANI_U8 tclas[1];
2567} __ani_attr_packed tSirMacQosAddtsRspAF;
2568
2569// DELTS frame
2570typedef __ani_attr_pre_packed struct sSirMacQosDeltsAF
2571{
2572 tSirMacActionFrameHdr afHdr;
2573 tSirMacTSInfo tsinfo;
2574} __ani_attr_packed tSirMacQosDeltsAF;
2575
2576// Schedule frame
2577typedef __ani_attr_pre_packed struct sSirMacQosScheduleAF
2578{
2579 tSirMacActionFrameHdr afHdr;
2580 tSirMacScheduleIE schedule;
2581} __ani_attr_packed tSirMacQosScheduleAF;
2582
2583// DLP action frame definitions
2584
2585// DLP request
2586typedef __ani_attr_pre_packed struct sSirMacQosDlpReqAF
2587{
2588 tSirMacActionFrameHdr afHdr;
2589 tANI_U8 dstMAC[6];
2590 tANI_U8 srcMAC[6];
2591 tSirMacQosCapabilityIE qosCapability;
2592 tANI_U16 dlpTimeout;
2593 tSirMacRateSetIE supportedRates;
2594} __ani_attr_packed tSirMacQosDlpReqAF;
2595
2596// DLP response
2597typedef __ani_attr_pre_packed struct sSirMacQosDlpRspAF
2598{
2599 tSirMacActionFrameHdr afHdr;
2600 tANI_U8 dstMAC[6];
2601 tANI_U8 srcMAC[6];
2602 tSirMacStatusCodes status;
2603 tSirMacQosCapabilityIE qosCapability;
2604 tSirMacRateSetIE supportedRates;
2605} __ani_attr_packed tSirMacQosDlpRspAF;
2606
2607// DLP teardown
2608typedef __ani_attr_pre_packed struct sSirMacQosDlpTdnAF
2609{
2610 tSirMacActionFrameHdr afHdr;
2611 tANI_U8 dstMAC[6];
2612 tANI_U8 srcMAC[6];
2613} __ani_attr_packed tSirMacQosDlpTdnAF;
2614
2615
2616
2617
2618//
2619/// Common header for all ANI proprietary action frames
2620typedef __ani_attr_pre_packed struct sSirMacAniActionFrame
2621{
2622 tSirMacActionFrameHdr afHdr;
2623 tANI_U8 aniOui[3]; // 00 0A F5
2624 tANI_U8 type; // 0 - request; 1 - report; 2 - snr
2625} __ani_attr_packed tSirMacAniActionFrame, *tpSirMacAniActionFrame;
2626
2627
2628typedef __ani_attr_pre_packed struct sSirMacLinkTestReqData
2629{
2630 tSirMacAniActionFrame hdr;
2631 tANI_U8 frameStatus; // bit0 - first frame
2632 // bit1 - last frame;
2633 // if both bit0/1 are on,
2634 // intermediate frame
2635 // bit2-7 - reserved
2636 tANI_U8 rate;
2637 tANI_U8 randomData[SIR_MAC_MAX_RANDOM_LENGTH];
2638} __ani_attr_packed tSirMacLinkTestReqData, *tpSirMacLinkTestReqData;
2639
2640/// SNR report specific fields
2641typedef __ani_attr_pre_packed struct sSirMacSnrReport
2642{
2643 tSirMacAniActionFrame hdr;
2644 tANI_U32 numSamples;
2645 tANI_U32 snr;
2646 tANI_U32 snrComp;
2647 tANI_U32 sq;
2648 tANI_U32 rssi;
2649} __ani_attr_packed tSirMacSnrReport, *tpSirMacSnrReport;
2650
2651typedef __ani_attr_pre_packed struct sSirMacStaCbLegacyBssDetect
2652{
2653 tSirMacAniActionFrame hdr;
2654 tANI_U8 channelNum;
2655 tANI_U8 numLegacyBssid;
2656 /* Below is declared as a place holder. Don't add anything after it since LegacyBssidList will take up memory after it */
2657 tANI_U8 LegacyBssidList[1]; /* Need to declare size 1 cause win build doesn't like size 0 */
2658} __ani_attr_packed tSirMacStaCbLegacyBssDetect, *tpSirMacStaCbLegacyBssDetect;
2659
2660typedef __ani_attr_pre_packed struct sSirMacQoSDefBAReq
2661{
2662 tSirMacActionFrameHdr hdr;
2663
2664 tANI_U8 rsvd1;
2665
2666#ifdef ANI_LITTLE_BIT_ENDIAN
2667 tANI_U8 tid: 4;
2668 tANI_U8 rsvd2: 4;
2669#else
2670 tANI_U8 rsvd2: 4;
2671 tANI_U8 tid: 4;
2672#endif
2673} __ani_attr_packed tSirMacQoSDefBAReq, *tpSirMacQoSDefBAReq;
2674
2675typedef __ani_attr_pre_packed struct sSirMacQoSDefBARsp
2676{
2677 tSirMacActionFrameHdr hdr;
2678
2679#ifdef ANI_LITTLE_BIT_ENDIAN
2680 tANI_U8 tid: 4;
2681 tANI_U8 policy: 1;
2682 tANI_U8 reject: 1;
2683 tANI_U8 rsvd1: 2;
2684#else
2685 tANI_U8 rsvd1: 2;
2686 tANI_U8 reject: 1;
2687 tANI_U8 policy: 1;
2688 tANI_U8 tid: 4;
2689#endif
2690
2691 tANI_U8 bufferSize;
2692} __ani_attr_packed tSirMacQoSDefBARsp, *tpSirMacQoSDefBARsp;
2693
2694typedef __ani_attr_pre_packed struct sSirMacQoSDelBAReq
2695{
2696 tSirMacActionFrameHdr hdr;
2697 tANI_U8 rsvd1;
2698
2699#ifdef ANI_LITTLE_BIT_ENDIAN
2700 tANI_U8 rsvd2: 3;
2701 tANI_U8 direction: 1;
2702 tANI_U8 tid: 4;
2703#else
2704 tANI_U8 tid: 4;
2705 tANI_U8 direction: 1;
2706 tANI_U8 rsvd2: 3;
2707#endif
2708} __ani_attr_packed tSirMacQoSDelBAReq, *tpSirMacQoSDelBAReq;
2709
2710typedef __ani_attr_pre_packed struct sSirMacQoSDelBARsp
2711{
2712 tSirMacActionFrameHdr hdr;
2713
2714#ifdef ANI_LITTLE_BIT_ENDIAN
2715 tANI_U8 tid: 4;
2716 tANI_U8 policy: 1;
2717 tANI_U8 reject: 1;
2718 tANI_U8 rsvd1: 2;
2719#else
2720 tANI_U8 rsvd1: 2;
2721 tANI_U8 reject: 1;
2722 tANI_U8 policy: 1;
2723 tANI_U8 tid: 4;
2724#endif
2725
2726} __ani_attr_packed tSirMacQoSDelBARsp, *tpSirMacQoSDelBARsp;
2727
2728
2729
2730// 11b rate encoding in MAC format
2731
2732#define SIR_MAC_RATE_1 0x02
2733#define SIR_MAC_RATE_2 0x04
2734#define SIR_MAC_RATE_5_5 0x0B
2735#define SIR_MAC_RATE_11 0x16
2736
2737// 11a/g rate encoding in MAC format
2738
2739#define SIR_MAC_RATE_6 0x0C
2740#define SIR_MAC_RATE_9 0x12
2741#define SIR_MAC_RATE_12 0x18
2742#define SIR_MAC_RATE_18 0x24
2743#define SIR_MAC_RATE_24 0x30
2744#define SIR_MAC_RATE_36 0x48
2745#define SIR_MAC_RATE_48 0x60
2746#define SIR_MAC_RATE_54 0x6C
2747
2748// ANI legacy supported rates
2749#define SIR_MAC_RATE_72 0x01
2750#define SIR_MAC_RATE_96 0x03
2751#define SIR_MAC_RATE_108 0x05
2752
2753// ANI enhanced rates
2754#define SIR_MAC_RATE_42 1000
2755#define SIR_MAC_RATE_84 1001
2756#define SIR_MAC_RATE_126 1002
2757#define SIR_MAC_RATE_144 1003
2758#define SIR_MAC_RATE_168 1004
2759#define SIR_MAC_RATE_192 1005
2760#define SIR_MAC_RATE_216 1006
2761#define SIR_MAC_RATE_240 1007
2762
2763
2764#define sirIsArate(x) ((((tANI_U8)x)==SIR_MAC_RATE_6) || \
2765 (((tANI_U8)x)==SIR_MAC_RATE_9) || \
2766 (((tANI_U8)x)==SIR_MAC_RATE_12)|| \
2767 (((tANI_U8)x)==SIR_MAC_RATE_18)|| \
2768 (((tANI_U8)x)==SIR_MAC_RATE_24)|| \
2769 (((tANI_U8)x)==SIR_MAC_RATE_36)|| \
2770 (((tANI_U8)x)==SIR_MAC_RATE_48)|| \
2771 (((tANI_U8)x)==SIR_MAC_RATE_54))
2772
2773#define sirIsBrate(x) ((((tANI_U8)x)==SIR_MAC_RATE_1) || \
2774 (((tANI_U8)x)==SIR_MAC_RATE_2) || \
2775 (((tANI_U8)x)==SIR_MAC_RATE_5_5)|| \
2776 (((tANI_U8)x)==SIR_MAC_RATE_11))
2777
2778#define sirIsGrate(x) ((((tANI_U8)x)==SIR_MAC_RATE_1) || \
2779 (((tANI_U8)x)==SIR_MAC_RATE_2) || \
2780 (((tANI_U8)x)==SIR_MAC_RATE_5_5)|| \
2781 (((tANI_U8)x)==SIR_MAC_RATE_11) || \
2782 (((tANI_U8)x)==SIR_MAC_RATE_6) || \
2783 (((tANI_U8)x)==SIR_MAC_RATE_9) || \
2784 (((tANI_U8)x)==SIR_MAC_RATE_12) || \
2785 (((tANI_U8)x)==SIR_MAC_RATE_18) || \
2786 (((tANI_U8)x)==SIR_MAC_RATE_24) || \
2787 (((tANI_U8)x)==SIR_MAC_RATE_36) || \
2788 (((tANI_U8)x)==SIR_MAC_RATE_48) || \
2789 (((tANI_U8)x)==SIR_MAC_RATE_54))
2790
2791#define sirIsProprate(x) ((((tANI_U8)x)==SIR_MAC_RATE_72) || \
2792 (((tANI_U8)x)==SIR_MAC_RATE_96) || \
2793 (((tANI_U8)x)==SIR_MAC_RATE_108))
2794
2795#define sirIsEnhancedRate(x) \
2796 (((x)==SIR_MAC_RATE_42) || \
2797 ((x)==SIR_MAC_RATE_84) || \
2798 ((x)==SIR_MAC_RATE_126) || \
2799 ((x)==SIR_MAC_RATE_144) || \
2800 ((x)==SIR_MAC_RATE_168) || \
2801 ((x)==SIR_MAC_RATE_192) || \
2802 ((x)==SIR_MAC_RATE_216) || \
2803 ((x)==SIR_MAC_RATE_240))
2804
2805/// Table that has MAC<-->PHY rate encodings
2806typedef __ani_attr_pre_packed struct sSirMacPhyRates
2807{
2808 tANI_U8 rateId;
2809 tANI_U8 phyRate; // Rate in PHY encoding format
2810 tANI_U16 macRate; // Rate in MAC encoding format
2811} __ani_attr_packed tSirMacPhyRates, *tpSirMacPhyRates;
2812
2813
2814typedef __ani_attr_pre_packed struct sSirPhy11aHdr
2815{
2816
2817#ifndef ANI_LITTLE_BIT_ENDIAN
2818
2819 tANI_U8 lengthLo : 3;
2820 tANI_U8 reserved : 1;
2821 tANI_U8 rate : 4;
2822
2823 tANI_U8 lengthMid : 8;
2824
2825 tANI_U8 tail: 6;
2826 tANI_U8 parity : 1;
2827 tANI_U8 lengthHi : 1;
2828
2829 tANI_U8 serviceLo;
2830 tANI_U8 serviceHi;
2831#else
2832 tANI_U8 rate : 4;
2833 tANI_U8 reserved : 1;
2834 tANI_U8 lengthLo : 3;
2835
2836 tANI_U8 lengthMid : 8;
2837
2838 tANI_U8 lengthHi : 1;
2839 tANI_U8 parity : 1;
2840 tANI_U8 tail: 6;
2841
2842 tANI_U8 serviceLo;
2843 tANI_U8 serviceHi;
2844#endif
2845} __ani_attr_packed tSirPhy11aHdr, *tpSirPhy11aHdr;
2846
Leela V Kiran Kumar Reddy Chirala6a458752013-02-16 15:41:27 -08002847#define SIR_MAC_MIN_IE_LEN 2 // Minimum IE length for IE validation
Jeff Johnson295189b2012-06-20 16:38:30 -07002848#endif /* __MAC_PROT_DEFS_H */