blob: ba77e4e9889685b2180f07b8f68419e894cdf478 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08002 * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
Kiet Lam0fb93dd2014-02-19 00:32:59 -08003 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080020 */
Kiet Lam0fb93dd2014-02-19 00:32:59 -080021
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028/** ------------------------------------------------------------------------- *
29 ------------------------------------------------------------------------- *
30
31
32 \file csrInsideApi.h
33
34 Define interface only used by CSR.
Jeff Johnson295189b2012-06-20 16:38:30 -070035 ========================================================================== */
36#ifndef CSR_INSIDE_API_H__
37#define CSR_INSIDE_API_H__
38
39
40#include "csrSupport.h"
41#include "smeInside.h"
42#include "vos_nvitem.h"
43
44#define CSR_PASSIVE_MAX_CHANNEL_TIME 110
45#define CSR_PASSIVE_MIN_CHANNEL_TIME 60
46
47#define CSR_ACTIVE_MAX_CHANNEL_TIME 40
48#define CSR_ACTIVE_MIN_CHANNEL_TIME 20
49
Kiran Kumar Lokere3527f0c2013-02-24 22:21:28 -080050#define CSR_ACTIVE_MAX_CHANNEL_TIME_BTC 120
51#define CSR_ACTIVE_MIN_CHANNEL_TIME_BTC 60
52
Jeff Johnson295189b2012-06-20 16:38:30 -070053#ifdef WLAN_AP_STA_CONCURRENCY
Madan Mohan Koyyalamudi4ff9cd62012-10-30 17:48:57 -070054#define CSR_PASSIVE_MAX_CHANNEL_TIME_CONC 110
55#define CSR_PASSIVE_MIN_CHANNEL_TIME_CONC 60
56
Jeff Johnson295189b2012-06-20 16:38:30 -070057#define CSR_ACTIVE_MAX_CHANNEL_TIME_CONC 27
58#define CSR_ACTIVE_MIN_CHANNEL_TIME_CONC 20
Madan Mohan Koyyalamudi4ff9cd62012-10-30 17:48:57 -070059
Madan Mohan Koyyalamudi4805fa82012-11-09 17:53:39 -080060#define CSR_REST_TIME_CONC 100
Vinay Malekal05fdc812012-12-17 13:04:30 -080061
Sudhir Sattayappa Kohallieb97d502013-05-22 23:16:42 -070062#define CSR_NUM_STA_CHAN_COMBINED_CONC 3
63#define CSR_NUM_P2P_CHAN_COMBINED_CONC 1
Jeff Johnson295189b2012-06-20 16:38:30 -070064#endif
65
66#define CSR_MAX_NUM_SUPPORTED_CHANNELS 55
67
Jeff Johnsone7245742012-09-05 17:12:55 -070068#define CSR_MAX_2_4_GHZ_SUPPORTED_CHANNELS 14
69
Madan Mohan Koyyalamudiceb8f252012-12-03 16:41:42 -080070#define CSR_MAX_BSS_SUPPORT 250
Srinivas Girigowda5cecb202013-10-08 09:13:25 -070071#define SYSTEM_TIME_MSEC_TO_USEC 1000
Jeff Johnson295189b2012-06-20 16:38:30 -070072
73//This number minus 1 means the number of times a channel is scanned before a BSS is remvoed from
74//cache scan result
75#define CSR_AGING_COUNT 3
76//The following defines are used by palTimer
77//This is used for palTimer when request to imps fails
78#define CSR_IDLE_SCAN_WAIT_TIME (1 * PAL_TIMER_TO_SEC_UNIT) //1 second
79//This is used for palTimer when imps ps is disabled
80//This number shall not be smaller than 5-6 seconds in general because a full scan may take 3-4 seconds
81#define CSR_IDLE_SCAN_NO_PS_INTERVAL (10 * PAL_TIMER_TO_SEC_UNIT) //10 second
82#define CSR_IDLE_SCAN_NO_PS_INTERVAL_MIN (5 * PAL_TIMER_TO_SEC_UNIT)
83#define CSR_SCAN_GET_RESULT_INTERVAL (5 * PAL_TIMER_TO_SEC_UNIT) //5 seconds
Jeff Johnson295189b2012-06-20 16:38:30 -070084#define CSR_MIC_ERROR_TIMEOUT (60 * PAL_TIMER_TO_SEC_UNIT) //60 seconds
85#define CSR_TKIP_COUNTER_MEASURE_TIMEOUT (60 * PAL_TIMER_TO_SEC_UNIT) //60 seconds
86#define CSR_SCAN_RESULT_AGING_INTERVAL (5 * PAL_TIMER_TO_SEC_UNIT) //5 seconds
Sandeep Puligilla2b6dc632012-12-17 14:44:16 -080087#define CSR_SCAN_RESULT_CFG_AGING_INTERVAL (PAL_TIMER_TO_SEC_UNIT) // 1 second
Jeff Johnson295189b2012-06-20 16:38:30 -070088//the following defines are NOT used by palTimer
89#define CSR_SCAN_AGING_TIME_NOT_CONNECT_NO_PS 50 //50 seconds
90#define CSR_SCAN_AGING_TIME_NOT_CONNECT_W_PS 300 //300 seconds
91#define CSR_SCAN_AGING_TIME_CONNECT_NO_PS 150 //150 seconds
92#define CSR_SCAN_AGING_TIME_CONNECT_W_PS 600 //600 seconds
93#define CSR_JOIN_FAILURE_TIMEOUT_DEFAULT ( 3000 )
Jeff Johnsone7245742012-09-05 17:12:55 -070094#define CSR_JOIN_FAILURE_TIMEOUT_MIN (1000) //minimal value
Jeff Johnson295189b2012-06-20 16:38:30 -070095//These are going against the signed RSSI (tANI_S8) so it is between -+127
96#define CSR_BEST_RSSI_VALUE (-30) //RSSI >= this is in CAT4
97#define CSR_DEFAULT_RSSI_DB_GAP 30 //every 30 dbm for one category
98#define CSR_BSS_CAP_VALUE_NONE 0 //not much value
99#define CSR_BSS_CAP_VALUE_HT 2
100#define CSR_BSS_CAP_VALUE_WMM 1
101#define CSR_BSS_CAP_VALUE_UAPSD 1
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800102#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
Madan Mohan Koyyalamudid5026072012-11-30 14:56:21 -0800103#define CSR_BSS_CAP_VALUE_5GHZ 1
104#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#define CSR_DEFAULT_ROAMING_TIME 10 //10 seconds
106#define CSR_ROAM_MIN(X, Y) ((X) < (Y) ? (X) : (Y))
107#define CSR_ROAM_MAX(X, Y) ((X) > (Y) ? (X) : (Y))
108
109#ifdef FEATURE_WLAN_BTAMP_UT_RF
110#define CSR_JOIN_MAX_RETRY_COUNT 10
111#define CSR_JOIN_RETRY_TIMEOUT_PERIOD ( 1 * PAL_TIMER_TO_SEC_UNIT ) // 1 second
112#endif
113
114typedef enum
115{
116 eCsrNextScanNothing,
117 eCsrNextLostLinkScan1Success,
118 eCsrNextLostLinkScan1Failed,
119 eCsrNextLostLinkScan2Success,
120 eCsrNextLostLinkScan2Failed,
121 eCsrNextLostLinkScan3Success,
122 eCsrNexteScanForSsidSuccess,
123 eCsrNextLostLinkScan3Failed,
124 eCsrNext11dScan1Failure,
125 eCsrNext11dScan1Success,
126 eCsrNext11dScan2Failure,
127 eCsrNext11dScan2Success,
128 eCsrNext11dScanComplete,
129 eCsrNexteScanForSsidFailure,
130 eCsrNextIdleScanComplete,
131 eCsrNextCapChangeScanComplete,
132
133}eCsrScanCompleteNextCommand;
134
135typedef enum
136{
137 eCsrJoinSuccess,
138 eCsrJoinFailure,
139 eCsrReassocSuccess,
140 eCsrReassocFailure,
141 eCsrNothingToJoin,
142 eCsrStartBssSuccess,
143 eCsrStartBssFailure,
144 eCsrSilentlyStopRoaming,
145 eCsrSilentlyStopRoamingSaveState,
146 eCsrJoinWdsFailure,
Jeff Johnsone7245742012-09-05 17:12:55 -0700147 eCsrJoinFailureDueToConcurrency,
Jeff Johnson295189b2012-06-20 16:38:30 -0700148
149}eCsrRoamCompleteResult;
150
151typedef struct tagScanReqParam
152{
153 tANI_U8 bReturnAfter1stMatch;
154 tANI_U8 fUniqueResult;
155 tANI_U8 freshScan;
156 tANI_U8 hiddenSsid;
157 tANI_U8 reserved;
158}tScanReqParam;
159
160typedef struct tagCsrScanResult
161{
162 tListElem Link;
163 tANI_S32 AgingCount; //This BSS is removed when it reaches 0 or less
164 tANI_U32 preferValue; //The bigger the number, the better the BSS. This value override capValue
165 tANI_U32 capValue; //The biggger the better. This value is in use only if we have equal preferValue
166 //This member must be the last in the structure because the end of tSirBssDescription (inside) is an
167 // array with nonknown size at this time
168
169 eCsrEncryptionType ucEncryptionType; //Preferred Encryption type that matched with profile.
170 eCsrEncryptionType mcEncryptionType;
171 eCsrAuthType authType; //Preferred auth type that matched with the profile.
172
173 tCsrScanResultInfo Result;
174}tCsrScanResult;
175
176typedef struct
177{
178 tDblLinkList List;
179 tListElem *pCurEntry;
180}tScanResultList;
181
182
183
184
185#define CSR_IS_ROAM_REASON( pCmd, reason ) ( (reason) == (pCmd)->roamCmd.roamReason )
186#define CSR_IS_BETTER_PREFER_VALUE(v1, v2) ((v1) > (v2))
187#define CSR_IS_EQUAL_PREFER_VALUE(v1, v2) ((v1) == (v2))
188#define CSR_IS_BETTER_CAP_VALUE(v1, v2) ((v1) > (v2))
189#define CSR_IS_ENC_TYPE_STATIC( encType ) ( ( eCSR_ENCRYPT_TYPE_NONE == (encType) ) || \
190 ( eCSR_ENCRYPT_TYPE_WEP40_STATICKEY == (encType) ) || \
191 ( eCSR_ENCRYPT_TYPE_WEP104_STATICKEY == (encType) ) )
192#define CSR_IS_WAIT_FOR_KEY( pMac, sessionId ) ( CSR_IS_ROAM_JOINED( pMac, sessionId ) && CSR_IS_ROAM_SUBSTATE_WAITFORKEY( pMac, sessionId ) )
193//WIFI has a test case for not using HT rates with TKIP as encryption
194//We may need to add WEP but for now, TKIP only.
195
196#define CSR_IS_11n_ALLOWED( encType ) (( eCSR_ENCRYPT_TYPE_TKIP != (encType) ) && \
197 ( eCSR_ENCRYPT_TYPE_WEP40_STATICKEY != (encType) ) && \
198 ( eCSR_ENCRYPT_TYPE_WEP104_STATICKEY != (encType) ) && \
199 ( eCSR_ENCRYPT_TYPE_WEP40 != (encType) ) && \
200 ( eCSR_ENCRYPT_TYPE_WEP104 != (encType) ) )
201
202eCsrRoamState csrRoamStateChange( tpAniSirGlobal pMac, eCsrRoamState NewRoamState, tANI_U8 sessionId);
203eHalStatus csrScanningStateMsgProcessor( tpAniSirGlobal pMac, void *pMsgBuf );
204void csrRoamingStateMsgProcessor( tpAniSirGlobal pMac, void *pMsgBuf );
205void csrRoamJoinedStateMsgProcessor( tpAniSirGlobal pMac, void *pMsgBuf );
206tANI_BOOLEAN csrScanComplete( tpAniSirGlobal pMac, tSirSmeScanRsp *pScanRsp );
207void csrReleaseCommandRoam(tpAniSirGlobal pMac, tSmeCmd *pCommand);
208void csrReleaseCommandScan(tpAniSirGlobal pMac, tSmeCmd *pCommand);
209void csrReleaseCommandWmStatusChange(tpAniSirGlobal pMac, tSmeCmd *pCommand);
210//pIes2 can be NULL
211tANI_BOOLEAN csrIsDuplicateBssDescription( tpAniSirGlobal pMac, tSirBssDescription *pSirBssDesc1,
Tushnim Bhattacharyya5128d752013-06-26 23:23:18 -0700212 tSirBssDescription *pSirBssDesc2, tDot11fBeaconIEs *pIes2, tANI_BOOLEAN fForced );
Jeff Johnson295189b2012-06-20 16:38:30 -0700213eHalStatus csrRoamSaveConnectedBssDesc( tpAniSirGlobal pMac, tANI_U32 sessionId, tSirBssDescription *pBssDesc );
214tANI_BOOLEAN csrIsNetworkTypeEqual( tSirBssDescription *pSirBssDesc1, tSirBssDescription *pSirBssDesc2 );
215eHalStatus csrScanSmeScanResponse( tpAniSirGlobal pMac, void *pMsgBuf );
216/*
217 Prepare a filter base on a profile for parsing the scan results.
218 Upon successful return, caller MUST call csrFreeScanFilter on
219 pScanFilter when it is done with the filter.
220*/
221eHalStatus csrRoamPrepareFilterFromProfile(tpAniSirGlobal pMac, tCsrRoamProfile *pProfile, tCsrScanResultFilter *pScanFilter);
222eHalStatus csrRoamCopyProfile(tpAniSirGlobal pMac, tCsrRoamProfile *pDstProfile, tCsrRoamProfile *pSrcProfile);
223eHalStatus csrRoamStart(tpAniSirGlobal pMac);
224void csrRoamStop(tpAniSirGlobal pMac, tANI_U32 sessionId);
225void csrRoamStartMICFailureTimer(tpAniSirGlobal pMac);
226void csrRoamStopMICFailureTimer(tpAniSirGlobal pMac);
227void csrRoamStartTKIPCounterMeasureTimer(tpAniSirGlobal pMac);
228void csrRoamStopTKIPCounterMeasureTimer(tpAniSirGlobal pMac);
229
230eHalStatus csrScanOpen(tpAniSirGlobal pMac);
231eHalStatus csrScanClose(tpAniSirGlobal pMac);
232eHalStatus csrScanRequestLostLink1( tpAniSirGlobal pMac, tANI_U32 sessionId );
233eHalStatus csrScanRequestLostLink2( tpAniSirGlobal pMac, tANI_U32 sessionId );
234eHalStatus csrScanRequestLostLink3( tpAniSirGlobal pMac, tANI_U32 sessionId );
235eHalStatus csrScanHandleFailedLostlink1(tpAniSirGlobal pMac, tANI_U32 sessionId);
236eHalStatus csrScanHandleFailedLostlink2(tpAniSirGlobal pMac, tANI_U32 sessionId);
237eHalStatus csrScanHandleFailedLostlink3(tpAniSirGlobal pMac, tANI_U32 sessionId);
Madan Mohan Koyyalamudica43cdf2012-09-24 13:15:49 -0700238tCsrScanResult *csrScanAppendBssDescription( tpAniSirGlobal pMac,
Jeff Johnson295189b2012-06-20 16:38:30 -0700239 tSirBssDescription *pSirBssDescription,
Tushnim Bhattacharyya5128d752013-06-26 23:23:18 -0700240 tDot11fBeaconIEs *pIes, tANI_BOOLEAN fForced);
Jeff Johnson295189b2012-06-20 16:38:30 -0700241void csrScanCallCallback(tpAniSirGlobal pMac, tSmeCmd *pCommand, eCsrScanStatus scanStatus);
242eHalStatus csrScanCopyRequest(tpAniSirGlobal pMac, tCsrScanRequest *pDstReq, tCsrScanRequest *pSrcReq);
243eHalStatus csrScanFreeRequest(tpAniSirGlobal pMac, tCsrScanRequest *pReq);
Madan Mohan Koyyalamudica43cdf2012-09-24 13:15:49 -0700244eHalStatus csrScanCopyResultList(tpAniSirGlobal pMac, tScanResultHandle hIn, tScanResultHandle *phResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700245void csrInitBGScanChannelList(tpAniSirGlobal pMac);
Varun Reddy Yeturucc661d22013-05-20 11:47:10 -0700246eHalStatus csrScanForSSID(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamProfile *pProfile, tANI_U32 roamId, tANI_BOOLEAN notify);
Jeff Johnson295189b2012-06-20 16:38:30 -0700247eHalStatus csrScanForCapabilityChange(tpAniSirGlobal pMac, tSirSmeApNewCaps *pNewCaps);
248eHalStatus csrScanStartGetResultTimer(tpAniSirGlobal pMac);
249eHalStatus csrScanStopGetResultTimer(tpAniSirGlobal pMac);
250eHalStatus csrScanStartResultAgingTimer(tpAniSirGlobal pMac);
251eHalStatus csrScanStopResultAgingTimer(tpAniSirGlobal pMac);
Sandeep Puligilla2b6dc632012-12-17 14:44:16 -0800252eHalStatus csrScanStartResultCfgAgingTimer(tpAniSirGlobal pMac);
253eHalStatus csrScanStopResultCfgAgingTimer(tpAniSirGlobal pMac);
Jeff Johnson295189b2012-06-20 16:38:30 -0700254eHalStatus csrScanBGScanEnable(tpAniSirGlobal pMac);
255eHalStatus csrScanStartIdleScanTimer(tpAniSirGlobal pMac, tANI_U32 interval);
256eHalStatus csrScanStopIdleScanTimer(tpAniSirGlobal pMac);
257eHalStatus csrScanStartIdleScan(tpAniSirGlobal pMac);
258//Param: pTimeInterval -- Caller allocated memory in return, if failed, to specify the nxt time interval for
259//idle scan timer interval
260//Return: Not success -- meaning it cannot start IMPS, caller needs to start a timer for idle scan
261eHalStatus csrScanTriggerIdleScan(tpAniSirGlobal pMac, tANI_U32 *pTimeInterval);
262void csrScanCancelIdleScan(tpAniSirGlobal pMac);
263void csrScanStopTimers(tpAniSirGlobal pMac);
264//This function will remove scan commands that are not related to association or IBSS
265tANI_BOOLEAN csrScanRemoveNotRoamingScanCommand(tpAniSirGlobal pMac);
266//To remove fresh scan commands from the pending queue
267tANI_BOOLEAN csrScanRemoveFreshScanCommand(tpAniSirGlobal pMac, tANI_U8 sessionId);
Srinivas, Dasari138af4f2014-02-07 11:13:45 +0530268eHalStatus csrScanAbortMacScan(tpAniSirGlobal pMac, tANI_U8 sessionId,
269 eCsrAbortReason reason);
Jeff Johnson295189b2012-06-20 16:38:30 -0700270void csrRemoveCmdFromPendingList(tpAniSirGlobal pMac, tDblLinkList *pList,
271 eSmeCommandType commandType );
Madan Mohan Koyyalamudiff3a7152013-06-13 14:47:55 +0530272void csrRemoveCmdWithSessionIdFromPendingList(tpAniSirGlobal pMac,
273 tANI_U8 sessionId,
274 tDblLinkList *pList,
275 eSmeCommandType commandType);
276eHalStatus csrScanAbortMacScanNotForConnect(tpAniSirGlobal pMac,
277 tANI_U8 sessionId);
Madan Mohan Koyyalamudide1b5bc2013-07-12 00:56:04 +0530278eHalStatus csrScanGetScanChannelInfo(tpAniSirGlobal pMac, tANI_U8 sessionId);
Jeff Johnson295189b2012-06-20 16:38:30 -0700279//To age out scan results base. tSmeGetScanChnRsp is a pointer returned by LIM that
280//has the information regarding scanned channels.
281//The logic is that whenever CSR add a BSS to scan result, it set the age count to
282//a value. This function deduct the age count if channelId matches the BSS' channelId
283//The BSS is remove if the count reaches 0.
Madan Mohan Koyyalamudica43cdf2012-09-24 13:15:49 -0700284eHalStatus csrScanAgeResults(tpAniSirGlobal pMac, tSmeGetScanChnRsp *pScanChnInfo);
Jeff Johnson295189b2012-06-20 16:38:30 -0700285
286//If fForce is TRUE we will save the new String that is learn't.
287//Typically it will be true in case of Join or user initiated ioctl
288tANI_BOOLEAN csrLearnCountryInformation( tpAniSirGlobal pMac, tSirBssDescription *pSirBssDesc,
289 tDot11fBeaconIEs *pIes, tANI_BOOLEAN fForce );
Madan Mohan Koyyalamudica43cdf2012-09-24 13:15:49 -0700290void csrApplyCountryInformation( tpAniSirGlobal pMac, tANI_BOOLEAN fForce );
Jeff Johnson295189b2012-06-20 16:38:30 -0700291void csrSetCfgScanControlList( tpAniSirGlobal pMac, tANI_U8 *countryCode, tCsrChannel *pChannelList );
292void csrReinitScanCmd(tpAniSirGlobal pMac, tSmeCmd *pCommand);
293void csrFreeScanResultEntry( tpAniSirGlobal pMac, tCsrScanResult *pResult );
294
295eHalStatus csrRoamCallCallback(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamInfo *pRoamInfo,
296 tANI_U32 roamId, eRoamCmdStatus u1, eCsrRoamResult u2);
297eHalStatus csrRoamIssueConnect(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamProfile *pProfile,
298 tScanResultHandle hBSSList,
299 eCsrRoamReason reason, tANI_U32 roamId,
300 tANI_BOOLEAN fImediate, tANI_BOOLEAN fClearScan);
301eHalStatus csrRoamIssueReassoc(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamProfile *pProfile,
302 tCsrRoamModifyProfileFields *pModProfileFields,
303 eCsrRoamReason reason, tANI_U32 roamId, tANI_BOOLEAN fImediate);
304void csrRoamComplete( tpAniSirGlobal pMac, eCsrRoamCompleteResult Result, void *Context );
305eHalStatus csrRoamIssueSetContextReq( tpAniSirGlobal pMac, tANI_U32 sessionId, eCsrEncryptionType EncryptType,
306 tSirBssDescription *pBssDescription,
307 tSirMacAddr *bssId, tANI_BOOLEAN addKey,
308 tANI_BOOLEAN fUnicast, tAniKeyDirection aniKeyDirection,
309 tANI_U8 keyId, tANI_U16 keyLength,
310 tANI_U8 *pKey, tANI_U8 paeRole );
311eHalStatus csrRoamProcessDisassocDeauth( tpAniSirGlobal pMac, tSmeCmd *pCommand,
312 tANI_BOOLEAN fDisassoc, tANI_BOOLEAN fMICFailure );
313eHalStatus csrRoamSaveConnectedInfomation(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamProfile *pProfile,
314 tSirBssDescription *pSirBssDesc, tDot11fBeaconIEs *pIes);
315void csrRoamCheckForLinkStatusChange( tpAniSirGlobal pMac, tSirSmeRsp *pSirMsg );
316void csrRoamStatsRspProcessor(tpAniSirGlobal pMac, tSirSmeRsp *pSirMsg);
317eHalStatus csrRoamIssueStartBss( tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamStartBssParams *pParam,
318 tCsrRoamProfile *pProfile, tSirBssDescription *pBssDesc, tANI_U32 roamId );
319eHalStatus csrRoamIssueStopBss( tpAniSirGlobal pMac, tANI_U32 sessionId, eCsrRoamSubState NewSubstate );
320tANI_BOOLEAN csrIsSameProfile(tpAniSirGlobal pMac, tCsrRoamConnectedProfile *pProfile1, tCsrRoamProfile *pProfile2);
321tANI_BOOLEAN csrIsRoamCommandWaiting(tpAniSirGlobal pMac);
322tANI_BOOLEAN csrIsRoamCommandWaitingForSession(tpAniSirGlobal pMac, tANI_U32 sessionId);
323tANI_BOOLEAN csrIsScanForRoamCommandActive( tpAniSirGlobal pMac );
324eRoamCmdStatus csrGetRoamCompleteStatus(tpAniSirGlobal pMac, tANI_U32 sessionId);
325//pBand can be NULL if caller doesn't need to get it
326//eCsrCfgDot11Mode csrRoamGetPhyModeBandForBss( tpAniSirGlobal pMac, eCsrPhyMode phyModeIn, tANI_U8 operationChn, eCsrBand *pBand );
327eHalStatus csrRoamIssueDisassociateCmd( tpAniSirGlobal pMac, tANI_U32 sessionId, eCsrRoamDisconnectReason reason );
328eHalStatus csrRoamDisconnectInternal(tpAniSirGlobal pMac, tANI_U32 sessionId, eCsrRoamDisconnectReason reason);
329//pCommand may be NULL
330void csrRoamRemoveDuplicateCommand(tpAniSirGlobal pMac, tANI_U32 sessionId, tSmeCmd *pCommand, eCsrRoamReason eRoamReason);
331
332eHalStatus csrSendJoinReqMsg( tpAniSirGlobal pMac, tANI_U32 sessionId, tSirBssDescription *pBssDescription,
Srinivas Girigowdac16730e2013-01-16 13:39:39 -0800333 tCsrRoamProfile *pProfile, tDot11fBeaconIEs *pIes, tANI_U16 messageType );
Jeff Johnson295189b2012-06-20 16:38:30 -0700334eHalStatus csrSendMBDisassocReqMsg( tpAniSirGlobal pMac, tANI_U32 sessionId, tSirMacAddr bssId, tANI_U16 reasonCode );
335eHalStatus csrSendMBDeauthReqMsg( tpAniSirGlobal pMac, tANI_U32 sessionId, tSirMacAddr bssId, tANI_U16 reasonCode );
336eHalStatus csrSendMBDisassocCnfMsg( tpAniSirGlobal pMac, tpSirSmeDisassocInd pDisassocInd );
337eHalStatus csrSendMBDeauthCnfMsg( tpAniSirGlobal pMac, tpSirSmeDeauthInd pDeauthInd );
338eHalStatus csrSendAssocCnfMsg( tpAniSirGlobal pMac, tpSirSmeAssocInd pAssocInd, eHalStatus status );
Jeff Johnson295189b2012-06-20 16:38:30 -0700339eHalStatus csrSendAssocIndToUpperLayerCnfMsg( tpAniSirGlobal pMac, tpSirSmeAssocInd pAssocInd, eHalStatus Halstatus, tANI_U8 sessionId );
Jeff Johnson295189b2012-06-20 16:38:30 -0700340eHalStatus csrSendMBStartBssReqMsg( tpAniSirGlobal pMac, tANI_U32 sessionId, eCsrRoamBssType bssType,
341 tCsrRoamStartBssParams *pParam, tSirBssDescription *pBssDesc );
342eHalStatus csrSendMBStopBssReqMsg( tpAniSirGlobal pMac, tANI_U32 sessionId );
Jeff Johnson295189b2012-06-20 16:38:30 -0700343
344tANI_BOOLEAN csrIsMacAddressEqual( tpAniSirGlobal pMac, tCsrBssid *pMacAddr1, tCsrBssid *pMacAddr2 );
345//Caller should put the BSS' ssid to fiedl bssSsid when comparing SSID for a BSS.
346tANI_BOOLEAN csrIsSsidMatch( tpAniSirGlobal pMac, tANI_U8 *ssid1, tANI_U8 ssid1Len, tANI_U8 *bssSsid,
347 tANI_U8 bssSsidLen, tANI_BOOLEAN fSsidRequired );
348tANI_BOOLEAN csrIsPhyModeMatch( tpAniSirGlobal pMac, tANI_U32 phyMode,
349 tSirBssDescription *pSirBssDesc, tCsrRoamProfile *pProfile,
350 eCsrCfgDot11Mode *pReturnCfgDot11Mode,
351 tDot11fBeaconIEs *pIes);
352tANI_BOOLEAN csrRoamIsChannelValid( tpAniSirGlobal pMac, tANI_U8 channel );
353
354//pNumChan is a caller allocated space with the sizeof pChannels
355eHalStatus csrGetCfgValidChannels(tpAniSirGlobal pMac, tANI_U8 *pChannels, tANI_U32 *pNumChan);
356void csrRoamCcmCfgSetCallback(tHalHandle hHal, tANI_S32 result);
357void csrScanCcmCfgSetCallback(tHalHandle hHal, tANI_S32 result);
358
Kiran4a17ebe2013-01-31 10:43:43 -0800359tPowerdBm csrGetCfgMaxTxPower (tpAniSirGlobal pMac, tANI_U8 channel);
360
Jeff Johnson295189b2012-06-20 16:38:30 -0700361//To free the last roaming profile
362void csrFreeRoamProfile(tpAniSirGlobal pMac, tANI_U32 sessionId);
363void csrFreeConnectBssDesc(tpAniSirGlobal pMac, tANI_U32 sessionId);
364eHalStatus csrMoveBssToHeadFromBSSID(tpAniSirGlobal pMac, tCsrBssid *bssid, tScanResultHandle hScanResult);
365tANI_BOOLEAN csrCheckPSReady(void *pv);
366void csrFullPowerCallback(void *pv, eHalStatus status);
367//to free memory allocated inside the profile structure
368void csrReleaseProfile(tpAniSirGlobal pMac, tCsrRoamProfile *pProfile);
369//To free memory allocated inside scanFilter
370void csrFreeScanFilter(tpAniSirGlobal pMac, tCsrScanResultFilter *pScanFilter);
Jeff Johnson295189b2012-06-20 16:38:30 -0700371eCsrCfgDot11Mode csrGetCfgDot11ModeFromCsrPhyMode(tCsrRoamProfile *pProfile, eCsrPhyMode phyMode, tANI_BOOLEAN fProprietary);
Jeff Johnson295189b2012-06-20 16:38:30 -0700372tANI_U32 csrTranslateToWNICfgDot11Mode(tpAniSirGlobal pMac, eCsrCfgDot11Mode csrDot11Mode);
373void csrSaveChannelPowerForBand( tpAniSirGlobal pMac, tANI_BOOLEAN fPopulate5GBand );
Gopichand Nakkalab9185f22012-12-21 08:03:42 -0800374void csrApplyChannelPowerCountryInfo( tpAniSirGlobal pMac, tCsrChannel *pChannelList, tANI_U8 *countryCode, tANI_BOOLEAN updateRiva);
Jeff Johnsone7245742012-09-05 17:12:55 -0700375void csrApplyPower2Current( tpAniSirGlobal pMac );
Srinivas Girigowda41c7c5f2013-10-21 19:01:38 -0700376void csrAssignRssiForCategory(tpAniSirGlobal pMac, tANI_S8 bestApRssi, tANI_U8 catOffset);
Jeff Johnson295189b2012-06-20 16:38:30 -0700377tANI_BOOLEAN csrIsMacAddressZero( tpAniSirGlobal pMac, tCsrBssid *pMacAddr );
378tANI_BOOLEAN csrIsMacAddressBroadcast( tpAniSirGlobal pMac, tCsrBssid *pMacAddr );
Madan Mohan Koyyalamudica43cdf2012-09-24 13:15:49 -0700379eHalStatus csrRoamRemoveConnectedBssFromScanCache(tpAniSirGlobal pMac, tCsrRoamConnectedProfile *pConnProfile);
Jeff Johnson295189b2012-06-20 16:38:30 -0700380eHalStatus csrRoamStartRoaming(tpAniSirGlobal pMac, tANI_U32 sessionId, eCsrRoamingReason roamingReason);
381//return a boolean to indicate whether roaming completed or continue.
382tANI_BOOLEAN csrRoamCompleteRoaming(tpAniSirGlobal pMac, tANI_U32 sessionId,
383 tANI_BOOLEAN fForce, eCsrRoamResult roamResult);
384void csrRoamCompletion(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamInfo *pRoamInfo, tSmeCmd *pCommand, eCsrRoamResult roamResult, tANI_BOOLEAN fSuccess);
385void csrRoamCancelRoaming(tpAniSirGlobal pMac, tANI_U32 sessionId);
Gopichand Nakkalab9185f22012-12-21 08:03:42 -0800386void csrResetCountryInformation( tpAniSirGlobal pMac, tANI_BOOLEAN fForce, tANI_BOOLEAN updateRiva );
Jeff Johnson295189b2012-06-20 16:38:30 -0700387void csrResetPMKIDCandidateList( tpAniSirGlobal pMac, tANI_U32 sessionId );
388#ifdef FEATURE_WLAN_WAPI
389void csrResetBKIDCandidateList( tpAniSirGlobal pMac, tANI_U32 sessionId );
390#endif /* FEATURE_WLAN_WAPI */
Jeff Johnsone7245742012-09-05 17:12:55 -0700391eHalStatus csrSaveToChannelPower2G_5G( tpAniSirGlobal pMac, tANI_U32 tableSize, tSirMacChanInfo *channelTable );
Jeff Johnson295189b2012-06-20 16:38:30 -0700392//Get the list of the base channels to scan for passively 11d info
393eHalStatus csrScanGetSupportedChannels( tpAniSirGlobal pMac );
394//To check whether a country code matches the one in the IE
395//Only check the first two characters, ignoring in/outdoor
396//pCountry -- caller allocated buffer contain the country code that is checking against
397//the one in pIes. It can be NULL.
398//caller must provide pIes, it cannot be NULL
399//This function always return TRUE if 11d support is not turned on.
400//pIes cannot be NULL
401tANI_BOOLEAN csrMatchCountryCode( tpAniSirGlobal pMac, tANI_U8 *pCountry, tDot11fBeaconIEs *pIes );
402eHalStatus csrRoamSetKey( tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamSetKey *pSetKey, tANI_U32 roamId );
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -0700403eHalStatus csrRoamOpenSession(tpAniSirGlobal pMac,
404 csrRoamCompleteCallback callback,
405 void *pContext, tANI_U8 *pSelfMacAddr,
406 tANI_U8 *pbSessionId);
Jeff Johnson295189b2012-06-20 16:38:30 -0700407//fSync: TRUE means cleanupneeds to handle synchronously.
408eHalStatus csrRoamCloseSession( tpAniSirGlobal pMac, tANI_U32 sessionId,
409 tANI_BOOLEAN fSync,
410 csrRoamSessionCloseCallback callback,
411 void *pContext );
412void csrCleanupSession(tpAniSirGlobal pMac, tANI_U32 sessionId);
413eHalStatus csrRoamGetSessionIdFromBSSID( tpAniSirGlobal pMac, tCsrBssid *bssid, tANI_U32 *pSessionId );
414eCsrCfgDot11Mode csrFindBestPhyMode( tpAniSirGlobal pMac, tANI_U32 phyMode );
415
416/* ---------------------------------------------------------------------------
417 \fn csrScanEnable
418 \brief Enable the scanning feature of CSR. It must be called before any scan request can be performed.
419 \param tHalHandle - HAL context handle
420 \return eHalStatus
421 -------------------------------------------------------------------------------*/
422eHalStatus csrScanEnable(tpAniSirGlobal);
423
424/* ---------------------------------------------------------------------------
425 \fn csrScanDisable
426 \brief Disableing the scanning feature of CSR. After this function return success, no scan is performed until
427a successfull to csrScanEnable
428 \param tHalHandle - HAL context handle
429 \return eHalStatus
430 -------------------------------------------------------------------------------*/
431eHalStatus csrScanDisable(tpAniSirGlobal);
432/* ---------------------------------------------------------------------------
433 \fn csrScanRequest
434 \brief Request a 11d or full scan.
435 \param pScanRequestID - pointer to an object to get back the request ID
436 \param callback - a callback function that scan calls upon finish, will not be called if csrScanRequest returns error
437 \param pContext - a pointer passed in for the callback
438 \return eHalStatus
439 -------------------------------------------------------------------------------*/
440eHalStatus csrScanRequest(tpAniSirGlobal, tANI_U16, tCsrScanRequest *,
441 tANI_U32 *pScanRequestID, csrScanCompleteCallback callback,
442 void *pContext);
443
444/* ---------------------------------------------------------------------------
445 \fn csrScanAbort
446 \brief If a scan request is abort, the scan complete callback will be called first before csrScanAbort returns.
447 \param pScanRequestID - The request ID returned from csrScanRequest
448 \return eHalStatus
449 -------------------------------------------------------------------------------*/
450eHalStatus csrScanAbort(tpAniSirGlobal, tANI_U32 scanRequestID);
451
452eHalStatus csrScanSetBGScanparams(tpAniSirGlobal, tCsrBGScanRequest *);
453eHalStatus csrScanBGScanAbort(tpAniSirGlobal);
454
455/* ---------------------------------------------------------------------------
456 \fn csrScanGetResult
457 \brief Return scan results.
458 \param pFilter - If pFilter is NULL, all cached results are returned
459 \param phResult - an object for the result.
460 \return eHalStatus
461 -------------------------------------------------------------------------------*/
Madan Mohan Koyyalamudica43cdf2012-09-24 13:15:49 -0700462eHalStatus csrScanGetResult(tpAniSirGlobal, tCsrScanResultFilter *pFilter, tScanResultHandle *phResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700463
464/* ---------------------------------------------------------------------------
465 \fn csrScanFlushResult
466 \brief Clear scan results.
467 \return eHalStatus
468 -------------------------------------------------------------------------------*/
Madan Mohan Koyyalamudica43cdf2012-09-24 13:15:49 -0700469eHalStatus csrScanFlushResult(tpAniSirGlobal);
Srinivas, Dasari42bf7702014-02-07 11:29:53 +0530470/* ---------------------------------------------------------------------------
471 * \fn csrScanFilterResults
472 * \brief Filter scan results based on valid channel list.
473 * \return eHalStatus
474 *-------------------------------------------------------------------------------
475 */
476eHalStatus csrScanFilterResults(tpAniSirGlobal pMac);
477
Madan Mohan Koyyalamudi5850f312012-11-27 19:00:25 +0530478eHalStatus csrScanFlushSelectiveResult(tpAniSirGlobal, v_BOOL_t flushP2P);
Jeff Johnson295189b2012-06-20 16:38:30 -0700479/* ---------------------------------------------------------------------------
480 \fn csrScanBGScanGetParam
481 \brief Returns the current background scan settings.
482 \return eHalStatus
483 -------------------------------------------------------------------------------*/
484eHalStatus csrScanBGScanGetParam(tpAniSirGlobal, tCsrBGScanRequest *);
485
486/* ---------------------------------------------------------------------------
487 \fn csrScanResultGetFirst
488 \brief Returns the first element of scan result.
489 \param hScanResult - returned from csrScanGetResult
490 \return tCsrScanResultInfo * - NULL if no result
491 -------------------------------------------------------------------------------*/
492tCsrScanResultInfo *csrScanResultGetFirst(tpAniSirGlobal, tScanResultHandle hScanResult);
493/* ---------------------------------------------------------------------------
494 \fn csrScanResultGetNext
495 \brief Returns the next element of scan result. It can be called without calling csrScanResultGetFirst first
496 \param hScanResult - returned from csrScanGetResult
497 \return Null if no result or reach the end
498 -------------------------------------------------------------------------------*/
499tCsrScanResultInfo *csrScanResultGetNext(tpAniSirGlobal, tScanResultHandle hScanResult);
500
501/* ---------------------------------------------------------------------------
502 \fn csrGetCountryCode
503 \brief this function is to get the country code current being used
504 \param pBuf - Caller allocated buffer with at least 3 bytes, upon success return, this has the country code
505 \param pbLen - Caller allocated, as input, it indicates the length of pBuf. Upon success return,
506 this contains the length of the data in pBuf
507 \return eHalStatus
508 -------------------------------------------------------------------------------*/
509eHalStatus csrGetCountryCode(tpAniSirGlobal pMac, tANI_U8 *pBuf, tANI_U8 *pbLen);
510
511/* ---------------------------------------------------------------------------
512 \fn csrSetCountryCode
513 \brief this function is to set the country code so channel/power setting matches the countrycode and
514 the domain it belongs to.
515 \param pCountry - Caller allocated buffer with at least 3 bytes specifying the country code
516 \param pfRestartNeeded - pointer to a caller allocated space. Upon successful return, it indicates whether
517 a restart is needed to apply the change
518 \return eHalStatus
519 -------------------------------------------------------------------------------*/
520eHalStatus csrSetCountryCode(tpAniSirGlobal pMac, tANI_U8 *pCountry, tANI_BOOLEAN *pfRestartNeeded);
521
522/* ---------------------------------------------------------------------------
523 \fn csrResetCountryCodeInformation
524 \brief this function is to reset the country code current being used back to EEPROM default
525 this includes channel list and power setting.
526 \param pfRestartNeeded - pointer to a caller allocated space. Upon successful return, it indicates whether
527 a restart is needed to apply the change
528 \return eHalStatus
529 -------------------------------------------------------------------------------*/
530eHalStatus csrResetCountryCodeInformation(tpAniSirGlobal pMac, tANI_BOOLEAN *pfRestartNeeded);
531
532/* ---------------------------------------------------------------------------
533 \fn csrGetSupportedCountryCode
534 \brief this function is to get a list of the country code current being supported
535 \param pBuf - Caller allocated buffer with at least 3 bytes, upon success return,
536 this has the country code list. 3 bytes for each country code. This may be NULL if
537 caller wants to know the needed bytes.
538 \param pbLen - Caller allocated, as input, it indicates the length of pBuf. Upon success return,
539 this contains the length of the data in pBuf
540 \return eHalStatus
541 -------------------------------------------------------------------------------*/
542eHalStatus csrGetSupportedCountryCode(tpAniSirGlobal pMac, tANI_U8 *pBuf, tANI_U32 *pbLen);
543
544/* ---------------------------------------------------------------------------
545 \fn csrSetRegulatoryDomain
546 \brief this function is to set the current regulatory domain.
547 This function must be called after CFG is downloaded and all the band/mode setting already passed into
548 CSR.
549 \param domainId - indicate the domain (defined in the driver) needs to set to.
550 See eRegDomainId for definition
551 \param pfRestartNeeded - pointer to a caller allocated space. Upon successful return, it indicates whether
552 a restart is needed to apply the change
553 \return eHalStatus
554 -------------------------------------------------------------------------------*/
555eHalStatus csrSetRegulatoryDomain(tpAniSirGlobal pMac, v_REGDOMAIN_t domainId, tANI_BOOLEAN *pfRestartNeeded);
556
557/* ---------------------------------------------------------------------------
558 \fn csrGetCurrentRegulatoryDomain
559 \brief this function is to get the current regulatory domain.
560 This function must be called after CFG is downloaded and all the band/mode setting already passed into
561 CSR.
562 \return eRegDomainId
563 -------------------------------------------------------------------------------*/
564v_REGDOMAIN_t csrGetCurrentRegulatoryDomain(tpAniSirGlobal pMac);
565
566/* ---------------------------------------------------------------------------
567 \fn csrGetRegulatoryDomainForCountry
568 \brief this function is to get the regulatory domain for a country.
569 This function must be called after CFG is downloaded and all the band/mode setting already passed into
570 CSR.
571 \param pCountry - Caller allocated buffer with at least 3 bytes specifying the country code
572 \param pDomainId - Caller allocated buffer to get the return domain ID upon success return. Can be NULL.
Kiet Lam6c583332013-10-14 05:37:09 +0530573 \param source - the source of country information.
Jeff Johnson295189b2012-06-20 16:38:30 -0700574 \return eHalStatus
575 -------------------------------------------------------------------------------*/
Kiet Lam6c583332013-10-14 05:37:09 +0530576eHalStatus csrGetRegulatoryDomainForCountry(tpAniSirGlobal pMac,
577 tANI_U8 *pCountry,
578 v_REGDOMAIN_t *pDomainId,
579 v_CountryInfoSource_t source);
Jeff Johnson295189b2012-06-20 16:38:30 -0700580
581
582tANI_BOOLEAN csrSave11dCountryString( tpAniSirGlobal pMac, tANI_U8 *pCountryCode, tANI_BOOLEAN fForce );
583
584//some support functions
585tANI_BOOLEAN csrIs11dSupported(tpAniSirGlobal pMac);
586tANI_BOOLEAN csrIs11hSupported(tpAniSirGlobal pMac);
587tANI_BOOLEAN csrIs11eSupported(tpAniSirGlobal pMac);
588tANI_BOOLEAN csrIsWmmSupported(tpAniSirGlobal pMac);
589tANI_BOOLEAN csrIsMCCSupported(tpAniSirGlobal pMac);
590
591//Upper layer to get the list of the base channels to scan for passively 11d info from csr
592eHalStatus csrScanGetBaseChannels( tpAniSirGlobal pMac, tCsrChannelInfo * pChannelInfo );
593//Return SUCCESS is the command is queued, failed
594eHalStatus csrQueueSmeCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand, tANI_BOOLEAN fHighPriority );
595tSmeCmd *csrGetCommandBuffer( tpAniSirGlobal pMac );
596void csrReleaseCommand(tpAniSirGlobal pMac, tSmeCmd *pCommand);
597#ifdef FEATURE_WLAN_WAPI
598tANI_BOOLEAN csrIsProfileWapi( tCsrRoamProfile *pProfile );
599#endif /* FEATURE_WLAN_WAPI */
600
601#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
602
603//Security
604#define WLAN_SECURITY_EVENT_SET_PTK_REQ 1
605#define WLAN_SECURITY_EVENT_SET_PTK_RSP 2
606#define WLAN_SECURITY_EVENT_SET_GTK_REQ 3
607#define WLAN_SECURITY_EVENT_SET_GTK_RSP 4
608#define WLAN_SECURITY_EVENT_REMOVE_KEY_REQ 5
609#define WLAN_SECURITY_EVENT_REMOVE_KEY_RSP 6
610#define WLAN_SECURITY_EVENT_PMKID_CANDIDATE_FOUND 7
611#define WLAN_SECURITY_EVENT_PMKID_UPDATE 8
612#define WLAN_SECURITY_EVENT_MIC_ERROR 9
613
614#define AUTH_OPEN 0
615#define AUTH_SHARED 1
616#define AUTH_WPA_EAP 2
617#define AUTH_WPA_PSK 3
618#define AUTH_WPA2_EAP 4
619#define AUTH_WPA2_PSK 5
620#ifdef FEATURE_WLAN_WAPI
621#define AUTH_WAPI_CERT 6
622#define AUTH_WAPI_PSK 7
623#endif /* FEATURE_WLAN_WAPI */
624
625#define ENC_MODE_OPEN 0
626#define ENC_MODE_WEP40 1
627#define ENC_MODE_WEP104 2
628#define ENC_MODE_TKIP 3
629#define ENC_MODE_AES 4
630#ifdef FEATURE_WLAN_WAPI
631#define ENC_MODE_SMS4 5 //WAPI
632#endif /* FEATURE_WLAN_WAPI */
633
634#define NO_MATCH 0
635#define MATCH 1
636
637#define WLAN_SECURITY_STATUS_SUCCESS 0
638#define WLAN_SECURITY_STATUS_FAILURE 1
639
640//Scan
641#define WLAN_SCAN_EVENT_ACTIVE_SCAN_REQ 1
642#define WLAN_SCAN_EVENT_ACTIVE_SCAN_RSP 2
643#define WLAN_SCAN_EVENT_PASSIVE_SCAN_REQ 3
644#define WLAN_SCAN_EVENT_PASSIVE_SCAN_RSP 4
645#define WLAN_SCAN_EVENT_HO_SCAN_REQ 5
646#define WLAN_SCAN_EVENT_HO_SCAN_RSP 6
647
648#define WLAN_SCAN_STATUS_SUCCESS 0
649#define WLAN_SCAN_STATUS_FAILURE 1
650#define WLAN_SCAN_STATUS_ABORT 2
651
652//Ibss
653#define WLAN_IBSS_EVENT_START_IBSS_REQ 0
654#define WLAN_IBSS_EVENT_START_IBSS_RSP 1
655#define WLAN_IBSS_EVENT_JOIN_IBSS_REQ 2
656#define WLAN_IBSS_EVENT_JOIN_IBSS_RSP 3
657#define WLAN_IBSS_EVENT_COALESCING 4
658#define WLAN_IBSS_EVENT_PEER_JOIN 5
659#define WLAN_IBSS_EVENT_PEER_LEAVE 6
660#define WLAN_IBSS_EVENT_STOP_REQ 7
661#define WLAN_IBSS_EVENT_STOP_RSP 8
662
663#define AUTO_PICK 0
664#define SPECIFIED 1
665
666#define WLAN_IBSS_STATUS_SUCCESS 0
667#define WLAN_IBSS_STATUS_FAILURE 1
668
669//11d
670#define WLAN_80211D_EVENT_COUNTRY_SET 0
671#define WLAN_80211D_EVENT_RESET 1
672
673#define WLAN_80211D_DISABLED 0
674#define WLAN_80211D_SUPPORT_MULTI_DOMAIN 1
675#define WLAN_80211D_NOT_SUPPORT_MULTI_DOMAIN 2
676
677int diagAuthTypeFromCSRType(eCsrAuthType authType);
678int diagEncTypeFromCSRType(eCsrEncryptionType encType);
679#endif //#ifdef FEATURE_WLAN_DIAG_SUPPORT_CSR
680/* ---------------------------------------------------------------------------
681 \fn csrScanResultPurge
682 \brief remove all items(tCsrScanResult) in the list and free memory for each item
683 \param hScanResult - returned from csrScanGetResult. hScanResult is considered gone by
684 calling this function and even before this function reutrns.
685 \return eHalStatus
686 -------------------------------------------------------------------------------*/
687eHalStatus csrScanResultPurge(tpAniSirGlobal pMac, tScanResultHandle hScanResult);
688
689
690///////////////////////////////////////////Common Scan ends
691
692/* ---------------------------------------------------------------------------
693 \fn csrRoamConnect
694 \brief To inititiate an association
695 \param pProfile - can be NULL to join to any open ones
696 \param hBssListIn - a list of BSS descriptor to roam to. It is returned from csrScanGetResult
697 \param pRoamId - to get back the request ID
698 \return eHalStatus
699 -------------------------------------------------------------------------------*/
700eHalStatus csrRoamConnect(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamProfile *pProfile,
701 tScanResultHandle hBssListIn, tANI_U32 *pRoamId);
702
703/* ---------------------------------------------------------------------------
704 \fn csrRoamReassoc
705 \brief To inititiate a re-association
706 \param pProfile - can be NULL to join the currently connected AP. In that
707 case modProfileFields should carry the modified field(s) which could trigger
708 reassoc
709 \param modProfileFields - fields which are part of tCsrRoamConnectedProfile
710 that might need modification dynamically once STA is up & running and this
711 could trigger a reassoc
712 \param pRoamId - to get back the request ID
713 \return eHalStatus
714 -------------------------------------------------------------------------------*/
715eHalStatus csrRoamReassoc(tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamProfile *pProfile,
716 tCsrRoamModifyProfileFields modProfileFields,
717 tANI_U32 *pRoamId);
718
719
720/* ---------------------------------------------------------------------------
721 \fn csrRoamReconnect
722 \brief To disconnect and reconnect with the same profile
723 \return eHalStatus. It returns fail if currently not connected
724 -------------------------------------------------------------------------------*/
725eHalStatus csrRoamReconnect(tpAniSirGlobal pMac, tANI_U32 sessionId);
726
727/* ---------------------------------------------------------------------------
728 \fn csrRoamSetPMKIDCache
729 \brief return the PMKID candidate list
730 \param pPMKIDCache - caller allocated buffer point to an array of tPmkidCacheInfo
731 \param numItems - a variable that has the number of tPmkidCacheInfo allocated
732 when retruning, this is either the number needed or number of items put into pPMKIDCache
733 \return eHalStatus - when fail, it usually means the buffer allocated is not big enough and pNumItems
734 has the number of tPmkidCacheInfo.
735 \Note: pNumItems is a number of tPmkidCacheInfo, not sizeof(tPmkidCacheInfo) * something
736 -------------------------------------------------------------------------------*/
737eHalStatus csrRoamSetPMKIDCache( tpAniSirGlobal pMac, tANI_U32 sessionId, tPmkidCacheInfo *pPMKIDCache, tANI_U32 numItems );
738
739/* ---------------------------------------------------------------------------
740 \fn csrRoamGetWpaRsnReqIE
741 \brief return the WPA or RSN IE CSR passes to PE to JOIN request or START_BSS request
742 \param pLen - caller allocated memory that has the length of pBuf as input. Upon returned, *pLen has the
743 needed or IE length in pBuf.
744 \param pBuf - Caller allocated memory that contain the IE field, if any, upon return
745 \return eHalStatus - when fail, it usually means the buffer allocated is not big enough
746 -------------------------------------------------------------------------------*/
747eHalStatus csrRoamGetWpaRsnReqIE(tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_U32 *pLen, tANI_U8 *pBuf);
748
749/* ---------------------------------------------------------------------------
750 \fn csrRoamGetWpaRsnRspIE
751 \brief return the WPA or RSN IE from the beacon or probe rsp if connected
752 \param pLen - caller allocated memory that has the length of pBuf as input. Upon returned, *pLen has the
753 needed or IE length in pBuf.
754 \param pBuf - Caller allocated memory that contain the IE field, if any, upon return
755 \return eHalStatus - when fail, it usually means the buffer allocated is not big enough
756 -------------------------------------------------------------------------------*/
757eHalStatus csrRoamGetWpaRsnRspIE(tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_U32 *pLen, tANI_U8 *pBuf);
758
759
760/* ---------------------------------------------------------------------------
761 \fn csrRoamGetNumPMKIDCache
762 \brief return number of PMKID cache entries
763 \return tANI_U32 - the number of PMKID cache entries
764 -------------------------------------------------------------------------------*/
765tANI_U32 csrRoamGetNumPMKIDCache(tpAniSirGlobal pMac, tANI_U32 sessionId);
766
767/* ---------------------------------------------------------------------------
768 \fn csrRoamGetPMKIDCache
769 \brief return PMKID cache from CSR
770 \param pNum - caller allocated memory that has the space of the number of pBuf tPmkidCacheInfo as input. Upon returned, *pNum has the
771 needed or actually number in tPmkidCacheInfo.
772 \param pPmkidCache - Caller allocated memory that contains PMKID cache, if any, upon return
773 \return eHalStatus - when fail, it usually means the buffer allocated is not big enough
774 -------------------------------------------------------------------------------*/
775eHalStatus csrRoamGetPMKIDCache(tpAniSirGlobal pMac, tANI_U32 sessionId,
776 tANI_U32 *pNum, tPmkidCacheInfo *pPmkidCache);
777
778/* ---------------------------------------------------------------------------
779 \fn csrRoamGetConnectProfile
780 \brief To return the current connect profile. Caller must call csrRoamFreeConnectProfile
781 after it is done and before reuse for another csrRoamGetConnectProfile call.
782 \param pProfile - pointer to a caller allocated structure tCsrRoamConnectedProfile
783 \return eHalStatus. Failure if not connected
784 -------------------------------------------------------------------------------*/
785eHalStatus csrRoamGetConnectProfile(tpAniSirGlobal pMac, tANI_U32 sessionId,
786 tCsrRoamConnectedProfile *pProfile);
787
788/* ---------------------------------------------------------------------------
789 \fn csrRoamGetConnectState
790 \brief To return the current connect state of Roaming
791 \return eHalStatus
792 -------------------------------------------------------------------------------*/
793eHalStatus csrRoamGetConnectState(tpAniSirGlobal pMac, tANI_U32 sessionId, eCsrConnectState *pState);
794
795/* ---------------------------------------------------------------------------
796 \fn csrRoamFreeConnectProfile
797 \brief To free and reinitialize the profile return previous by csrRoamGetConnectProfile.
798 \param pProfile - pointer to a caller allocated structure tCsrRoamConnectedProfile
799 \return eHalStatus.
800 -------------------------------------------------------------------------------*/
801eHalStatus csrRoamFreeConnectProfile(tpAniSirGlobal pMac, tCsrRoamConnectedProfile *pProfile);
802
803/* ---------------------------------------------------------------------------
804 \fn csrInitChannelList
805 \brief HDD calls this function to set the WNI_CFG_VALID_CHANNEL_LIST base on the band/mode settings.
806 This function must be called after CFG is downloaded and all the band/mode setting already passed into
807 CSR.
808 \return eHalStatus
809 -------------------------------------------------------------------------------*/
810eHalStatus csrInitChannelList( tHalHandle hHal );
811
812/* ---------------------------------------------------------------------------
813 \fn csrChangeConfigParams
814 \brief The CSR API exposed for HDD to provide config params to CSR during
815 SMEs stop -> start sequence.
816 If HDD changed the domain that will cause a reset. This function will
817 provide the new set of 11d information for the new domain. Currrently this
818 API provides info regarding 11d only at reset but we can extend this for
819 other params (PMC, QoS) which needs to be initialized again at reset.
820 \param
821 hHal - Handle to the HAL. The HAL handle is returned by the HAL after it is
822 opened (by calling halOpen).
823 pUpdateConfigParam - a pointer to a structure (tCsrUpdateConfigParam) that
824 currently provides 11d related information like Country code,
825 Regulatory domain, valid channel list, Tx power per channel, a
826 list with active/passive scan allowed per valid channel.
827
828 \return eHalStatus
829 ---------------------------------------------------------------------------*/
830eHalStatus csrChangeConfigParams(tpAniSirGlobal pMac,
831 tCsrUpdateConfigParam *pUpdateConfigParam);
832
833/* ---------------------------------------------------------------------------
834 \fn csrRoamConnectToLastProfile
835 \brief To disconnect and reconnect with the same profile
836 \return eHalStatus. It returns fail if currently connected
837 -------------------------------------------------------------------------------*/
838eHalStatus csrRoamConnectToLastProfile(tpAniSirGlobal pMac, tANI_U32 sessionId);
839
840/* ---------------------------------------------------------------------------
841 \fn csrRoamDisconnect
842 \brief To disconnect from a network
843 \param reason -- To indicate the reason for disconnecting. Currently, only eCSR_DISCONNECT_REASON_MIC_ERROR is meanful.
844 \return eHalStatus
845 -------------------------------------------------------------------------------*/
846eHalStatus csrRoamDisconnect(tpAniSirGlobal pMac, tANI_U32 sessionId, eCsrRoamDisconnectReason reason);
847
848/* ---------------------------------------------------------------------------
849 \fn csrScanGetPMKIDCandidateList
850 \brief return the PMKID candidate list
851 \param pPmkidList - caller allocated buffer point to an array of tPmkidCandidateInfo
852 \param pNumItems - pointer to a variable that has the number of tPmkidCandidateInfo allocated
853 when retruning, this is either the number needed or number of items put into pPmkidList
854 \return eHalStatus - when fail, it usually means the buffer allocated is not big enough and pNumItems
855 has the number of tPmkidCandidateInfo.
856 \Note: pNumItems is a number of tPmkidCandidateInfo, not sizeof(tPmkidCandidateInfo) * something
857 -------------------------------------------------------------------------------*/
858eHalStatus csrScanGetPMKIDCandidateList(tpAniSirGlobal pMac, tANI_U32 sessionId,
859 tPmkidCandidateInfo *pPmkidList, tANI_U32 *pNumItems );
860
861//This function is used to stop a BSS. It is similar of csrRoamIssueDisconnect but this function
862//doesn't have any logic other than blindly trying to stop BSS
863eHalStatus csrRoamIssueStopBssCmd( tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_BOOLEAN fHighPriority );
864
865void csrCallRoamingCompletionCallback(tpAniSirGlobal pMac, tCsrRoamSession *pSession,
866 tCsrRoamInfo *pRoamInfo, tANI_U32 roamId, eCsrRoamResult roamResult);
867
Jeff Johnson295189b2012-06-20 16:38:30 -0700868/* ---------------------------------------------------------------------------
869 \fn csrRoamIssueDisassociateStaCmd
870 \brief csr function that HDD calls to disassociate a associated station
871 \param sessionId - session Id for Soft AP
872 \param pPeerMacAddr - MAC of associated station to delete
873 \param reason - reason code, be one of the tSirMacReasonCodes
874 \return eHalStatus
875 ---------------------------------------------------------------------------*/
876eHalStatus csrRoamIssueDisassociateStaCmd( tpAniSirGlobal pMac,
877 tANI_U32 sessionId,
878 tANI_U8 *pPeerMacAddr,
879 tANI_U32 reason);
880
881/* ---------------------------------------------------------------------------
882 \fn csrRoamIssueDeauthSta
883 \brief csr function that HDD calls to delete a associated station
884 \param sessionId - session Id for Soft AP
885 \param pPeerMacAddr - MAC of associated station to delete
886 \param reason - reason code, be one of the tSirMacReasonCodes
887 \return eHalStatus
888 ---------------------------------------------------------------------------*/
889eHalStatus csrRoamIssueDeauthStaCmd( tpAniSirGlobal pMac,
890 tANI_U32 sessionId,
891 tANI_U8 *pPeerMacAddr,
892 tANI_U32 reason);
893
894/* ---------------------------------------------------------------------------
895 \fn csrRoamIssueTkipCounterMeasures
896 \brief csr function that HDD calls to start and stop tkip countermeasures
897 \param sessionId - session Id for Soft AP
898 \param bEnable - Flag to start/stop countermeasures
899 \return eHalStatus
900 ---------------------------------------------------------------------------*/
901eHalStatus csrRoamIssueTkipCounterMeasures( tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_BOOLEAN bEnable);
902
903eHalStatus csrSendMBTkipCounterMeasuresReqMsg( tpAniSirGlobal pMac, tANI_U32 sessinId, tANI_BOOLEAN bEnable, tSirMacAddr bssId );
904
905/* ---------------------------------------------------------------------------
906 \fn csrRoamGetAssociatedStas
907 \brief csr function that HDD calls to get list of associated stations based on module ID
908 \param sessionId - session Id for Soft AP
909 \param modId - module ID - PE/HAL/TL
910 \param pUsrContext - Opaque HDD context
911 \param pfnSapEventCallback - Sap event callback in HDD
912 \param pAssocStasBuf - Caller allocated memory to be filled with associatd stations info
913 \return eHalStatus
914 ---------------------------------------------------------------------------*/
915eHalStatus csrRoamGetAssociatedStas( tpAniSirGlobal pMac, tANI_U32 sessionId, VOS_MODULE_ID modId,
916 void *pUsrContext, void *pfnSapEventCallback, tANI_U8 *pAssocStasBuf );
917
918eHalStatus csrSendMBGetAssociatedStasReqMsg( tpAniSirGlobal pMac, tANI_U32 sessionId, VOS_MODULE_ID modId, tSirMacAddr bssId,
919 void *pUsrContext, void *pfnSapEventCallback, tANI_U8 *pAssocStasBuf );
920
921/* ---------------------------------------------------------------------------
922 \fn csrRoamGetWpsSessionOverlap
923 \brief csr function that HDD calls to get WPS PBC session overlap information
924 \param sessionId - session Id for Soft AP
925 \param pUsrContext - Opaque HDD context
926 \param pfnSapEventCallback - Sap event callback in HDD
927 \param pRemoveMac - pointer to MAC address of session to be removed
928 \return eHalStatus
929 ---------------------------------------------------------------------------*/
930eHalStatus csrRoamGetWpsSessionOverlap( tpAniSirGlobal pMac, tANI_U32 sessionId,
931 void *pUsrContext, void *pfnSapEventCallback,v_MACADDR_t pRemoveMac );
932
933eHalStatus csrSendMBGetWPSPBCSessions( tpAniSirGlobal pMac, tANI_U32 sessionId,
934 tSirMacAddr bssId, void *pUsrContext, void *pfnSapEventCallback,v_MACADDR_t pRemoveMac);
Madan Mohan Koyyalamudi167b95e2012-11-27 15:53:38 -0800935
936/* ---------------------------------------------------------------------------
937 \fn csrSendChngMCCBeaconInterval
938 \brief csr function that HDD calls to send Update beacon interval
939 \param sessionId - session Id for Soft AP
940 \return eHalStatus
941 ---------------------------------------------------------------------------*/
942eHalStatus
943csrSendChngMCCBeaconInterval(tpAniSirGlobal pMac, tANI_U32 sessionId);
944
Jeff Johnson295189b2012-06-20 16:38:30 -0700945#ifdef FEATURE_WLAN_BTAMP_UT_RF
946eHalStatus csrRoamStartJoinRetryTimer(tpAniSirGlobal pMac, tANI_U32 sessionId, tANI_U32 interval);
947eHalStatus csrRoamStopJoinRetryTimer(tpAniSirGlobal pMac, tANI_U32 sessionId);
948#endif
949#ifdef WLAN_FEATURE_VOWIFI_11R
950/* ---------------------------------------------------------------------------
951 \fn csrRoamFTPreAuthRspProcessor
952 \brief csr function that handles pre auth response from LIM
953 ---------------------------------------------------------------------------*/
954void csrRoamFTPreAuthRspProcessor( tHalHandle hHal, tpSirFTPreAuthRsp pFTPreAuthRsp );
955#endif
956
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800957#if defined(FEATURE_WLAN_ESE) && !defined(FEATURE_WLAN_ESE_UPLOAD)
958void csrEseSendAdjacentApRepMsg(tpAniSirGlobal pMac, tCsrRoamSession *pSession);
Jeff Johnson295189b2012-06-20 16:38:30 -0700959#endif
Jeff Johnsond13512a2012-07-17 11:42:19 -0700960
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800961#if defined(FEATURE_WLAN_ESE)
Srinivas Girigowda5cecb202013-10-08 09:13:25 -0700962void UpdateCCKMTSF(tANI_U32 *timeStamp0, tANI_U32 *timeStamp1, tANI_U32 *incr);
963#endif
964
Jeff Johnsond13512a2012-07-17 11:42:19 -0700965eHalStatus csrGetDefaultCountryCodeFrmNv(tpAniSirGlobal pMac, tANI_U8 *pCountry);
966eHalStatus csrGetCurrentCountryCode(tpAniSirGlobal pMac, tANI_U8 *pCountry);
967
Madan Mohan Koyyalamudi286b60e2012-10-11 12:59:07 -0700968
969eHalStatus csrRoamEnqueuePreauth(tpAniSirGlobal pMac, tANI_U32 sessionId, tpSirBssDescription pBssDescription,
970 eCsrRoamReason reason, tANI_BOOLEAN fImmediate);
971eHalStatus csrRoamDequeuePreauth(tpAniSirGlobal pMac);
Madan Mohan Koyyalamudidd3c9662012-11-09 17:39:30 -0800972#ifdef FEATURE_WLAN_LFR
973void csrInitOccupiedChannelsList(tpAniSirGlobal pMac);
974tANI_BOOLEAN csrNeighborRoamIsNewConnectedProfile(tpAniSirGlobal pMac);
975tANI_BOOLEAN csrNeighborRoamConnectedProfileMatch(tpAniSirGlobal pMac, tCsrScanResult *pResult,
976 tDot11fBeaconIEs *pIes);
977#endif
schang86c22c42013-03-13 18:41:24 -0700978eHalStatus csrSetTxPower(tpAniSirGlobal pMac, v_U8_t sessionId, v_U8_t mW);
Sandeep Puligilla332ea912014-02-04 00:16:24 +0530979eHalStatus csrHT40StopOBSSScan(tpAniSirGlobal pMac, v_U8_t sessionId);
Varun Reddy Yeturucc661d22013-05-20 11:47:10 -0700980
981eHalStatus csrScanCreateEntryInScanCache(tpAniSirGlobal pMac, tANI_U32 sessionId,
982 tCsrBssid bssid, tANI_U8 channel);
Gopichand Nakkalaf72a3872013-06-11 17:51:13 +0530983
Leela Venkata Kiran Kumar Reddy Chiralac6663f72014-02-03 21:04:58 -0800984eHalStatus csrUpdateChannelList(tpAniSirGlobal pMac);
Leela Venkata Kiran Kumar Reddy Chiralaede10652013-09-11 18:48:46 -0700985eHalStatus csrRoamDelPMKIDfromCache( tpAniSirGlobal pMac, tANI_U32 sessionId,
986 tANI_U8 *pBSSId );
Jeff Johnson295189b2012-06-20 16:38:30 -0700987#endif
988