blob: 2c92029d1e0fcd873f95631722dd651314f061a8 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002 * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
Kiet Lam842dad02014-02-18 18:44:02 -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.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080020 */
Kiet Lam842dad02014-02-18 18:44:02 -080021
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
Jeff Johnson295189b2012-06-20 16:38:30 -070028#if !defined( __LIM_SESSION_H )
29#define __LIM_SESSION_H
30
31
32/**=========================================================================
Jeff Johnson3c3e1782013-02-27 10:48:42 -080033
Jeff Johnson295189b2012-06-20 16:38:30 -070034 \file limSession.h
Jeff Johnson3c3e1782013-02-27 10:48:42 -080035
Jeff Johnson295189b2012-06-20 16:38:30 -070036 \brief prototype for lim Session related APIs
37
38 \author Sunit Bhatia
Jeff Johnson295189b2012-06-20 16:38:30 -070039 ========================================================================*/
40
41
42/*--------------------------------------------------------------------------
43 Include Files
44 ------------------------------------------------------------------------*/
45
46
47
48/*--------------------------------------------------------------------------
49 Preprocessor definitions and constants
50 ------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -070051#define NUM_WEP_KEYS 4
Jeff Johnson295189b2012-06-20 16:38:30 -070052
53/*--------------------------------------------------------------------------
54 Type declarations
55 ------------------------------------------------------------------------*/
56typedef struct
57{
58 tSirMacBeaconInterval beaconInterval;
59 tANI_U8 fShortPreamble;
60 tANI_U8 llaCoexist;
61 tANI_U8 llbCoexist;
62 tANI_U8 llgCoexist;
63 tANI_U8 ht20Coexist;
64 tANI_U8 llnNonGFCoexist;
65 tANI_U8 fRIFSMode;
66 tANI_U8 fLsigTXOPProtectionFullSupport;
67 tANI_U8 gHTObssMode;
68}tBeaconParams, *tpBeaconParams;
69
70typedef struct sPESession // Added to Support BT-AMP
71{
72 /* To check session table is in use or free*/
73 tANI_U8 available;
74 tANI_U8 peSessionId;
75 tANI_U8 smeSessionId;
76 tANI_U16 transactionId;
77
78 //In AP role: BSSID and selfMacAddr will be the same.
79 //In STA role: they will be different
80 tSirMacAddr bssId;
81 tSirMacAddr selfMacAddr;
82 tSirMacSSid ssId;
83 tANI_U8 bssIdx;
84 tANI_U8 valid;
85 tLimMlmStates limMlmState; //MLM State
86 tLimMlmStates limPrevMlmState; //Previous MLM State
87 tLimSmeStates limSmeState; //SME State
88 tLimSmeStates limPrevSmeState; //Previous SME State
89 tLimSystemRole limSystemRole;
90 tSirBssType bssType;
91 tANI_U8 operMode; // AP - 0; STA - 1 ;
92 tSirNwType nwType;
93 tpSirSmeStartBssReq pLimStartBssReq; //handle to smestart bss req
94 tpSirSmeJoinReq pLimJoinReq; // handle to sme join req
Srinivas Girigowdac16730e2013-01-16 13:39:39 -080095 tpSirSmeJoinReq pLimReAssocReq; //handle to sme reassoc req
Jeff Johnson295189b2012-06-20 16:38:30 -070096 tpLimMlmJoinReq pLimMlmJoinReq; //handle to MLM join Req
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080097#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
Madan Mohan Koyyalamudi61bc5662012-11-02 14:33:10 -070098 void *pLimMlmReassocRetryReq; //keep reasoc req for retry
99#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700100 void *pLimMlmReassocReq; //handle to MLM reassoc Req
101 tANI_U16 channelChangeReasonCode;
102 tANI_U8 dot11mode;
Jeff Johnsone7245742012-09-05 17:12:55 -0700103 tANI_U8 htCapability;
104 /* Supported Channel Width Set: 0-20MHz 1 - 40MHz */
105 tANI_U8 htSupportedChannelWidthSet;
106 /* Recommended Tx Width Set
107 * 0 - use 20 MHz channel (control channel)
108 * 1 - use channel width enabled under Supported Channel Width Set
109 */
110 tANI_U8 htRecommendedTxWidthSet;
111 /* Identifies the 40 MHz extension channel */
112 ePhyChanBondState htSecondaryChannelOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -0700113 tSirRFBand limRFBand;
114 tANI_U8 limIbssActive; //TO SUPPORT CONCURRENCY
115
116 /* These global varibales moved to session Table to support BT-AMP : Oct 9th review */
117 tAniAuthType limCurrentAuthType;
118 tANI_U16 limCurrentBssCaps;
119 tANI_U8 limCurrentBssQosCaps;
120 tANI_U16 limCurrentBssPropCap;
121 tANI_U8 limSentCapsChangeNtf;
Jeff Johnson295189b2012-06-20 16:38:30 -0700122 tANI_U16 limAID;
123
124 /* Parameters For Reassociation */
125 tSirMacAddr limReAssocbssId;
126 tSirMacChanNum limReassocChannelId;
Jeff Johnsone7245742012-09-05 17:12:55 -0700127 /* CB paramaters required/duplicated for Reassoc since re-assoc mantains its own params in lim */
128 tANI_U8 reAssocHtSupportedChannelWidthSet;
129 tANI_U8 reAssocHtRecommendedTxWidthSet;
130 ePhyChanBondState reAssocHtSecondaryChannelOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -0700131 tSirMacSSid limReassocSSID;
132 tANI_U16 limReassocBssCaps;
133 tANI_U8 limReassocBssQosCaps;
134 tANI_U16 limReassocBssPropCap;
Jeff Johnson295189b2012-06-20 16:38:30 -0700135
136 // Assoc or ReAssoc Response Data/Frame
137 void *limAssocResponseData;
138
139
140
141 /** BSS Table parameters **/
142
143
144 /*
145 * staId: Start BSS: this is the Sta Id for the BSS.
146 Join: this is the selfStaId
147 In both cases above, the peer STA ID wll be stored in dph hash table.
148 */
149 tANI_U16 staId;
150 tANI_U16 statypeForBss; //to know session is for PEER or SELF
151 tANI_U8 shortSlotTimeSupported;
152 tANI_U8 dtimPeriod;
153 tSirMacRateSet rateSet;
154 tSirMacRateSet extRateSet;
155 tSirMacHTOperatingMode htOperMode;
156 tANI_U8 currentOperChannel;
157 tANI_U8 currentReqChannel;
158 tANI_U8 LimRxedBeaconCntDuringHB;
159
160 //Time stamp of the last beacon received from the BSS to which STA is connected.
161 tANI_U64 lastBeaconTimeStamp;
162 //RX Beacon count for the current BSS to which STA is connected.
163 tANI_U32 currentBssBeaconCnt;
164 tANI_U8 lastBeaconDtimCount;
165 tANI_U8 lastBeaconDtimPeriod;
166
167 tANI_U32 bcnLen;
168 tANI_U8 *beacon; //Used to store last beacon / probe response before assoc.
169
170 tANI_U32 assocReqLen;
171 tANI_U8 *assocReq; //Used to store association request frame sent out while associating.
172
173 tANI_U32 assocRspLen;
174 tANI_U8 *assocRsp; //Used to store association response received while associating
175 tAniSirDph dph;
176 void * *parsedAssocReq; //Used to store parsed assoc req from various requesting station
177#ifdef WLAN_FEATURE_VOWIFI_11R
178 tANI_U32 RICDataLen; //Used to store the Ric data received in the assoc response
179 tANI_U8 *ricData;
180#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800181#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700182 tANI_U32 tspecLen; //Used to store the TSPEC IEs received in the assoc response
183 tANI_U8 *tspecIes;
184#endif
185 tANI_U32 encryptType;
186
Jeff Johnson295189b2012-06-20 16:38:30 -0700187 tANI_BOOLEAN bTkipCntrMeasActive; // Used to keep record of TKIP counter measures start/stop
188
189 tANI_U8 gLimProtectionControl; //used for 11n protection
190
191 tANI_U8 gHTNonGFDevicesPresent;
192
193 //protection related config cache
194 tCfgProtection cfgProtection;
195
196 // Number of legacy STAs associated
197 tLimProtStaParams gLim11bParams;
198
199 // Number of 11A STAs associated
200 tLimProtStaParams gLim11aParams;
201
202 // Number of non-ht non-legacy STAs associated
203 tLimProtStaParams gLim11gParams;
204
205 //Number of nonGf STA associated
206 tLimProtStaParams gLimNonGfParams;
207
208 //Number of HT 20 STAs associated
209 tLimProtStaParams gLimHt20Params;
210
211 //Number of Lsig Txop not supported STAs associated
212 tLimProtStaParams gLimLsigTxopParams;
213
214 // Number of STAs that do not support short preamble
215 tLimNoShortParams gLimNoShortParams;
216
217 // Number of STAs that do not support short slot time
218 tLimNoShortSlotParams gLimNoShortSlotParams;
219
220
221 // OLBC parameters
222 tLimProtStaParams gLimOlbcParams;
223
224 // OLBC parameters
225 tLimProtStaParams gLimOverlap11gParams;
226
227 tLimProtStaParams gLimOverlap11aParams;
228 tLimProtStaParams gLimOverlapHt20Params;
229 tLimProtStaParams gLimOverlapNonGfParams;
230
231 //cache for each overlap
232 tCacheParams protStaCache[LIM_PROT_STA_CACHE_SIZE];
233
234 tANI_U8 privacy;
235 tAniAuthType authType;
236 tSirKeyMaterial WEPKeyMaterial[NUM_WEP_KEYS];
237
238 tDot11fIERSN gStartBssRSNIe;
239 tDot11fIEWPA gStartBssWPAIe;
240 tSirAPWPSIEs APWPSIEs;
241 tANI_U8 apUapsdEnable;
242 tSirWPSPBCSession *pAPWPSPBCSession;
243 tANI_U32 DefProbeRspIeBitmap[8];
244 tANI_U32 proxyProbeRspEn;
245 tDot11fProbeResponse probeRespFrame;
246 tANI_U8 ssidHidden;
247 tANI_BOOLEAN fwdWPSPBCProbeReq;
248 tANI_U8 wps_state;
Jeff Johnson295189b2012-06-20 16:38:30 -0700249
250 tANI_U8 limQosEnabled:1; //11E
251 tANI_U8 limWmeEnabled:1; //WME
252 tANI_U8 limWsmEnabled:1; //WSM
253 tANI_U8 limHcfEnabled:1;
254 tANI_U8 lim11dEnabled:1;
Chet Lanctot186b5732013-03-18 10:26:30 -0700255#ifdef WLAN_FEATURE_11W
256 tANI_U8 limRmfEnabled:1; //11W
257#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700258 tANI_U32 lim11hEnable;
259
260 tPowerdBm maxTxPower; //MIN (Regulatory and local power constraint)
261 tVOS_CON_MODE pePersona;
262#if defined WLAN_FEATURE_VOWIFI
263 tPowerdBm txMgmtPower;
264#endif
265
266#ifdef WLAN_FEATURE_VOWIFI_11R
267 tAniBool is11Rconnection;
268#endif
269
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800270#ifdef FEATURE_WLAN_ESE
271 tAniBool isESEconnection;
272 tEsePEContext eseContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700273#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800274#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Jeff Johnson295189b2012-06-20 16:38:30 -0700275 tAniBool isFastTransitionEnabled;
276#endif
Jeff Johnson43971f52012-07-17 12:26:56 -0700277#ifdef FEATURE_WLAN_LFR
278 tAniBool isFastRoamIniFeatureEnabled;
279#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700280 tSirNoAParam p2pNoA;
281 tSirP2PNoaAttr p2pGoPsUpdate;
Madan Mohan Koyyalamudi666d33a2012-11-29 11:32:59 -0800282 tANI_U32 defaultAuthFailureTimeout;
Viral Modid86bde22012-12-10 13:09:21 -0800283 tSirP2PNoaStart p2pGoPsNoaStartInd;
Jeff Johnson295189b2012-06-20 16:38:30 -0700284
285 /* EDCA QoS parameters
286 * gLimEdcaParams - These EDCA parameters are used locally on AP or STA.
287 * If STA, then these are values taken from the Assoc Rsp when associating,
288 * or Beacons/Probe Response after association. If AP, then these are
289 * values originally set locally on AP.
290 *
291 * gLimEdcaParamsBC - These EDCA parameters are use by AP to broadcast
292 * to other STATIONs in the BSS.
293 *
294 * gLimEdcaParamsActive: These EDCA parameters are what's actively being
295 * used on station. Specific AC values may be downgraded depending on
296 * admission control for that particular AC.
297 */
298 tSirMacEdcaParamRecord gLimEdcaParams[MAX_NUM_AC]; //used locally
299 tSirMacEdcaParamRecord gLimEdcaParamsBC[MAX_NUM_AC]; //used for broadcast
300 tSirMacEdcaParamRecord gLimEdcaParamsActive[MAX_NUM_AC];
301
302 tANI_U8 gLimEdcaParamSetCount;
303
304 tBeaconParams beaconParams;
Jeff Johnsone7245742012-09-05 17:12:55 -0700305#ifdef WLAN_FEATURE_11AC
306 tANI_U8 vhtCapability;
307 tANI_U8 vhtTxChannelWidthSet;
Mohit Khanna4a70d262012-09-11 16:30:12 -0700308 tLimOperatingModeInfo gLimOperatingMode;
Madan Mohan Koyyalamudic6226de2012-09-18 16:33:31 -0700309 tLimWiderBWChannelSwitchInfo gLimWiderBWChannelSwitch;
310 tANI_U8 vhtCapabilityPresentInBeacon;
311 tANI_U8 apCenterChan;
312 tANI_U8 apChanWidth;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -0800313 tANI_U8 txBFIniFeatureEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -0700314#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700315 tANI_U8 spectrumMgtEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -0700316 /* *********************11H related*****************************/
317 //tANI_U32 gLim11hEnable;
318 tLimSpecMgmtInfo gLimSpecMgmt;
319 // CB Primary/Secondary Channel Switch Info
320 tLimChannelSwitchInfo gLimChannelSwitch;
321 /* *********************End 11H related*****************************/
Jeff Johnson295189b2012-06-20 16:38:30 -0700322
323 /*Flag to Track Status/Indicate HBFailure on this session */
324 tANI_BOOLEAN LimHBFailureStatus;
325 tANI_U32 gLimPhyMode;
Kiran Kumar Lokere2ac471f2013-05-30 16:08:48 -0700326 tANI_U8 amsduSupportedInBA;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -0800327 tANI_U8 txLdpcIniFeatureEnabled;
Gopichand Nakkala777e6032012-12-31 16:39:21 -0800328 /**
329 * Following is the place holder for free peer index pool.
330 * A non-zero value indicates that peer index is available
331 * for assignment.
332 */
333 tANI_U8 *gpLimPeerIdxpool;
334 tANI_U8 freePeerIdxHead;
335 tANI_U8 freePeerIdxTail;
336 tANI_U16 gLimNumOfCurrentSTAs;
Gopichand Nakkala2a0a1572013-02-10 21:39:16 -0800337#ifdef FEATURE_WLAN_TDLS
338 tANI_U32 peerAIDBitmap[2];
339#endif
Gopichand Nakkalabe8653b2013-04-10 08:16:05 +0530340 tANI_BOOLEAN fWaitForProbeRsp;
341 tANI_BOOLEAN fIgnoreCapsChange;
Madan Mohan Koyyalamudi58c87792013-08-30 02:51:14 +0530342 tANI_BOOLEAN fDeauthReceived;
krunal soni8d13b092013-07-19 13:23:29 -0700343#ifdef FEATURE_WLAN_DIAG_SUPPORT_LIM
344 tANI_S8 rssi;
345#endif
krunal soni5afa96c2013-09-06 22:19:02 -0700346 tANI_U8 isAmsduSupportInAMPDU;
krunal sonie9002db2013-11-25 14:24:17 -0800347 tANI_U8 isCoalesingInIBSSAllowed;
Agarwal Ashish87039eb2014-01-15 14:13:15 +0530348 tANI_BOOLEAN isCiscoVendorAP;
Sandeep Puligilla11d49a62014-01-30 12:05:16 +0530349 /* To hold OBSS Scan IE Parameters */
350 tSirOBSSHT40Param obssHT40ScanParam;
Jeff Johnson295189b2012-06-20 16:38:30 -0700351}tPESession, *tpPESession;
352
353#define LIM_MAX_ACTIVE_SESSIONS 4
354
355
356/*-------------------------------------------------------------------------
357 Function declarations and documenation
358 ------------------------------------------------------------------------*/
359
360
361/*--------------------------------------------------------------------------
362
363 \brief peCreateSession() - creates a new PE session given the BSSID
364
365 This function returns the session context and the session ID if the session
366 corresponding to the passed BSSID is found in the PE session table.
367
368 \param pMac - pointer to global adapter context
369 \param bssid - BSSID of the new session
370 \param sessionId -session ID is returned here, if session is created.
371
372 \return tpPESession - pointer to the session context or NULL if session can not be created.
373
374 \sa
375
376 --------------------------------------------------------------------------*/
377tpPESession peCreateSession(tpAniSirGlobal pMac, tANI_U8 *bssid , tANI_U8* sessionId, tANI_U16 numSta);
378
379
380/*--------------------------------------------------------------------------
381 \brief peFindSessionByBssid() - looks up the PE session given the BSSID.
382
383 This function returns the session context and the session ID if the session
384 corresponding to the given BSSID is found in the PE session table.
385
386 \param pMac - pointer to global adapter context
387 \param bssid - BSSID of the session
388 \param sessionId -session ID is returned here, if session is found.
389
390 \return tpPESession - pointer to the session context or NULL if session is not found.
391
392 \sa
393 --------------------------------------------------------------------------*/
394tpPESession peFindSessionByBssid(tpAniSirGlobal pMac, tANI_U8* bssid, tANI_U8* sessionId);
395
396
397
398/*--------------------------------------------------------------------------
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -0800399 \brief peFindSessionByBssIdx() - looks up the PE session given the bssIdx.
400
401 This function returns the session context if the session
402 corresponding to the given bssIdx is found in the PE session table.
403 \param pMac - pointer to global adapter context
404 \param bssIdx - bss index of the session
405 \return tpPESession - pointer to the session context or NULL if session is not found.
406 \sa
407 --------------------------------------------------------------------------*/
408tpPESession peFindSessionByBssIdx(tpAniSirGlobal pMac, tANI_U8 bssIdx);
409
410
411
412
413/*--------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700414 \brief peFindSessionByPeerSta() - looks up the PE session given the Peer Station Address.
415
416 This function returns the session context and the session ID if the session
417 corresponding to the given destination address is found in the PE session table.
418
419 \param pMac - pointer to global adapter context
420 \param sa - Peer STA Address of the session
421 \param sessionId -session ID is returned here, if session is found.
422
423 \return tpPESession - pointer to the session context or NULL if session is not found.
424
425 \sa
426 --------------------------------------------------------------------------*/
427tpPESession peFindSessionByPeerSta(tpAniSirGlobal pMac, tANI_U8* sa, tANI_U8* sessionId);
428
429/*--------------------------------------------------------------------------
430 \brief peFindSessionBySessionId() - looks up the PE session given the session ID.
431
432 This function returns the session context if the session
433 corresponding to the given session ID is found in the PE session table.
434
435 \param pMac - pointer to global adapter context
436 \param sessionId -session ID for which session context needs to be looked up.
437
438 \return tpPESession - pointer to the session context or NULL if session is not found.
439
440 \sa
441 --------------------------------------------------------------------------*/
442 tpPESession peFindSessionBySessionId(tpAniSirGlobal pMac , tANI_U8 sessionId);
443
444/*--------------------------------------------------------------------------
445 \brief peFindSessionByBssid() - looks up the PE session given staid.
446
447 This function returns the session context and the session ID if the session
448 corresponding to the given StaId is found in the PE session table.
449
450 \param pMac - pointer to global adapter context
451 \param staid - StaId of the session
452 \param sessionId - session ID is returned here, if session is found.
453
454 \return tpPESession - pointer to the session context or NULL if session is not found.
455
456--------------------------------------------------------------------------*/
457 tpPESession peFindSessionByStaId(tpAniSirGlobal pMac, tANI_U8 staid, tANI_U8* sessionId);
458
459
460
461
462
463/*--------------------------------------------------------------------------
464 \brief peDeleteSession() - deletes the PE session given the session ID.
465
466
467 \param pMac - pointer to global adapter context
468 \param sessionId -session ID of the session which needs to be deleted.
469
470 \sa
471 --------------------------------------------------------------------------*/
472void peDeleteSession(tpAniSirGlobal pMac, tpPESession psessionEntry);
473
474
475/*--------------------------------------------------------------------------
476 \brief peDeleteSession() - Returns the SME session ID and Transaction ID .
477
478
479 \param pMac - pointer to global adapter context
480 \param sessionId -session ID of the session which needs to be deleted.
481
482 \sa
483 --------------------------------------------------------------------------*/
484
485
486#endif //#if !defined( __LIM_SESSION_H )
487
488
489
490
491