blob: e33225bd9e8ee501e5022d777c03b39d83ae7f76 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Jeff Johnson32d95a32012-09-10 13:15:23 -07002 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -07003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21
22/** ------------------------------------------------------------------------- *
23 ------------------------------------------------------------------------- *
24
25
26 \file csrInternal.h
27
28 Define internal data structure for MAC.
29
30 Copyright (C) 2006 Airgo Networks, Incorporated
31 ========================================================================== */
32#ifndef CSRINTERNAL_H__
33#define CSRINTERNAL_H__
34
35#if defined(VOSS_ENABLED)
36#include "vos_status.h"
37#include "vos_lock.h"
38#endif //#if defined(VOSS_ENABLED)
39
40#include "palTimer.h"
41#include "csrSupport.h"
42#include "vos_nvitem.h"
43#include "wlan_qct_tl.h"
44
45#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
46#include "csrNeighborRoam.h"
47#endif
48
49#define CSR_MAX_STA (HAL_NUM_STA)
50
51#define CSR_SME_SCAN_FLAGS_DELETE_CACHE 0x80
52
53#define CSR_TITAN_MAX_RATE_MIMO_CB 240
54#define CSR_TITAN_MAX_RATE_MIMO 126
55
56//define scan return criteria. LIM should use these define as well
57#define CSR_SCAN_RETURN_AFTER_ALL_CHANNELS ( 0 )
58#define CSR_SCAN_RETURN_AFTER_FIRST_MATCH ( 0x01 )
59#define CSR_SCAN_RETURN_AFTER_5_BAND_11d_FOUND ( 0x80 )
60#define CSR_SCAN_RETURN_AFTER_24_BAND_11d_FOUND ( 0x40 )
61#define CSR_SCAN_RETURN_AFTER_EITHER_BAND_11d_FOUND ( CSR_SCAN_RETURN_AFTER_5_BAND_11d_FOUND | CSR_SCAN_RETURN_AFTER_24_BAND_11d_FOUND )
Madan Mohan Koyyalamudi4c8c6352012-10-15 16:40:16 -070062#define CSR_NUM_RSSI_CAT 15
Jeff Johnson295189b2012-06-20 16:38:30 -070063#define CSR_MAX_STATISTICS_REQ 10
64
65//Support for multiple session
66#define CSR_SESSION_ID_INVALID 0xFF // session ID invalid
67#define CSR_ROAM_SESSION_MAX 5 // No of sessions to be supported, and a
68 // session is for Infra, IBSS or BT-AMP
69
70#define CSR_IS_SESSION_VALID( pMac, sessionId ) ( ( (sessionId) < CSR_ROAM_SESSION_MAX ) \
71 && ( (pMac)->roam.roamSession[(sessionId)].sessionActive ) )
72#define CSR_GET_SESSION( pMac, sessionId ) \
73( \
74 (sessionId < CSR_ROAM_SESSION_MAX) ? \
75 (&(pMac)->roam.roamSession[(sessionId)]) :\
76 NULL \
77)
78
Madan Mohan Koyyalamudi470d2cf2012-09-28 14:43:44 -070079//Support for "Fast roaming" (i.e., CCX, LFR, or 802.11r.)
80#define CSR_BG_SCAN_OCCUPIED_CHANNEL_LIST_LEN 15
Jeff Johnson295189b2012-06-20 16:38:30 -070081
82typedef enum
83{
84 //eCSR_CFG_DOT11_MODE_BEST = 0,
85 eCSR_CFG_DOT11_MODE_TAURUS = 0,
86 eCSR_CFG_DOT11_MODE_ABG,
87 eCSR_CFG_DOT11_MODE_11A,
88 eCSR_CFG_DOT11_MODE_11B,
89 eCSR_CFG_DOT11_MODE_11G,
90 eCSR_CFG_DOT11_MODE_11N,
91 eCSR_CFG_DOT11_MODE_POLARIS,
92 eCSR_CFG_DOT11_MODE_TITAN,
Jeff Johnsone7245742012-09-05 17:12:55 -070093#ifdef WLAN_FEATURE_11AC
94 eCSR_CFG_DOT11_MODE_11AC,
95#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070096#ifdef WLAN_SOFTAP_FEATURE
97 eCSR_CFG_DOT11_MODE_11G_ONLY,
98 eCSR_CFG_DOT11_MODE_11N_ONLY,
99#endif
Jeff Johnsone7245742012-09-05 17:12:55 -0700100#ifdef WLAN_FEATURE_11AC
101 eCSR_CFG_DOT11_MODE_11AC_ONLY,
102#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700103 //This value can never set to CFG. It is for CSR's internal use
104 eCSR_CFG_DOT11_MODE_AUTO,
105}eCsrCfgDot11Mode; //Used to determine what to set to the WNI_CFG_DOT11_MODE
106
107typedef enum etCsrRoamCommands
108{
109 eCsrRoamNoCommand,
110 eCsrRoamCommandScan,
111 eCsrRoamCommandRoam,
112 eCsrRoamCommandWmStatusChange,
113 eCsrRoamCommandSetKey,
114 eCsrRoamCommandRemoveKey,
115
116} eCsrRoamCommands;
117
118typedef enum
119{
120 eCsrScanOther = 1,
121 eCsrScanLostLink1,
122 eCsrScanLostLink2,
123 eCsrScanLostLink3,
124 eCsrScanLostLink4,
125 eCsrScan11d1, //First 11d scan
126 eCsrScan11d2, //First 11d scan has failed
127 eCsrScan11dDone, //11d scan succeeded, try the rest of the channel
128 eCsrScanUserRequest,
129 eCsrScanGetResult,
130 eCsrScanSetBGScanParam, //used for HO too - bg scan request in NT Handoff sub-state
131 eCsrScanForSsid,
132 eCsrScanForCapsChange,
133 eCsrScanBGScanAbort,
134 eCsrScanBGScanEnable,
135 eCsrScanIdleScan,
136 eCsrScanGetScanChnInfo, //To get the list of channels scanned
137
138 eCsrScanBgScan, // bg scan request in NRT & RT Handoff sub-states
139 eCsrScanProbeBss, // directed probe on an entry from the candidate list - HO
140 eCsrScanAbortBgScan, //aborting a BG scan (meaning the scan is triggered by LIM timer)
141 eCsrScanAbortNormalScan, //aborting a normal scan (the scan is trigger by eWNI_SME_SCAN_REQ)
142 eCsrScanP2PFindPeer
143}eCsrScanReason;
144
145typedef enum
146{
147 eCsrNoConnection, // Roaming because we have not established the initial connection.
148 eCsrCapsChange, // roaming because LIM reported a Capability change in the associated AP.
149 eCsrForcedDisassoc, // roaming becuase someone asked us to Disassoc and stay disassociated.
150 eCsrHddIssued, // roaming because an 802.11 request was issued to the driver.
151 eCsrLostLink1, // roaming because we lost link to an associated AP
152 eCsrLostLink2,
153 eCsrLostLink3,
154 eCsrForcedDisassocMICFailure, // roaming because we need to force a Disassoc due to MIC failure
155 eCsrHddIssuedReassocToSameAP,
156 eCsrSmeIssuedReassocToSameAP,
157 eCsrSmeIssuedReassocToDiffAP,
158 eCsrForcedDeauth, // roaming becuase someone asked us to deauth and stay disassociated.
159 eCsrSmeIssuedDisassocForHandoff, // will be issued by Handoff logic to disconect from current AP
160 eCsrSmeIssuedAssocToSimilarAP, // will be issued by Handoff logic to join a new AP with same profile
161 eCsrSmeIssuedIbssJoinFailure, // ibss join timer fired before any perr showed up, so shut down the network
162 eCsrForcedIbssLeave,
163 eCsrStopBss,
164 eCsrSmeIssuedFTReassoc,
165 eCsrForcedDisassocSta,
166 eCsrForcedDeauthSta,
Madan Mohan Koyyalamudi286b60e2012-10-11 12:59:07 -0700167 eCsrPerformPreauth,
Jeff Johnson295189b2012-06-20 16:38:30 -0700168
169}eCsrRoamReason;
170
171typedef enum
172{
173 eCSR_ROAM_SUBSTATE_NONE = 0,
174 eCSR_ROAM_SUBSTATE_START_BSS_REQ,
175 eCSR_ROAM_SUBSTATE_JOIN_REQ,
176 eCSR_ROAM_SUBSTATE_REASSOC_REQ,
177 eCSR_ROAM_SUBSTATE_DISASSOC_REQ,
178 eCSR_ROAM_SUBSTATE_STOP_BSS_REQ,
179 eCSR_ROAM_SUBSTATE_DISCONNECT_CONTINUE_ROAMING, //Continue the current roam command after disconnect
180 eCSR_ROAM_SUBSTATE_AUTH_REQ,
181 eCSR_ROAM_SUBSTATE_CONFIG,
182 eCSR_ROAM_SUBSTATE_DEAUTH_REQ,
183 eCSR_ROAM_SUBSTATE_DISASSOC_NOTHING_TO_JOIN,
184 eCSR_ROAM_SUBSTATE_DISASSOC_REASSOC_FAILURE,
185 eCSR_ROAM_SUBSTATE_DISASSOC_FORCED,
186 eCSR_ROAM_SUBSTATE_WAIT_FOR_KEY,
187 eCSR_ROAM_SUBSTATE_DISASSOC_HANDOFF,
188 eCSR_ROAM_SUBSTATE_JOINED_NO_TRAFFIC,
189 eCSR_ROAM_SUBSTATE_JOINED_NON_REALTIME_TRAFFIC,
190 eCSR_ROAM_SUBSTATE_JOINED_REALTIME_TRAFFIC,
191// max is 15 unless the bitfield is expanded...
192} eCsrRoamSubState;
193
194
195typedef enum
196{
197 eCSR_ROAMING_STATE_STOP = 0,
198 eCSR_ROAMING_STATE_IDLE,
199 eCSR_ROAMING_STATE_SCANNING,
200 eCSR_ROAMING_STATE_JOINING,
201 eCSR_ROAMING_STATE_JOINED,
202}eCsrRoamState;
203
204
205typedef enum
206{
207 eCsrContinueRoaming,
208 eCsrStopRoaming,
209 eCsrStartIbss,
210 eCsrStartIbssSameIbss,
211 eCsrReassocToSelfNoCapChange,
Jeff Johnsone7245742012-09-05 17:12:55 -0700212 eCsrStopRoamingDueToConcurrency,
Jeff Johnson295189b2012-06-20 16:38:30 -0700213
214}eCsrJoinState;
215
216typedef enum
217{
218 eCsrNotRoaming,
219 eCsrLostlinkRoamingDisassoc,
220 eCsrLostlinkRoamingDeauth,
221 eCsrDynamicRoaming,
222 eCsrReassocRoaming,
223}eCsrRoamingReason;
224
225typedef enum
226{
227 eCsrDisassociated,
228 eCsrDeauthenticated
229
230}eCsrRoamWmStatusChangeTypes;
231
232typedef enum
233{
234 eCsrSummaryStats = 0,
235 eCsrGlobalClassAStats,
236 eCsrGlobalClassBStats,
237 eCsrGlobalClassCStats,
238 eCsrGlobalClassDStats,
239 eCsrPerStaStats,
240 eCsrMaxStats
241}eCsrRoamStatsClassTypes;
242
243#ifdef FEATURE_WLAN_DIAG_SUPPORT
244typedef enum
245{
246 eCSR_WLAN_STATUS_CONNECT =0,
247 eCSR_WLAN_STATUS_DISCONNECT
248
249}eCsrDiagWlanStatusEventSubtype;
250
251typedef enum
252{
253 eCSR_REASON_UNSPECIFIED = 0,
254 eCSR_REASON_USER_REQUESTED,
255 eCSR_REASON_MIC_ERROR,
256 eCSR_REASON_DISASSOC,
257 eCSR_REASON_DEAUTH,
258 eCSR_REASON_HANDOFF,
259
260}eCsrDiagWlanStatusEventReason;
261
262typedef enum
263{
264 eCSR_WLAN_HANDOFF_EVENT =0,
265
266}eCsrDiagWlanHandoffEventSubtype;
267
268typedef enum
269{
270 eCSR_WLAN_VCC_EVENT =0,
271
272}eCsrDiagWlanVccEventSubtype;
273
274#endif //FEATURE_WLAN_DIAG_SUPPORT
275
276typedef struct tagCsrChannel
277{
278 tANI_U8 numChannels;
279 tANI_U8 channelList[WNI_CFG_VALID_CHANNEL_LIST_LEN];
280}tCsrChannel;
281
282typedef struct tagScanProfile
283{
284 tANI_U32 minChnTime;
285 tANI_U32 maxChnTime;
286 tANI_U32 restTime; //This is ignored if not associated
287 tANI_U32 numOfChannels;
288 tANI_U8 *pChannelList;
289 tSirScanType scanType; //active or passive
290 eCsrRoamBssType bssType; //BSS or IBSS
291 tANI_U8 ssid[WNI_CFG_SSID_LEN];
292 tANI_U8 bReturnAfter1stMatch;
293 tANI_U8 fUniqueResult;
294 tANI_U8 freshScan;
295 tCsrBssid bssid;
296}tScanProfile;
297
298typedef struct tagBssConfigParam
299{
300 eCsrMediaAccessType qosType;
301 tSirMacSSid SSID;
302 tANI_U32 uRTSThresh;
303 tANI_U32 uDeferThresh; //
304 eCsrCfgDot11Mode uCfgDot11Mode;
305 eCsrBand eBand;
306 tANI_U8 standardRate[CSR_DOT11_SUPPORTED_RATES_MAX];
307 tANI_U8 extendedRate[CSR_DOT11_EXTENDED_SUPPORTED_RATES_MAX];
308 eCsrExposedTxRate txRate;
309 tAniAuthType authType;
310 eCsrEncryptionType encType;
311 tANI_U32 uShortSlotTime;
312 tANI_U32 uHTSupport; //High throughput
313 tANI_U32 uPowerLimit;
314 tANI_U32 uHeartBeatThresh;
315 tANI_U32 uJoinTimeOut;
316 tSirMacCapabilityInfo BssCap;
317 tANI_BOOLEAN f11hSupport;
Jeff Johnsone7245742012-09-05 17:12:55 -0700318 ePhyChanBondState cbMode;
Jeff Johnson295189b2012-06-20 16:38:30 -0700319}tBssConfigParam;
320
321
322typedef struct tagCsrRoamStartBssParams
323{
324 tSirMacSSid ssId;
325 tCsrBssid bssid; //this is the BSSID for the party we want to join (only use for IBSS or WDS)
326 tSirNwType sirNwType;
Jeff Johnsone7245742012-09-05 17:12:55 -0700327 ePhyChanBondState cbMode;
Jeff Johnson295189b2012-06-20 16:38:30 -0700328 tSirMacRateSet operationalRateSet;
329 tSirMacRateSet extendedRateSet;
330 tANI_U8 operationChn;
331 eCsrCfgDot11Mode uCfgDot11Mode;
332#ifdef WLAN_SOFTAP_FEATURE
333 tANI_U8 privacy;
334 tANI_BOOLEAN fwdWPSPBCProbeReq;
335 tANI_BOOLEAN protEnabled;
336 tANI_BOOLEAN obssProtEnabled;
337 tAniAuthType authType;
338 tANI_U16 beaconInterval; //If this is 0, SME will fill in for caller.
339 tANI_U16 ht_protection;
340 tANI_U32 dtimPeriod;
341 tANI_U8 ApUapsdEnable;
342 tANI_U8 ssidHidden;
343 tANI_U8 wps_state;
344#endif
345 tVOS_CON_MODE bssPersona;
346 tANI_U16 nRSNIELength; //The byte count in the pRSNIE, if 0, pRSNIE is ignored.
347 tANI_U8 *pRSNIE; //If not null, it has the IE byte stream for RSN
Madan Mohan Koyyalamudi167b95e2012-11-27 15:53:38 -0800348 tANI_BOOLEAN updatebeaconInterval; //Flag used to indicate update
349 // beaconInterval
Jeff Johnson295189b2012-06-20 16:38:30 -0700350}tCsrRoamStartBssParams;
351
352
353typedef struct tagScanCmd
354{
355 tANI_U32 scanID;
356 csrScanCompleteCallback callback;
357 void *pContext;
358 eCsrScanReason reason;
359 eCsrRoamState lastRoamState[CSR_ROAM_SESSION_MAX];
360 tCsrRoamProfile *pToRoamProfile;
361 tANI_U32 roamId; //this is the ID related to the pToRoamProfile
362 union
363 {
364 tCsrScanRequest scanRequest;
365 tCsrBGScanRequest bgScanRequest;
366 }u;
367}tScanCmd;
368
369typedef struct tagRoamCmd
370{
371 tANI_U32 roamId;
372 eCsrRoamReason roamReason;
373 tCsrRoamProfile roamProfile;
374 tScanResultHandle hBSSList; //BSS list fits the profile
375 tListElem *pRoamBssEntry; //point to the current BSS in the list that is roaming. It starts from head to tail
376 tSirBssDescription *pLastRoamBss; //the last BSS we try and failed
377 tANI_BOOLEAN fReleaseBssList; //whether to free hBSSList
378 tANI_BOOLEAN fReleaseProfile; //whether to free roamProfile
379 tANI_BOOLEAN fReassoc; //whether this command is for reassociation
380 tANI_BOOLEAN fUpdateCurRoamProfile; //whether pMac->roam.pCurRoamProfile needs to be updated
381 //this is for CSR internal used only. And it should not be assigned when creating the command
382 //This causes the roam command not to do anything.
383 tANI_BOOLEAN fReassocToSelfNoCapChange;
384
385 tANI_BOOLEAN fStopWds;
386 tSirMacAddr peerMac;
387 tSirMacReasonCodes reason;
388}tRoamCmd;
389
390typedef struct tagSetKeyCmd
391{
392 tANI_U32 roamId;
393 eCsrEncryptionType encType;
394 eCsrAuthType authType;
395 tAniKeyDirection keyDirection; //Tx, Rx or Tx-and-Rx
396 tSirMacAddr peerMac; //Peer's MAC address. ALL 1's for group key
397 tANI_U8 paeRole; //0 for supplicant
398 tANI_U8 keyId; // Kye index
399 tANI_U8 keyLength; //Number of bytes containing the key in pKey
400 tANI_U8 Key[CSR_MAX_KEY_LEN];
401 tANI_U8 keyRsc[CSR_MAX_RSC_LEN];
402} tSetKeyCmd;
403
404typedef struct tahRemoveKeyCmd
405{
406 tANI_U32 roamId;
407 eCsrEncryptionType encType;
408 eCsrAuthType authType;
409 tSirMacAddr peerMac; //Peer's MAC address. ALL 1's for group key
410 tANI_U8 keyId; //key index
411} tRemoveKeyCmd;
412
413typedef struct tagWmStatusChangeCmd
414{
415 eCsrRoamWmStatusChangeTypes Type;
416 union
417 {
418 tSirSmeDeauthInd DeauthIndMsg;
419 tSirSmeDisassocInd DisassocIndMsg;
420 }u;
421
422}tWmStatusChangeCmd;
423
424typedef struct tagAddStaForSessionCmd
425{
426 //Session self mac addr
427 tSirMacAddr selfMacAddr;
428}tAddStaForSessionCmd;
429
430typedef struct tagDelStaForSessionCmd
431{
432 //Session self mac addr
433 tSirMacAddr selfMacAddr;
434 csrRoamSessionCloseCallback callback;
435 void *pContext;
436}tDelStaForSessionCmd;
437
438//This structure represents one scan request
439typedef struct tagCsrCmd
440{
441 tListElem Link;
442 eCsrRoamCommands command;
443 tANI_U8 sessionId; // Session ID for this command
444 union
445 {
446 tScanCmd scanCmd;
447 tRoamCmd roamCmd;
448 tWmStatusChangeCmd wmStatusChangeCmd;
449 tSetKeyCmd setKeyCmd;
450 tRemoveKeyCmd removeKeyCmd;
451 tAddStaForSessionCmd addStaSessionCmd;
452 tDelStaForSessionCmd delStaSessionCmd;
453 }u;
454}tCsrCmd;
455
456#ifdef WLAN_FEATURE_VOWIFI_11R
457typedef struct tagCsr11rConfig
458{
459 tANI_BOOLEAN IsFTResourceReqSupported;
460} tCsr11rConfig;
461#endif
462
463#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
464typedef struct tagCsrNeighborRoamConfig
465{
466 tANI_U32 nNeighborScanTimerPeriod;
467 tANI_U8 nNeighborLookupRssiThreshold;
468 tANI_U8 nNeighborReassocRssiThreshold;
469 tANI_U16 nNeighborScanMinChanTime;
470 tANI_U16 nNeighborScanMaxChanTime;
471 sCsrChannel neighborScanChanList;
472 tANI_U8 nMaxNeighborRetries;
473 tANI_U16 nNeighborResultsRefreshPeriod;
474}tCsrNeighborRoamConfig;
475#endif
476
477typedef struct tagCsrConfig
478{
479 tANI_U32 agingCount;
480 tANI_U32 FragmentationThreshold;
481 tANI_U32 channelBondingMode24GHz;
482 tANI_U32 channelBondingMode5GHz;
483 tANI_U32 RTSThreshold;
484 eCsrPhyMode phyMode;
485 eCsrCfgDot11Mode uCfgDot11Mode;
486 eCsrBand eBand;
487 tANI_U32 HeartbeatThresh50;
488 tANI_U32 HeartbeatThresh24;
489 tANI_U32 bgScanInterval;
490 eCsrCBChoice cbChoice;
491 eCsrBand bandCapability; //indicate hw capability
492 eCsrRoamWmmUserModeType WMMSupportMode;
493 tANI_BOOLEAN Is11eSupportEnabled;
494 tANI_BOOLEAN Is11dSupportEnabled;
495 tANI_BOOLEAN Is11dSupportEnabledOriginal;
496 tANI_BOOLEAN Is11hSupportEnabled;
497 tANI_BOOLEAN shortSlotTime;
498 tANI_BOOLEAN ProprietaryRatesEnabled;
499 tANI_BOOLEAN fenableMCCMode;
500 tANI_U16 TxRate;
Madan Mohan Koyyalamudi167b95e2012-11-27 15:53:38 -0800501 tANI_U8 fAllowMCCGODiffBI;
Jeff Johnson295189b2012-06-20 16:38:30 -0700502 tANI_U8 AdHocChannel24;
503 tANI_U8 AdHocChannel5G;
504 tANI_U32 impsSleepTime; //in units of microseconds
505 tANI_U32 scanAgeTimeNCNPS; //scan result aging time threshold when Not-Connect-No-Power-Save, in seconds
506 tANI_U32 scanAgeTimeNCPS; //scan result aging time threshold when Not-Connect-Power-Save, in seconds
507 tANI_U32 scanAgeTimeCNPS; //scan result aging time threshold when Connect-No-Power-Save, in seconds,
508 tANI_U32 scanAgeTimeCPS; //scan result aging time threshold when Connect-Power-Savein seconds
509 tANI_U32 BssPreferValue[CSR_NUM_RSSI_CAT]; //each RSSI category has one value
510 int RSSICat[CSR_NUM_RSSI_CAT];
511 tANI_U8 bCatRssiOffset; //to set the RSSI difference for each category
512 tANI_U32 nRoamingTime; //In seconds, CSR will try this long before gives up, 0 means no roaming
513 //Whether to limit the channels to the ones set in Csr11dInfo. If true, the opertaional
514 //channels are limited to the default channel list. It is an "AND" operation between the
515 //default channels and the channels in the 802.11d IE.
516 tANI_BOOLEAN fEnforce11dChannels;
517 //Country Code Priority
518 //0 = 802.11D > Configured Country > NV
519 //1 = Configured Country > 802.11D > NV
520 tANI_BOOLEAN fSupplicantCountryCodeHasPriority;
521 //When true, AP with unknown country code won't be see.
522 //"Unknown country code" means either Ap doesn't have 11d IE or we cannot
523 //find a domain for the country code in its 11d IE.
524 tANI_BOOLEAN fEnforceCountryCodeMatch;
525 //When true, only APs in the default domain can be seen. If the Ap has "unknown country
526 //code", or the doamin of the country code doesn't match the default domain, the Ap is
527 //not acceptable.
528 tANI_BOOLEAN fEnforceDefaultDomain;
529
530 tANI_U16 vccRssiThreshold;
531 tANI_U32 vccUlMacLossThreshold;
532
533 tANI_U32 nPassiveMinChnTime; //in units of milliseconds
534 tANI_U32 nPassiveMaxChnTime; //in units of milliseconds
535 tANI_U32 nActiveMinChnTime; //in units of milliseconds
536 tANI_U32 nActiveMaxChnTime; //in units of milliseconds
Madan Mohan Koyyalamudi4ff9cd62012-10-30 17:48:57 -0700537#ifdef WLAN_AP_STA_CONCURRENCY
538 tANI_U32 nPassiveMinChnTimeConc; //in units of milliseconds
539 tANI_U32 nPassiveMaxChnTimeConc; //in units of milliseconds
540 tANI_U32 nActiveMinChnTimeConc; //in units of milliseconds
541 tANI_U32 nActiveMaxChnTimeConc; //in units of milliseconds
542 tANI_U32 nRestTimeConc; //in units of milliseconds
543#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700544
545 tANI_BOOLEAN IsIdleScanEnabled;
546 //in dBm, the maximum TX power
547 //The actual TX power is the lesser of this value and 11d.
548 //If 11d is disable, the lesser of this and default setting.
549 tANI_U8 nTxPowerCap;
550 tANI_U32 statsReqPeriodicity; //stats request frequency from PE while in full power
551 tANI_U32 statsReqPeriodicityInPS;//stats request frequency from PE while in power save
552#ifdef WLAN_SOFTAP_FEATURE
553 tANI_U32 dtimPeriod;
554 tANI_BOOLEAN ssidHidden;
555#endif
556
557#ifdef WLAN_FEATURE_VOWIFI_11R
558 tCsr11rConfig csr11rConfig;
559#endif
560
Jeff Johnson04dd8a82012-06-29 20:41:40 -0700561#ifdef FEATURE_WLAN_LFR
562 tANI_U8 isFastRoamIniFeatureEnabled;
563#endif
564
Jeff Johnson295189b2012-06-20 16:38:30 -0700565#ifdef FEATURE_WLAN_CCX
566 tANI_U8 isCcxIniFeatureEnabled;
567#endif
568
Jeff Johnson04dd8a82012-06-29 20:41:40 -0700569#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
Jeff Johnson295189b2012-06-20 16:38:30 -0700570 tANI_U8 isFastTransitionEnabled;
Jeff Johnson43971f52012-07-17 12:26:56 -0700571 tANI_U8 RoamRssiDiff;
Jeff Johnson295189b2012-06-20 16:38:30 -0700572#endif
573
574#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
575 tCsrNeighborRoamConfig neighborRoamConfig;
576#endif
577
578 /* Instead of Reassoc, send ADDTS/DELTS even when ACM is off for that AC
579 * This is mandated by WMM-AC certification */
580 tANI_BOOLEAN addTSWhenACMIsOff;
581
582 tANI_BOOLEAN fValidateList;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -0700583 //Remove this code once SLM_Sessionization is supported
584 //BMPS_WORKAROUND_NOT_NEEDED
Jeff Johnsone7245742012-09-05 17:12:55 -0700585 tANI_BOOLEAN doBMPSWorkaround;
Jeff Johnson295189b2012-06-20 16:38:30 -0700586
587 //To enable/disable scanning 2.4Ghz channels twice on a single scan request from HDD
588 tANI_BOOLEAN fScanTwice;
Jeff Johnsone7245742012-09-05 17:12:55 -0700589#ifdef WLAN_FEATURE_11AC
590 tANI_U32 nVhtChannelWidth;
591#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700592
593}tCsrConfig;
594
595typedef struct tagCsrChannelPowerInfo
596{
597 tListElem link;
598 tANI_U8 firstChannel;
599 tANI_U8 numChannels;
600 tANI_U8 txPower;
601 tANI_U8 interChannelOffset;
602}tCsrChannelPowerInfo;
603
604typedef struct tagRoamJoinStatus
605{
606 tSirResultCodes statusCode;
607 //this is set to unspecified if statusCode indicates timeout. Or it is the failed reason from the other BSS(per 802.11 spec)
608 tANI_U32 reasonCode;
609}tCsrRoamJoinStatus;
610
611typedef struct tagCsrOsChannelMask
612{
613 tANI_U8 numChannels;
614 tANI_BOOLEAN scanEnabled[WNI_CFG_VALID_CHANNEL_LIST_LEN];
615 tANI_U8 channelList[WNI_CFG_VALID_CHANNEL_LIST_LEN];
616}tCsrOsChannelMask;
617
618
619typedef struct tagCsrScanStruct
620{
621 tScanProfile scanProfile;
622 tANI_U32 nextScanID;
Madan Mohan Koyyalamudica43cdf2012-09-24 13:15:49 -0700623 tDblLinkList scanResultList;
Jeff Johnson295189b2012-06-20 16:38:30 -0700624 tDblLinkList tempScanResults;
625 tANI_BOOLEAN fScanEnable;
626 tANI_BOOLEAN fFullScanIssued;
627 tPalTimerHandle hTimerGetResult;
628#ifdef WLAN_AP_STA_CONCURRENCY
629 tPalTimerHandle hTimerStaApConcTimer;
630#endif
631 tPalTimerHandle hTimerIdleScan;
632 tPalTimerHandle hTimerResultAging;
633 tPalTimerHandle hTimerBgScan;
634 //changes on every scan, it is used as a flag for whether 11d info is found on every scan
635 tANI_U8 channelOf11dInfo;
636 //changes on every scan, a flag to tell whether conflict 11d info found on each BSS
637 tANI_BOOLEAN fAmbiguous11dInfoFound;
638 //Tush: changes on every scan, a flag to tell whether the applied 11d info present in one of the scan results
639 tANI_BOOLEAN fCurrent11dInfoMatch;
640 tANI_BOOLEAN f11dInfoReset; //to indicate whether the 11d info in CFG is reset to default
641 tSirScanType curScanType;
642 tCsrChannel baseChannels; //This are all the supported channels AND(&) to the current eBand
643 tCsrChannel channels11d;
644 tChannelListWithPower defaultPowerTable[WNI_CFG_VALID_CHANNEL_LIST_LEN]; //From NV
645 tChannelListWithPower defaultPowerTable40MHz[WNI_CFG_VALID_CHANNEL_LIST_LEN]; //From NV
646 tANI_U32 numChannelsDefault; //total channels of NV
647 tCsrChannel base20MHzChannels; //The channel base to work on
648 tCsrChannel base40MHzChannels; //center channels for 40MHz channels
649 tDblLinkList channelPowerInfoList24;
650 tDblLinkList channelPowerInfoList5G;
651 tANI_U32 nLastAgeTimeOut;
652 tANI_U32 nAgingCountDown;
653 tANI_U8 countryCodeDefault[WNI_CFG_COUNTRY_CODE_LEN+1]; //The country code from NV
654 tANI_U8 countryCodeCurrent[WNI_CFG_COUNTRY_CODE_LEN+1];
655 tANI_U8 countryCode11d[WNI_CFG_COUNTRY_CODE_LEN+1];
656 v_REGDOMAIN_t domainIdDefault; //default regulatory domain
657 v_REGDOMAIN_t domainIdCurrent; //current regulatory domain
658 tANI_BOOLEAN f11dInfoApplied;
659 tANI_BOOLEAN fCancelIdleScan;
660#ifdef FEATURE_WLAN_WAPI
661// tANI_U16 NumBkidCandidate;
662// tBkidCandidateInfo BkidCandidateInfo[CSR_MAX_BKID_ALLOWED]; /* Move this as part of SessionEntry */
663#endif /* FEATURE_WLAN_WAPI */
664 tANI_U8 numBGScanChannel; //number of valid channels in the bgScanChannelList
665 tANI_U8 bgScanChannelList[WNI_CFG_BG_SCAN_CHANNEL_LIST_LEN];
666 //the ChannelInfo member is not used in this structure.
667 //numBGScanChannel and bgScanChannelList are used for the BG scan channel info
668 tCsrBGScanRequest bgScanParams;
669 tANI_BOOLEAN fRestartIdleScan;
670 tANI_U32 nIdleScanTimeGap; //the time since last trying to trigger idle scan
671 tCsrOsChannelMask osScanChannelMask;//keep a track of channels to be scnned while in traffic condition
672 tANI_U16 nBssLimit; //the maximum number of BSS in scan cache
673 /*channelPowerInfoList24 has been seen corrupted. Set this flag to true trying to
674 * detect when it happens. Adding this into code because we can't reproduce it easily.
675 * We don't know when it happens. */
676 tANI_BOOLEAN fValidateList;
677 /*Customer wants to start with an active scan based on the default country code.
678 * This optimization will minimize the driver load to association time.
679 * Based on this flag we will bypass the initial passive scan needed for 11d
680 * to determine the country code & domain */
681 tANI_BOOLEAN fEnableBypass11d;
682
683 /*Customer wants to optimize the scan time. Avoiding scans(passive) on DFS
684 * channels while swipping through both bands can save some time
685 * (apprx 1.3 sec) */
686 tANI_BOOLEAN fEnableDFSChnlScan;
687
Jeff Johnsone7245742012-09-05 17:12:55 -0700688 /*
689 * To enable/disable scanning only 2.4Ghz channels on first scan
690 */
691 tANI_BOOLEAN fFirstScanOnly2GChnl;
692
Jeff Johnson295189b2012-06-20 16:38:30 -0700693 tANI_BOOLEAN fDropScanCmd; //true means we don't accept scan commands
694
695#ifdef WLAN_AP_STA_CONCURRENCY
696 tDblLinkList scanCmdPendingList;
697#endif
Madan Mohan Koyyalamudi470d2cf2012-09-28 14:43:44 -0700698 tCsrChannel occupiedChannels; //This includes all channels on which candidate APs are found
Madan Mohan Koyyalamudi3f65e312012-11-06 15:31:12 -0800699
700 tANI_BOOLEAN fIgnore_chan165;
Jeff Johnson295189b2012-06-20 16:38:30 -0700701}tCsrScanStruct;
702
703
704//Save the connected information. This structure + connectedProfile
705//should contain all information about the connection
706typedef struct tagRoamCsrConnectedInfo
707{
708 tANI_U32 nBeaconLength; //the length, in bytes, of the beacon frame, can be 0
709 tANI_U32 nAssocReqLength; //the length, in bytes, of the assoc req frame, can be 0
710 tANI_U32 nAssocRspLength; //The length, in bytes, of the assoc rsp frame, can be 0
711#ifdef WLAN_FEATURE_VOWIFI_11R
712 tANI_U32 nRICRspLength; //Length of the parsed RIC response IEs received in reassoc response
713#endif
714#ifdef FEATURE_WLAN_CCX
715 tANI_U32 nTspecIeLength;
716#endif
717 tANI_U8 *pbFrames; //Point to a buffer contain the beacon, assoc req, assoc rsp frame, in that order
718 //user needs to use nBeaconLength, nAssocReqLength, nAssocRspLength to desice where
719 //each frame starts and ends.
720 tANI_U8 staId;
721}tCsrRoamConnectedInfo;
722
723
724typedef struct tagCsrLinkQualityIndInfo
725{
726 csrRoamLinkQualityIndCallback callback;
727 void *context;
728}tCsrLinkQualityIndInfo;
729
730typedef struct tagCsrPeStatsReqInfo
731{
732 tListElem link; /* list links */
733 tANI_U32 statsMask;
734 tANI_U32 periodicity;
735 tANI_BOOLEAN rspPending;
736 vos_timer_t hPeStatsTimer;
737 tANI_BOOLEAN timerRunning;
738 tANI_U8 staId;
739 tANI_U8 numClient;
740 tpAniSirGlobal pMac;
741 /* To remember if the peStats timer is stopped successfully or not */
742 tANI_BOOLEAN timerStopFailed;
743
744}tCsrPeStatsReqInfo;
745
746typedef struct tagCsrStatsClientReqInfo
747{
748 tListElem link; /* list links */
749 eCsrStatsRequesterType requesterId;
750 tCsrStatsCallback callback;
751 tANI_U32 periodicity;
752 void *pContext;
753 tANI_U32 statsMask;
754 tCsrPeStatsReqInfo *pPeStaEntry;
755 tANI_U8 staId;
756 vos_timer_t timer;
757 tANI_BOOLEAN timerExpired;
758 tpAniSirGlobal pMac; // TODO: Confirm this change BTAMP
759}tCsrStatsClientReqInfo;
760
761typedef struct tagCsrTlStatsReqInfo
762{
763 tANI_U32 periodicity;
764 tANI_BOOLEAN timerRunning;
765 tPalTimerHandle hTlStatsTimer;
766 tANI_U8 numClient;
767}tCsrTlStatsReqInfo;
768
769typedef struct tagCsrRoamSession
770{
771 tANI_U8 sessionId; // Session ID
772 tANI_BOOLEAN sessionActive; // TRUE if it is used
773 tCsrBssid selfMacAddr; // For BT-AMP station, this serve as BSSID for self-BSS.
774 csrRoamCompleteCallback callback;
775 void *pContext;
776 eCsrConnectState connectState;
777 tCsrRoamConnectedProfile connectedProfile;
778 tCsrRoamConnectedInfo connectedInfo;
779 tCsrRoamProfile *pCurRoamProfile;
780 tSirBssDescription *pConnectBssDesc;
781 tANI_U16 NumPmkidCache;
782 tPmkidCacheInfo PmkidCacheInfo[CSR_MAX_PMKID_ALLOWED];
783 tANI_U8 cJoinAttemps;
784 //This may or may not have the up-to-date valid channel list
785 //It is used to get WNI_CFG_VALID_CHANNEL_LIST and not allocate memory all the time
786 tSirMacChanNum validChannelList[WNI_CFG_VALID_CHANNEL_LIST_LEN];
787 tANI_S32 sPendingCommands; //0 means CSR is ok to low power
788#ifdef FEATURE_WLAN_WAPI
789 tANI_U16 NumBkidCache;
790 tBkidCacheInfo BkidCacheInfo[CSR_MAX_BKID_ALLOWED];
791#endif /* FEATURE_WLAN_WAPI */
792 tANI_BOOLEAN fRoaming; //indicate whether CSR is roaming (either via lostlink or dynamic roaming)
793 //to remember some parameters needed for START_BSS.
794 //All member must be set every time we try to join or start an IBSS or BT-AMP
795 tCsrRoamStartBssParams bssParams;
796 tANI_U32 nWpaRsnReqIeLength; //the byte count of pWpaRsnIE;
797 tANI_U8 *pWpaRsnReqIE; //this contain the WPA/RSN IE in assoc request or the one sent in beacon (IBSS)
798 tANI_U32 nWpaRsnRspIeLength; //the byte count for pWpaRsnRspIE
799 tANI_U8 *pWpaRsnRspIE; //this contain the WPA/RSN IE in beacon/probe rsp
800#ifdef FEATURE_WLAN_WAPI
801 tANI_U32 nWapiReqIeLength; //the byte count of pWapiReqIE;
802 tANI_U8 *pWapiReqIE; //this contain the WAPI IE in assoc request or the one sent in beacon (IBSS)
803 tANI_U32 nWapiRspIeLength; //the byte count for pWapiRspIE
804 tANI_U8 *pWapiRspIE; //this contain the WAPI IE in beacon/probe rsp
805#endif /* FEATURE_WLAN_WAPI */
806 tANI_U32 nAddIEScanLength; //the byte count of pAddIeScanIE;
807 tANI_U8 *pAddIEScan; //this contains the additional IE in (unicast) probe request at the time of join
808 tANI_U32 nAddIEAssocLength; //the byte count for pAddIeAssocIE
809 tANI_U8 *pAddIEAssoc; //this contains the additional IE in (re) assoc request
810
811 tANI_TIMESTAMP roamingStartTime; //in units of 10ms
812 tCsrTimerInfo roamingTimerInfo;
813 eCsrRoamingReason roamingReason;
814 tANI_BOOLEAN fCancelRoaming;
815 tPalTimerHandle hTimerRoaming;
816 tPalTimerHandle hTimerIbssJoining;
817 tCsrTimerInfo ibssJoinTimerInfo;
818 tANI_BOOLEAN ibss_join_pending;
819 eCsrRoamResult roamResult; //the roamResult that is used when the roaming timer fires
820 tCsrRoamJoinStatus joinFailStatusCode; //This is the reason code for join(assoc) failure
821 //The status code returned from PE for deauth or disassoc (in case of lostlink), or our own dynamic roaming
822 tANI_U32 roamingStatusCode;
823 tANI_U16 NumPmkidCandidate;
824 tPmkidCandidateInfo PmkidCandidateInfo[CSR_MAX_PMKID_ALLOWED];
825 #ifdef FEATURE_WLAN_WAPI
826 tANI_U16 NumBkidCandidate;
827 tBkidCandidateInfo BkidCandidateInfo[CSR_MAX_BKID_ALLOWED];
828#endif
829 tANI_BOOLEAN fWMMConnection;
830#ifdef FEATURE_WLAN_BTAMP_UT_RF
831 //To retry a join later when it fails if so desired
832 tPalTimerHandle hTimerJoinRetry;
833 tCsrTimerInfo joinRetryTimerInfo;
834 tANI_U32 maxRetryCount;
835#endif
836#ifdef FEATURE_WLAN_CCX
837 tCsrCcxCckmInfo ccxCckmInfo;
838 tANI_BOOLEAN isPrevApInfoValid;
839 tSirMacSSid prevApSSID;
840 tCsrBssid prevApBssid;
841 tANI_U8 prevOpChannel;
842 tANI_U16 clientDissSecs;
843 tANI_U32 roamTS1;
844#endif
845 tANI_U8 bRefAssocStartCnt; //Tracking assoc start indication
Madan Mohan Koyyalamudiea22cdc2012-10-18 21:02:23 -0700846 /* to force the AP initiate fresh 802.1x authentication after re-association need to clear
847 * the PMKID cache. To clear the cache in this particular case this is added
848 * it is needed by the HS 2.0 passpoint certification 5.2.a and b testcases */
849 tANI_BOOLEAN fIgnorePMKIDCache;
Jeff Johnson295189b2012-06-20 16:38:30 -0700850} tCsrRoamSession;
851
852typedef struct tagCsrRoamStruct
853{
854 tANI_U32 nextRoamId;
855 tDblLinkList roamCmdPendingList;
856 tDblLinkList channelList5G;
857 tDblLinkList channelList24;
858 tCsrConfig configParam;
859 tANI_U32 numChannelsEeprom; //total channels of eeprom
860 tCsrChannel base20MHzChannels; //The channel base to work on
861 tCsrChannel base40MHzChannels; //center channels for 40MHz channels
862 eCsrRoamState curState[CSR_ROAM_SESSION_MAX];
863 eCsrRoamSubState curSubState[CSR_ROAM_SESSION_MAX];
864 //This may or may not have the up-to-date valid channel list
865 //It is used to get WNI_CFG_VALID_CHANNEL_LIST and not allocate memory all the time
866 tSirMacChanNum validChannelList[WNI_CFG_VALID_CHANNEL_LIST_LEN];
867 tANI_U32 numValidChannels; //total number of channels in CFG
868
869 tANI_S32 sPendingCommands;
870 tChannelListWithPower *powerTableFromEeprom;
871 tChannelListWithPower *powerTableFromEeprom40MHz;
872 tPalTimerHandle hTimerWaitForKey; //To support timeout for WaitForKey state
873 tCsrSummaryStatsInfo summaryStatsInfo;
874 tCsrGlobalClassAStatsInfo classAStatsInfo;
875 tCsrGlobalClassBStatsInfo classBStatsInfo;
876 tCsrGlobalClassCStatsInfo classCStatsInfo;
877 tCsrGlobalClassDStatsInfo classDStatsInfo;
878 tCsrPerStaStatsInfo perStaStatsInfo[CSR_MAX_STA];
879 tDblLinkList statsClientReqList;
880 tDblLinkList peStatsReqList;
881 tCsrTlStatsReqInfo tlStatsReqInfo;
882 eCsrRoamLinkQualityInd vccLinkQuality;
883 tCsrLinkQualityIndInfo linkQualityIndInfo;
884 v_CONTEXT_t gVosContext; //used for interaction with TL
885 //To specify whether an association or a IBSS is WMM enabled
886 //This parameter is only valid during a join or start BSS command is being executed
887 //tANI_BOOLEAN fWMMConnection; /* Moving it to be part of roamsession */
888 v_U8_t ucACWeights[WLANTL_MAX_AC];
889 /* TODO : Upto here */
890 tCsrTimerInfo WaitForKeyTimerInfo;
891 tCsrRoamSession *roamSession;
892 tANI_U32 transactionId; // Current transaction ID for internal use.
893#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
894 tCsrNeighborRoamControlInfo neighborRoamInfo;
895#endif
Jeff Johnson04dd8a82012-06-29 20:41:40 -0700896#ifdef FEATURE_WLAN_LFR
897 tANI_U8 isFastRoamIniFeatureEnabled;
898#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700899#ifdef FEATURE_WLAN_CCX
900 tANI_U8 isCcxIniFeatureEnabled;
901#endif
Jeff Johnson43971f52012-07-17 12:26:56 -0700902#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
903 tANI_U8 RoamRssiDiff;
904#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700905}tCsrRoamStruct;
906
907
908#define GET_NEXT_ROAM_ID(pRoamStruct) (((pRoamStruct)->nextRoamId + 1 == 0) ? 1 : (pRoamStruct)->nextRoamId)
909#define CSR_IS_ROAM_STATE(pMac, state, sessionId) ( (state) == (pMac)->roam.curState[sessionId] )
910
911#define CSR_IS_ROAM_STOP(pMac, sessionId) CSR_IS_ROAM_STATE( (pMac), eCSR_ROAMING_STATE_STOP, sessionId )
912#define CSR_IS_ROAM_INIT(pMac, sessionId) CSR_IS_ROAM_STATE( (pMac), eCSR_ROAMING_STATE_INIT, sessionId )
913#define CSR_IS_ROAM_SCANNING(pMac, sessionId) CSR_IS_ROAM_STATE( pMac, eCSR_ROAMING_STATE_SCANNING, sessionId )
914#define CSR_IS_ROAM_JOINING(pMac, sessionId) CSR_IS_ROAM_STATE( pMac, eCSR_ROAMING_STATE_JOINING, sessionId )
915#define CSR_IS_ROAM_IDLE(pMac, sessionId) CSR_IS_ROAM_STATE( pMac, eCSR_ROAMING_STATE_IDLE, sessionId )
916#define CSR_IS_ROAM_JOINED(pMac, sessionId) CSR_IS_ROAM_STATE( pMac, eCSR_ROAMING_STATE_JOINED, sessionId )
917
918#define CSR_IS_ROAM_SUBSTATE(pMac, subState, sessionId) ((subState) == (pMac)->roam.curSubState[sessionId])
919#define CSR_IS_ROAM_SUBSTATE_JOIN_REQ(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_JOIN_REQ, sessionId)
920#define CSR_IS_ROAM_SUBSTATE_AUTH_REQ(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_AUTH_REQ, sessionId)
921#define CSR_IS_ROAM_SUBSTATE_REASSOC_REQ(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_REASSOC_REQ, sessionId)
922#define CSR_IS_ROAM_SUBSTATE_DISASSOC_REQ(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_DISASSOC_REQ, sessionId)
923#define CSR_IS_ROAM_SUBSTATE_DISASSOC_NO_JOIN(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_DISASSOC_NOTHING_TO_JOIN, sessionId)
924#define CSR_IS_ROAM_SUBSTATE_REASSOC_FAIL(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_DISASSOC_REASSOC_FAILURE, sessionId)
925#define CSR_IS_ROAM_SUBSTATE_DISASSOC_FORCED(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_DISASSOC_FORCED, sessionId)
926#define CSR_IS_ROAM_SUBSTATE_DEAUTH_REQ(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_DEAUTH_REQ, sessionId)
927#define CSR_IS_ROAM_SUBSTATE_START_BSS_REQ(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_START_BSS_REQ, sessionId)
928#define CSR_IS_ROAM_SUBSTATE_STOP_BSS_REQ(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_STOP_BSS_REQ, sessionId)
929#define CSR_IS_ROAM_SUBSTATE_DISCONNECT_CONTINUE(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_DISCONNECT_CONTINUE_ROAMING, sessionId)
930#define CSR_IS_ROAM_SUBSTATE_CONFIG(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_CONFIG, sessionId)
931#define CSR_IS_ROAM_SUBSTATE_WAITFORKEY(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_WAIT_FOR_KEY, sessionId)
932#define CSR_IS_ROAM_SUBSTATE_DISASSOC_HO(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_DISASSOC_HANDOFF, sessionId)
933#define CSR_IS_ROAM_SUBSTATE_HO_NT(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_JOINED_NO_TRAFFIC, sessionId)
934#define CSR_IS_ROAM_SUBSTATE_HO_NRT(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_JOINED_NON_REALTIME_TRAFFIC, sessionId)
935#define CSR_IS_ROAM_SUBSTATE_HO_RT(pMac, sessionId) CSR_IS_ROAM_SUBSTATE((pMac), eCSR_ROAM_SUBSTATE_JOINED_REALTIME_TRAFFIC, sessionId)
936
937#define CSR_IS_PHY_MODE_B_ONLY(pMac) \
938 ((eCSR_DOT11_MODE_11b == (pMac)->roam.configParam.phyMode) ||\
939 (eCSR_DOT11_MODE_11b_ONLY == (pMac)->roam.configParam.phyMode))
940
941#define CSR_IS_PHY_MODE_G_ONLY(pMac) \
942 (eCSR_DOT11_MODE_11g == (pMac)->roam.configParam.phyMode || eCSR_DOT11_MODE_11g_ONLY == (pMac)->roam.configParam.phyMode)
943
944#define CSR_IS_PHY_MODE_A_ONLY(pMac) \
945 ((eCSR_DOT11_MODE_11a == (pMac)->roam.configParam.phyMode) ||\
946 (eCSR_DOT11_MODE_11a_ONLY == (pMac)->roam.configParam.phyMode))
947
Jeff Johnsone7245742012-09-05 17:12:55 -0700948#ifdef WLAN_FEATURE_11AC
949#define CSR_IS_PHY_MODE_DUAL_BAND(phyMode) \
950 ((eCSR_DOT11_MODE_abg & (phyMode)) || (eCSR_DOT11_MODE_11n & (phyMode)) || \
951 (eCSR_DOT11_MODE_11ac & (phyMode)) || \
952 (eCSR_DOT11_MODE_TAURUS & (phyMode)) || \
953 (eCSR_DOT11_MODE_AUTO & (phyMode)))
954#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700955#define CSR_IS_PHY_MODE_DUAL_BAND(phyMode) \
956 ((eCSR_DOT11_MODE_abg & (phyMode)) || (eCSR_DOT11_MODE_11n & (phyMode)) || \
957 (eCSR_DOT11_MODE_TAURUS & (phyMode)) || \
958 (eCSR_DOT11_MODE_AUTO & (phyMode)))
Jeff Johnsone7245742012-09-05 17:12:55 -0700959#endif
960
Jeff Johnson295189b2012-06-20 16:38:30 -0700961
962// this function returns TRUE if the NIC is operating exclusively in the 2.4 GHz band, meaning
963// it is NOT operating in the 5.0 GHz band.
964#define CSR_IS_24_BAND_ONLY(pMac) \
965 (eCSR_BAND_24 == (pMac)->roam.configParam.eBand)
966
967#define CSR_IS_5G_BAND_ONLY(pMac) \
968 (eCSR_BAND_5G == (pMac)->roam.configParam.eBand)
969
970#define CSR_IS_RADIO_DUAL_BAND(pMac) \
971 (eCSR_BAND_ALL == (pMac)->roam.configParam.bandCapability)
972
973#define CSR_IS_RADIO_BG_ONLY(pMac) \
974 (eCSR_BAND_24 == (pMac)->roam.configParam.bandCapability)
975
976// this function returns TRUE if the NIC is operating exclusively in the 5.0 GHz band, meaning
977// it is NOT operating in the 2.4 GHz band
978#define CSR_IS_RADIO_A_ONLY(pMac) \
979 (eCSR_BAND_5G == (pMac)->roam.configParam.bandCapability)
980
981// this function returns TRUE if the NIC is operating in both bands.
982#define CSR_IS_OPEARTING_DUAL_BAND(pMac) \
983 ((eCSR_BAND_ALL == (pMac)->roam.configParam.bandCapability) && (eCSR_BAND_ALL == (pMac)->roam.configParam.eBand))
984
985// this function returns TRUE if the NIC can operate in the 5.0 GHz band (could operate in the
986// 2.4 GHz band also).
987#define CSR_IS_OPERATING_A_BAND(pMac) \
988 (CSR_IS_OPEARTING_DUAL_BAND((pMac)) || CSR_IS_RADIO_A_ONLY((pMac)) || CSR_IS_5G_BAND_ONLY((pMac)))
989
990// this function returns TRUE if the NIC can operate in the 2.4 GHz band (could operate in the
991// 5.0 GHz band also).
992#define CSR_IS_OPERATING_BG_BAND(pMac) \
993 (CSR_IS_OPEARTING_DUAL_BAND((pMac)) || CSR_IS_RADIO_BG_ONLY((pMac)) || CSR_IS_24_BAND_ONLY((pMac)))
994
995#define CSR_IS_CHANNEL_5GHZ(chnNum) \
Jeff Johnsone7245742012-09-05 17:12:55 -0700996 (((chnNum) >= CSR_MIN_5GHz_CHANNEL_NUMBER) && ((chnNum) <= CSR_MAX_5GHz_CHANNEL_NUMBER))
Jeff Johnson295189b2012-06-20 16:38:30 -0700997
998#define CSR_IS_CHANNEL_24GHZ(chnNum) \
999 (((chnNum) > 0) && ((chnNum) <= CSR_MAX_24GHz_CHANNEL_NUMBER))
1000
1001#define CSR_IS_SAME_BAND_CHANNELS(ch1, ch2) (CSR_IS_CHANNEL_5GHZ(ch1) == CSR_IS_CHANNEL_5GHZ(ch2))
1002
1003
1004#define CSR_IS_11D_INFO_FOUND(pMac) \
1005 (0 != (pMac)->scan.channelOf11dInfo)
1006// DEAUTHIND
1007#define CSR_IS_ROAMING(pSession) ((CSR_IS_LOSTLINK_ROAMING((pSession)->roamingReason)) || \
1008 (eCsrDynamicRoaming == (pSession)->roamingReason) || \
1009 (eCsrReassocRoaming == (pSession)->roamingReason))
1010
1011
1012#define CSR_IS_SET_KEY_COMMAND( pCommand ) ( eSmeCommandSetKey == (pCommand)->command )
1013
1014#define CSR_IS_ADDTS_WHEN_ACMOFF_SUPPORTED(pMac) (pMac->roam.configParam.addTSWhenACMIsOff)
1015// DEAUTHIND
1016#define CSR_IS_LOSTLINK_ROAMING(reason) ((eCsrLostlinkRoamingDisassoc == (reason)) || (eCsrLostlinkRoamingDeauth == (reason)))
1017
1018//Stop CSR from asking for IMPS, This function doesn't disable IMPS from CSR
1019void csrScanSuspendIMPS( tpAniSirGlobal pMac );
1020//Start CSR from asking for IMPS. This function doesn't trigger CSR to request entering IMPS
1021//because IMPS maybe disabled.
1022void csrScanResumeIMPS( tpAniSirGlobal pMac );
1023
1024eHalStatus csrInitGetChannels(tpAniSirGlobal pMac);
1025
1026eHalStatus csrSetModifyProfileFields(tpAniSirGlobal pMac, tANI_U32 sessionId,
1027 tCsrRoamModifyProfileFields *pModifyProfileFields);
1028/* ---------------------------------------------------------------------------
1029 \fn csrGetModifyProfileFields
1030 \brief HDD or SME - QOS calls this function to get the current values of
1031 connected profile fields changing which can cause reassoc.
1032 This function must be called after CFG is downloaded and STA is in connected
1033 state.
1034 \param pModifyProfileFields - pointer to the connected profile fields
1035 changing which can cause reassoc
1036
1037 \return eHalStatus
1038 -------------------------------------------------------------------------------*/
1039eHalStatus csrGetModifyProfileFields(tpAniSirGlobal pMac, tANI_U32 sessionId,
1040 tCsrRoamModifyProfileFields * pModifyProfileFields);
1041void csrSetGlobalCfgs( tpAniSirGlobal pMac );
1042void csrSetDefaultDot11Mode( tpAniSirGlobal pMac );
1043void csrScanSetChannelMask(tpAniSirGlobal pMac, tCsrChannelInfo *pChannelInfo);
1044tANI_BOOLEAN csrIsConnStateDisconnected(tpAniSirGlobal pMac, tANI_U32 sessionId);
1045tANI_BOOLEAN csrIsConnStateConnectedIbss( tpAniSirGlobal pMac, tANI_U32 sessionId );
1046tANI_BOOLEAN csrIsConnStateDisconnectedIbss( tpAniSirGlobal pMac, tANI_U32 sessionId );
1047tANI_BOOLEAN csrIsConnStateConnectedInfra( tpAniSirGlobal pMac, tANI_U32 sessionId );
1048tANI_BOOLEAN csrIsConnStateConnected( tpAniSirGlobal pMac, tANI_U32 sessionId );
1049tANI_BOOLEAN csrIsConnStateInfra( tpAniSirGlobal pMac, tANI_U32 sessionId );
1050tANI_BOOLEAN csrIsConnStateIbss( tpAniSirGlobal pMac, tANI_U32 sessionId );
1051tANI_BOOLEAN csrIsConnStateWds( tpAniSirGlobal pMac, tANI_U32 sessionId );
1052tANI_BOOLEAN csrIsConnStateConnectedWds( tpAniSirGlobal pMac, tANI_U32 sessionId );
1053tANI_BOOLEAN csrIsConnStateDisconnectedWds( tpAniSirGlobal pMac, tANI_U32 sessionId );
1054tANI_BOOLEAN csrIsAnySessionInConnectState( tpAniSirGlobal pMac );
1055tANI_BOOLEAN csrIsAllSessionDisconnected( tpAniSirGlobal pMac );
Madan Mohan Koyyalamudid3d22592012-09-24 14:01:29 -07001056tANI_BOOLEAN csrIsAnySessionConnected( tpAniSirGlobal pMac );
Jeff Johnson295189b2012-06-20 16:38:30 -07001057tANI_BOOLEAN csrIsInfraConnected( tpAniSirGlobal pMac );
1058tANI_BOOLEAN csrIsConcurrentInfraConnected( tpAniSirGlobal pMac );
Jeff Johnsone7245742012-09-05 17:12:55 -07001059tANI_BOOLEAN csrIsConcurrentSessionRunning( tpAniSirGlobal pMac );
Jeff Johnsone7245742012-09-05 17:12:55 -07001060tANI_BOOLEAN csrIsInfraApStarted( tpAniSirGlobal pMac );
Jeff Johnson295189b2012-06-20 16:38:30 -07001061tANI_BOOLEAN csrIsIBSSStarted( tpAniSirGlobal pMac );
1062tANI_BOOLEAN csrIsBTAMPStarted( tpAniSirGlobal pMac );
1063tANI_BOOLEAN csrIsBTAMP( tpAniSirGlobal pMac, tANI_U32 sessionId );
1064eHalStatus csrIsBTAMPAllowed( tpAniSirGlobal pMac, tANI_U32 chnId );
Jeff Johnsone7245742012-09-05 17:12:55 -07001065tANI_BOOLEAN csrIsValidMcConcurrentSession(tpAniSirGlobal pMac, tANI_U32 sessionId,
1066 tSirBssDescription *pBssDesc);
Jeff Johnson295189b2012-06-20 16:38:30 -07001067#ifdef WLAN_SOFTAP_FEATURE
1068tANI_BOOLEAN csrIsConnStateConnectedInfraAp( tpAniSirGlobal pMac, tANI_U32 sessionId );
1069#endif
1070/*----------------------------------------------------------------------------
1071 \fn csrRoamRegisterLinkQualityIndCallback
1072
1073 \brief
1074 a CSR function to allow HDD to register a callback handler with CSR for
1075 link quality indications.
1076
1077 Only one callback may be registered at any time.
1078 In order to deregister the callback, a NULL cback may be provided.
1079
1080 Registration happens in the task context of the caller.
1081
1082 \param callback - Call back being registered
1083 \param pContext - user data
1084
1085 DEPENDENCIES: After CSR open
1086
1087 \return eHalStatus
1088-----------------------------------------------------------------------------*/
1089eHalStatus csrRoamRegisterLinkQualityIndCallback(tpAniSirGlobal pMac,
1090 csrRoamLinkQualityIndCallback callback,
1091 void *pContext);
1092/* ---------------------------------------------------------------------------
1093 \fn csrGetStatistics
1094 \brief csr function that client calls to register a callback to get
1095 different PHY level statistics from CSR.
1096
1097 \param requesterId - different client requesting for statistics, HDD, UMA/GAN etc
1098 \param statsMask - The different category/categories of stats requester is looking for
1099 \param callback - SME sends back the requested stats using the callback
1100 \param periodicity - If requester needs periodic update, 0 means it's an one
1101 time request
1102 \param cache - If requester is happy with cached stats
1103 \param staId - The station ID for which the stats is requested for
1104 \param pContext - user context to be passed back along with the callback
1105
1106 \return eHalStatus
1107 ---------------------------------------------------------------------------*/
1108eHalStatus csrGetStatistics(tpAniSirGlobal pMac, eCsrStatsRequesterType requesterId,
1109 tANI_U32 statsMask,
1110 tCsrStatsCallback callback,
1111 tANI_U32 periodicity, tANI_BOOLEAN cache,
1112 tANI_U8 staId, void *pContext);
1113
1114
1115eHalStatus csrGetRssi(tpAniSirGlobal pMac,tCsrRssiCallback callback,tANI_U8 staId,tCsrBssid bssId,void * pContext,void * pVosContext);
1116eHalStatus csrRoamRegisterCallback(tpAniSirGlobal pMac, csrRoamCompleteCallback callback, void *pContext);
1117/* ---------------------------------------------------------------------------
1118 \fn csrGetConfigParam
1119 \brief HDD calls this function to get the global settings currently maintained by CSR.
1120 \param pParam - caller allocated memory
1121 \return eHalStatus
1122 -------------------------------------------------------------------------------*/
1123eHalStatus csrGetConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pParam);
1124
1125/* ---------------------------------------------------------------------------
1126 \fn csrMsgProcessor
1127 \brief HDD calls this function to change some global settings.
1128 caller must set the all fields or call csrGetConfigParam to prefill the fields.
1129 \param pParam - caller allocated memory
1130 \return eHalStatus
1131 -------------------------------------------------------------------------------*/
1132eHalStatus csrChangeDefaultConfigParam(tpAniSirGlobal pMac, tCsrConfigParam *pParam);
1133
1134
1135/* ---------------------------------------------------------------------------
1136 \fn csrMsgProcessor
1137 \brief HDD calls this function for the messages that are handled by CSR.
1138 \param pMsgBuf - a pointer to a buffer that maps to various structures base on the message type.
1139 The beginning of the buffer can always map to tSirSmeRsp.
1140 \return eHalStatus
1141 -------------------------------------------------------------------------------*/
1142eHalStatus csrMsgProcessor( tpAniSirGlobal pMac, void *pMsgBuf );
1143
1144/* ---------------------------------------------------------------------------
1145 \fn csrOpen
1146 \brief This function must be called before any API call to CSR.
1147 \return eHalStatus
1148 -------------------------------------------------------------------------------*/
1149eHalStatus csrOpen(tpAniSirGlobal pMac);
1150/* ---------------------------------------------------------------------------
1151 \fn csrClose
1152 \brief To close down CSR module. There should not be any API call into CSR after calling this function.
1153 \return eHalStatus
1154 -------------------------------------------------------------------------------*/
1155eHalStatus csrClose(tpAniSirGlobal pMac);
1156/* ---------------------------------------------------------------------------
1157 \fn csrStart
1158 \brief To start CSR.
1159 \return eHalStatus
1160 -------------------------------------------------------------------------------*/
1161eHalStatus csrStart(tpAniSirGlobal pMac);
1162/* ---------------------------------------------------------------------------
1163 \fn csrStop
1164 \brief To stop CSR. CSR still keeps its current setting.
1165 \return eHalStatus
1166 -------------------------------------------------------------------------------*/
1167eHalStatus csrStop(tpAniSirGlobal pMac);
1168/* ---------------------------------------------------------------------------
1169 \fn csrReady
1170 \brief To let CSR is ready to operate
1171 \return eHalStatus
1172 -------------------------------------------------------------------------------*/
1173eHalStatus csrReady(tpAniSirGlobal pMac);
1174
1175#ifdef FEATURE_WLAN_WAPI
1176eHalStatus csrRoamGetBKIDCache(tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_U32 *pNum,
1177 tBkidCacheInfo *pBkidCache);
1178
1179
1180eHalStatus csrScanGetBKIDCandidateList(tpAniSirGlobal pMac, tANI_U32 sessionId,
1181 tBkidCandidateInfo *pBkidList, tANI_U32 *pNumItems );
1182tANI_U32 csrRoamGetNumBKIDCache(tpAniSirGlobal pMac, tANI_U32 sessionId);
1183eHalStatus csrRoamSetBKIDCache( tpAniSirGlobal pMac, tANI_U32 sessionId, tBkidCacheInfo *pBKIDCache,
1184 tANI_U32 numItems );
1185/* ---------------------------------------------------------------------------
1186 \fn csrRoamGetWapiReqIE
1187 \brief return the WAPI IE CSR passes to PE to JOIN request or START_BSS request
1188 \param pLen - caller allocated memory that has the length of pBuf as input. Upon returned, *pLen has the
1189 needed or IE length in pBuf.
1190 \param pBuf - Caller allocated memory that contain the IE field, if any, upon return
1191 \return eHalStatus - when fail, it usually means the buffer allocated is not big enough
1192 -------------------------------------------------------------------------------*/
1193eHalStatus csrRoamGetWapiReqIE(tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_U32 *pLen, tANI_U8 *pBuf);
1194
1195/* ---------------------------------------------------------------------------
1196 \fn csrRoamGetWapiRspIE
1197 \brief return the WAPI IE from the beacon or probe rsp if connected
1198 \param pLen - caller allocated memory that has the length of pBuf as input. Upon returned, *pLen has the
1199 needed or IE length in pBuf.
1200 \param pBuf - Caller allocated memory that contain the IE field, if any, upon return
1201 \return eHalStatus - when fail, it usually means the buffer allocated is not big enough
1202 -------------------------------------------------------------------------------*/
1203eHalStatus csrRoamGetWapiRspIE(tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_U32 *pLen, tANI_U8 *pBuf);
1204tANI_U8 csrConstructWapiIe( tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamProfile *pProfile,
1205 tSirBssDescription *pSirBssDesc, tDot11fBeaconIEs *pIes, tCsrWapiIe *pWapiIe );
1206#endif /* FEATURE_WLAN_WAPI */
1207
1208#ifdef WLAN_SOFTAP_FEATURE
1209eHalStatus csrRoamUpdateAPWPSIE( tpAniSirGlobal pMac, tANI_U32 sessionId, tSirAPWPSIEs *pAPWPSIES );
1210eHalStatus csrRoamUpdateWPARSNIEs( tpAniSirGlobal pMac, tANI_U32 sessionId, tSirRSNie * pAPSirRSNie);
1211#endif
1212void csrSetCfgPrivacy( tpAniSirGlobal pMac, tCsrRoamProfile *pProfile, tANI_BOOLEAN fPrivacy );
1213tANI_S8 csrGetInfraSessionId( tpAniSirGlobal pMac );
1214tANI_U8 csrGetInfraOperationChannel( tpAniSirGlobal pMac, tANI_U8 sessionId);
1215tANI_U8 csrGetConcurrentOperationChannel( tpAniSirGlobal pMac );
1216
1217eHalStatus csrRoamCopyConnectProfile(tpAniSirGlobal pMac, tANI_U32 sessionId,
1218 tCsrRoamConnectedProfile *pProfile);
1219tANI_BOOLEAN csrIsSetKeyAllowed(tpAniSirGlobal pMac, tANI_U32 sessionId);
1220
1221void csrSetOppositeBandChannelInfo( tpAniSirGlobal pMac );
1222void csrConstructCurrentValidChannelList( tpAniSirGlobal pMac, tDblLinkList *pChannelSetList,
1223 tANI_U8 *pChannelList, tANI_U8 bSize, tANI_U8 *pNumChannels );
1224
1225#endif
1226
1227#ifdef WLAN_FEATURE_VOWIFI_11R
1228//Returns whether the current association is a 11r assoc or not
1229tANI_BOOLEAN csrRoamIs11rAssoc(tpAniSirGlobal pMac);
1230#endif
1231
1232#ifdef FEATURE_WLAN_CCX
1233//Returns whether the current association is a CCX assoc or not
1234tANI_BOOLEAN csrRoamIsCCXAssoc(tpAniSirGlobal pMac);
1235#endif
1236
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07001237//Remove this code once SLM_Sessionization is supported
1238//BMPS_WORKAROUND_NOT_NEEDED
Jeff Johnson295189b2012-06-20 16:38:30 -07001239void csrDisconnectAllActiveSessions(tpAniSirGlobal pMac);
Mohit Khanna349bc392012-09-11 17:24:52 -07001240
Jeff Johnson04dd8a82012-06-29 20:41:40 -07001241#ifdef FEATURE_WLAN_LFR
1242//Returns whether "Legacy Fast Roaming" is enabled...or not
Madan Mohan Koyyalamudi03aae5f2012-11-28 01:51:22 +05301243tANI_BOOLEAN csrRoamIsFastRoamEnabled(tpAniSirGlobal pMac, tANI_U32 sessionId);
Madan Mohan Koyyalamudi470d2cf2012-09-28 14:43:44 -07001244tANI_BOOLEAN csrIsChannelPresentInList( tANI_U8 *pChannelList, int numChannels, tANI_U8 channel );
1245VOS_STATUS csrAddToChannelListFront( tANI_U8 *pChannelList, int numChannels, tANI_U8 channel );
Jeff Johnson04dd8a82012-06-29 20:41:40 -07001246#endif
1247