blob: 657518f808b7b366e6fd64c82f31511f2e572ebc [file] [log] [blame]
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08001/*
Krishna Kumaar Natarajan4e9cf392015-11-20 13:35:05 -08002 * Copyright (c) 2011-2016 The Linux Foundation. All rights reserved.
Prakash Dhavali7090c5f2015-11-02 17:55:19 -08003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
28/*
29 *
30 * This file lim_global.h contains the definitions exported by
31 * LIM module.
32 * Author: Chandra Modumudi
33 * Date: 02/11/02
34 * History:-
35 * Date Modified by Modification Information
36 * --------------------------------------------------------------------
37 *
38 */
39#ifndef __LIM_GLOBAL_H
40#define __LIM_GLOBAL_H
41
42#include "wni_api.h"
43#include "sir_api.h"
44#include "sir_mac_prot_def.h"
45#include "sir_mac_prop_exts.h"
46#include "sir_common.h"
47#include "sir_debug.h"
48#include "wni_cfg.h"
49#include "csr_api.h"
50#include "sap_api.h"
51#include "dot11f.h"
52#include "wma_if.h"
53
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080054/* Sending Disassociate frames threshold */
55#define LIM_SEND_DISASSOC_FRAME_THRESHOLD 2
56#define LIM_HASH_MISS_TIMER_MS 10000
57
58/* Deferred Message Queue Length */
59#define MAX_DEFERRED_QUEUE_LEN 80
60
61/* Maximum number of PS - TIM's to be sent with out wakeup from STA */
62#define LIM_TIM_WAIT_COUNT_FACTOR 5
63
64/*
65 * Use this count if (LIM_TIM_WAIT_FACTOR * ListenInterval)
66 * is less than LIM_MIN_TIM_WAIT_CNT
67 */
68#define LIM_MIN_TIM_WAIT_COUNT 50
69
70#define GET_TIM_WAIT_COUNT(LIntrvl) \
71 ((LIntrvl * LIM_TIM_WAIT_COUNT_FACTOR) > LIM_MIN_TIM_WAIT_COUNT ? \
72 (LIntrvl * LIM_TIM_WAIT_COUNT_FACTOR) : LIM_MIN_TIM_WAIT_COUNT)
73
Prakash Dhavali7090c5f2015-11-02 17:55:19 -080074#define LIM_MAX_CSA_IE_UPDATES (5)
75
76/* enums exported by LIM are as follows */
77
78/*System role definition */
79typedef enum eLimSystemRole {
80 eLIM_UNKNOWN_ROLE,
81 eLIM_AP_ROLE,
82 eLIM_STA_IN_IBSS_ROLE,
83 eLIM_STA_ROLE,
84 eLIM_BT_AMP_STA_ROLE,
85 eLIM_BT_AMP_AP_ROLE,
86 eLIM_P2P_DEVICE_ROLE,
87 eLIM_P2P_DEVICE_GO,
88 eLIM_P2P_DEVICE_CLIENT
89} tLimSystemRole;
90
91/*
92 * SME state definition accessible across all Sirius modules.
93 * AP only states are LIM_SME_CHANNEL_SCAN_STATE &
94 * LIM_SME_NORMAL_CHANNEL_SCAN_STATE.
95 * Note that these states may also be present in STA
96 * side too when DFS support is present for a STA in IBSS mode.
97 */
98typedef enum eLimSmeStates {
99 eLIM_SME_OFFLINE_STATE,
100 eLIM_SME_IDLE_STATE,
101 eLIM_SME_SUSPEND_STATE,
102 eLIM_SME_WT_SCAN_STATE,
103 eLIM_SME_WT_JOIN_STATE,
104 eLIM_SME_WT_AUTH_STATE,
105 eLIM_SME_WT_ASSOC_STATE,
106 eLIM_SME_WT_REASSOC_STATE,
107 eLIM_SME_WT_REASSOC_LINK_FAIL_STATE,
108 eLIM_SME_JOIN_FAILURE_STATE,
109 eLIM_SME_ASSOCIATED_STATE,
110 eLIM_SME_REASSOCIATED_STATE,
111 eLIM_SME_LINK_EST_STATE,
112 eLIM_SME_LINK_EST_WT_SCAN_STATE,
113 eLIM_SME_WT_PRE_AUTH_STATE,
114 eLIM_SME_WT_DISASSOC_STATE,
115 eLIM_SME_WT_DEAUTH_STATE,
116 eLIM_SME_WT_START_BSS_STATE,
117 eLIM_SME_WT_STOP_BSS_STATE,
118 eLIM_SME_NORMAL_STATE,
119 eLIM_SME_CHANNEL_SCAN_STATE,
120 eLIM_SME_NORMAL_CHANNEL_SCAN_STATE
121} tLimSmeStates;
122
123/*
124 * MLM state definition.
125 * While these states are present on AP too when it is
126 * STA mode, per-STA MLM state exclusive to AP is:
127 * eLIM_MLM_WT_AUTH_FRAME3.
128 */
129typedef enum eLimMlmStates {
130 eLIM_MLM_OFFLINE_STATE,
131 eLIM_MLM_IDLE_STATE,
132 eLIM_MLM_WT_PROBE_RESP_STATE,
133 eLIM_MLM_PASSIVE_SCAN_STATE,
134 eLIM_MLM_WT_JOIN_BEACON_STATE,
135 eLIM_MLM_JOINED_STATE,
136 eLIM_MLM_BSS_STARTED_STATE,
137 eLIM_MLM_WT_AUTH_FRAME2_STATE,
138 eLIM_MLM_WT_AUTH_FRAME3_STATE,
139 eLIM_MLM_WT_AUTH_FRAME4_STATE,
140 eLIM_MLM_AUTH_RSP_TIMEOUT_STATE,
141 eLIM_MLM_AUTHENTICATED_STATE,
142 eLIM_MLM_WT_ASSOC_RSP_STATE,
143 eLIM_MLM_WT_REASSOC_RSP_STATE,
144 eLIM_MLM_ASSOCIATED_STATE,
145 eLIM_MLM_REASSOCIATED_STATE,
146 eLIM_MLM_LINK_ESTABLISHED_STATE,
147 eLIM_MLM_WT_ASSOC_CNF_STATE,
148 eLIM_MLM_LEARN_STATE,
149 eLIM_MLM_WT_ADD_BSS_RSP_STATE,
150 eLIM_MLM_WT_DEL_BSS_RSP_STATE,
151 eLIM_MLM_WT_ADD_BSS_RSP_ASSOC_STATE,
152 eLIM_MLM_WT_ADD_BSS_RSP_REASSOC_STATE,
153 eLIM_MLM_WT_ADD_BSS_RSP_PREASSOC_STATE,
154 eLIM_MLM_WT_ADD_STA_RSP_STATE,
155 eLIM_MLM_WT_DEL_STA_RSP_STATE,
156 /*
157 * MLM goes to this state when LIM initiates DELETE_STA
158 * as processing of Assoc req because the entry already exists.
159 * LIM comes out of this state when DELETE_STA response from
160 * HAL is received. LIM needs to maintain this state so that ADD_STA
161 * can be issued while processing DELETE_STA response from HAL.
162 */
163 eLIM_MLM_WT_ASSOC_DEL_STA_RSP_STATE,
164 eLIM_MLM_WT_SET_BSS_KEY_STATE,
165 eLIM_MLM_WT_SET_STA_KEY_STATE,
166 eLIM_MLM_WT_SET_STA_BCASTKEY_STATE,
167 eLIM_MLM_WT_SET_MIMOPS_STATE,
168#if defined WLAN_FEATURE_VOWIFI_11R
169 eLIM_MLM_WT_ADD_BSS_RSP_FT_REASSOC_STATE,
170 eLIM_MLM_WT_FT_REASSOC_RSP_STATE,
171#endif
172 eLIM_MLM_P2P_LISTEN_STATE,
173} tLimMlmStates;
174
175/* 11h channel quiet states */
176
177/*
178 * This enum indicates in which state the device is in
179 * when it receives quiet element in beacon or probe-response.
180 * The default quiet state of the device is always INIT
181 * eLIM_QUIET_BEGIN - When Quiet period is started
182 * eLIM_QUIET_CHANGED - When Quiet period is updated
183 * eLIM_QUIET_RUNNING - Between two successive Quiet updates
184 * eLIM_QUIET_END - When quiet period ends
185 */
186typedef enum eLimQuietStates {
187 eLIM_QUIET_INIT,
188 eLIM_QUIET_BEGIN,
189 eLIM_QUIET_CHANGED,
190 eLIM_QUIET_RUNNING,
191 eLIM_QUIET_END
192} tLimQuietStates;
193
194/* 11h channel switch states */
195
196/*
197 * This enum indicates in which state the channel-swith
198 * is presently operating.
199 * eLIM_11H_CHANSW_INIT - Default state
200 * eLIM_11H_CHANSW_RUNNING - When channel switch is running
201 * eLIM_11H_CHANSW_END - After channel switch is complete
202 */
203typedef enum eLimDot11hChanSwStates {
204 eLIM_11H_CHANSW_INIT,
205 eLIM_11H_CHANSW_RUNNING,
206 eLIM_11H_CHANSW_END
207} tLimDot11hChanSwStates;
208
209
210/* WLAN_SUSPEND_LINK Related */
211typedef void (*SUSPEND_RESUME_LINK_CALLBACK)(tpAniSirGlobal pMac,
Anurag Chouhanfb54ab02016-02-18 18:00:46 +0530212 QDF_STATUS status,
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800213 uint32_t *data);
214
215/* LIM to HAL SCAN Management Message Interface states */
216typedef enum eLimHalScanState {
217 eLIM_HAL_IDLE_SCAN_STATE,
218 eLIM_HAL_INIT_SCAN_WAIT_STATE,
219 eLIM_HAL_START_SCAN_WAIT_STATE,
220 eLIM_HAL_END_SCAN_WAIT_STATE,
221 eLIM_HAL_FINISH_SCAN_WAIT_STATE,
222 eLIM_HAL_INIT_LEARN_WAIT_STATE,
223 eLIM_HAL_START_LEARN_WAIT_STATE,
224 eLIM_HAL_END_LEARN_WAIT_STATE,
225 eLIM_HAL_FINISH_LEARN_WAIT_STATE,
226 eLIM_HAL_SCANNING_STATE,
227/* WLAN_SUSPEND_LINK Related */
228 eLIM_HAL_SUSPEND_LINK_WAIT_STATE,
229 eLIM_HAL_SUSPEND_LINK_STATE,
230 eLIM_HAL_RESUME_LINK_WAIT_STATE,
231/* end WLAN_SUSPEND_LINK Related */
232} tLimLimHalScanState;
233
234/* MLM Req/Cnf structure definitions */
235typedef struct sLimMlmAuthReq {
236 tSirMacAddr peerMacAddr;
237 tAniAuthType authType;
238 uint32_t authFailureTimeout;
239 uint8_t sessionId;
240} tLimMlmAuthReq, *tpLimMlmAuthReq;
241
242typedef struct sLimMlmJoinReq {
243 uint32_t joinFailureTimeout;
244 tSirMacRateSet operationalRateSet;
245 uint8_t sessionId;
246 tSirBssDescription bssDescription;
247} tLimMlmJoinReq, *tpLimMlmJoinReq;
248
249typedef struct sLimMlmScanReq {
250 tSirBssType bssType;
251 tSirMacAddr bssId;
252 tSirMacSSid ssId[SIR_SCAN_MAX_NUM_SSID];
253 tSirScanType scanType;
254 uint32_t minChannelTime;
255 uint32_t maxChannelTime;
256 uint32_t dot11mode;
257 /* Number of SSIDs to scan(send Probe request) */
258 uint8_t numSsid;
259
260 bool p2pSearch;
261 uint16_t uIEFieldLen;
262 uint16_t uIEFieldOffset;
263
264 uint8_t sessionId;
265 /* channelList MUST be the last field of this structure */
266 tSirChannelList channelList;
267 /*-----------------------------
268 tLimMlmScanReq....
269 -----------------------------
270 uIEFiledLen
271 -----------------------------
272 uIEFiledOffset ----+
273 ----------------------------- |
274 channelList.numChannels |
275 ----------------------------- |
276 ... variable size up to |
277 channelNumber[numChannels-1] |
278 This can be zero, if |
279 numChannel is zero. |
280 ----------------------------- <--+
281 ... variable size uIEFiled
282 up to uIEFieldLen (can be 0)
283 -----------------------------*/
284} tLimMlmScanReq, *tpLimMlmScanReq;
285
286typedef struct tLimScanResultNode tLimScanResultNode;
287struct tLimScanResultNode {
288 tLimScanResultNode *next;
289 tSirBssDescription bssDescription;
290};
291
292#ifdef FEATURE_OEM_DATA_SUPPORT
293
294#ifndef OEM_DATA_REQ_SIZE
295#define OEM_DATA_REQ_SIZE 280
296#endif
297#ifndef OEM_DATA_RSP_SIZE
298#define OEM_DATA_RSP_SIZE 1724
299#endif
300
301/* OEM Data related structure definitions */
302typedef struct sLimMlmOemDataReq {
Anurag Chouhan6d760662016-02-20 16:05:43 +0530303 struct qdf_mac_addr selfMacAddr;
Krishna Kumaar Natarajan9ac8efd2015-11-20 13:40:24 -0800304 uint8_t data_len;
305 uint8_t *data;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800306} tLimMlmOemDataReq, *tpLimMlmOemDataReq;
307
308typedef struct sLimMlmOemDataRsp {
Krishna Kumaar Natarajan4e9cf392015-11-20 13:35:05 -0800309 bool target_rsp;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800310 uint8_t oemDataRsp[OEM_DATA_RSP_SIZE];
311} tLimMlmOemDataRsp, *tpLimMlmOemDataRsp;
312#endif
313
314/* Pre-authentication structure definition */
315typedef struct tLimPreAuthNode {
316 struct tLimPreAuthNode *next;
317 tSirMacAddr peerMacAddr;
318 tAniAuthType authType;
319 tLimMlmStates mlmState;
320 uint8_t authNodeIdx;
321 uint8_t challengeText[SIR_MAC_AUTH_CHALLENGE_LENGTH];
322 uint8_t fTimerStarted:1;
323 uint8_t fSeen:1;
324 uint8_t fFree:1;
325 uint8_t rsvd:5;
326 TX_TIMER timer;
327 uint16_t seq_num;
Anurag Chouhan6d760662016-02-20 16:05:43 +0530328 unsigned long timestamp;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800329} tLimPreAuthNode, *tpLimPreAuthNode;
330
331/* Pre-authentication table definition */
332typedef struct tLimPreAuthTable {
333 uint32_t numEntry;
334 tpLimPreAuthNode pTable;
335} tLimPreAuthTable, *tpLimPreAuthTable;
336
337/* / Per STA context structure definition */
338typedef struct sLimMlmStaContext {
339 tLimMlmStates mlmState;
340 tAniAuthType authType;
341 uint16_t listenInterval;
342 tSirMacCapabilityInfo capabilityInfo;
343 tSirMacPropRateSet propRateSet;
344 tSirMacReasonCodes disassocReason;
345 uint16_t cleanupTrigger;
346
347 tSirResultCodes resultCode;
348 uint16_t protStatusCode;
349
350 uint8_t subType:1; /* Indicates ASSOC (0) or REASSOC (1) */
351 uint8_t updateContext:1;
352 uint8_t schClean:1;
353 /* 802.11n HT Capability in Station: Enabled 1 or DIsabled 0 */
354 uint8_t htCapability:1;
355#ifdef WLAN_FEATURE_11AC
356 uint8_t vhtCapability:1;
357#endif
358} tLimMlmStaContext, *tpLimMlmStaContext;
359
360/* Structure definition to hold deferred messages queue parameters */
361typedef struct sLimDeferredMsgQParams {
362 tSirMsgQ deferredQueue[MAX_DEFERRED_QUEUE_LEN];
363 uint16_t size;
364 uint16_t read;
365 uint16_t write;
366} tLimDeferredMsgQParams, *tpLimDeferredMsgQParams;
367
368typedef struct sCfgProtection {
369 uint32_t overlapFromlla:1;
370 uint32_t overlapFromllb:1;
371 uint32_t overlapFromllg:1;
372 uint32_t overlapHt20:1;
373 uint32_t overlapNonGf:1;
374 uint32_t overlapLsigTxop:1;
375 uint32_t overlapRifs:1;
376 uint32_t overlapOBSS:1; /* added for obss */
377 uint32_t fromlla:1;
378 uint32_t fromllb:1;
379 uint32_t fromllg:1;
380 uint32_t ht20:1;
381 uint32_t nonGf:1;
382 uint32_t lsigTxop:1;
383 uint32_t rifs:1;
384 uint32_t obss:1; /* added for Obss */
385} tCfgProtection, *tpCfgProtection;
386
387typedef enum eLimProtStaCacheType {
388 eLIM_PROT_STA_CACHE_TYPE_INVALID,
389 eLIM_PROT_STA_CACHE_TYPE_llB,
390 eLIM_PROT_STA_CACHE_TYPE_llG,
391 eLIM_PROT_STA_CACHE_TYPE_HT20
392} tLimProtStaCacheType;
393
394typedef struct sCacheParams {
395 uint8_t active;
396 tSirMacAddr addr;
397 tLimProtStaCacheType protStaCacheType;
398
399} tCacheParams, *tpCacheParams;
400
401#define LIM_PROT_STA_OVERLAP_CACHE_SIZE HAL_NUM_ASSOC_STA
402#define LIM_PROT_STA_CACHE_SIZE HAL_NUM_ASSOC_STA
403
404typedef struct sLimProtStaParams {
405 uint8_t numSta;
406 uint8_t protectionEnabled;
407} tLimProtStaParams, *tpLimProtStaParams;
408
409typedef struct sLimNoShortParams {
410 uint8_t numNonShortPreambleSta;
411 tCacheParams staNoShortCache[LIM_PROT_STA_CACHE_SIZE];
412} tLimNoShortParams, *tpLimNoShortParams;
413
414typedef struct sLimNoShortSlotParams {
415 uint8_t numNonShortSlotSta;
416 tCacheParams staNoShortSlotCache[LIM_PROT_STA_CACHE_SIZE];
417} tLimNoShortSlotParams, *tpLimNoShortSlotParams;
418
419typedef struct tLimIbssPeerNode tLimIbssPeerNode;
420struct tLimIbssPeerNode {
421 tLimIbssPeerNode *next;
422 tSirMacAddr peerMacAddr;
423 uint8_t extendedRatesPresent:1;
424 uint8_t edcaPresent:1;
425 uint8_t wmeEdcaPresent:1;
426 uint8_t wmeInfoPresent:1;
427 uint8_t htCapable:1;
428 uint8_t vhtCapable:1;
429 uint8_t rsvd:2;
430 uint8_t htSecondaryChannelOffset;
431 tSirMacCapabilityInfo capabilityInfo;
432 tSirMacRateSet supportedRates;
433 tSirMacRateSet extendedRates;
434 uint8_t supportedMCSSet[SIZE_OF_SUPPORTED_MCS_SET];
435 tSirMacEdcaParamSetIE edcaParams;
436 uint8_t erpIePresent;
437
438 /* HT Capabilities of IBSS Peer */
439 uint8_t htGreenfield;
440 uint8_t htShortGI40Mhz;
441 uint8_t htShortGI20Mhz;
442
443 /* DSSS/CCK at 40 MHz: Enabled 1 or Disabled */
444 uint8_t htDsssCckRate40MHzSupport;
445
446 /* MIMO Power Save */
447 tSirMacHTMIMOPowerSaveState htMIMOPSState;
448
449 /* */
450 /* A-MPDU Density */
451 /* 000 - No restriction */
452 /* 001 - 1/8 usec */
453 /* 010 - 1/4 usec */
454 /* 011 - 1/2 usec */
455 /* 100 - 1 usec */
456 /* 101 - 2 usec */
457 /* 110 - 4 usec */
458 /* 111 - 8 usec */
459 /* */
460 uint8_t htAMpduDensity;
461
462 /* Maximum Rx A-MPDU factor */
463 uint8_t htMaxRxAMpduFactor;
464
465 /* Set to 0 for 3839 octets */
466 /* Set to 1 for 7935 octets */
467 uint8_t htMaxAmsduLength;
468
469 /* */
470 /* Recommended Tx Width Set */
471 /* 0 - use 20 MHz channel (control channel) */
472 /* 1 - use 40 Mhz channel */
473 /* */
474 uint8_t htSupportedChannelWidthSet;
475
476 uint8_t htLdpcCapable;
477
478 uint8_t beaconHBCount;
479 uint8_t heartbeatFailure;
480
481 uint8_t *beacon; /* Hold beacon to be sent to HDD/CSR */
482 uint16_t beaconLen;
483
484#ifdef WLAN_FEATURE_11AC
485 tDot11fIEVHTCaps VHTCaps;
486 uint8_t vhtSupportedChannelWidthSet;
487 uint8_t vhtBeamFormerCapable;
488#endif
489 /*
490 * Peer Atim Info
491 */
492 uint8_t atimIePresent;
493 uint32_t peerAtimWindowLength;
494};
495
496/* Enums used for channel switching. */
497typedef enum eLimChannelSwitchState {
498 eLIM_CHANNEL_SWITCH_IDLE,
499 eLIM_CHANNEL_SWITCH_PRIMARY_ONLY,
500 eLIM_CHANNEL_SWITCH_PRIMARY_AND_SECONDARY
501} tLimChannelSwitchState;
502
503/* Channel Switch Info */
504typedef struct sLimChannelSwitchInfo {
505 tLimChannelSwitchState state;
506 uint8_t primaryChannel;
507 uint8_t ch_center_freq_seg0;
508 uint8_t ch_center_freq_seg1;
Kiran Kumar Lokere999e58c2016-01-07 02:18:39 -0800509 uint8_t sec_ch_offset;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800510 phy_ch_width ch_width;
511 int8_t switchCount;
512 uint32_t switchTimeoutValue;
513 uint8_t switchMode;
514} tLimChannelSwitchInfo, *tpLimChannelSwitchInfo;
515
516#ifdef WLAN_FEATURE_11AC
517typedef struct sLimOperatingModeInfo {
518 uint8_t present;
519 uint8_t chanWidth:2;
520 uint8_t reserved:2;
521 uint8_t rxNSS:3;
522 uint8_t rxNSSType:1;
523} tLimOperatingModeInfo, *tpLimOperatingModeInfo;
524#endif
525
526typedef struct sLimWiderBWChannelSwitch {
527 uint8_t newChanWidth;
528 uint8_t newCenterChanFreq0;
529 uint8_t newCenterChanFreq1;
530} tLimWiderBWChannelSwitchInfo, *tpLimWiderBWChannelSwitchInfo;
531
532/* Enums used when stopping the Tx. */
533typedef enum eLimQuietTxMode {
534 /* Stop/resume transmission of all stations,Uses the global flag */
535 eLIM_TX_ALL = 0,
536 /*
537 * Stops/resumes the transmission of specific stations identified
538 * by staId.
539 */
540 eLIM_TX_STA,
541 /* Stops/resumes the transmission of all the packets in BSS */
542 eLIM_TX_BSS,
543 /*
544 * Stops/resumes the transmission of all packets except beacons in BSS
545 * This is used when radar is detected in the current operating channel.
546 * Beacon has to be sent to notify the stations associated about the
547 * scheduled channel switch
548 */
549 eLIM_TX_BSS_BUT_BEACON
550} tLimQuietTxMode;
551
552typedef enum eLimControlTx {
553 eLIM_RESUME_TX = 0,
554 eLIM_STOP_TX
555} tLimControlTx;
556
557/* -------------------------------------------------------------------- */
558
559typedef struct sLimTspecInfo {
560 /* 0==free, else used */
561 uint8_t inuse;
562 /* index in list */
563 uint8_t idx;
564 tSirMacAddr staAddr;
565 uint16_t assocId;
566 tSirMacTspecIE tspec;
567 /* number of Tclas elements */
568 uint8_t numTclas;
569 tSirTclasInfo tclasInfo[SIR_MAC_TCLASIE_MAXNUM];
570 uint8_t tclasProc;
571 /* tclassProc is valid only if this is set to 1. */
572 uint8_t tclasProcPresent:1;
Anurag Chouhan6d760662016-02-20 16:05:43 +0530573} qdf_packed tLimTspecInfo, *tpLimTspecInfo;
Prakash Dhavali7090c5f2015-11-02 17:55:19 -0800574
575typedef struct sLimAdmitPolicyInfo {
576 /* admit control policy type */
577 uint8_t type;
578 /* oversubscription factor : 0 means nothing is allowed */
579 uint8_t bw_factor;
580 /* valid only when 'type' is set BW_FACTOR */
581} tLimAdmitPolicyInfo, *tpLimAdmitPolicyInfo;
582
583typedef enum eLimWscEnrollState {
584 eLIM_WSC_ENROLL_NOOP,
585 eLIM_WSC_ENROLL_BEGIN,
586 eLIM_WSC_ENROLL_IN_PROGRESS,
587 eLIM_WSC_ENROLL_END
588} tLimWscEnrollState;
589
590#define WSC_PASSWD_ID_PUSH_BUTTON (0x0004)
591
592typedef struct sLimWscIeInfo {
593 bool apSetupLocked;
594 bool selectedRegistrar;
595 uint16_t selectedRegistrarConfigMethods;
596 tLimWscEnrollState wscEnrollmentState;
597 tLimWscEnrollState probeRespWscEnrollmentState;
598 uint8_t reqType;
599 uint8_t respType;
600} tLimWscIeInfo, *tpLimWscIeInfo;
601
602/* maximum number of tspec's supported */
603#define LIM_NUM_TSPEC_MAX 15
604
605/* structure to hold all 11h specific data */
606typedef struct sLimSpecMgmtInfo {
607 tLimQuietStates quietState;
608 uint32_t quietCount;
609 /* This is in units of system TICKS */
610 uint32_t quietDuration;
611 /* This is in units of TU, for over the air transmission */
612 uint32_t quietDuration_TU;
613 /* After this timeout, actual quiet starts */
614 uint32_t quietTimeoutValue;
615 /* Used on AP, if quiet is enabled during learning */
616 bool fQuietEnabled;
617 tLimDot11hChanSwStates dot11hChanSwState;
618 /* Radar detected in cur oper chan on AP */
619 bool fRadarDetCurOperChan;
620 /* Whether radar interrupt has been configured */
621 bool fRadarIntrConfigured;
622} tLimSpecMgmtInfo, *tpLimSpecMgmtInfo;
623
624#ifdef FEATURE_WLAN_TDLS
625/*
626 * Peer info needed for TDLS setup..
627 */
628typedef struct tLimTDLSPeerSta {
629 struct tLimTDLSPeerSta *next;
630 uint8_t dialog;
631 tSirMacAddr peerMac;
632 tSirMacCapabilityInfo capabilityInfo;
633 tSirMacRateSet supportedRates;
634 tSirMacRateSet extendedRates;
635 tSirMacQosCapabilityStaIE qosCaps;
636 tSirMacEdcaParamSetIE edcaParams;
637 uint8_t mcsSet[SIZE_OF_SUPPORTED_MCS_SET];
638 uint8_t tdls_bIsResponder;
639 /* HT Capabilties */
640 tDot11fIEHTCaps tdlsPeerHTCaps;
641 tDot11fIEExtCap tdlsPeerExtCaps;
642 uint8_t tdls_flags;
643 uint8_t tdls_link_state;
644 uint8_t tdls_prev_link_state;
645 uint8_t tdls_sessionId;
646 uint8_t ExtRatesPresent;
647 TX_TIMER gLimTdlsLinkSetupRspTimeoutTimer;
648 TX_TIMER gLimTdlsLinkSetupCnfTimeoutTimer;
649} tLimTdlsLinkSetupPeer, *tpLimTdlsLinkSetupPeer;
650
651typedef struct tLimTdlsLinkSetupInfo {
652 tLimTdlsLinkSetupPeer *tdlsLinkSetupList;
653 uint8_t num_tdls_peers;
654 uint8_t tdls_flags;
655 uint8_t tdls_state;
656 uint8_t tdls_prev_state;
657} tLimTdlsLinkSetupInfo, *tpLimTdlsLinkSetupInfo;
658
659typedef enum tdlsLinkMode {
660 TDLS_LINK_MODE_BG,
661 TDLS_LINK_MODE_N,
662 TDLS_LINK_MODE_AC,
663 TDLS_LINK_MODE_NONE
664} eLimTdlsLinkMode;
665#endif /* FEATURE_WLAN_TDLS */
666
667#endif