blob: ed1f17aeffdb694569b4a4c73a47493e8fbf41d6 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Yeshwanth Sriram Guntukaa3961612018-01-04 14:24:50 +05302 * Copyright (c) 2012-2018 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
Jeff Johnson295189b2012-06-20 16:38:30 -070079typedef struct sAddBaInfo
80{
81 tANI_U16 fBaEnable : 1;
82 tANI_U16 startingSeqNum: 12;
83 tANI_U16 reserved : 3;
84}tAddBaInfo, *tpAddBaInfo;
85
86typedef struct sAddBaCandidate
87{
88 tSirMacAddr staAddr;
89 tAddBaInfo baInfo[STACFG_MAX_TC];
90}tAddBaCandidate, *tpAddBaCandidate;
Jeff Johnson295189b2012-06-20 16:38:30 -070091
Chet Lanctot8cecea22014-02-11 19:09:36 -080092#ifdef WLAN_FEATURE_11W
93typedef union uPmfSaQueryTimerId
94{
95 struct
96 {
97 tANI_U8 sessionId;
98 tANI_U16 peerIdx;
99 } fields;
100 tANI_U32 value;
101} tPmfSaQueryTimerId, *tpPmfSaQueryTimerId;
102#endif
103
Atul Mittalb849d5a2014-07-29 12:08:39 +0530104typedef enum offset {
105 BW20,
106 BW40PLUS,
107 BW40MINUS,
Pradeep Reddy POTTETIe8bd41a2015-01-29 14:52:43 +0530108 BW80,
Atul Mittalb849d5a2014-07-29 12:08:39 +0530109 BWALL
110} offset_t;
111
112typedef struct op_class_map {
113 tANI_U8 op_class;
114 tANI_U8 ch_spacing;
115 offset_t offset;
Pradeep Reddy POTTETIe8bd41a2015-01-29 14:52:43 +0530116 tANI_U8 channels[25];
Atul Mittalb849d5a2014-07-29 12:08:39 +0530117}op_class_map_t;
Jeff Johnson1250df42012-12-10 14:31:52 -0800118// LIM utility functions
Masti, Narayanraddi67ea5912015-01-08 12:34:05 +0530119tANI_BOOLEAN limCheck11BRateBitmap(tANI_U16 RateBitmap);
Jeff Johnson295189b2012-06-20 16:38:30 -0700120void limGetBssidFromPkt(tpAniSirGlobal, tANI_U8 *, tANI_U8 *, tANI_U32 *);
121char * limMlmStateStr(tLimMlmStates state);
122char * limSmeStateStr(tLimSmeStates state);
123char * limMsgStr(tANI_U32 msgType);
124char * limResultCodeStr(tSirResultCodes resultCode);
125char* limDot11ModeStr(tpAniSirGlobal pMac, tANI_U8 dot11Mode);
126char* limStaOpRateModeStr(tStaRateMode opRateMode);
127void limPrintMlmState(tpAniSirGlobal pMac, tANI_U16 logLevel, tLimMlmStates state);
128void limPrintSmeState(tpAniSirGlobal pMac, tANI_U16 logLevel, tLimSmeStates state);
129void limPrintMsgName(tpAniSirGlobal pMac, tANI_U16 logLevel, tANI_U32 msgType);
130void limPrintMsgInfo(tpAniSirGlobal pMac, tANI_U16 logLevel, tSirMsgQ *msg);
131char* limBssTypeStr(tSirBssType bssType);
132
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800133#if defined FEATURE_WLAN_ESE || defined WLAN_FEATURE_VOWIFI
Jeff Johnson295189b2012-06-20 16:38:30 -0700134extern tSirRetStatus limSendSetMaxTxPowerReq ( tpAniSirGlobal pMac,
135 tPowerdBm txPower,
136 tpPESession pSessionEntry );
Madan Mohan Koyyalamudi3282c572012-11-09 17:01:41 -0800137extern tANI_U8 limGetMaxTxPower(tPowerdBm regMax, tPowerdBm apTxPower, tANI_U8 iniTxPower);
Jeff Johnson295189b2012-06-20 16:38:30 -0700138#endif
139
140tANI_U32 limPostMsgApiNoWait(tpAniSirGlobal, tSirMsgQ *);
141tANI_U8 limIsAddrBC(tSirMacAddr);
142tANI_U8 limIsGroupAddr(tSirMacAddr);
143
144// check for type of scan allowed
145tANI_U8 limActiveScanAllowed(tpAniSirGlobal, tANI_U8);
146
147// AID pool management functions
Gopichand Nakkala777e6032012-12-31 16:39:21 -0800148void limInitPeerIdxpool(tpAniSirGlobal,tpPESession);
149tANI_U16 limAssignPeerIdx(tpAniSirGlobal,tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700150
151void limEnableOverlap11gProtection(tpAniSirGlobal pMac, tpUpdateBeaconParams pBeaconParams, tpSirMacMgmtHdr pMh,tpPESession psessionEntry);
152void limUpdateOverlapStaParam(tpAniSirGlobal pMac, tSirMacAddr bssId, tpLimProtStaParams pStaParams);
153void limUpdateShortPreamble(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
154void limUpdateShortSlotTime(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
155
156/*
157 * The below 'product' check tobe removed if 'Association' is
158 * allowed in IBSS.
159 */
Gopichand Nakkala777e6032012-12-31 16:39:21 -0800160void limReleasePeerIdx(tpAniSirGlobal, tANI_U16, tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700161
Jeff Johnson295189b2012-06-20 16:38:30 -0700162
Jeff Johnson295189b2012-06-20 16:38:30 -0700163void limDecideApProtection(tpAniSirGlobal pMac, tSirMacAddr peerMacAddr, tpUpdateBeaconParams pBeaconParams,tpPESession);
164void
165limDecideApProtectionOnDelete(tpAniSirGlobal pMac,
166 tpDphHashNode pStaDs, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700167
168extern tSirRetStatus limEnable11aProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession);
169extern tSirRetStatus limEnable11gProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession psessionEntry);
170extern tSirRetStatus limEnableHtProtectionFrom11g(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession psessionEntry);
171extern tSirRetStatus limEnableHT20Protection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession sessionEntry);
172extern tSirRetStatus limEnableHTNonGfProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession);
173extern tSirRetStatus limEnableHtRifsProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession psessionEntry);
174extern tSirRetStatus limEnableHTLsigTxopProtection(tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams,tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700175extern tSirRetStatus limEnableShortPreamble(tpAniSirGlobal pMac, tANI_U8 enable, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700176extern tSirRetStatus limEnableHtOBSSProtection (tpAniSirGlobal pMac, tANI_U8 enable, tANI_U8 overlap, tpUpdateBeaconParams pBeaconParams, tpPESession);
177void limDecideStaProtection(tpAniSirGlobal pMac, tpSchBeaconStruct pBeaconStruct, tpUpdateBeaconParams pBeaconParams, tpPESession psessionEntry);
178void limDecideStaProtectionOnAssoc(tpAniSirGlobal pMac, tpSchBeaconStruct pBeaconStruct, tpPESession psessionEntry);
179void limUpdateStaRunTimeHTSwitchChnlParams(tpAniSirGlobal pMac, tDot11fIEHTInfo * pHTInfo, tANI_U8 bssIdx, tpPESession psessionEntry);
180// Print MAC address utility function
181void limPrintMacAddr(tpAniSirGlobal, tSirMacAddr, tANI_U8);
182
183
184
185// Deferred Message Queue read/write
186tANI_U8 limWriteDeferredMsgQ(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
187tSirMsgQ* limReadDeferredMsgQ(tpAniSirGlobal pMac);
188void limHandleDeferMsgError(tpAniSirGlobal pMac, tpSirMsgQ pLimMsg);
189
190// Deferred Message Queue Reset
191void limResetDeferredMsgQ(tpAniSirGlobal pMac);
192
193tSirRetStatus limSysProcessMmhMsgApi(tpAniSirGlobal, tSirMsgQ*, tANI_U8);
194
Jeff Johnson295189b2012-06-20 16:38:30 -0700195void limHandleUpdateOlbcCache(tpAniSirGlobal pMac);
Jeff Johnson295189b2012-06-20 16:38:30 -0700196
197tANI_U8 limIsNullSsid( tSirMacSSid *pSsid );
198
199void limProcessAddtsRspTimeout(tpAniSirGlobal pMac, tANI_U32 param);
200
201// 11h Support
Jeff Johnson295189b2012-06-20 16:38:30 -0700202void limStopTxAndSwitchChannel(tpAniSirGlobal pMac, tANI_U8 sessionId);
203void limProcessChannelSwitchTimeout(tpAniSirGlobal);
204tSirRetStatus limStartChannelSwitch(tpAniSirGlobal pMac, tpPESession psessionEntry);
205void limUpdateChannelSwitch(tpAniSirGlobal, tpSirProbeRespBeacon, tpPESession psessionEntry);
Abhishek Singh39ae47e2017-10-30 17:39:50 +0530206/**
207 * lim_handle_ecsa_req()- Process ECSA channel switch request
208 * @mac_ctx: pointer to global mac structure
209 * @ecsa_req: ecsa req
210 * @session: Session entry
211 *
212 * Return: void
213 */
214void lim_handle_ecsa_req(tpAniSirGlobal mac_ctx,
215 struct ecsa_frame_params *ecsa_req,
216 tpPESession session);
217
Jeff Johnson295189b2012-06-20 16:38:30 -0700218void limProcessQuietTimeout(tpAniSirGlobal);
219void limProcessQuietBssTimeout(tpAniSirGlobal);
Sandeep Puligilla70b6b162014-04-19 02:06:04 +0530220void limInitOBSSScanParams(tpAniSirGlobal pMac,
221 tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700222#if 0
223void limProcessWPSOverlapTimeout(tpAniSirGlobal pMac);
224#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700225
226void limStartQuietTimer(tpAniSirGlobal pMac, tANI_U8 sessionId);
Jeff Johnson295189b2012-06-20 16:38:30 -0700227void limSwitchPrimaryChannel(tpAniSirGlobal, tANI_U8,tpPESession);
Jeff Johnsone7245742012-09-05 17:12:55 -0700228void limSwitchPrimarySecondaryChannel(tpAniSirGlobal, tpPESession, tANI_U8, ePhyChanBondState);
Jeff Johnson295189b2012-06-20 16:38:30 -0700229tAniBool limTriggerBackgroundScanDuringQuietBss(tpAniSirGlobal);
230void limUpdateStaRunTimeHTSwtichChnlParams(tpAniSirGlobal pMac, tDot11fIEHTInfo *pRcvdHTInfo, tANI_U8 bssIdx);
231void limUpdateStaRunTimeHTCapability(tpAniSirGlobal pMac, tDot11fIEHTCaps *pHTCaps);
232void limUpdateStaRunTimeHTInfo(struct sAniSirGlobal *pMac, tDot11fIEHTInfo *pRcvdHTInfo, tpPESession psessionEntry);
233void limCancelDot11hChannelSwitch(tpAniSirGlobal pMac, tpPESession psessionEntry);
234void limCancelDot11hQuiet(tpAniSirGlobal pMac, tpPESession psessionEntry);
235tAniBool limIsChannelValidForChannelSwitch(tpAniSirGlobal pMac, tANI_U8 channel);
236void limFrameTransmissionControl(tpAniSirGlobal pMac, tLimQuietTxMode type, tLimControlTx mode);
237tSirRetStatus limRestorePreChannelSwitchState(tpAniSirGlobal pMac, tpPESession psessionEntry);
Jeff Johnsone7245742012-09-05 17:12:55 -0700238tSirRetStatus limRestorePreQuietState(tpAniSirGlobal pMac, tpPESession psessionEntry);
Jeff Johnson295189b2012-06-20 16:38:30 -0700239
240void limPrepareFor11hChannelSwitch(tpAniSirGlobal pMac, tpPESession psessionEntry);
241void limSwitchChannelCback(tpAniSirGlobal pMac, eHalStatus status,
242 tANI_U32 *data, tpPESession psessionEntry);
243
244static inline tSirRFBand limGetRFBand(tANI_U8 channel)
245{
246 if ((channel >= SIR_11A_CHANNEL_BEGIN) &&
247 (channel <= SIR_11A_CHANNEL_END))
248 return SIR_BAND_5_GHZ;
249
250 if ((channel >= SIR_11B_CHANNEL_BEGIN) &&
251 (channel <= SIR_11B_CHANNEL_END))
252 return SIR_BAND_2_4_GHZ;
253
254 return SIR_BAND_UNKNOWN;
255}
256
257
258static inline tSirRetStatus
259limGetMgmtStaid(tpAniSirGlobal pMac, tANI_U16 *staid, tpPESession psessionEntry)
260{
261 if (psessionEntry->limSystemRole == eLIM_AP_ROLE)
262 *staid = 1;
263 else if (psessionEntry->limSystemRole == eLIM_STA_ROLE)
264 *staid = 0;
265 else
266 return eSIR_FAILURE;
267
268 return eSIR_SUCCESS;
269}
270
271static inline tANI_U8
272limIsSystemInSetMimopsState(tpAniSirGlobal pMac)
273{
274 if (pMac->lim.gLimMlmState == eLIM_MLM_WT_SET_MIMOPS_STATE)
275 return true;
276 return false;
277}
278
279static inline tANI_U8
280 isEnteringMimoPS(tSirMacHTMIMOPowerSaveState curState, tSirMacHTMIMOPowerSaveState newState)
281 {
282 if (curState == eSIR_HT_MIMO_PS_NO_LIMIT &&
283 (newState == eSIR_HT_MIMO_PS_DYNAMIC ||newState == eSIR_HT_MIMO_PS_STATIC))
284 return TRUE;
285 return FALSE;
286}
287
288/// ANI peer station count management and associated actions
289void limUtilCountStaAdd(tpAniSirGlobal pMac, tpDphHashNode pSta, tpPESession psessionEntry);
290void limUtilCountStaDel(tpAniSirGlobal pMac, tpDphHashNode pSta, tpPESession psessionEntry);
291
Jeff Johnson295189b2012-06-20 16:38:30 -0700292tANI_U8 limGetHTCapability( tpAniSirGlobal, tANI_U32, tpPESession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700293void limTxComplete( tHalHandle hHal, void *pData );
294
295/**********Admit Control***************************************/
296
297//callback function for HAL to issue DelTS request to PE.
298//This function will be registered with HAL for callback when TSPEC inactivity timer fires.
299
300void limProcessDelTsInd(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
301tSirRetStatus limProcessHalIndMessages(tpAniSirGlobal pMac, tANI_U32 mesgId, void *mesgParam );
302tSirRetStatus limValidateDeltsReq(tpAniSirGlobal pMac, tpSirDeltsReq pDeltsReq, tSirMacAddr peerMacAddr,tpPESession psessionEntry);
303/**********************************************************/
304
305//callback function registration to HAL for any indication.
306void limRegisterHalIndCallBack(tpAniSirGlobal pMac);
307void limPktFree (
308 tpAniSirGlobal pMac,
309 eFrameType frmType,
310 tANI_U8 *pBD,
311 void *body);
312
313
314
315void limGetBDfromRxPacket(tpAniSirGlobal pMac, void *body, tANI_U32 **pBD);
316
317/**
318 * \brief Given a base(X) and power(Y), this API will return
319 * the result of base raised to power - (X ^ Y)
320 *
321 * \sa utilsPowerXY
322 *
323 * \param base Base value
324 *
325 * \param power Base raised to this Power value
326 *
327 * \return Result of X^Y
328 *
329 */
330static inline tANI_U32 utilsPowerXY( tANI_U16 base, tANI_U16 power )
331{
332tANI_U32 result = 1, i;
333
334 for( i = 0; i < power; i++ )
335 result *= base;
336
337 return result;
338}
339
340
341
342tSirRetStatus limPostMlmAddBAReq( tpAniSirGlobal pMac,
343 tpDphHashNode pStaDs,
344 tANI_U8 tid, tANI_U16 startingSeqNum,tpPESession psessionEntry);
345tSirRetStatus limPostMlmAddBARsp( tpAniSirGlobal pMac,
346 tSirMacAddr peerMacAddr,
347 tSirMacStatusCodes baStatusCode,
348 tANI_U8 baDialogToken,
349 tANI_U8 baTID,
350 tANI_U8 baPolicy,
351 tANI_U16 baBufferSize,
352 tANI_U16 baTimeout,
353 tpPESession psessionEntry);
354tSirRetStatus limPostMlmDelBAReq( tpAniSirGlobal pMac,
355 tpDphHashNode pSta,
356 tANI_U8 baDirection,
357 tANI_U8 baTID,
358 tSirMacReasonCodes baReasonCode ,
359 tpPESession psessionEntry);
360tSirRetStatus limPostMsgAddBAReq( tpAniSirGlobal pMac,
361 tpDphHashNode pSta,
362 tANI_U8 baDialogToken,
363 tANI_U8 baTID,
364 tANI_U8 baPolicy,
365 tANI_U16 baBufferSize,
366 tANI_U16 baTimeout,
367 tANI_U16 baSSN,
368 tANI_U8 baDirection,
369 tpPESession psessionEntry);
370tSirRetStatus limPostMsgDelBAInd( tpAniSirGlobal pMac,
371 tpDphHashNode pSta,
372 tANI_U8 baTID,
373 tANI_U8 baDirection,
374 tpPESession psessionEntry);
375
376tSirRetStatus limPostSMStateUpdate(tpAniSirGlobal pMac,
377 tANI_U16 StaIdx,
378 tSirMacHTMIMOPowerSaveState MIMOPSState);
379
380void limDeleteStaContext(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
381void limProcessAddBaInd(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
Ganesh Kondabattini01f75c92014-07-07 19:27:41 +0530382void limDeleteBASessions(tpAniSirGlobal pMac, tpPESession pSessionEntry,
383 tANI_U32 baDirection, tSirMacReasonCodes baReasonCode);
Jeff Johnson295189b2012-06-20 16:38:30 -0700384void limDelAllBASessions(tpAniSirGlobal pMac);
385void limDeleteDialogueTokenList(tpAniSirGlobal pMac);
386tSirRetStatus limSearchAndDeleteDialogueToken(tpAniSirGlobal pMac, tANI_U8 token, tANI_U16 assocId, tANI_U16 tid);
387void limRessetScanChannelInfo(tpAniSirGlobal pMac);
388void limAddScanChannelInfo(tpAniSirGlobal pMac, tANI_U8 channelId);
389
390tANI_U8 limGetChannelFromBeacon(tpAniSirGlobal pMac, tpSchBeaconStruct pBeacon);
391tSirNwType limGetNwType(tpAniSirGlobal pMac, tANI_U8 channelNum, tANI_U32 type, tpSchBeaconStruct pBeacon);
392void limSetTspecUapsdMask(tpAniSirGlobal pMac, tSirMacTSInfo *pTsInfo, tANI_U32 action);
393void limHandleHeartBeatTimeout(tpAniSirGlobal pMac);
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -0800394void limHandleHeartBeatTimeoutForSession(tpAniSirGlobal pMac, tpPESession psessionEntry);
395
Jeff Johnson295189b2012-06-20 16:38:30 -0700396//void limProcessBtampAddBssRsp(tpAniSirGlobal pMac,tpSirMsgQ pMsgQ,tpPESession peSession);
397void limProcessAddStaRsp(tpAniSirGlobal pMac,tpSirMsgQ pMsgQ);
398
399void limUpdateBeacon(tpAniSirGlobal pMac);
400
401void limProcessBtAmpApMlmAddStaRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ, tpPESession psessionEntry);
402void limProcessBtAmpApMlmDelBssRsp( tpAniSirGlobal pMac, tpSirMsgQ limMsgQ,tpPESession psessionEntry);
403
404void limProcessBtAmpApMlmDelStaRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ,tpPESession psessionEntry);
405tpPESession limIsIBSSSessionActive(tpAniSirGlobal pMac);
406tpPESession limIsApSessionActive(tpAniSirGlobal pMac);
407void limHandleHeartBeatFailureTimeout(tpAniSirGlobal pMac);
408
409void limProcessDelStaSelfRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ);
410void limProcessAddStaSelfRsp(tpAniSirGlobal pMac,tpSirMsgQ limMsgQ);
411v_U8_t* limGetIEPtr(tpAniSirGlobal pMac, v_U8_t *pIes, int length, v_U8_t eid,eSizeOfLenField size_of_len_field);
412
413tANI_U8 limUnmapChannel(tANI_U8 mapChannel);
414
415#define limGetWscIEPtr(pMac, ie, ie_len) \
416 limGetVendorIEOuiPtr(pMac, SIR_MAC_WSC_OUI, SIR_MAC_WSC_OUI_SIZE, ie, ie_len)
417
Jeff Johnson295189b2012-06-20 16:38:30 -0700418#define limGetP2pIEPtr(pMac, ie, ie_len) \
419 limGetVendorIEOuiPtr(pMac, SIR_MAC_P2P_OUI, SIR_MAC_P2P_OUI_SIZE, ie, ie_len)
420
421v_U8_t limGetNoaAttrStreamInMultP2pIes(tpAniSirGlobal pMac,v_U8_t* noaStream,v_U8_t noaLen,v_U8_t overFlowLen);
422v_U8_t limGetNoaAttrStream(tpAniSirGlobal pMac, v_U8_t*pNoaStream,tpPESession psessionEntry);
423
424v_U8_t limBuildP2pIe(tpAniSirGlobal pMac, tANI_U8 *ie, tANI_U8 *data, tANI_U8 ie_len);
Viral Modid86bde22012-12-10 13:09:21 -0800425tANI_BOOLEAN limIsNOAInsertReqd(tpAniSirGlobal pMac);
Jeff Johnson295189b2012-06-20 16:38:30 -0700426v_U8_t* limGetVendorIEOuiPtr(tpAniSirGlobal pMac, tANI_U8 *oui, tANI_U8 oui_size, tANI_U8 *ie, tANI_U16 ie_len);
427tANI_BOOLEAN limIsconnectedOnDFSChannel(tANI_U8 currentChannel);
428tANI_U8 limGetCurrentOperatingChannel(tpAniSirGlobal pMac);
Yeshwanth Sriram Guntuka8d9b29c2017-12-12 15:44:57 +0530429void limStaDelBASession(tpAniSirGlobal pMac);
Jeff Johnson295189b2012-06-20 16:38:30 -0700430
Mohit Khanna4a70d262012-09-11 16:30:12 -0700431#ifdef WLAN_FEATURE_11AC
Sandeep Puligilla60342762014-01-30 21:05:37 +0530432tANI_BOOLEAN limCheckVHTOpModeChange( tpAniSirGlobal pMac,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -0700433 tpPESession psessionEntry, tANI_U8 chanWidth, tANI_U8 staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -0700434#endif
Sandeep Puligilla60342762014-01-30 21:05:37 +0530435tANI_BOOLEAN limCheckHTChanBondModeChange(tpAniSirGlobal pMac,
436 tpPESession psessionEntry,
437 tANI_U8 beaconSecChanWidth,
438 tANI_U8 currentSecChanWidth,
439 tANI_U8 staId);
Jeff Johnson295189b2012-06-20 16:38:30 -0700440#ifdef FEATURE_WLAN_DIAG_SUPPORT
441
442typedef enum
443{
444 WLAN_PE_DIAG_SCAN_REQ_EVENT = 0,
445 WLAN_PE_DIAG_SCAN_ABORT_IND_EVENT,
446 WLAN_PE_DIAG_SCAN_RSP_EVENT,
447 WLAN_PE_DIAG_JOIN_REQ_EVENT,
448 WLAN_PE_DIAG_JOIN_RSP_EVENT,
449 WLAN_PE_DIAG_SETCONTEXT_REQ_EVENT,
450 WLAN_PE_DIAG_SETCONTEXT_RSP_EVENT,
451 WLAN_PE_DIAG_REASSOC_REQ_EVENT,
452 WLAN_PE_DIAG_REASSOC_RSP_EVENT,
453 WLAN_PE_DIAG_AUTH_REQ_EVENT,
Deepthi Gowri639d5042015-11-16 20:23:39 +0530454 WLAN_PE_DIAG_AUTH_RSP_EVENT = 10,
Jeff Johnson295189b2012-06-20 16:38:30 -0700455 WLAN_PE_DIAG_DISASSOC_REQ_EVENT,
456 WLAN_PE_DIAG_DISASSOC_RSP_EVENT,
457 WLAN_PE_DIAG_DISASSOC_IND_EVENT,
458 WLAN_PE_DIAG_DISASSOC_CNF_EVENT,
459 WLAN_PE_DIAG_DEAUTH_REQ_EVENT,
460 WLAN_PE_DIAG_DEAUTH_RSP_EVENT,
461 WLAN_PE_DIAG_DEAUTH_IND_EVENT,
462 WLAN_PE_DIAG_START_BSS_REQ_EVENT,
463 WLAN_PE_DIAG_START_BSS_RSP_EVENT,
Deepthi Gowri639d5042015-11-16 20:23:39 +0530464 WLAN_PE_DIAG_AUTH_IND_EVENT = 20,
Jeff Johnson295189b2012-06-20 16:38:30 -0700465 WLAN_PE_DIAG_ASSOC_IND_EVENT,
466 WLAN_PE_DIAG_ASSOC_CNF_EVENT,
467 WLAN_PE_DIAG_REASSOC_IND_EVENT,
468 WLAN_PE_DIAG_SWITCH_CHL_REQ_EVENT,
469 WLAN_PE_DIAG_SWITCH_CHL_RSP_EVENT,
470 WLAN_PE_DIAG_STOP_BSS_REQ_EVENT,
471 WLAN_PE_DIAG_STOP_BSS_RSP_EVENT,
472 WLAN_PE_DIAG_DEAUTH_CNF_EVENT,
473 WLAN_PE_DIAG_ADDTS_REQ_EVENT,
Deepthi Gowri639d5042015-11-16 20:23:39 +0530474 WLAN_PE_DIAG_ADDTS_RSP_EVENT = 30,
Jeff Johnson295189b2012-06-20 16:38:30 -0700475 WLAN_PE_DIAG_DELTS_REQ_EVENT,
476 WLAN_PE_DIAG_DELTS_RSP_EVENT,
477 WLAN_PE_DIAG_DELTS_IND_EVENT,
478 WLAN_PE_DIAG_ENTER_BMPS_REQ_EVENT,
479 WLAN_PE_DIAG_ENTER_BMPS_RSP_EVENT,
480 WLAN_PE_DIAG_EXIT_BMPS_REQ_EVENT,
481 WLAN_PE_DIAG_EXIT_BMPS_RSP_EVENT,
482 WLAN_PE_DIAG_EXIT_BMPS_IND_EVENT,
483 WLAN_PE_DIAG_ENTER_IMPS_REQ_EVENT,
Deepthi Gowri639d5042015-11-16 20:23:39 +0530484 WLAN_PE_DIAG_ENTER_IMPS_RSP_EVENT = 40,
Jeff Johnson295189b2012-06-20 16:38:30 -0700485 WLAN_PE_DIAG_EXIT_IMPS_REQ_EVENT,
486 WLAN_PE_DIAG_EXIT_IMPS_RSP_EVENT,
487 WLAN_PE_DIAG_ENTER_UAPSD_REQ_EVENT,
488 WLAN_PE_DIAG_ENTER_UAPSD_RSP_EVENT,
489 WLAN_PE_DIAG_EXIT_UAPSD_REQ_EVENT,
490 WLAN_PE_DIAG_EXIT_UAPSD_RSP_EVENT,
491 WLAN_PE_DIAG_WOWL_ADD_BCAST_PTRN_EVENT,
492 WLAN_PE_DIAG_WOWL_DEL_BCAST_PTRN_EVENT,
493 WLAN_PE_DIAG_ENTER_WOWL_REQ_EVENT,
Deepthi Gowri639d5042015-11-16 20:23:39 +0530494 WLAN_PE_DIAG_ENTER_WOWL_RSP_EVENT = 50,
Jeff Johnson295189b2012-06-20 16:38:30 -0700495 WLAN_PE_DIAG_EXIT_WOWL_REQ_EVENT,
496 WLAN_PE_DIAG_EXIT_WOWL_RSP_EVENT,
497 WLAN_PE_DIAG_HAL_ADDBA_REQ_EVENT,
498 WLAN_PE_DIAG_HAL_ADDBA_RSP_EVENT,
499 WLAN_PE_DIAG_HAL_DELBA_IND_EVENT,
Leela Venkata Kiran Kumar Reddy Chirala2365ee62013-05-09 17:30:12 -0700500 WLAN_PE_DIAG_HB_FAILURE_TIMEOUT,
501 WLAN_PE_DIAG_PRE_AUTH_REQ_EVENT,
502 WLAN_PE_DIAG_PRE_AUTH_RSP_EVENT,
503 WLAN_PE_DIAG_PREAUTH_DONE,
Deepthi Gowri639d5042015-11-16 20:23:39 +0530504 WLAN_PE_DIAG_REASSOCIATING = 60,
Leela Venkata Kiran Kumar Reddy Chirala2365ee62013-05-09 17:30:12 -0700505 WLAN_PE_DIAG_CONNECTED,
Sushant Kaushikb97a0082015-08-31 12:36:45 +0530506 WLAN_PE_DIAG_ASSOC_REQ_EVENT,
507 WLAN_PE_DIAG_AUTH_COMP_EVENT,
508 WLAN_PE_DIAG_ASSOC_COMP_EVENT,
Deepthi Gowri639d5042015-11-16 20:23:39 +0530509 WLAN_PE_DIAG_AUTH_START_EVENT,
510 WLAN_PE_DIAG_ASSOC_START_EVENT,
511 WLAN_PE_DIAG_REASSOC_START_EVENT,
512 WLAN_PE_DIAG_ROAM_AUTH_START_EVENT,
513 WLAN_PE_DIAG_ROAM_AUTH_COMP_EVENT,
514 WLAN_PE_DIAG_ROAM_ASSOC_START_EVENT = 70,
515 WLAN_PE_DIAG_ROAM_ASSOC_COMP_EVENT,
516 WLAN_PE_DIAG_SCAN_COMP_EVENT,
517 WLAN_PE_DIAG_SCAN_RES_FOUND_EVENT,
Sushant Kaushikb97a0082015-08-31 12:36:45 +0530518 WLAN_PE_DIAG_ROAM_REQUESTED,
519 WLAN_PE_DIAG_CHANNEL_SWITCH_ANOUNCEMENT,
Sushant Kaushikb97a0082015-08-31 12:36:45 +0530520 WLAN_PE_DIAG_ROAM_CANDIDATE_FOUND,
Jeff Johnson295189b2012-06-20 16:38:30 -0700521}WLAN_PE_DIAG_EVENT_TYPE;
522
523void limDiagEventReport(tpAniSirGlobal pMac, tANI_U16 eventType, tpPESession pSessionEntry, tANI_U16 status, tANI_U16 reasonCode);
524#endif /* FEATURE_WLAN_DIAG_SUPPORT */
525
Jeff Johnsone7245742012-09-05 17:12:55 -0700526void peSetResumeChannel(tpAniSirGlobal pMac, tANI_U16 channel, ePhyChanBondState cbState);
Jeff Johnson295189b2012-06-20 16:38:30 -0700527/*--------------------------------------------------------------------------
528
529 \brief peGetResumeChannel() - Returns the channel number for scanning, from a valid session.
530
Jeff Johnsone7245742012-09-05 17:12:55 -0700531 This function returns the channel to resume to during link resume. channel id of 0 means HAL will
532 resume to previous channel before link suspend
Jeff Johnson295189b2012-06-20 16:38:30 -0700533
534 \param pMac - pointer to global adapter context
535 \return - channel to scan from valid session else zero.
536
537 \sa
538
539 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700540void peGetResumeChannel(tpAniSirGlobal pMac, tANI_U8* resumeChannel, ePhyChanBondState* resumePhyCbState);
Jeff Johnson295189b2012-06-20 16:38:30 -0700541
krunal soni45b9eb62014-03-26 12:54:25 -0700542void limGetShortSlotFromPhyMode(tpAniSirGlobal pMac, tpPESession psessionEntry, tANI_U32 phyMode,
543 tANI_U8 *pShortSlotEnable);
Madan Mohan Koyyalamudi6db7ad12012-10-29 16:14:41 -0700544
Madan Mohan Koyyalamudia67d4332012-11-29 11:35:23 -0800545void limCleanUpDisassocDeauthReq(tpAniSirGlobal pMac, tANI_U8 *staMac, tANI_BOOLEAN cleanRxPath);
546
Madan Mohan Koyyalamudi25b6f8b2012-12-04 16:17:31 -0800547tANI_BOOLEAN limCheckDisassocDeauthAckPending(tpAniSirGlobal pMac, tANI_U8 *staMac);
Kalikinkar dhara205da782014-03-21 15:49:32 -0700548
549
550void limUtilsframeshtons(tpAniSirGlobal pCtx,
551 tANI_U8 *pOut,
552 tANI_U16 pIn,
553 tANI_U8 fMsb);
554
555void limUtilsframeshtonl(tpAniSirGlobal pCtx,
556 tANI_U8 *pOut,
557 tANI_U32 pIn,
558 tANI_U8 fMsb);
559
Sandeep Puligilla11d49a62014-01-30 12:05:16 +0530560void limUpdateOBSSScanParams(tpPESession psessionEntry ,
561 tDot11fIEOBSSScanParameters *pOBSSScanParameters);
Chet Lanctot8cecea22014-02-11 19:09:36 -0800562
563#ifdef WLAN_FEATURE_11W
564void limPmfSaQueryTimerHandler(void *pMacGlobal, tANI_U32 param);
Chet Lanctot8cecea22014-02-11 19:09:36 -0800565
Abhishek Singh0ebac9c2014-06-25 13:34:12 +0530566void limSetProtectedBit(tpAniSirGlobal pMac,
567 tpPESession psessionEntry,
568 tSirMacAddr peer,
569 tpSirMacMgmtHdr pMacHdr);
570#endif
Atul Mittalb849d5a2014-07-29 12:08:39 +0530571void limInitOperatingClasses(tHalHandle hHal);
572tANI_U8 limGetOPClassFromChannel(tANI_U8 *country,
573 tANI_U8 channel,
574 tANI_U8 offset);
Abhishek Singh0f09f382018-12-04 14:06:07 +0530575
576/**
577 * lim_get_channel_width_from_opclass() - get the channel offset for the opclass
578 * @country: current country code
579 * @channel: channel for which width is required
580 * @peer_vht_capable: if peer is VHT capable
581 * @op_class: Opclass provided
582 *
583 * Return: channel offset for the opclass
584 */
585offset_t lim_get_channel_width_from_opclass(tANI_U8 *country, tANI_U8 channel,
586 tANI_U8 peer_vht_capable,
587 tANI_U8 op_class);
Abhishek Singh39ae47e2017-10-30 17:39:50 +0530588
Sushant Kaushik02c866d2015-01-16 15:24:25 +0530589void limParseBeaconForTim(tpAniSirGlobal pMac, tANI_U8* pRxPacketInfo,
590 tpPESession psessionEntry);
591
Girish Gowlia95daca2015-02-04 20:31:31 +0530592void limUpdateMaxRateFlag(tpAniSirGlobal pMac,
593 tANI_U8 smeSessionId,
594 tANI_U32 maxRateFlag);
595
596extern tANI_U32 limGetMaxRateFlags(tpDphHashNode pStaDs,
597 tpPESession psessionEntry);
Abhishek Singh5d765712015-03-12 14:04:16 +0530598
599void limDecrementPendingMgmtCount (tpAniSirGlobal pMac);
Ganesh Kondabattiniffc00b12015-03-18 13:11:33 +0530600
601eHalStatus limTxBdComplete(tpAniSirGlobal pMac, void *pData);
Kapil Gupta956c0c42017-06-16 19:24:31 +0530602eHalStatus limAssocRspTxCompleteCnf(tpAniSirGlobal pMac, void *pData);
Abhishek Singh09d4e4a2016-01-12 11:20:22 +0530603bool lim_is_robust_mgmt_action_frame(uint8 action_catagory);
Hu Wangc12631c2016-08-11 09:57:03 +0800604tANI_U8 lim_compute_ext_cap_ie_length (tDot11fIEExtCap *ext_cap);
Selvaraj, Sridhar5f149192016-04-15 12:53:28 +0530605void lim_update_caps_info_for_bss(tpAniSirGlobal mac_ctx,
606 uint16_t *caps, uint16_t bss_caps);
Agrawal Ashisha8e8a722016-10-18 19:07:45 +0530607#ifdef SAP_AUTH_OFFLOAD
608void lim_sap_offload_add_sta(tpAniSirGlobal pmac,
609 tSapOfldAddStaIndMsg *lim_msgq);
610void lim_sap_offload_del_sta(tpAniSirGlobal pmac,
611 tSapOfldDelStaIndMsg *lim_msgq);
612#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700613#endif /* __LIM_UTILS_H */