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