blob: 9d2eff2192454af3f1cc43a78e1fe00f71c43110 [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
Masti, Narayanraddi2f5dd652015-03-03 22:00:44 +053064#define LIM_MAX_BANDS ( 48 )
65
Jeff Johnson295189b2012-06-20 16:38:30 -070066// classifier ID is coded as 0-3: tsid, 4-5:direction
67#define LIM_MAKE_CLSID(tsid, dir) (((tsid) & 0x0F) | (((dir) & 0x03) << 4))
68
69#define LIM_SET_STA_BA_STATE(pSta, tid, newVal) \
70{\
71 pSta->baState = ((pSta->baState | (0x3 << tid*2)) & ((newVal << tid*2) | ~(0x3 << tid*2)));\
72}
73
74#define LIM_GET_STA_BA_STATE(pSta, tid, pCurVal)\
75{\
76 *pCurVal = (tLimBAState)(((pSta->baState >> tid*2) & 0x3));\
77}
78
Pradeep Reddy POTTETI1571b4f2015-02-18 15:34:26 +053079#define LIM_DFS_START_CHANNEL 52
80#define LIM_DFS_END_CHANNEL 144
81
82#define LIM_IS_CHANNEL_DFS(chnNum) \
83 (((chnNum) >= LIM_DFS_START_CHANNEL) && ((chnNum) <= LIM_DFS_END_CHANNEL))
84
Jeff Johnson295189b2012-06-20 16:38:30 -070085typedef struct sAddBaInfo
86{
87 tANI_U16 fBaEnable : 1;
88 tANI_U16 startingSeqNum: 12;
89 tANI_U16 reserved : 3;
90}tAddBaInfo, *tpAddBaInfo;
91
92typedef struct sAddBaCandidate
93{
94 tSirMacAddr staAddr;
95 tAddBaInfo baInfo[STACFG_MAX_TC];
96}tAddBaCandidate, *tpAddBaCandidate;
Jeff Johnson295189b2012-06-20 16:38:30 -070097
Chet Lanctot8cecea22014-02-11 19:09:36 -080098#ifdef WLAN_FEATURE_11W
99typedef union uPmfSaQueryTimerId
100{
101 struct
102 {
103 tANI_U8 sessionId;
104 tANI_U16 peerIdx;
105 } fields;
106 tANI_U32 value;
107} tPmfSaQueryTimerId, *tpPmfSaQueryTimerId;
108#endif
109
Atul Mittalb849d5a2014-07-29 12:08:39 +0530110typedef enum offset {
111 BW20,
112 BW40PLUS,
113 BW40MINUS,
Pradeep Reddy POTTETIe8bd41a2015-01-29 14:52:43 +0530114 BW80,
Atul Mittalb849d5a2014-07-29 12:08:39 +0530115 BWALL
116} offset_t;
117
118typedef struct op_class_map {
119 tANI_U8 op_class;
120 tANI_U8 ch_spacing;
121 offset_t offset;
Pradeep Reddy POTTETIe8bd41a2015-01-29 14:52:43 +0530122 tANI_U8 channels[25];
Atul Mittalb849d5a2014-07-29 12:08:39 +0530123}op_class_map_t;
Jeff Johnson1250df42012-12-10 14:31:52 -0800124// LIM utility functions
Masti, Narayanraddi67ea5912015-01-08 12:34:05 +0530125tANI_BOOLEAN limCheck11BRateBitmap(tANI_U16 RateBitmap);
Jeff Johnson295189b2012-06-20 16:38:30 -0700126void limGetBssidFromPkt(tpAniSirGlobal, tANI_U8 *, tANI_U8 *, tANI_U32 *);
127char * limMlmStateStr(tLimMlmStates state);
128char * limSmeStateStr(tLimSmeStates state);
129char * limMsgStr(tANI_U32 msgType);
130char * limResultCodeStr(tSirResultCodes resultCode);
131char* limDot11ModeStr(tpAniSirGlobal pMac, tANI_U8 dot11Mode);
132char* limStaOpRateModeStr(tStaRateMode opRateMode);
133void limPrintMlmState(tpAniSirGlobal pMac, tANI_U16 logLevel, tLimMlmStates state);
134void limPrintSmeState(tpAniSirGlobal pMac, tANI_U16 logLevel, tLimSmeStates state);
135void limPrintMsgName(tpAniSirGlobal pMac, tANI_U16 logLevel, tANI_U32 msgType);
136void limPrintMsgInfo(tpAniSirGlobal pMac, tANI_U16 logLevel, tSirMsgQ *msg);
137char* limBssTypeStr(tSirBssType bssType);
138
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800139#if defined FEATURE_WLAN_ESE || defined WLAN_FEATURE_VOWIFI
Jeff Johnson295189b2012-06-20 16:38:30 -0700140extern tSirRetStatus limSendSetMaxTxPowerReq ( tpAniSirGlobal pMac,
141 tPowerdBm txPower,
142 tpPESession pSessionEntry );
Madan Mohan Koyyalamudi3282c572012-11-09 17:01:41 -0800143extern tANI_U8 limGetMaxTxPower(tPowerdBm regMax, tPowerdBm apTxPower, tANI_U8 iniTxPower);
Jeff Johnson295189b2012-06-20 16:38:30 -0700144#endif
145
146tANI_U32 limPostMsgApiNoWait(tpAniSirGlobal, tSirMsgQ *);
147tANI_U8 limIsAddrBC(tSirMacAddr);
148tANI_U8 limIsGroupAddr(tSirMacAddr);
149
150// check for type of scan allowed
151tANI_U8 limActiveScanAllowed(tpAniSirGlobal, tANI_U8);
152
153// AID pool management functions
Gopichand Nakkala777e6032012-12-31 16:39:21 -0800154void limInitPeerIdxpool(tpAniSirGlobal,tpPESession);
155tANI_U16 limAssignPeerIdx(tpAniSirGlobal,tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700156
157void limEnableOverlap11gProtection(tpAniSirGlobal pMac, tpUpdateBeaconParams pBeaconParams, tpSirMacMgmtHdr pMh,tpPESession psessionEntry);
158void limUpdateOverlapStaParam(tpAniSirGlobal pMac, tSirMacAddr bssId, tpLimProtStaParams pStaParams);
159void limUpdateShortPreamble(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
160void limUpdateShortSlotTime(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
161
162/*
163 * The below 'product' check tobe removed if 'Association' is
164 * allowed in IBSS.
165 */
Gopichand Nakkala777e6032012-12-31 16:39:21 -0800166void limReleasePeerIdx(tpAniSirGlobal, tANI_U16, tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700167
Jeff Johnson295189b2012-06-20 16:38:30 -0700168
Jeff Johnson295189b2012-06-20 16:38:30 -0700169void limDecideApProtection(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr, tpUpdateBeaconParams pBeaconParams,tpPESession);
170void
171limDecideApProtectionOnDelete(tpAniSirGlobal pMac,
172 tpDphHashNode pStaDs, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700173
174extern tSirRetStatus limEnable11aProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession);
175extern tSirRetStatus limEnable11gProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession psessionEntry);
176extern tSirRetStatus limEnableHtProtectionFrom11g(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession psessionEntry);
177extern tSirRetStatus limEnableHT20Protection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession sessionEntry);
178extern tSirRetStatus limEnableHTNonGfProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession);
179extern tSirRetStatus limEnableHtRifsProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession psessionEntry);
180extern tSirRetStatus limEnableHTLsigTxopProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700181extern tSirRetStatus limEnableShortPreamble(tpAniSirGlobal pMac, tANI_U8 enable, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700182extern tSirRetStatus limEnableHtOBSSProtection (tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams, tpPESession);
183void limDecideStaProtection(tpAniSirGlobal pMac, tpSchBeaconStruct pBeaconStruct, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
184void limDecideStaProtectionOnAssoc(tpAniSirGlobal pMac, tpSchBeaconStruct pBeaconStruct, tpPESession psessionEntry);
185void limUpdateStaRunTimeHTSwitchChnlParams(tpAniSirGlobal pMac, tDot11fIEHTInfo * pHTInfo, tANI_U8 bssIdx, tpPESession psessionEntry);
186// Print MAC address utility function
187void limPrintMacAddr(tpAniSirGlobal, tSirMacAddr, tANI_U8);
188
189
190
191// Deferred Message Queue read/write
192tANI_U8 limWriteDeferredMsgQ(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
193tSirMsgQ* limReadDeferredMsgQ(tpAniSirGlobal pMac);
194void limHandleDeferMsgError(tpAniSirGlobal pMac, tpSirMsgQ pLimMsg);
195
196// Deferred Message Queue Reset
197void limResetDeferredMsgQ(tpAniSirGlobal pMac);
198
199tSirRetStatus limSysProcessMmhMsgApi(tpAniSirGlobal, tSirMsgQ*, tANI_U8);
200
Jeff Johnson295189b2012-06-20 16:38:30 -0700201void limHandleUpdateOlbcCache(tpAniSirGlobal pMac);
Jeff Johnson295189b2012-06-20 16:38:30 -0700202
203tANI_U8 limIsNullSsid( tSirMacSSid *pSsid );
204
205void limProcessAddtsRspTimeout(tpAniSirGlobal pMac, tANI_U32 param);
206
207// 11h Support
Jeff Johnson295189b2012-06-20 16:38:30 -0700208void limStopTxAndSwitchChannel(tpAniSirGlobal pMac, tANI_U8 sessionId);
209void limProcessChannelSwitchTimeout(tpAniSirGlobal);
210tSirRetStatus limStartChannelSwitch(tpAniSirGlobal pMac, tpPESession psessionEntry);
211void limUpdateChannelSwitch(tpAniSirGlobal, tpSirProbeRespBeacon, tpPESession psessionEntry);
212void limProcessQuietTimeout(tpAniSirGlobal);
213void limProcessQuietBssTimeout(tpAniSirGlobal);
Sandeep Puligilla70b6b162014-04-19 02:06:04 +0530214void limInitOBSSScanParams(tpAniSirGlobal pMac,
215 tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700216#if 0
217void limProcessWPSOverlapTimeout(tpAniSirGlobal pMac);
218#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700219
220void limStartQuietTimer(tpAniSirGlobal pMac, tANI_U8 sessionId);
Jeff Johnson295189b2012-06-20 16:38:30 -0700221void limSwitchPrimaryChannel(tpAniSirGlobal, tANI_U8,tpPESession);
Jeff Johnsone7245742012-09-05 17:12:55 -0700222void limSwitchPrimarySecondaryChannel(tpAniSirGlobal, tpPESession, tANI_U8, ePhyChanBondState);
Jeff Johnson295189b2012-06-20 16:38:30 -0700223tAniBool limTriggerBackgroundScanDuringQuietBss(tpAniSirGlobal);
224void limUpdateStaRunTimeHTSwtichChnlParams(tpAniSirGlobal pMac, tDot11fIEHTInfo *pRcvdHTInfo, tANI_U8 bssIdx);
225void limUpdateStaRunTimeHTCapability(tpAniSirGlobal pMac, tDot11fIEHTCaps *pHTCaps);
226void limUpdateStaRunTimeHTInfo(struct sAniSirGlobal *pMac, tDot11fIEHTInfo *pRcvdHTInfo, tpPESession psessionEntry);
227void limCancelDot11hChannelSwitch(tpAniSirGlobal pMac, tpPESession psessionEntry);
228void limCancelDot11hQuiet(tpAniSirGlobal pMac, tpPESession psessionEntry);
229tAniBool limIsChannelValidForChannelSwitch(tpAniSirGlobal pMac, tANI_U8 channel);
230void limFrameTransmissionControl(tpAniSirGlobal pMac, tLimQuietTxMode type, tLimControlTx mode);
231tSirRetStatus limRestorePreChannelSwitchState(tpAniSirGlobal pMac, tpPESession psessionEntry);
Jeff Johnsone7245742012-09-05 17:12:55 -0700232tSirRetStatus limRestorePreQuietState(tpAniSirGlobal pMac, tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700233
234void limPrepareFor11hChannelSwitch(tpAniSirGlobal pMac, tpPESession psessionEntry);
235void limSwitchChannelCback(tpAniSirGlobal pMac, eHalStatus status,
236 tANI_U32 *data, tpPESession psessionEntry);
237
238static inline tSirRFBand limGetRFBand(tANI_U8 channel)
239{
240 if ((channel >= SIR_11A_CHANNEL_BEGIN) &&
241 (channel <= SIR_11A_CHANNEL_END))
242 return SIR_BAND_5_GHZ;
243
244 if ((channel >= SIR_11B_CHANNEL_BEGIN) &&
245 (channel <= SIR_11B_CHANNEL_END))
246 return SIR_BAND_2_4_GHZ;
247
248 return SIR_BAND_UNKNOWN;
249}
250
251
252static inline tSirRetStatus
253limGetMgmtStaid(tpAniSirGlobal pMac, tANI_U16 *staid, tpPESession psessionEntry)
254{
255 if (psessionEntry->limSystemRole == eLIM_AP_ROLE)
256 *staid = 1;
257 else if (psessionEntry->limSystemRole == eLIM_STA_ROLE)
258 *staid = 0;
259 else
260 return eSIR_FAILURE;
261
262 return eSIR_SUCCESS;
263}
264
265static inline tANI_U8
266limIsSystemInSetMimopsState(tpAniSirGlobal pMac)
267{
268 if (pMac->lim.gLimMlmState == eLIM_MLM_WT_SET_MIMOPS_STATE)
269 return true;
270 return false;
271}
272
273static inline tANI_U8
274 isEnteringMimoPS(tSirMacHTMIMOPowerSaveState curState, tSirMacHTMIMOPowerSaveState newState)
275 {
276 if (curState == eSIR_HT_MIMO_PS_NO_LIMIT &&
277 (newState == eSIR_HT_MIMO_PS_DYNAMIC ||newState == eSIR_HT_MIMO_PS_STATIC))
278 return TRUE;
279 return FALSE;
280}
281
282/// ANI peer station count management and associated actions
283void limUtilCountStaAdd(tpAniSirGlobal pMac, tpDphHashNode pSta, tpPESession psessionEntry);
284void limUtilCountStaDel(tpAniSirGlobal pMac, tpDphHashNode pSta, tpPESession psessionEntry);
285
Jeff Johnson295189b2012-06-20 16:38:30 -0700286tANI_U8 limGetHTCapability( tpAniSirGlobal, tANI_U32, tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700287void limTxComplete( tHalHandle hHal, void *pData );
288
289/**********Admit Control***************************************/
290
291//callback function for HAL to issue DelTS request to PE.
292//This function will be registered with HAL for callback when TSPEC inactivity timer fires.
293
294void limProcessDelTsInd(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
295tSirRetStatus limProcessHalIndMessages(tpAniSirGlobal pMac, tANI_U32 mesgId, void *mesgParam );
296tSirRetStatus limValidateDeltsReq(tpAniSirGlobal pMac, tpSirDeltsReq pDeltsReq, tSirMacAddr peerMacAddr,tpPESession psessionEntry);
297/**********************************************************/
298
299//callback function registration to HAL for any indication.
300void limRegisterHalIndCallBack(tpAniSirGlobal pMac);
301void limPktFree (
302 tpAniSirGlobal pMac,
303 eFrameType frmType,
304 tANI_U8 *pBD,
305 void *body);
306
307
308
309void limGetBDfromRxPacket(tpAniSirGlobal pMac, void *body, tANI_U32 **pBD);
310
311/**
312 * \brief Given a base(X) and power(Y), this API will return
313 * the result of base raised to power - (X ^ Y)
314 *
315 * \sa utilsPowerXY
316 *
317 * \param base Base value
318 *
319 * \param power Base raised to this Power value
320 *
321 * \return Result of X^Y
322 *
323 */
324static inline tANI_U32 utilsPowerXY( tANI_U16 base, tANI_U16 power )
325{
326tANI_U32 result = 1, i;
327
328 for( i = 0; i < power; i++ )
329 result *= base;
330
331 return result;
332}
333
334
335
336tSirRetStatus limPostMlmAddBAReq( tpAniSirGlobal pMac,
337 tpDphHashNode pStaDs,
338 tANI_U8 tid, tANI_U16 startingSeqNum,tpPESession psessionEntry);
339tSirRetStatus limPostMlmAddBARsp( tpAniSirGlobal pMac,
340 tSirMacAddr peerMacAddr,
341 tSirMacStatusCodes baStatusCode,
342 tANI_U8 baDialogToken,
343 tANI_U8 baTID,
344 tANI_U8 baPolicy,
345 tANI_U16 baBufferSize,
346 tANI_U16 baTimeout,
347 tpPESession psessionEntry);
348tSirRetStatus limPostMlmDelBAReq( tpAniSirGlobal pMac,
349 tpDphHashNode pSta,
350 tANI_U8 baDirection,
351 tANI_U8 baTID,
352 tSirMacReasonCodes baReasonCode ,
353 tpPESession psessionEntry);
354tSirRetStatus limPostMsgAddBAReq( tpAniSirGlobal pMac,
355 tpDphHashNode pSta,
356 tANI_U8 baDialogToken,
357 tANI_U8 baTID,
358 tANI_U8 baPolicy,
359 tANI_U16 baBufferSize,
360 tANI_U16 baTimeout,
361 tANI_U16 baSSN,
362 tANI_U8 baDirection,
363 tpPESession psessionEntry);
364tSirRetStatus limPostMsgDelBAInd( tpAniSirGlobal pMac,
365 tpDphHashNode pSta,
366 tANI_U8 baTID,
367 tANI_U8 baDirection,
368 tpPESession psessionEntry);
369
370tSirRetStatus limPostSMStateUpdate(tpAniSirGlobal pMac,
371 tANI_U16 StaIdx,
372 tSirMacHTMIMOPowerSaveState MIMOPSState);
373
374void limDeleteStaContext(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
375void limProcessAddBaInd(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
Ganesh Kondabattini01f75c92014-07-07 19:27:41 +0530376void limDeleteBASessions(tpAniSirGlobal pMac, tpPESession pSessionEntry,
377 tANI_U32 baDirection, tSirMacReasonCodes baReasonCode);
Leela Venkata Kiran Kumar Reddy Chiralab8dadc22013-11-05 12:34:32 -0800378void limDelPerBssBASessionsBtc(tpAniSirGlobal pMac);
Jeff Johnson295189b2012-06-20 16:38:30 -0700379void limDelAllBASessions(tpAniSirGlobal pMac);
380void limDeleteDialogueTokenList(tpAniSirGlobal pMac);
381tSirRetStatus limSearchAndDeleteDialogueToken(tpAniSirGlobal pMac, tANI_U8 token, tANI_U16 assocId, tANI_U16 tid);
382void limRessetScanChannelInfo(tpAniSirGlobal pMac);
383void limAddScanChannelInfo(tpAniSirGlobal pMac, tANI_U8 channelId);
384
385tANI_U8 limGetChannelFromBeacon(tpAniSirGlobal pMac, tpSchBeaconStruct pBeacon);
386tSirNwType limGetNwType(tpAniSirGlobal pMac, tANI_U8 channelNum, tANI_U32 type, tpSchBeaconStruct pBeacon);
387void limSetTspecUapsdMask(tpAniSirGlobal pMac, tSirMacTSInfo *pTsInfo, tANI_U32 action);
388void limHandleHeartBeatTimeout(tpAniSirGlobal pMac);
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -0800389void limHandleHeartBeatTimeoutForSession(tpAniSirGlobal pMac, tpPESession psessionEntry);
390
Jeff Johnson295189b2012-06-20 16:38:30 -0700391//void limProcessBtampAddBssRsp(tpAniSirGlobal pMac,tpSirMsgQ pMsgQ,tpPESession peSession);
392void limProcessAddStaRsp(tpAniSirGlobal pMac,tpSirMsgQ pMsgQ);
393
394void limUpdateBeacon(tpAniSirGlobal pMac);
395
396void limProcessBtAmpApMlmAddStaRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ, tpPESession psessionEntry);
397void limProcessBtAmpApMlmDelBssRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ,tpPESession psessionEntry);
398
399void limProcessBtAmpApMlmDelStaRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ,tpPESession psessionEntry);
400tpPESession limIsIBSSSessionActive(tpAniSirGlobal pMac);
401tpPESession limIsApSessionActive(tpAniSirGlobal pMac);
402void limHandleHeartBeatFailureTimeout(tpAniSirGlobal pMac);
403
404void limProcessDelStaSelfRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ);
405void limProcessAddStaSelfRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ);
406v_U8_t* limGetIEPtr(tpAniSirGlobal pMac, v_U8_t *pIes, int length, v_U8_t eid,eSizeOfLenField size_of_len_field);
407
408tANI_U8 limUnmapChannel(tANI_U8 mapChannel);
409
410#define limGetWscIEPtr(pMac, ie, ie_len) \
411 limGetVendorIEOuiPtr(pMac, SIR_MAC_WSC_OUI, SIR_MAC_WSC_OUI_SIZE, ie, ie_len)
412
Jeff Johnson295189b2012-06-20 16:38:30 -0700413#define limGetP2pIEPtr(pMac, ie, ie_len) \
414 limGetVendorIEOuiPtr(pMac, SIR_MAC_P2P_OUI, SIR_MAC_P2P_OUI_SIZE, ie, ie_len)
415
416v_U8_t limGetNoaAttrStreamInMultP2pIes(tpAniSirGlobal pMac,v_U8_t* noaStream,v_U8_t noaLen,v_U8_t overFlowLen);
417v_U8_t limGetNoaAttrStream(tpAniSirGlobal pMac, v_U8_t*pNoaStream,tpPESession psessionEntry);
418
419v_U8_t limBuildP2pIe(tpAniSirGlobal pMac, tANI_U8 *ie, tANI_U8 *data, tANI_U8 ie_len);
Viral Modid86bde22012-12-10 13:09:21 -0800420tANI_BOOLEAN limIsNOAInsertReqd(tpAniSirGlobal pMac);
Jeff Johnson295189b2012-06-20 16:38:30 -0700421v_U8_t* limGetVendorIEOuiPtr(tpAniSirGlobal pMac, tANI_U8 *oui, tANI_U8 oui_size, tANI_U8 *ie, tANI_U16 ie_len);
422tANI_BOOLEAN limIsconnectedOnDFSChannel(tANI_U8 currentChannel);
423tANI_U8 limGetCurrentOperatingChannel(tpAniSirGlobal pMac);
424
Mohit Khanna4a70d262012-09-11 16:30:12 -0700425#ifdef WLAN_FEATURE_11AC
Sandeep Puligilla60342762014-01-30 21:05:37 +0530426tANI_BOOLEAN limCheckVHTOpModeChange( tpAniSirGlobal pMac,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -0700427 tpPESession psessionEntry, tANI_U8 chanWidth, tANI_U8 staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -0700428#endif
Sandeep Puligilla60342762014-01-30 21:05:37 +0530429tANI_BOOLEAN limCheckHTChanBondModeChange(tpAniSirGlobal pMac,
430 tpPESession psessionEntry,
431 tANI_U8 beaconSecChanWidth,
432 tANI_U8 currentSecChanWidth,
433 tANI_U8 staId);
Jeff Johnson295189b2012-06-20 16:38:30 -0700434#ifdef FEATURE_WLAN_DIAG_SUPPORT
435
436typedef enum
437{
438 WLAN_PE_DIAG_SCAN_REQ_EVENT = 0,
439 WLAN_PE_DIAG_SCAN_ABORT_IND_EVENT,
440 WLAN_PE_DIAG_SCAN_RSP_EVENT,
441 WLAN_PE_DIAG_JOIN_REQ_EVENT,
442 WLAN_PE_DIAG_JOIN_RSP_EVENT,
443 WLAN_PE_DIAG_SETCONTEXT_REQ_EVENT,
444 WLAN_PE_DIAG_SETCONTEXT_RSP_EVENT,
445 WLAN_PE_DIAG_REASSOC_REQ_EVENT,
446 WLAN_PE_DIAG_REASSOC_RSP_EVENT,
447 WLAN_PE_DIAG_AUTH_REQ_EVENT,
448 WLAN_PE_DIAG_AUTH_RSP_EVENT,
449 WLAN_PE_DIAG_DISASSOC_REQ_EVENT,
450 WLAN_PE_DIAG_DISASSOC_RSP_EVENT,
451 WLAN_PE_DIAG_DISASSOC_IND_EVENT,
452 WLAN_PE_DIAG_DISASSOC_CNF_EVENT,
453 WLAN_PE_DIAG_DEAUTH_REQ_EVENT,
454 WLAN_PE_DIAG_DEAUTH_RSP_EVENT,
455 WLAN_PE_DIAG_DEAUTH_IND_EVENT,
456 WLAN_PE_DIAG_START_BSS_REQ_EVENT,
457 WLAN_PE_DIAG_START_BSS_RSP_EVENT,
458 WLAN_PE_DIAG_AUTH_IND_EVENT,
459 WLAN_PE_DIAG_ASSOC_IND_EVENT,
460 WLAN_PE_DIAG_ASSOC_CNF_EVENT,
461 WLAN_PE_DIAG_REASSOC_IND_EVENT,
462 WLAN_PE_DIAG_SWITCH_CHL_REQ_EVENT,
463 WLAN_PE_DIAG_SWITCH_CHL_RSP_EVENT,
464 WLAN_PE_DIAG_STOP_BSS_REQ_EVENT,
465 WLAN_PE_DIAG_STOP_BSS_RSP_EVENT,
466 WLAN_PE_DIAG_DEAUTH_CNF_EVENT,
467 WLAN_PE_DIAG_ADDTS_REQ_EVENT,
468 WLAN_PE_DIAG_ADDTS_RSP_EVENT,
469 WLAN_PE_DIAG_DELTS_REQ_EVENT,
470 WLAN_PE_DIAG_DELTS_RSP_EVENT,
471 WLAN_PE_DIAG_DELTS_IND_EVENT,
472 WLAN_PE_DIAG_ENTER_BMPS_REQ_EVENT,
473 WLAN_PE_DIAG_ENTER_BMPS_RSP_EVENT,
474 WLAN_PE_DIAG_EXIT_BMPS_REQ_EVENT,
475 WLAN_PE_DIAG_EXIT_BMPS_RSP_EVENT,
476 WLAN_PE_DIAG_EXIT_BMPS_IND_EVENT,
477 WLAN_PE_DIAG_ENTER_IMPS_REQ_EVENT,
478 WLAN_PE_DIAG_ENTER_IMPS_RSP_EVENT,
479 WLAN_PE_DIAG_EXIT_IMPS_REQ_EVENT,
480 WLAN_PE_DIAG_EXIT_IMPS_RSP_EVENT,
481 WLAN_PE_DIAG_ENTER_UAPSD_REQ_EVENT,
482 WLAN_PE_DIAG_ENTER_UAPSD_RSP_EVENT,
483 WLAN_PE_DIAG_EXIT_UAPSD_REQ_EVENT,
484 WLAN_PE_DIAG_EXIT_UAPSD_RSP_EVENT,
485 WLAN_PE_DIAG_WOWL_ADD_BCAST_PTRN_EVENT,
486 WLAN_PE_DIAG_WOWL_DEL_BCAST_PTRN_EVENT,
487 WLAN_PE_DIAG_ENTER_WOWL_REQ_EVENT,
488 WLAN_PE_DIAG_ENTER_WOWL_RSP_EVENT,
489 WLAN_PE_DIAG_EXIT_WOWL_REQ_EVENT,
490 WLAN_PE_DIAG_EXIT_WOWL_RSP_EVENT,
491 WLAN_PE_DIAG_HAL_ADDBA_REQ_EVENT,
492 WLAN_PE_DIAG_HAL_ADDBA_RSP_EVENT,
493 WLAN_PE_DIAG_HAL_DELBA_IND_EVENT,
Leela Venkata Kiran Kumar Reddy Chirala2365ee62013-05-09 17:30:12 -0700494 WLAN_PE_DIAG_HB_FAILURE_TIMEOUT,
495 WLAN_PE_DIAG_PRE_AUTH_REQ_EVENT,
496 WLAN_PE_DIAG_PRE_AUTH_RSP_EVENT,
497 WLAN_PE_DIAG_PREAUTH_DONE,
498 WLAN_PE_DIAG_REASSOCIATING,
499 WLAN_PE_DIAG_CONNECTED,
Jeff Johnson295189b2012-06-20 16:38:30 -0700500}WLAN_PE_DIAG_EVENT_TYPE;
501
502void limDiagEventReport(tpAniSirGlobal pMac, tANI_U16 eventType, tpPESession pSessionEntry, tANI_U16 status, tANI_U16 reasonCode);
503#endif /* FEATURE_WLAN_DIAG_SUPPORT */
504
Jeff Johnsone7245742012-09-05 17:12:55 -0700505void peSetResumeChannel(tpAniSirGlobal pMac, tANI_U16 channel, ePhyChanBondState cbState);
Jeff Johnson295189b2012-06-20 16:38:30 -0700506/*--------------------------------------------------------------------------
507
508 \brief peGetResumeChannel() - Returns the channel number for scanning, from a valid session.
509
Jeff Johnsone7245742012-09-05 17:12:55 -0700510 This function returns the channel to resume to during link resume. channel id of 0 means HAL will
511 resume to previous channel before link suspend
Jeff Johnson295189b2012-06-20 16:38:30 -0700512
513 \param pMac - pointer to global adapter context
514 \return - channel to scan from valid session else zero.
515
516 \sa
517
518 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700519void peGetResumeChannel(tpAniSirGlobal pMac, tANI_U8* resumeChannel, ePhyChanBondState* resumePhyCbState);
Jeff Johnson295189b2012-06-20 16:38:30 -0700520
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800521#ifdef FEATURE_WLAN_TDLS_INTERNAL
522tANI_U8 limTdlsFindLinkPeer(tpAniSirGlobal pMac, tSirMacAddr peerMac, tLimTdlsLinkSetupPeer **setupPeer);
523void limTdlsDelLinkPeer(tpAniSirGlobal pMac, tSirMacAddr peerMac);
524void limStartTdlsTimer(tpAniSirGlobal pMac, tANI_U8 sessionId, TX_TIMER *timer, tANI_U32 timerId,
525 tANI_U16 timerType, tANI_U32 timerMsg);
526#endif
krunal soni45b9eb62014-03-26 12:54:25 -0700527void limGetShortSlotFromPhyMode(tpAniSirGlobal pMac, tpPESession psessionEntry, tANI_U32 phyMode,
528 tANI_U8 *pShortSlotEnable);
Madan Mohan Koyyalamudi6db7ad12012-10-29 16:14:41 -0700529
Madan Mohan Koyyalamudia67d4332012-11-29 11:35:23 -0800530void limCleanUpDisassocDeauthReq(tpAniSirGlobal pMac, tANI_U8 *staMac, tANI_BOOLEAN cleanRxPath);
531
Madan Mohan Koyyalamudi25b6f8b2012-12-04 16:17:31 -0800532tANI_BOOLEAN limCheckDisassocDeauthAckPending(tpAniSirGlobal pMac, tANI_U8 *staMac);
Kalikinkar dhara205da782014-03-21 15:49:32 -0700533
534
535void limUtilsframeshtons(tpAniSirGlobal pCtx,
536 tANI_U8 *pOut,
537 tANI_U16 pIn,
538 tANI_U8 fMsb);
539
540void limUtilsframeshtonl(tpAniSirGlobal pCtx,
541 tANI_U8 *pOut,
542 tANI_U32 pIn,
543 tANI_U8 fMsb);
544
Sandeep Puligilla11d49a62014-01-30 12:05:16 +0530545void limUpdateOBSSScanParams(tpPESession psessionEntry ,
546 tDot11fIEOBSSScanParameters *pOBSSScanParameters);
Chet Lanctot8cecea22014-02-11 19:09:36 -0800547
548#ifdef WLAN_FEATURE_11W
549void limPmfSaQueryTimerHandler(void *pMacGlobal, tANI_U32 param);
Chet Lanctot8cecea22014-02-11 19:09:36 -0800550
Abhishek Singh0ebac9c2014-06-25 13:34:12 +0530551void limSetProtectedBit(tpAniSirGlobal pMac,
552 tpPESession psessionEntry,
553 tSirMacAddr peer,
554 tpSirMacMgmtHdr pMacHdr);
555#endif
Atul Mittalb849d5a2014-07-29 12:08:39 +0530556void limInitOperatingClasses(tHalHandle hHal);
557tANI_U8 limGetOPClassFromChannel(tANI_U8 *country,
558 tANI_U8 channel,
559 tANI_U8 offset);
Sushant Kaushik02c866d2015-01-16 15:24:25 +0530560void limParseBeaconForTim(tpAniSirGlobal pMac, tANI_U8* pRxPacketInfo,
561 tpPESession psessionEntry);
562
Girish Gowlia95daca2015-02-04 20:31:31 +0530563void limUpdateMaxRateFlag(tpAniSirGlobal pMac,
564 tANI_U8 smeSessionId,
565 tANI_U32 maxRateFlag);
566
567extern tANI_U32 limGetMaxRateFlags(tpDphHashNode pStaDs,
568 tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700569#endif /* __LIM_UTILS_H */