blob: a0ffcad4d9925998edc70cd94695bc46d9fd6565 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Sushant Kaushik02c866d2015-01-16 15:24:25 +05302 * Copyright (c) 2012-2015 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.
Jeff Johnson295189b2012-06-20 16:38:30 -070020 */
Kiet Lam842dad02014-02-18 18:44:02 -080021
Jeff Johnson295189b2012-06-20 16:38:30 -070022/*
Kiet Lam842dad02014-02-18 18:44:02 -080023 * 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/*
Jeff Johnson295189b2012-06-20 16:38:30 -070029 * This file limUtils.h contains the utility definitions
30 * LIM uses.
31 * Author: Chandra Modumudi
32 * Date: 02/13/02
33 * History:-
34 * Date Modified by Modification Information
35 * --------------------------------------------------------------------
36 */
37#ifndef __LIM_UTILS_H
38#define __LIM_UTILS_H
39
40#include "sirApi.h"
41#include "sirDebug.h"
42#include "cfgApi.h"
43
44#include "limTypes.h"
45#include "limScanResultUtils.h"
46#include "limTimerUtils.h"
47#include "limTrace.h"
48typedef enum
49{
50 ONE_BYTE = 1,
51 TWO_BYTE = 2
52} eSizeOfLenField;
53
54#define LIM_STA_ID_MASK 0x00FF
55#define LIM_AID_MASK 0xC000
56#define LIM_SPECTRUM_MANAGEMENT_BIT_MASK 0x0100
Hema Aparna Medicharlafa1d2bb2013-12-23 02:28:09 +053057#define LIM_RRM_BIT_MASK 0x1000
Chandrasekaran, Manishekarc949a8b2014-06-27 12:34:09 +053058#define LIM_SHORT_PREAMBLE_BIT_MASK 0x0020
59#define LIM_IMMEDIATE_BLOCK_ACK_MASK 0x8000
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080060#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
Madan Mohan Koyyalamudi61bc5662012-11-02 14:33:10 -070061#define LIM_MAX_REASSOC_RETRY_LIMIT 2
62#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070063
64// classifier ID is coded as 0-3: tsid, 4-5:direction
65#define LIM_MAKE_CLSID(tsid, dir) (((tsid) & 0x0F) | (((dir) & 0x03) << 4))
66
67#define LIM_SET_STA_BA_STATE(pSta, tid, newVal) \
68{\
69 pSta->baState = ((pSta->baState | (0x3 << tid*2)) & ((newVal << tid*2) | ~(0x3 << tid*2)));\
70}
71
72#define LIM_GET_STA_BA_STATE(pSta, tid, pCurVal)\
73{\
74 *pCurVal = (tLimBAState)(((pSta->baState >> tid*2) & 0x3));\
75}
76
Jeff Johnson295189b2012-06-20 16:38:30 -070077typedef struct sAddBaInfo
78{
79 tANI_U16 fBaEnable : 1;
80 tANI_U16 startingSeqNum: 12;
81 tANI_U16 reserved : 3;
82}tAddBaInfo, *tpAddBaInfo;
83
84typedef struct sAddBaCandidate
85{
86 tSirMacAddr staAddr;
87 tAddBaInfo baInfo[STACFG_MAX_TC];
88}tAddBaCandidate, *tpAddBaCandidate;
Jeff Johnson295189b2012-06-20 16:38:30 -070089
Chet Lanctot8cecea22014-02-11 19:09:36 -080090#ifdef WLAN_FEATURE_11W
91typedef union uPmfSaQueryTimerId
92{
93 struct
94 {
95 tANI_U8 sessionId;
96 tANI_U16 peerIdx;
97 } fields;
98 tANI_U32 value;
99} tPmfSaQueryTimerId, *tpPmfSaQueryTimerId;
100#endif
101
Atul Mittalb849d5a2014-07-29 12:08:39 +0530102typedef enum offset {
103 BW20,
104 BW40PLUS,
105 BW40MINUS,
106 BWALL
107} offset_t;
108
109typedef struct op_class_map {
110 tANI_U8 op_class;
111 tANI_U8 ch_spacing;
112 offset_t offset;
113 tANI_U8 channels[15];
114}op_class_map_t;
Jeff Johnson1250df42012-12-10 14:31:52 -0800115// LIM utility functions
Masti, Narayanraddi67ea5912015-01-08 12:34:05 +0530116tANI_BOOLEAN limCheck11BRateBitmap(tANI_U16 RateBitmap);
Jeff Johnson295189b2012-06-20 16:38:30 -0700117void limGetBssidFromPkt(tpAniSirGlobal, tANI_U8 *, tANI_U8 *, tANI_U32 *);
118char * limMlmStateStr(tLimMlmStates state);
119char * limSmeStateStr(tLimSmeStates state);
120char * limMsgStr(tANI_U32 msgType);
121char * limResultCodeStr(tSirResultCodes resultCode);
122char* limDot11ModeStr(tpAniSirGlobal pMac, tANI_U8 dot11Mode);
123char* limStaOpRateModeStr(tStaRateMode opRateMode);
124void limPrintMlmState(tpAniSirGlobal pMac, tANI_U16 logLevel, tLimMlmStates state);
125void limPrintSmeState(tpAniSirGlobal pMac, tANI_U16 logLevel, tLimSmeStates state);
126void limPrintMsgName(tpAniSirGlobal pMac, tANI_U16 logLevel, tANI_U32 msgType);
127void limPrintMsgInfo(tpAniSirGlobal pMac, tANI_U16 logLevel, tSirMsgQ *msg);
128char* limBssTypeStr(tSirBssType bssType);
129
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800130#if defined FEATURE_WLAN_ESE || defined WLAN_FEATURE_VOWIFI
Jeff Johnson295189b2012-06-20 16:38:30 -0700131extern tSirRetStatus limSendSetMaxTxPowerReq ( tpAniSirGlobal pMac,
132 tPowerdBm txPower,
133 tpPESession pSessionEntry );
Madan Mohan Koyyalamudi3282c572012-11-09 17:01:41 -0800134extern tANI_U8 limGetMaxTxPower(tPowerdBm regMax, tPowerdBm apTxPower, tANI_U8 iniTxPower);
Jeff Johnson295189b2012-06-20 16:38:30 -0700135#endif
136
137tANI_U32 limPostMsgApiNoWait(tpAniSirGlobal, tSirMsgQ *);
138tANI_U8 limIsAddrBC(tSirMacAddr);
139tANI_U8 limIsGroupAddr(tSirMacAddr);
140
141// check for type of scan allowed
142tANI_U8 limActiveScanAllowed(tpAniSirGlobal, tANI_U8);
143
144// AID pool management functions
Gopichand Nakkala777e6032012-12-31 16:39:21 -0800145void limInitPeerIdxpool(tpAniSirGlobal,tpPESession);
146tANI_U16 limAssignPeerIdx(tpAniSirGlobal,tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700147
148void limEnableOverlap11gProtection(tpAniSirGlobal pMac, tpUpdateBeaconParams pBeaconParams, tpSirMacMgmtHdr pMh,tpPESession psessionEntry);
149void limUpdateOverlapStaParam(tpAniSirGlobal pMac, tSirMacAddr bssId, tpLimProtStaParams pStaParams);
150void limUpdateShortPreamble(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
151void limUpdateShortSlotTime(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
152
153/*
154 * The below 'product' check tobe removed if 'Association' is
155 * allowed in IBSS.
156 */
Gopichand Nakkala777e6032012-12-31 16:39:21 -0800157void limReleasePeerIdx(tpAniSirGlobal, tANI_U16, tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700158
Jeff Johnson295189b2012-06-20 16:38:30 -0700159
Jeff Johnson295189b2012-06-20 16:38:30 -0700160void limDecideApProtection(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr, tpUpdateBeaconParams pBeaconParams,tpPESession);
161void
162limDecideApProtectionOnDelete(tpAniSirGlobal pMac,
163 tpDphHashNode pStaDs, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700164
165extern tSirRetStatus limEnable11aProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession);
166extern tSirRetStatus limEnable11gProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession psessionEntry);
167extern tSirRetStatus limEnableHtProtectionFrom11g(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession psessionEntry);
168extern tSirRetStatus limEnableHT20Protection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession sessionEntry);
169extern tSirRetStatus limEnableHTNonGfProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession);
170extern tSirRetStatus limEnableHtRifsProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession psessionEntry);
171extern tSirRetStatus limEnableHTLsigTxopProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700172extern tSirRetStatus limEnableShortPreamble(tpAniSirGlobal pMac, tANI_U8 enable, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700173extern tSirRetStatus limEnableHtOBSSProtection (tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams, tpPESession);
174void limDecideStaProtection(tpAniSirGlobal pMac, tpSchBeaconStruct pBeaconStruct, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
175void limDecideStaProtectionOnAssoc(tpAniSirGlobal pMac, tpSchBeaconStruct pBeaconStruct, tpPESession psessionEntry);
176void limUpdateStaRunTimeHTSwitchChnlParams(tpAniSirGlobal pMac, tDot11fIEHTInfo * pHTInfo, tANI_U8 bssIdx, tpPESession psessionEntry);
177// Print MAC address utility function
178void limPrintMacAddr(tpAniSirGlobal, tSirMacAddr, tANI_U8);
179
180
181
182// Deferred Message Queue read/write
183tANI_U8 limWriteDeferredMsgQ(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
184tSirMsgQ* limReadDeferredMsgQ(tpAniSirGlobal pMac);
185void limHandleDeferMsgError(tpAniSirGlobal pMac, tpSirMsgQ pLimMsg);
186
187// Deferred Message Queue Reset
188void limResetDeferredMsgQ(tpAniSirGlobal pMac);
189
190tSirRetStatus limSysProcessMmhMsgApi(tpAniSirGlobal, tSirMsgQ*, tANI_U8);
191
Jeff Johnson295189b2012-06-20 16:38:30 -0700192void limHandleUpdateOlbcCache(tpAniSirGlobal pMac);
Jeff Johnson295189b2012-06-20 16:38:30 -0700193
194tANI_U8 limIsNullSsid( tSirMacSSid *pSsid );
195
196void limProcessAddtsRspTimeout(tpAniSirGlobal pMac, tANI_U32 param);
197
198// 11h Support
Jeff Johnson295189b2012-06-20 16:38:30 -0700199void limStopTxAndSwitchChannel(tpAniSirGlobal pMac, tANI_U8 sessionId);
200void limProcessChannelSwitchTimeout(tpAniSirGlobal);
201tSirRetStatus limStartChannelSwitch(tpAniSirGlobal pMac, tpPESession psessionEntry);
202void limUpdateChannelSwitch(tpAniSirGlobal, tpSirProbeRespBeacon, tpPESession psessionEntry);
203void limProcessQuietTimeout(tpAniSirGlobal);
204void limProcessQuietBssTimeout(tpAniSirGlobal);
Sandeep Puligilla70b6b162014-04-19 02:06:04 +0530205void limInitOBSSScanParams(tpAniSirGlobal pMac,
206 tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700207#if 0
208void limProcessWPSOverlapTimeout(tpAniSirGlobal pMac);
209#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700210
211void limStartQuietTimer(tpAniSirGlobal pMac, tANI_U8 sessionId);
Jeff Johnson295189b2012-06-20 16:38:30 -0700212void limSwitchPrimaryChannel(tpAniSirGlobal, tANI_U8,tpPESession);
Jeff Johnsone7245742012-09-05 17:12:55 -0700213void limSwitchPrimarySecondaryChannel(tpAniSirGlobal, tpPESession, tANI_U8, ePhyChanBondState);
Jeff Johnson295189b2012-06-20 16:38:30 -0700214tAniBool limTriggerBackgroundScanDuringQuietBss(tpAniSirGlobal);
215void limUpdateStaRunTimeHTSwtichChnlParams(tpAniSirGlobal pMac, tDot11fIEHTInfo *pRcvdHTInfo, tANI_U8 bssIdx);
216void limUpdateStaRunTimeHTCapability(tpAniSirGlobal pMac, tDot11fIEHTCaps *pHTCaps);
217void limUpdateStaRunTimeHTInfo(struct sAniSirGlobal *pMac, tDot11fIEHTInfo *pRcvdHTInfo, tpPESession psessionEntry);
218void limCancelDot11hChannelSwitch(tpAniSirGlobal pMac, tpPESession psessionEntry);
219void limCancelDot11hQuiet(tpAniSirGlobal pMac, tpPESession psessionEntry);
220tAniBool limIsChannelValidForChannelSwitch(tpAniSirGlobal pMac, tANI_U8 channel);
221void limFrameTransmissionControl(tpAniSirGlobal pMac, tLimQuietTxMode type, tLimControlTx mode);
222tSirRetStatus limRestorePreChannelSwitchState(tpAniSirGlobal pMac, tpPESession psessionEntry);
Jeff Johnsone7245742012-09-05 17:12:55 -0700223tSirRetStatus limRestorePreQuietState(tpAniSirGlobal pMac, tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700224
225void limPrepareFor11hChannelSwitch(tpAniSirGlobal pMac, tpPESession psessionEntry);
226void limSwitchChannelCback(tpAniSirGlobal pMac, eHalStatus status,
227 tANI_U32 *data, tpPESession psessionEntry);
228
229static inline tSirRFBand limGetRFBand(tANI_U8 channel)
230{
231 if ((channel >= SIR_11A_CHANNEL_BEGIN) &&
232 (channel <= SIR_11A_CHANNEL_END))
233 return SIR_BAND_5_GHZ;
234
235 if ((channel >= SIR_11B_CHANNEL_BEGIN) &&
236 (channel <= SIR_11B_CHANNEL_END))
237 return SIR_BAND_2_4_GHZ;
238
239 return SIR_BAND_UNKNOWN;
240}
241
242
243static inline tSirRetStatus
244limGetMgmtStaid(tpAniSirGlobal pMac, tANI_U16 *staid, tpPESession psessionEntry)
245{
246 if (psessionEntry->limSystemRole == eLIM_AP_ROLE)
247 *staid = 1;
248 else if (psessionEntry->limSystemRole == eLIM_STA_ROLE)
249 *staid = 0;
250 else
251 return eSIR_FAILURE;
252
253 return eSIR_SUCCESS;
254}
255
256static inline tANI_U8
257limIsSystemInSetMimopsState(tpAniSirGlobal pMac)
258{
259 if (pMac->lim.gLimMlmState == eLIM_MLM_WT_SET_MIMOPS_STATE)
260 return true;
261 return false;
262}
263
264static inline tANI_U8
265 isEnteringMimoPS(tSirMacHTMIMOPowerSaveState curState, tSirMacHTMIMOPowerSaveState newState)
266 {
267 if (curState == eSIR_HT_MIMO_PS_NO_LIMIT &&
268 (newState == eSIR_HT_MIMO_PS_DYNAMIC ||newState == eSIR_HT_MIMO_PS_STATIC))
269 return TRUE;
270 return FALSE;
271}
272
273/// ANI peer station count management and associated actions
274void limUtilCountStaAdd(tpAniSirGlobal pMac, tpDphHashNode pSta, tpPESession psessionEntry);
275void limUtilCountStaDel(tpAniSirGlobal pMac, tpDphHashNode pSta, tpPESession psessionEntry);
276
Jeff Johnson295189b2012-06-20 16:38:30 -0700277tANI_U8 limGetHTCapability( tpAniSirGlobal, tANI_U32, tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700278void limTxComplete( tHalHandle hHal, void *pData );
279
280/**********Admit Control***************************************/
281
282//callback function for HAL to issue DelTS request to PE.
283//This function will be registered with HAL for callback when TSPEC inactivity timer fires.
284
285void limProcessDelTsInd(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
286tSirRetStatus limProcessHalIndMessages(tpAniSirGlobal pMac, tANI_U32 mesgId, void *mesgParam );
287tSirRetStatus limValidateDeltsReq(tpAniSirGlobal pMac, tpSirDeltsReq pDeltsReq, tSirMacAddr peerMacAddr,tpPESession psessionEntry);
288/**********************************************************/
289
290//callback function registration to HAL for any indication.
291void limRegisterHalIndCallBack(tpAniSirGlobal pMac);
292void limPktFree (
293 tpAniSirGlobal pMac,
294 eFrameType frmType,
295 tANI_U8 *pBD,
296 void *body);
297
298
299
300void limGetBDfromRxPacket(tpAniSirGlobal pMac, void *body, tANI_U32 **pBD);
301
302/**
303 * \brief Given a base(X) and power(Y), this API will return
304 * the result of base raised to power - (X ^ Y)
305 *
306 * \sa utilsPowerXY
307 *
308 * \param base Base value
309 *
310 * \param power Base raised to this Power value
311 *
312 * \return Result of X^Y
313 *
314 */
315static inline tANI_U32 utilsPowerXY( tANI_U16 base, tANI_U16 power )
316{
317tANI_U32 result = 1, i;
318
319 for( i = 0; i < power; i++ )
320 result *= base;
321
322 return result;
323}
324
325
326
327tSirRetStatus limPostMlmAddBAReq( tpAniSirGlobal pMac,
328 tpDphHashNode pStaDs,
329 tANI_U8 tid, tANI_U16 startingSeqNum,tpPESession psessionEntry);
330tSirRetStatus limPostMlmAddBARsp( tpAniSirGlobal pMac,
331 tSirMacAddr peerMacAddr,
332 tSirMacStatusCodes baStatusCode,
333 tANI_U8 baDialogToken,
334 tANI_U8 baTID,
335 tANI_U8 baPolicy,
336 tANI_U16 baBufferSize,
337 tANI_U16 baTimeout,
338 tpPESession psessionEntry);
339tSirRetStatus limPostMlmDelBAReq( tpAniSirGlobal pMac,
340 tpDphHashNode pSta,
341 tANI_U8 baDirection,
342 tANI_U8 baTID,
343 tSirMacReasonCodes baReasonCode ,
344 tpPESession psessionEntry);
345tSirRetStatus limPostMsgAddBAReq( tpAniSirGlobal pMac,
346 tpDphHashNode pSta,
347 tANI_U8 baDialogToken,
348 tANI_U8 baTID,
349 tANI_U8 baPolicy,
350 tANI_U16 baBufferSize,
351 tANI_U16 baTimeout,
352 tANI_U16 baSSN,
353 tANI_U8 baDirection,
354 tpPESession psessionEntry);
355tSirRetStatus limPostMsgDelBAInd( tpAniSirGlobal pMac,
356 tpDphHashNode pSta,
357 tANI_U8 baTID,
358 tANI_U8 baDirection,
359 tpPESession psessionEntry);
360
361tSirRetStatus limPostSMStateUpdate(tpAniSirGlobal pMac,
362 tANI_U16 StaIdx,
363 tSirMacHTMIMOPowerSaveState MIMOPSState);
364
365void limDeleteStaContext(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
366void limProcessAddBaInd(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
Ganesh Kondabattini01f75c92014-07-07 19:27:41 +0530367void limDeleteBASessions(tpAniSirGlobal pMac, tpPESession pSessionEntry,
368 tANI_U32 baDirection, tSirMacReasonCodes baReasonCode);
Leela Venkata Kiran Kumar Reddy Chiralab8dadc22013-11-05 12:34:32 -0800369void limDelPerBssBASessionsBtc(tpAniSirGlobal pMac);
Jeff Johnson295189b2012-06-20 16:38:30 -0700370void limDelAllBASessions(tpAniSirGlobal pMac);
371void limDeleteDialogueTokenList(tpAniSirGlobal pMac);
372tSirRetStatus limSearchAndDeleteDialogueToken(tpAniSirGlobal pMac, tANI_U8 token, tANI_U16 assocId, tANI_U16 tid);
373void limRessetScanChannelInfo(tpAniSirGlobal pMac);
374void limAddScanChannelInfo(tpAniSirGlobal pMac, tANI_U8 channelId);
375
376tANI_U8 limGetChannelFromBeacon(tpAniSirGlobal pMac, tpSchBeaconStruct pBeacon);
377tSirNwType limGetNwType(tpAniSirGlobal pMac, tANI_U8 channelNum, tANI_U32 type, tpSchBeaconStruct pBeacon);
378void limSetTspecUapsdMask(tpAniSirGlobal pMac, tSirMacTSInfo *pTsInfo, tANI_U32 action);
379void limHandleHeartBeatTimeout(tpAniSirGlobal pMac);
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -0800380void limHandleHeartBeatTimeoutForSession(tpAniSirGlobal pMac, tpPESession psessionEntry);
381
Jeff Johnson295189b2012-06-20 16:38:30 -0700382//void limProcessBtampAddBssRsp(tpAniSirGlobal pMac,tpSirMsgQ pMsgQ,tpPESession peSession);
383void limProcessAddStaRsp(tpAniSirGlobal pMac,tpSirMsgQ pMsgQ);
384
385void limUpdateBeacon(tpAniSirGlobal pMac);
386
387void limProcessBtAmpApMlmAddStaRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ, tpPESession psessionEntry);
388void limProcessBtAmpApMlmDelBssRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ,tpPESession psessionEntry);
389
390void limProcessBtAmpApMlmDelStaRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ,tpPESession psessionEntry);
391tpPESession limIsIBSSSessionActive(tpAniSirGlobal pMac);
392tpPESession limIsApSessionActive(tpAniSirGlobal pMac);
393void limHandleHeartBeatFailureTimeout(tpAniSirGlobal pMac);
394
395void limProcessDelStaSelfRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ);
396void limProcessAddStaSelfRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ);
397v_U8_t* limGetIEPtr(tpAniSirGlobal pMac, v_U8_t *pIes, int length, v_U8_t eid,eSizeOfLenField size_of_len_field);
398
399tANI_U8 limUnmapChannel(tANI_U8 mapChannel);
400
401#define limGetWscIEPtr(pMac, ie, ie_len) \
402 limGetVendorIEOuiPtr(pMac, SIR_MAC_WSC_OUI, SIR_MAC_WSC_OUI_SIZE, ie, ie_len)
403
Jeff Johnson295189b2012-06-20 16:38:30 -0700404#define limGetP2pIEPtr(pMac, ie, ie_len) \
405 limGetVendorIEOuiPtr(pMac, SIR_MAC_P2P_OUI, SIR_MAC_P2P_OUI_SIZE, ie, ie_len)
406
407v_U8_t limGetNoaAttrStreamInMultP2pIes(tpAniSirGlobal pMac,v_U8_t* noaStream,v_U8_t noaLen,v_U8_t overFlowLen);
408v_U8_t limGetNoaAttrStream(tpAniSirGlobal pMac, v_U8_t*pNoaStream,tpPESession psessionEntry);
409
410v_U8_t limBuildP2pIe(tpAniSirGlobal pMac, tANI_U8 *ie, tANI_U8 *data, tANI_U8 ie_len);
Viral Modid86bde22012-12-10 13:09:21 -0800411tANI_BOOLEAN limIsNOAInsertReqd(tpAniSirGlobal pMac);
Jeff Johnson295189b2012-06-20 16:38:30 -0700412v_U8_t* limGetVendorIEOuiPtr(tpAniSirGlobal pMac, tANI_U8 *oui, tANI_U8 oui_size, tANI_U8 *ie, tANI_U16 ie_len);
413tANI_BOOLEAN limIsconnectedOnDFSChannel(tANI_U8 currentChannel);
414tANI_U8 limGetCurrentOperatingChannel(tpAniSirGlobal pMac);
415
Mohit Khanna4a70d262012-09-11 16:30:12 -0700416#ifdef WLAN_FEATURE_11AC
Sandeep Puligilla60342762014-01-30 21:05:37 +0530417tANI_BOOLEAN limCheckVHTOpModeChange( tpAniSirGlobal pMac,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -0700418 tpPESession psessionEntry, tANI_U8 chanWidth, tANI_U8 staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -0700419#endif
Sandeep Puligilla60342762014-01-30 21:05:37 +0530420tANI_BOOLEAN limCheckHTChanBondModeChange(tpAniSirGlobal pMac,
421 tpPESession psessionEntry,
422 tANI_U8 beaconSecChanWidth,
423 tANI_U8 currentSecChanWidth,
424 tANI_U8 staId);
Jeff Johnson295189b2012-06-20 16:38:30 -0700425#ifdef FEATURE_WLAN_DIAG_SUPPORT
426
427typedef enum
428{
429 WLAN_PE_DIAG_SCAN_REQ_EVENT = 0,
430 WLAN_PE_DIAG_SCAN_ABORT_IND_EVENT,
431 WLAN_PE_DIAG_SCAN_RSP_EVENT,
432 WLAN_PE_DIAG_JOIN_REQ_EVENT,
433 WLAN_PE_DIAG_JOIN_RSP_EVENT,
434 WLAN_PE_DIAG_SETCONTEXT_REQ_EVENT,
435 WLAN_PE_DIAG_SETCONTEXT_RSP_EVENT,
436 WLAN_PE_DIAG_REASSOC_REQ_EVENT,
437 WLAN_PE_DIAG_REASSOC_RSP_EVENT,
438 WLAN_PE_DIAG_AUTH_REQ_EVENT,
439 WLAN_PE_DIAG_AUTH_RSP_EVENT,
440 WLAN_PE_DIAG_DISASSOC_REQ_EVENT,
441 WLAN_PE_DIAG_DISASSOC_RSP_EVENT,
442 WLAN_PE_DIAG_DISASSOC_IND_EVENT,
443 WLAN_PE_DIAG_DISASSOC_CNF_EVENT,
444 WLAN_PE_DIAG_DEAUTH_REQ_EVENT,
445 WLAN_PE_DIAG_DEAUTH_RSP_EVENT,
446 WLAN_PE_DIAG_DEAUTH_IND_EVENT,
447 WLAN_PE_DIAG_START_BSS_REQ_EVENT,
448 WLAN_PE_DIAG_START_BSS_RSP_EVENT,
449 WLAN_PE_DIAG_AUTH_IND_EVENT,
450 WLAN_PE_DIAG_ASSOC_IND_EVENT,
451 WLAN_PE_DIAG_ASSOC_CNF_EVENT,
452 WLAN_PE_DIAG_REASSOC_IND_EVENT,
453 WLAN_PE_DIAG_SWITCH_CHL_REQ_EVENT,
454 WLAN_PE_DIAG_SWITCH_CHL_RSP_EVENT,
455 WLAN_PE_DIAG_STOP_BSS_REQ_EVENT,
456 WLAN_PE_DIAG_STOP_BSS_RSP_EVENT,
457 WLAN_PE_DIAG_DEAUTH_CNF_EVENT,
458 WLAN_PE_DIAG_ADDTS_REQ_EVENT,
459 WLAN_PE_DIAG_ADDTS_RSP_EVENT,
460 WLAN_PE_DIAG_DELTS_REQ_EVENT,
461 WLAN_PE_DIAG_DELTS_RSP_EVENT,
462 WLAN_PE_DIAG_DELTS_IND_EVENT,
463 WLAN_PE_DIAG_ENTER_BMPS_REQ_EVENT,
464 WLAN_PE_DIAG_ENTER_BMPS_RSP_EVENT,
465 WLAN_PE_DIAG_EXIT_BMPS_REQ_EVENT,
466 WLAN_PE_DIAG_EXIT_BMPS_RSP_EVENT,
467 WLAN_PE_DIAG_EXIT_BMPS_IND_EVENT,
468 WLAN_PE_DIAG_ENTER_IMPS_REQ_EVENT,
469 WLAN_PE_DIAG_ENTER_IMPS_RSP_EVENT,
470 WLAN_PE_DIAG_EXIT_IMPS_REQ_EVENT,
471 WLAN_PE_DIAG_EXIT_IMPS_RSP_EVENT,
472 WLAN_PE_DIAG_ENTER_UAPSD_REQ_EVENT,
473 WLAN_PE_DIAG_ENTER_UAPSD_RSP_EVENT,
474 WLAN_PE_DIAG_EXIT_UAPSD_REQ_EVENT,
475 WLAN_PE_DIAG_EXIT_UAPSD_RSP_EVENT,
476 WLAN_PE_DIAG_WOWL_ADD_BCAST_PTRN_EVENT,
477 WLAN_PE_DIAG_WOWL_DEL_BCAST_PTRN_EVENT,
478 WLAN_PE_DIAG_ENTER_WOWL_REQ_EVENT,
479 WLAN_PE_DIAG_ENTER_WOWL_RSP_EVENT,
480 WLAN_PE_DIAG_EXIT_WOWL_REQ_EVENT,
481 WLAN_PE_DIAG_EXIT_WOWL_RSP_EVENT,
482 WLAN_PE_DIAG_HAL_ADDBA_REQ_EVENT,
483 WLAN_PE_DIAG_HAL_ADDBA_RSP_EVENT,
484 WLAN_PE_DIAG_HAL_DELBA_IND_EVENT,
Leela Venkata Kiran Kumar Reddy Chirala2365ee62013-05-09 17:30:12 -0700485 WLAN_PE_DIAG_HB_FAILURE_TIMEOUT,
486 WLAN_PE_DIAG_PRE_AUTH_REQ_EVENT,
487 WLAN_PE_DIAG_PRE_AUTH_RSP_EVENT,
488 WLAN_PE_DIAG_PREAUTH_DONE,
489 WLAN_PE_DIAG_REASSOCIATING,
490 WLAN_PE_DIAG_CONNECTED,
Jeff Johnson295189b2012-06-20 16:38:30 -0700491}WLAN_PE_DIAG_EVENT_TYPE;
492
493void limDiagEventReport(tpAniSirGlobal pMac, tANI_U16 eventType, tpPESession pSessionEntry, tANI_U16 status, tANI_U16 reasonCode);
494#endif /* FEATURE_WLAN_DIAG_SUPPORT */
495
Jeff Johnsone7245742012-09-05 17:12:55 -0700496void peSetResumeChannel(tpAniSirGlobal pMac, tANI_U16 channel, ePhyChanBondState cbState);
Jeff Johnson295189b2012-06-20 16:38:30 -0700497/*--------------------------------------------------------------------------
498
499 \brief peGetResumeChannel() - Returns the channel number for scanning, from a valid session.
500
Jeff Johnsone7245742012-09-05 17:12:55 -0700501 This function returns the channel to resume to during link resume. channel id of 0 means HAL will
502 resume to previous channel before link suspend
Jeff Johnson295189b2012-06-20 16:38:30 -0700503
504 \param pMac - pointer to global adapter context
505 \return - channel to scan from valid session else zero.
506
507 \sa
508
509 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700510void peGetResumeChannel(tpAniSirGlobal pMac, tANI_U8* resumeChannel, ePhyChanBondState* resumePhyCbState);
Jeff Johnson295189b2012-06-20 16:38:30 -0700511
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800512#ifdef FEATURE_WLAN_TDLS_INTERNAL
513tANI_U8 limTdlsFindLinkPeer(tpAniSirGlobal pMac, tSirMacAddr peerMac, tLimTdlsLinkSetupPeer **setupPeer);
514void limTdlsDelLinkPeer(tpAniSirGlobal pMac, tSirMacAddr peerMac);
515void limStartTdlsTimer(tpAniSirGlobal pMac, tANI_U8 sessionId, TX_TIMER *timer, tANI_U32 timerId,
516 tANI_U16 timerType, tANI_U32 timerMsg);
517#endif
krunal soni45b9eb62014-03-26 12:54:25 -0700518void limGetShortSlotFromPhyMode(tpAniSirGlobal pMac, tpPESession psessionEntry, tANI_U32 phyMode,
519 tANI_U8 *pShortSlotEnable);
Madan Mohan Koyyalamudi6db7ad12012-10-29 16:14:41 -0700520
Madan Mohan Koyyalamudia67d4332012-11-29 11:35:23 -0800521void limCleanUpDisassocDeauthReq(tpAniSirGlobal pMac, tANI_U8 *staMac, tANI_BOOLEAN cleanRxPath);
522
Madan Mohan Koyyalamudi25b6f8b2012-12-04 16:17:31 -0800523tANI_BOOLEAN limCheckDisassocDeauthAckPending(tpAniSirGlobal pMac, tANI_U8 *staMac);
Kalikinkar dhara205da782014-03-21 15:49:32 -0700524
525
526void limUtilsframeshtons(tpAniSirGlobal pCtx,
527 tANI_U8 *pOut,
528 tANI_U16 pIn,
529 tANI_U8 fMsb);
530
531void limUtilsframeshtonl(tpAniSirGlobal pCtx,
532 tANI_U8 *pOut,
533 tANI_U32 pIn,
534 tANI_U8 fMsb);
535
Sandeep Puligilla11d49a62014-01-30 12:05:16 +0530536void limUpdateOBSSScanParams(tpPESession psessionEntry ,
537 tDot11fIEOBSSScanParameters *pOBSSScanParameters);
Chet Lanctot8cecea22014-02-11 19:09:36 -0800538
539#ifdef WLAN_FEATURE_11W
540void limPmfSaQueryTimerHandler(void *pMacGlobal, tANI_U32 param);
Chet Lanctot8cecea22014-02-11 19:09:36 -0800541
Abhishek Singh0ebac9c2014-06-25 13:34:12 +0530542void limSetProtectedBit(tpAniSirGlobal pMac,
543 tpPESession psessionEntry,
544 tSirMacAddr peer,
545 tpSirMacMgmtHdr pMacHdr);
546#endif
Atul Mittalb849d5a2014-07-29 12:08:39 +0530547void limInitOperatingClasses(tHalHandle hHal);
548tANI_U8 limGetOPClassFromChannel(tANI_U8 *country,
549 tANI_U8 channel,
550 tANI_U8 offset);
Sushant Kaushik02c866d2015-01-16 15:24:25 +0530551void limParseBeaconForTim(tpAniSirGlobal pMac, tANI_U8* pRxPacketInfo,
552 tpPESession psessionEntry);
553
Jeff Johnson295189b2012-06-20 16:38:30 -0700554#endif /* __LIM_UTILS_H */