blob: 418d00143cdcef87289bc76450959c7df61b1e3c [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lamaa8e15a2014-02-11 23:30:06 -08002 * Copyright (c) 2012-2013 Qualcomm Atheros, Inc.
3 * All Rights Reserved.
4 * Qualcomm Atheros Confidential and Proprietary.
Jeff Johnson295189b2012-06-20 16:38:30 -07005 */
Jeff Johnson295189b2012-06-20 16:38:30 -07006/*
7 *
8 * Airgo Networks, Inc proprietary. All rights reserved.
9 * This file limGlobal.h contains the definitions exported by
10 * LIM module.
11 * Author: Chandra Modumudi
12 * Date: 02/11/02
13 * History:-
14 * Date Modified by Modification Information
15 * --------------------------------------------------------------------
16 *
17 */
18#ifndef __LIM_GLOBAL_H
19#define __LIM_GLOBAL_H
20
21#include "wniApi.h"
22#include "sirApi.h"
23#include "sirMacProtDef.h"
24#include "sirMacPropExts.h"
25#include "sirCommon.h"
26#include "sirDebug.h"
Jeff Johnson62c27982013-02-27 17:53:55 -080027#include "wniCfgSta.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070028#include "csrApi.h"
29#include "sapApi.h"
Mohit Khanna698ba2a2012-12-04 15:08:18 -080030#include "dot11f.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070031
32/// Maximum number of scan hash table entries
33#define LIM_MAX_NUM_OF_SCAN_RESULTS 256
34
35// Link Test Report Status. This appears in the report frame
36#define LINK_TEST_STATUS_SUCCESS 0x1
37#define LINK_TEST_STATUS_UNSUPPORTED_RATE 0x2
38#define LINK_TEST_STATUS_INVALID_ADDR 0x3
39
40// Amount of time in nanosec to be sleep-waited before
41// enabling RHP (1 millisec)
42#define LIM_RHP_WORK_AROUND_DURATION 1000000
43
44// Maximum amount of Quiet duration in millisec
45#define LIM_MAX_QUIET_DURATION 32
46
47#define LIM_TX_WQ_EMPTY_SLEEP_NS 100000
48
49// Sending Disassociate frames threshold
50#define LIM_SEND_DISASSOC_FRAME_THRESHOLD 2
51#define LIM_HASH_MISS_TIMER_MS 10000
52
53// Deferred Message Queue Length
54#define MAX_DEFERRED_QUEUE_LEN 20
55
56// Maximum Buffer size
57#define LIM_MAX_BUF_SIZE 8192
58
59// Maximum number of PS - TIM's to be sent with out wakeup from STA
60#define LIM_TIM_WAIT_COUNT_FACTOR 5
61
62/** Use this count if (LIM_TIM_WAIT_FACTOR * ListenInterval) is less than LIM_MIN_TIM_WAIT_CNT*/
63#define LIM_MIN_TIM_WAIT_COUNT 50
64
65#define GET_TIM_WAIT_COUNT(LIntrvl) ((LIntrvl * LIM_TIM_WAIT_COUNT_FACTOR) > LIM_MIN_TIM_WAIT_COUNT ? \
66 (LIntrvl * LIM_TIM_WAIT_COUNT_FACTOR) : LIM_MIN_TIM_WAIT_COUNT)
Kiran Kumar Lokere79540f92013-04-25 17:32:16 -070067#define IS_5G_BAND(__rfBand) ((__rfBand & 0x3) == 0x2)
68#define IS_24G_BAND(__rfBand) ((__rfBand & 0x3) == 0x1)
Jeff Johnson295189b2012-06-20 16:38:30 -070069
70// enums exported by LIM are as follows
71
72/// System role definition
73typedef enum eLimSystemRole
74{
75 eLIM_UNKNOWN_ROLE,
76 eLIM_AP_ROLE,
77 eLIM_STA_IN_IBSS_ROLE,
78 eLIM_STA_ROLE,
79 eLIM_BT_AMP_STA_ROLE,
Gopichand Nakkala48b4d7e2013-03-06 23:34:16 +053080 eLIM_BT_AMP_AP_ROLE,
81 eLIM_P2P_DEVICE_ROLE,
82 eLIM_P2P_DEVICE_GO,
Kiran Kumar Lokere458d7322013-05-29 14:29:43 -070083 eLIM_P2P_DEVICE_CLIENT
Jeff Johnson295189b2012-06-20 16:38:30 -070084} tLimSystemRole;
85
86/**
87 * SME state definition accessible across all Sirius modules.
88 * AP only states are LIM_SME_CHANNEL_SCAN_STATE &
89 * LIM_SME_NORMAL_CHANNEL_SCAN_STATE.
90 * Note that these states may also be present in STA
91 * side too when DFS support is present for a STA in IBSS mode.
92 */
93typedef enum eLimSmeStates
94{
95 eLIM_SME_OFFLINE_STATE,
96 eLIM_SME_IDLE_STATE,
97 eLIM_SME_SUSPEND_STATE,
98 eLIM_SME_WT_SCAN_STATE,
99 eLIM_SME_WT_JOIN_STATE,
100 eLIM_SME_WT_AUTH_STATE,
101 eLIM_SME_WT_ASSOC_STATE,
102 eLIM_SME_WT_REASSOC_STATE,
103 eLIM_SME_WT_REASSOC_LINK_FAIL_STATE,
104 eLIM_SME_JOIN_FAILURE_STATE,
105 eLIM_SME_ASSOCIATED_STATE,
106 eLIM_SME_REASSOCIATED_STATE,
107 eLIM_SME_LINK_EST_STATE,
108 eLIM_SME_LINK_EST_WT_SCAN_STATE,
109 eLIM_SME_WT_PRE_AUTH_STATE,
110 eLIM_SME_WT_DISASSOC_STATE,
111 eLIM_SME_WT_DEAUTH_STATE,
112 eLIM_SME_WT_START_BSS_STATE,
113 eLIM_SME_WT_STOP_BSS_STATE,
114 eLIM_SME_NORMAL_STATE,
115 eLIM_SME_CHANNEL_SCAN_STATE,
116 eLIM_SME_NORMAL_CHANNEL_SCAN_STATE
117} tLimSmeStates;
118
119/**
120 * MLM state definition.
121 * While these states are present on AP too when it is
122 * STA mode, per-STA MLM state exclusive to AP is:
123 * eLIM_MLM_WT_AUTH_FRAME3.
124 */
125typedef enum eLimMlmStates
126{
127 eLIM_MLM_OFFLINE_STATE,
128 eLIM_MLM_IDLE_STATE,
129 eLIM_MLM_WT_PROBE_RESP_STATE,
130 eLIM_MLM_PASSIVE_SCAN_STATE,
131 eLIM_MLM_WT_JOIN_BEACON_STATE,
132 eLIM_MLM_JOINED_STATE,
133 eLIM_MLM_BSS_STARTED_STATE,
134 eLIM_MLM_WT_AUTH_FRAME2_STATE,
135 eLIM_MLM_WT_AUTH_FRAME3_STATE,
136 eLIM_MLM_WT_AUTH_FRAME4_STATE,
137 eLIM_MLM_AUTH_RSP_TIMEOUT_STATE,
138 eLIM_MLM_AUTHENTICATED_STATE,
139 eLIM_MLM_WT_ASSOC_RSP_STATE,
140 eLIM_MLM_WT_REASSOC_RSP_STATE,
141 eLIM_MLM_ASSOCIATED_STATE,
142 eLIM_MLM_REASSOCIATED_STATE,
143 eLIM_MLM_LINK_ESTABLISHED_STATE,
144 eLIM_MLM_WT_ASSOC_CNF_STATE,
145 eLIM_MLM_LEARN_STATE,
146 eLIM_MLM_WT_ADD_BSS_RSP_STATE,
147 eLIM_MLM_WT_DEL_BSS_RSP_STATE,
148 eLIM_MLM_WT_ADD_BSS_RSP_ASSOC_STATE,
149 eLIM_MLM_WT_ADD_BSS_RSP_REASSOC_STATE,
150 eLIM_MLM_WT_ADD_BSS_RSP_PREASSOC_STATE,
151 eLIM_MLM_WT_ADD_STA_RSP_STATE,
152 eLIM_MLM_WT_DEL_STA_RSP_STATE,
153 //MLM goes to this state when LIM initiates DELETE_STA as processing of Assoc req because
154 //the entry already exists. LIM comes out of this state when DELETE_STA response from
155 //HAL is received. LIM needs to maintain this state so that ADD_STA can be issued while
156 //processing DELETE_STA response from HAL.
157 eLIM_MLM_WT_ASSOC_DEL_STA_RSP_STATE,
158 eLIM_MLM_WT_SET_BSS_KEY_STATE,
159 eLIM_MLM_WT_SET_STA_KEY_STATE,
160 eLIM_MLM_WT_SET_STA_BCASTKEY_STATE,
161 eLIM_MLM_WT_ADDBA_RSP_STATE,
162 eLIM_MLM_WT_REMOVE_BSS_KEY_STATE,
163 eLIM_MLM_WT_REMOVE_STA_KEY_STATE,
164 eLIM_MLM_WT_SET_MIMOPS_STATE,
165#if defined WLAN_FEATURE_VOWIFI_11R
166 eLIM_MLM_WT_ADD_BSS_RSP_FT_REASSOC_STATE,
167 eLIM_MLM_WT_FT_REASSOC_RSP_STATE,
168#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700169 eLIM_MLM_P2P_LISTEN_STATE,
Jeff Johnson295189b2012-06-20 16:38:30 -0700170} tLimMlmStates;
171
172// 11h channel quiet states
173/* This enum indicates in which state the device is in
174 * when it receives quiet element in beacon or probe-response.
175 * The default quiet state of the device is always INIT
176 * eLIM_QUIET_BEGIN - When Quiet period is started
177 * eLIM_QUIET_CHANGED - When Quiet period is updated
178 * eLIM_QUIET_RUNNING - Between two successive Quiet updates
179 * eLIM_QUIET_END - When quiet period ends
180 */
181typedef enum eLimQuietStates
182{
183 eLIM_QUIET_INIT,
184 eLIM_QUIET_BEGIN,
185 eLIM_QUIET_CHANGED,
186 eLIM_QUIET_RUNNING,
187 eLIM_QUIET_END
188} tLimQuietStates;
189
190// 11h channel switch states
191/* This enum indicates in which state the channel-swith
192 * is presently operating.
193 * eLIM_11H_CHANSW_INIT - Default state
194 * eLIM_11H_CHANSW_RUNNING - When channel switch is running
195 * eLIM_11H_CHANSW_END - After channel switch is complete
196 */
197typedef enum eLimDot11hChanSwStates
198{
199 eLIM_11H_CHANSW_INIT,
200 eLIM_11H_CHANSW_RUNNING,
201 eLIM_11H_CHANSW_END
202} tLimDot11hChanSwStates;
203
204#ifdef GEN4_SCAN
205
206//WLAN_SUSPEND_LINK Related
207typedef void (*SUSPEND_RESUME_LINK_CALLBACK)(tpAniSirGlobal pMac, eHalStatus status, tANI_U32 *data);
208
209// LIM to HAL SCAN Management Message Interface states
210typedef enum eLimHalScanState
211{
212 eLIM_HAL_IDLE_SCAN_STATE,
213 eLIM_HAL_INIT_SCAN_WAIT_STATE,
214 eLIM_HAL_START_SCAN_WAIT_STATE,
215 eLIM_HAL_END_SCAN_WAIT_STATE,
216 eLIM_HAL_FINISH_SCAN_WAIT_STATE,
217 eLIM_HAL_INIT_LEARN_WAIT_STATE,
218 eLIM_HAL_START_LEARN_WAIT_STATE,
219 eLIM_HAL_END_LEARN_WAIT_STATE,
220 eLIM_HAL_FINISH_LEARN_WAIT_STATE,
221 eLIM_HAL_SCANNING_STATE,
222//WLAN_SUSPEND_LINK Related
223 eLIM_HAL_SUSPEND_LINK_WAIT_STATE,
224 eLIM_HAL_SUSPEND_LINK_STATE,
225 eLIM_HAL_RESUME_LINK_WAIT_STATE,
226//end WLAN_SUSPEND_LINK Related
227} tLimLimHalScanState;
228#endif // GEN4_SCAN
229
230// LIM states related to A-MPDU/BA
231// This is used for maintaining the state between PE and HAL only.
232typedef enum eLimBAState
233{
234 eLIM_BA_STATE_IDLE, // we are not waiting for anything from HAL.
235 eLIM_BA_STATE_WT_ADD_RSP, //We are waiting for Add rsponse from HAL.
236 eLIM_BA_STATE_WT_DEL_RSP // We are waiting for Del response from HAL.
237} tLimBAState;
238
Jeff Johnson295189b2012-06-20 16:38:30 -0700239
240
Jeff Johnson62c27982013-02-27 17:53:55 -0800241
Jeff Johnson295189b2012-06-20 16:38:30 -0700242
243// MLM Req/Cnf structure definitions
244typedef struct sLimMlmAuthReq
245{
246 tSirMacAddr peerMacAddr;
247 tAniAuthType authType;
248 tANI_U32 authFailureTimeout;
249 tANI_U8 sessionId;
250} tLimMlmAuthReq, *tpLimMlmAuthReq;
251
252typedef struct sLimMlmJoinReq
253{
254 tANI_U32 joinFailureTimeout;
255 tSirMacRateSet operationalRateSet;
256 tANI_U8 sessionId;
257 tSirBssDescription bssDescription;
258} tLimMlmJoinReq, *tpLimMlmJoinReq;
259
260typedef struct sLimMlmScanReq
261{
262 tSirBssType bssType;
263 tSirMacAddr bssId;
264 tSirMacSSid ssId[SIR_SCAN_MAX_NUM_SSID];
265 tSirScanType scanType;
266 tANI_U32 minChannelTime;
267 tANI_U32 maxChannelTime;
Kiran Kumar Lokere3527f0c2013-02-24 22:21:28 -0800268 tANI_U32 minChannelTimeBtc;
269 tANI_U32 maxChannelTimeBtc;
Jeff Johnson295189b2012-06-20 16:38:30 -0700270 tSirBackgroundScanMode backgroundScanMode;
271 tANI_U32 dot11mode;
272 /* Number of SSIDs to scan(send Probe request) */
273 tANI_U8 numSsid;
274
Jeff Johnson295189b2012-06-20 16:38:30 -0700275 tANI_BOOLEAN p2pSearch;
Jeff Johnson295189b2012-06-20 16:38:30 -0700276 tANI_U16 uIEFieldLen;
277 tANI_U16 uIEFieldOffset;
278
279 //channelList MUST be the last field of this structure
280 tSirChannelList channelList;
281 /*-----------------------------
282 tLimMlmScanReq....
283 -----------------------------
284 uIEFiledLen
285 -----------------------------
286 uIEFiledOffset ----+
287 ----------------------------- |
288 channelList.numChannels |
289 ----------------------------- |
290 ... variable size up to |
291 channelNumber[numChannels-1] |
292 This can be zero, if |
293 numChannel is zero. |
294 ----------------------------- <--+
295 ... variable size uIEFiled
296 up to uIEFieldLen (can be 0)
297 -----------------------------*/
298} tLimMlmScanReq, *tpLimMlmScanReq;
299
300typedef struct tLimScanResultNode tLimScanResultNode;
301struct tLimScanResultNode
302{
303 tLimScanResultNode *next;
304 tSirBssDescription bssDescription;
305};
306
Jeff Johnsone7245742012-09-05 17:12:55 -0700307#ifdef FEATURE_OEM_DATA_SUPPORT
308
309#ifndef OEM_DATA_REQ_SIZE
Madan Mohan Koyyalamudi7a4d9312012-12-04 17:21:36 -0800310#define OEM_DATA_REQ_SIZE 134
Jeff Johnsone7245742012-09-05 17:12:55 -0700311#endif
312#ifndef OEM_DATA_RSP_SIZE
Madan Mohan Koyyalamudi7a4d9312012-12-04 17:21:36 -0800313#define OEM_DATA_RSP_SIZE 1968
Jeff Johnsone7245742012-09-05 17:12:55 -0700314#endif
315
316// OEM Data related structure definitions
317typedef struct sLimMlmOemDataReq
318{
319 tSirMacAddr selfMacAddr;
320 tANI_U8 oemDataReq[OEM_DATA_REQ_SIZE];
321} tLimMlmOemDataReq, *tpLimMlmOemDataReq;
322
323typedef struct sLimMlmOemDataRsp
324{
325 tANI_U8 oemDataRsp[OEM_DATA_RSP_SIZE];
326} tLimMlmOemDataRsp, *tpLimMlmOemDataRsp;
327#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700328
329// Pre-authentication structure definition
330typedef struct tLimPreAuthNode
331{
332 struct tLimPreAuthNode *next;
333 tSirMacAddr peerMacAddr;
334 tAniAuthType authType;
335 tLimMlmStates mlmState;
336 tANI_U8 authNodeIdx;
337 tANI_U8 challengeText[SIR_MAC_AUTH_CHALLENGE_LENGTH];
338 tANI_U8 fTimerStarted:1;
339 tANI_U8 fSeen:1;
340 tANI_U8 fFree:1;
341 tANI_U8 rsvd:5;
342 TX_TIMER timer;
343}tLimPreAuthNode, *tpLimPreAuthNode;
344
345// Pre-authentication table definition
346typedef struct tLimPreAuthTable
347{
348 tANI_U32 numEntry;
349 tpLimPreAuthNode pTable;
350}tLimPreAuthTable, *tpLimPreAuthTable;
351
352/// Per STA context structure definition
353typedef struct sLimMlmStaContext
354{
355 tLimMlmStates mlmState;
356 tAniAuthType authType;
357 tANI_U16 listenInterval;
358 tSirMacCapabilityInfo capabilityInfo;
359 tSirMacPropRateSet propRateSet;
360 tSirMacReasonCodes disassocReason;
361 tANI_U16 cleanupTrigger;
362
363 tSirResultCodes resultCode;
364 tANI_U16 protStatusCode;
365
366 tANI_U8 subType:1; // Indicates ASSOC (0) or REASSOC (1)
367 tANI_U8 updateContext:1;
368 tANI_U8 schClean:1;
369 // 802.11n HT Capability in Station: Enabled 1 or DIsabled 0
370 tANI_U8 htCapability:1;
Jeff Johnsone7245742012-09-05 17:12:55 -0700371#ifdef WLAN_FEATURE_11AC
372 tANI_U8 vhtCapability:1;
373#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700374} tLimMlmStaContext, *tpLimMlmStaContext;
375
376// Structure definition to hold deferred messages queue parameters
377typedef struct sLimDeferredMsgQParams
378{
379 tSirMsgQ deferredQueue[MAX_DEFERRED_QUEUE_LEN];
380 tANI_U16 size;
381 tANI_U16 read;
382 tANI_U16 write;
383} tLimDeferredMsgQParams, *tpLimDeferredMsgQParams;
384
385typedef struct sLimTraceQ
386{
387 tANI_U32 type;
388 tLimSmeStates smeState;
389 tLimMlmStates mlmState;
390 tANI_U32 value;
391 tANI_U32 value2;
392} tLimTraceQ;
393
394typedef struct sLimTraceParams
395{
396 tLimTraceQ traceQueue[1024];
397 tANI_U16 write;
398 tANI_U16 enabled;
399} tLimTraceParams;
400
401typedef struct sCfgProtection
402{
403 tANI_U32 overlapFromlla:1;
404 tANI_U32 overlapFromllb:1;
405 tANI_U32 overlapFromllg:1;
406 tANI_U32 overlapHt20:1;
407 tANI_U32 overlapNonGf:1;
408 tANI_U32 overlapLsigTxop:1;
409 tANI_U32 overlapRifs:1;
410 tANI_U32 overlapOBSS:1; /* added for obss */
411 tANI_U32 fromlla:1;
412 tANI_U32 fromllb:1;
413 tANI_U32 fromllg:1;
414 tANI_U32 ht20:1;
415 tANI_U32 nonGf:1;
416 tANI_U32 lsigTxop:1;
417 tANI_U32 rifs:1;
418 tANI_U32 obss:1; /* added for Obss */
419}tCfgProtection, *tpCfgProtection;
420
421typedef enum eLimProtStaCacheType
422{
423 eLIM_PROT_STA_CACHE_TYPE_INVALID,
424 eLIM_PROT_STA_CACHE_TYPE_llB,
425 eLIM_PROT_STA_CACHE_TYPE_llG,
426 eLIM_PROT_STA_CACHE_TYPE_HT20
427}tLimProtStaCacheType;
428
429typedef struct sCacheParams
430{
431 tANI_U8 active;
432 tSirMacAddr addr;
433 tLimProtStaCacheType protStaCacheType;
434
435} tCacheParams, *tpCacheParams;
436
Jeff Johnson295189b2012-06-20 16:38:30 -0700437#define LIM_PROT_STA_OVERLAP_CACHE_SIZE HAL_NUM_ASSOC_STA
438#define LIM_PROT_STA_CACHE_SIZE HAL_NUM_ASSOC_STA
Jeff Johnson295189b2012-06-20 16:38:30 -0700439
440typedef struct sLimProtStaParams
441{
442 tANI_U8 numSta;
443 tANI_U8 protectionEnabled;
444} tLimProtStaParams, *tpLimProtStaParams;
445
446
447typedef struct sLimNoShortParams
448{
449 tANI_U8 numNonShortPreambleSta;
450 tCacheParams staNoShortCache[LIM_PROT_STA_CACHE_SIZE];
451} tLimNoShortParams, *tpLimNoShortParams;
452
453typedef struct sLimNoShortSlotParams
454{
455 tANI_U8 numNonShortSlotSta;
456 tCacheParams staNoShortSlotCache[LIM_PROT_STA_CACHE_SIZE];
457} tLimNoShortSlotParams, *tpLimNoShortSlotParams;
458
459
460typedef struct tLimIbssPeerNode tLimIbssPeerNode;
461struct tLimIbssPeerNode
462{
463 tLimIbssPeerNode *next;
464 tSirMacAddr peerMacAddr;
465 tANI_U8 aniIndicator:1;
466 tANI_U8 extendedRatesPresent:1;
467 tANI_U8 edcaPresent:1;
468 tANI_U8 wmeEdcaPresent:1;
469 tANI_U8 wmeInfoPresent:1;
470 tANI_U8 htCapable:1;
Ravi Joshiaeb7d9e2013-05-02 12:28:14 -0700471 tANI_U8 vhtCapable:1;
472 tANI_U8 rsvd:1;
473 tANI_U8 htSecondaryChannelOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -0700474 tSirMacCapabilityInfo capabilityInfo;
475 tSirMacRateSet supportedRates;
476 tSirMacRateSet extendedRates;
477 tANI_U8 supportedMCSSet[SIZE_OF_SUPPORTED_MCS_SET];
478 tSirMacEdcaParamSetIE edcaParams;
479 tANI_U16 propCapability;
480 tANI_U8 erpIePresent;
481
482 //HT Capabilities of IBSS Peer
483 tANI_U8 htGreenfield;
484 tANI_U8 htShortGI40Mhz;
485 tANI_U8 htShortGI20Mhz;
486
487 // DSSS/CCK at 40 MHz: Enabled 1 or Disabled
488 tANI_U8 htDsssCckRate40MHzSupport;
489
490 // MIMO Power Save
491 tSirMacHTMIMOPowerSaveState htMIMOPSState;
492
493 //
494 // A-MPDU Density
495 // 000 - No restriction
496 // 001 - 1/8 usec
497 // 010 - 1/4 usec
498 // 011 - 1/2 usec
499 // 100 - 1 usec
500 // 101 - 2 usec
501 // 110 - 4 usec
502 // 111 - 8 usec
503 //
504 tANI_U8 htAMpduDensity;
505
506 // Maximum Rx A-MPDU factor
507 tANI_U8 htMaxRxAMpduFactor;
508
509 //Set to 0 for 3839 octets
510 //Set to 1 for 7935 octets
511 tANI_U8 htMaxAmsduLength;
512
513 //
514 // Recommended Tx Width Set
515 // 0 - use 20 MHz channel (control channel)
516 // 1 - use 40 Mhz channel
517 //
518 tANI_U8 htSupportedChannelWidthSet;
519
520 tANI_U8 beaconHBCount;
521 tANI_U8 heartbeatFailure;
522
523 tANI_U8 *beacon; //Hold beacon to be sent to HDD/CSR
524 tANI_U16 beaconLen;
Ravi Joshiaeb7d9e2013-05-02 12:28:14 -0700525
526#ifdef WLAN_FEATURE_11AC
527 tDot11fIEVHTCaps VHTCaps;
528 tANI_U8 vhtSupportedChannelWidthSet;
529 tANI_U8 vhtBeamFormerCapable;
530#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700531};
532
533// Enums used for channel switching.
534typedef enum eLimChannelSwitchState
535{
536 eLIM_CHANNEL_SWITCH_IDLE,
537 eLIM_CHANNEL_SWITCH_PRIMARY_ONLY,
538 eLIM_CHANNEL_SWITCH_SECONDARY_ONLY,
539 eLIM_CHANNEL_SWITCH_PRIMARY_AND_SECONDARY
540} tLimChannelSwitchState;
541
542
543// Channel Switch Info
544typedef struct sLimChannelSwitchInfo
545{
546 tLimChannelSwitchState state;
547 tANI_U8 primaryChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -0700548 ePhyChanBondState secondarySubBand;
Jeff Johnson295189b2012-06-20 16:38:30 -0700549 tANI_U32 switchCount;
550 tANI_U32 switchTimeoutValue;
551 tANI_U8 switchMode;
552} tLimChannelSwitchInfo, *tpLimChannelSwitchInfo;
553
Mohit Khanna4a70d262012-09-11 16:30:12 -0700554#ifdef WLAN_FEATURE_11AC
555typedef struct sLimOperatingModeInfo
556{
557 tANI_U8 present;
558 tANI_U8 chanWidth: 2;
559 tANI_U8 reserved: 2;
560 tANI_U8 rxNSS: 3;
561 tANI_U8 rxNSSType: 1;
562}tLimOperatingModeInfo, *tpLimOperatingModeInfo;
Madan Mohan Koyyalamudic6226de2012-09-18 16:33:31 -0700563
564typedef struct sLimWiderBWChannelSwitch
565{
566 tANI_U8 newChanWidth;
567 tANI_U8 newCenterChanFreq0;
568 tANI_U8 newCenterChanFreq1;
569}tLimWiderBWChannelSwitchInfo, *tpLimWiderBWChannelSwitchInfo;
Mohit Khanna4a70d262012-09-11 16:30:12 -0700570#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700571// Enums used when stopping the Tx.
572typedef enum eLimQuietTxMode
573{
574 eLIM_TX_ALL = 0, /* Stops/resumes the transmission of all stations, Uses the global flag. */
575 eLIM_TX_STA, /* Stops/resumes the transmission of specific stations identified by staId. */
576 eLIM_TX_BSS, /* Stops/resumes the transmission of all the packets in BSS */
577 eLIM_TX_BSS_BUT_BEACON /* Stops/resumes the transmission of all packets except beacons in BSS
578 * This is used when radar is detected in the current operating channel.
579 * Beacon has to be sent to notify the stations associated about the
580 * scheduled channel switch */
581} tLimQuietTxMode;
582
583typedef enum eLimControlTx
584{
585 eLIM_RESUME_TX = 0,
586 eLIM_STOP_TX
587} tLimControlTx;
588
Jeff Johnson295189b2012-06-20 16:38:30 -0700589
590// --------------------------------------------------------------------
591
592typedef __ani_attr_pre_packed struct sLimTspecInfo
593{
594 tANI_U8 inuse; // 0==free, else used
595 tANI_U8 idx; // index in list
596 tANI_U8 staAddr[6];
597 tANI_U16 assocId;
598 tSirMacTspecIE tspec;
599 tANI_U8 numTclas; // number of Tclas elements
600 tSirTclasInfo tclasInfo[SIR_MAC_TCLASIE_MAXNUM];
601 tANI_U8 tclasProc;
602 tANI_U8 tclasProcPresent:1; //tclassProc is valid only if this is set to 1.
603} __ani_attr_packed tLimTspecInfo, *tpLimTspecInfo;
604
605typedef struct sLimAdmitPolicyInfo
606{
607 tANI_U8 type; // admit control policy type
608 tANI_U8 bw_factor; // oversubscription factor : 0 means nothing is allowed
609 // valid only when 'type' is set BW_FACTOR
610} tLimAdmitPolicyInfo, *tpLimAdmitPolicyInfo;
611
612
613typedef enum eLimWscEnrollState
614{
615 eLIM_WSC_ENROLL_NOOP,
616 eLIM_WSC_ENROLL_BEGIN,
617 eLIM_WSC_ENROLL_IN_PROGRESS,
618 eLIM_WSC_ENROLL_END
619
620} tLimWscEnrollState;
621
622#define WSC_PASSWD_ID_PUSH_BUTTON (0x0004)
623
624typedef struct sLimWscIeInfo
625{
626 tANI_BOOLEAN apSetupLocked;
627 tANI_BOOLEAN selectedRegistrar;
628 tANI_U16 selectedRegistrarConfigMethods;
629 tLimWscEnrollState wscEnrollmentState;
630 tLimWscEnrollState probeRespWscEnrollmentState;
631 tANI_U8 reqType;
632 tANI_U8 respType;
633} tLimWscIeInfo, *tpLimWscIeInfo;
634
635// maximum number of tspec's supported
Arun Kumar Khandavallida71aa32014-01-07 20:45:13 +0530636#define LIM_NUM_TSPEC_MAX 15
Jeff Johnson295189b2012-06-20 16:38:30 -0700637
638
639//structure to hold all 11h specific data
640typedef struct sLimSpecMgmtInfo
641{
642 tLimQuietStates quietState;
643 tANI_U32 quietCount;
644 tANI_U32 quietDuration; /* This is in units of system TICKS */
645 tANI_U32 quietDuration_TU; /* This is in units of TU, for over the air transmission */
646 tANI_U32 quietTimeoutValue; /* After this timeout, actual quiet starts */
647 tANI_BOOLEAN fQuietEnabled; /* Used on AP, if quiet is enabled during learning */
648
649 tLimDot11hChanSwStates dot11hChanSwState;
650
651 tANI_BOOLEAN fRadarDetCurOperChan; /* Radar detected in cur oper chan on AP */
652 tANI_BOOLEAN fRadarIntrConfigured; /* Whether radar interrupt has been configured */
653}tLimSpecMgmtInfo, *tpLimSpecMgmtInfo;
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800654
655#ifdef FEATURE_WLAN_TDLS_INTERNAL
656typedef struct sLimDisResultList
657{
658 struct sLimDisResultList *next ;
659 tSirTdlsPeerInfo tdlsDisPeerInfo ;
660}tLimDisResultList ;
661#endif
662
663#ifdef FEATURE_WLAN_TDLS
664/*
665 * Peer info needed for TDLS setup..
666 */
667typedef struct tLimTDLSPeerSta
668{
669 struct tLimTDLSPeerSta *next;
670 tANI_U8 dialog ;
671 tSirMacAddr peerMac;
672 tSirMacCapabilityInfo capabilityInfo;
673 tSirMacRateSet supportedRates;
674 tSirMacRateSet extendedRates;
675 tSirMacQosCapabilityStaIE qosCaps;
676 tSirMacEdcaParamSetIE edcaParams;
677 tANI_U8 mcsSet[SIZE_OF_SUPPORTED_MCS_SET];
678 tANI_U8 tdls_bIsResponder ;
679 /* HT Capabilties */
680 tDot11fIEHTCaps tdlsPeerHTCaps ;
681 tDot11fIEExtCap tdlsPeerExtCaps;
682 tANI_U8 tdls_flags ;
683 tANI_U8 tdls_link_state ;
684 tANI_U8 tdls_prev_link_state ;
685 tANI_U8 tdls_sessionId;
686 tANI_U8 ExtRatesPresent ;
687 TX_TIMER gLimTdlsLinkSetupRspTimeoutTimer ;
688 TX_TIMER gLimTdlsLinkSetupCnfTimeoutTimer ;
689}tLimTdlsLinkSetupPeer, *tpLimTdlsLinkSetupPeer ;
690
691typedef struct tLimTdlsLinkSetupInfo
692{
693 tLimTdlsLinkSetupPeer *tdlsLinkSetupList ;
694 tANI_U8 num_tdls_peers ;
695 tANI_U8 tdls_flags ;
696 tANI_U8 tdls_state ;
697 tANI_U8 tdls_prev_state ;
698}tLimTdlsLinkSetupInfo, *tpLimTdlsLinkSetupInfo ;
699
700typedef enum tdlsLinkMode
701{
702 TDLS_LINK_MODE_BG,
703 TDLS_LINK_MODE_N,
Hoonki Lee99e53782013-02-12 18:07:03 -0800704 TDLS_LINK_MODE_AC,
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800705 TDLS_LINK_MODE_NONE
706} eLimTdlsLinkMode ;
707#endif /* FEATURE_WLAN_TDLS */
708
Jeff Johnson295189b2012-06-20 16:38:30 -0700709#endif