blob: 6c929e5446069777d007a1f4905ce0618ec5c2d2 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala92f07d82013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
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/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 s a p A p i L i n k C n t l . C
45
46 OVERVIEW:
47
48 This software unit holds the implementation of the WLAN SAP modules
49 Link Control functions.
50
51 The functions externalized by this module are to be called ONLY by other
52 WLAN modules (HDD)
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2010 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header: /cygdrive/c/Dropbox/M7201JSDCAAPAD52240B/WM/platform/msm7200/Src/Drivers/SD/ClientDrivers/WLAN/QCT_SAP_PAL/CORE/SAP/src/sapApiLinkCntl.c,v 1.7 2008/12/18 19:44:11 jzmuda Exp jzmuda $$DateTime$$Author: jzmuda $
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
782010-03-15 Created module
79
80===========================================================================*/
81
82/*----------------------------------------------------------------------------
83 * Include Files
84 * -------------------------------------------------------------------------*/
85#include "vos_trace.h"
86// Pick up the CSR callback definition
87#include "csrApi.h"
88#include "sme_Api.h"
89// SAP Internal API header file
Ravi Joshiaeb7d9e2013-05-02 12:28:14 -070090#include "sapInternal.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070091
92/*----------------------------------------------------------------------------
93 * Preprocessor Definitions and Constants
94 * -------------------------------------------------------------------------*/
95#define SAP_DEBUG
96
97/*----------------------------------------------------------------------------
98 * Type Declarations
99 * -------------------------------------------------------------------------*/
100
101/*----------------------------------------------------------------------------
102 * Global Data Definitions
103 * -------------------------------------------------------------------------*/
104
105/*----------------------------------------------------------------------------
106 * Static Variable Definitions
107 * -------------------------------------------------------------------------*/
108
109/*----------------------------------------------------------------------------
110 * Static Function Declarations and Definitions
111 * -------------------------------------------------------------------------*/
112
113/*----------------------------------------------------------------------------
114 * Externalized Function Definitions
Ravi Joshiaeb7d9e2013-05-02 12:28:14 -0700115 * -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700116
117/*----------------------------------------------------------------------------
118 * Function Declarations and Documentation
119 * -------------------------------------------------------------------------*/
120
121/*==========================================================================
122 FUNCTION WLANSAP_ScanCallback()
123
124 DESCRIPTION
125 Callback for Scan (scan results) Events
126
127 DEPENDENCIES
128 NA.
129
130 PARAMETERS
131
132 IN
133 tHalHandle : tHalHandle passed in with the scan request
134 *pContext : The second context pass in for the caller (sapContext)
135 scanID : scanID got after the scan
136 status : Status of scan -success, failure or abort
137
138 RETURN VALUE
139 The eHalStatus code associated with performing the operation
140
141 eHAL_STATUS_SUCCESS: Success
142
143 SIDE EFFECTS
144============================================================================*/
145eHalStatus
146WLANSAP_ScanCallback
147(
148 tHalHandle halHandle,
149 void *pContext, /* Opaque SAP handle */
150 v_U32_t scanID,
151 eCsrScanStatus scanStatus
152)
153{
154 tScanResultHandle pResult = NULL;
155 eHalStatus scanGetResultStatus = eHAL_STATUS_FAILURE;
156 ptSapContext psapContext = (ptSapContext)pContext;
Gopichand Nakkala936715f2013-03-18 19:48:10 +0530157 void *pTempHddCtx;
Jeff Johnson295189b2012-06-20 16:38:30 -0700158 tWLAN_SAPEvent sapEvent; /* State machine event */
159 v_U8_t operChannel = 0;
160 VOS_STATUS sapstatus;
161#ifdef SOFTAP_CHANNEL_RANGE
162 v_U32_t operatingBand;
163#endif
164
165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
166
Gopichand Nakkala936715f2013-03-18 19:48:10 +0530167 pTempHddCtx = vos_get_context( VOS_MODULE_ID_HDD,
168 psapContext->pvosGCtx);
169 if (NULL == pTempHddCtx)
170 {
171 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_FATAL,
172 "HDD context is NULL");
173 return eHAL_STATUS_FAILURE;
174 }
175
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700176 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, before switch on scanStatus = %d", __func__, scanStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700177
178 switch (scanStatus)
179 {
180 case eCSR_SCAN_SUCCESS:
181 // sapScanCompleteCallback with eCSR_SCAN_SUCCESS
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700182 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR scanStatus = %s (%d)", __func__, "eCSR_SCAN_SUCCESS", scanStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700183
184 // Get scan results, Run channel selection algorithm, select channel and keep in pSapContext->Channel
185 scanGetResultStatus = sme_ScanGetResult(halHandle, 0, NULL, &pResult);
186
187 if ((NULL == pResult) || (scanGetResultStatus != eHAL_STATUS_SUCCESS))
188 {
189 // No scan results
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700190 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR, "In %s, sme_ScanGetResult = NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -0700191 break;
192 }
193
Madan Mohan Koyyalamudi5aef2af2012-10-05 11:56:27 -0700194 operChannel = sapSelectChannel(halHandle, psapContext, pResult);
195
Jeff Johnson295189b2012-06-20 16:38:30 -0700196 sme_ScanResultPurge(halHandle, pResult);
197 break;
198
199 default:
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700200 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR scanStatus = %s (%d)", __func__, "eCSR_SCAN_ABORT/FAILURE", scanStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700201 }
202
203 if (operChannel == SAP_CHANNEL_NOT_SELECTED)
204#ifdef SOFTAP_CHANNEL_RANGE
205 {
206 if(psapContext->channelList != NULL)
207 {
208 psapContext->channel = psapContext->channelList[0];
209 }
210 else
211 {
212 /* if the channel list is empty then there is no valid channel in
213 the selected sub-band so select default channel in the
214 BAND(2.4GHz/5GHZ) */
215 ccmCfgGetInt( halHandle, WNI_CFG_SAP_CHANNEL_SELECT_OPERATING_BAND, &operatingBand);
216 if(RF_SUBBAND_2_4_GHZ == operatingBand )
217 psapContext->channel = SAP_DEFAULT_CHANNEL;
218 else
219 psapContext->channel = SAP_DEFAULT_5GHZ_CHANNEL;
220
221 }
222 }
223#else
224 psapContext->channel = SAP_DEFAULT_CHANNEL;
225#endif
226 else
227 {
228 psapContext->channel = operChannel;
229 }
Gopichand Nakkala936715f2013-03-18 19:48:10 +0530230
Ravi Joshiaeb7d9e2013-05-02 12:28:14 -0700231 sme_SelectCBMode(halHandle,
232 sapConvertSapPhyModeToCsrPhyMode(psapContext->csrRoamProfile.phyMode),
233 psapContext->channel);
Jeff Johnson295189b2012-06-20 16:38:30 -0700234#ifdef SOFTAP_CHANNEL_RANGE
235 if(psapContext->channelList != NULL)
236 {
Ravi Joshiaeb7d9e2013-05-02 12:28:14 -0700237 /* Always free up the memory for channel selection whatever
Jeff Johnson295189b2012-06-20 16:38:30 -0700238 * the result */
239 vos_mem_free(psapContext->channelList);
240 psapContext->channelList = NULL;
241 }
242#endif
243
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700244 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, Channel selected = %d", __func__, psapContext->channel);
Jeff Johnson295189b2012-06-20 16:38:30 -0700245
246 /* Fill in the event structure */
247 sapEvent.event = eSAP_MAC_SCAN_COMPLETE;
248 sapEvent.params = 0; // pCsrRoamInfo;
249 sapEvent.u1 = scanStatus; // roamstatus
250 sapEvent.u2 = 0; // roamResult
251
252 /* Handle event */
253 sapstatus = sapFsm(psapContext, &sapEvent);
254
255 return sapstatus;
256}// WLANSAP_ScanCallback
257
258/*==========================================================================
259 FUNCTION WLANSAP_RoamCallback()
260
261 DESCRIPTION
262 Callback for Roam (connection status) Events
263
264 DEPENDENCIES
265 NA.
266
267 PARAMETERS
268
269 IN
270 pContext : pContext passed in with the roam request
271 pCsrRoamInfo : Pointer to a tCsrRoamInfo, see definition of eRoamCmdStatus and
272 eRoamCmdResult: For detail valid members. It may be NULL
273 roamId : To identify the callback related roam request. 0 means unsolicited
274 roamStatus : Flag indicating the status of the callback
275 roamResult : Result
276
277 RETURN VALUE
278 The eHalStatus code associated with performing the operation
279
280 eHAL_STATUS_SUCCESS: Success
281
282 SIDE EFFECTS
283============================================================================*/
284eHalStatus
285WLANSAP_RoamCallback
286(
287 void *pContext, /* Opaque SAP handle */
288 tCsrRoamInfo *pCsrRoamInfo,
289 v_U32_t roamId,
290 eRoamCmdStatus roamStatus,
291 eCsrRoamResult roamResult
292)
293{
294 /* sapContext value */
295 ptSapContext sapContext = (ptSapContext) pContext;
296 tWLAN_SAPEvent sapEvent; /* State machine event */
297 VOS_STATUS vosStatus = VOS_STATUS_SUCCESS;
298 eHalStatus halStatus = eHAL_STATUS_SUCCESS;
299
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700300 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, before switch on roamStatus = %d\n", __func__, roamStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700301 switch(roamStatus)
302 {
303 case eCSR_ROAM_SESSION_OPENED:
304 {
305 /* tHalHandle */
306 tHalHandle hHal = VOS_GET_HAL_CB(sapContext->pvosGCtx);
307
308 if (NULL == hHal)
309 {
310 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700311 "In %s invalid hHal", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 halStatus = eHAL_STATUS_FAILED_ALLOC;
313 }
314 else
315 {
316 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700317 "In %s calling sme_RoamConnect with eCSR_BSS_TYPE_INFRA_AP", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -0700318 sapContext->isSapSessionOpen = eSAP_TRUE;
319 halStatus = sme_RoamConnect(hHal, sapContext->sessionId,
320 &sapContext->csrRoamProfile,
321 &sapContext->csrRoamId);
322 }
323 break;
324 }
325
326 case eCSR_ROAM_INFRA_IND:
327 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamStatus = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700328 __func__, "eCSR_ROAM_INFRA_IND", roamStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700329 if(roamResult == eCSR_ROAM_RESULT_INFRA_START_FAILED)
330 {
331 /* Fill in the event structure */
332 sapEvent.event = eSAP_MAC_START_FAILS;
333 sapEvent.params = pCsrRoamInfo;
334 sapEvent.u1 = roamStatus;
335 sapEvent.u2 = roamResult;
336
337 /* Handle event */
338 vosStatus = sapFsm(sapContext, &sapEvent);
339 if(!VOS_IS_STATUS_SUCCESS(vosStatus))
340 {
341 halStatus = eHAL_STATUS_FAILURE;
342 }
343 }
344 break;
345
346 case eCSR_ROAM_LOSTLINK:
347 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamStatus = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700348 __func__, "eCSR_ROAM_LOSTLINK", roamStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700349 break;
350
351 case eCSR_ROAM_MIC_ERROR_IND:
352 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamStatus = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700353 __func__, "eCSR_ROAM_MIC_ERROR_IND", roamStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700354 break;
355
356 case eCSR_ROAM_SET_KEY_COMPLETE:
357 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamStatus = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700358 __func__, "eCSR_ROAM_SET_KEY_COMPLETE", roamStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700359 if (roamResult == eCSR_ROAM_RESULT_FAILURE )
360 {
361 /* Format the SET KEY complete information pass to HDD... */
362 sapSignalHDDevent(sapContext, pCsrRoamInfo, eSAP_STA_SET_KEY_EVENT,(v_PVOID_t) eSAP_STATUS_FAILURE);
363 }
364 break;
365
366 case eCSR_ROAM_REMOVE_KEY_COMPLETE:
367 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamStatus = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700368 __func__, "eCSR_ROAM_REMOVE_KEY_COMPLETE", roamStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700369 if (roamResult == eCSR_ROAM_RESULT_FAILURE )
370 {
371 /* Format the SET KEY complete information pass to HDD... */
372 sapSignalHDDevent(sapContext, pCsrRoamInfo, eSAP_STA_DEL_KEY_EVENT, (v_PVOID_t)eSAP_STATUS_FAILURE);
373 }
374 break;
375
376 case eCSR_ROAM_ASSOCIATION_COMPLETION:
377 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamStatus = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700378 __func__, "eCSR_ROAM_ASSOCIATION_COMPLETION", roamStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700379 if (roamResult == eCSR_ROAM_RESULT_FAILURE )
380 {
381 /* Format the SET KEY complete information pass to HDD... */
382 sapSignalHDDevent(sapContext, pCsrRoamInfo, eSAP_STA_REASSOC_EVENT, (v_PVOID_t)eSAP_STATUS_FAILURE);
383 }
384 break;
385
386 case eCSR_ROAM_DISASSOCIATED:
387 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamStatus = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700388 __func__, "eCSR_ROAM_DISASSOCIATED", roamStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700389 if (roamResult == eCSR_ROAM_RESULT_MIC_FAILURE)
390 {
391 /* Format the MIC failure event to return... */
392 sapSignalHDDevent(sapContext, pCsrRoamInfo, eSAP_STA_MIC_FAILURE_EVENT,(v_PVOID_t) eSAP_STATUS_FAILURE);
393 }
394 break;
395
396 case eCSR_ROAM_WPS_PBC_PROBE_REQ_IND:
397 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamStatus = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700398 __func__, "eCSR_ROAM_WPS_PBC_PROBE_REQ_IND", roamStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700399 break;
400
Jeff Johnson295189b2012-06-20 16:38:30 -0700401 case eCSR_ROAM_INDICATE_MGMT_FRAME:
402 sapSignalHDDevent(sapContext, pCsrRoamInfo,
403 eSAP_INDICATE_MGMT_FRAME,
404 (v_PVOID_t) eSAP_STATUS_SUCCESS);
405 break;
406 case eCSR_ROAM_REMAIN_CHAN_READY:
407 sapSignalHDDevent(sapContext, pCsrRoamInfo,
408 eSAP_REMAIN_CHAN_READY,
409 (v_PVOID_t) eSAP_STATUS_SUCCESS);
410 break;
411 case eCSR_ROAM_SEND_ACTION_CNF:
412 sapSignalHDDevent(sapContext, pCsrRoamInfo,
413 eSAP_SEND_ACTION_CNF,
414 (v_PVOID_t)(( roamResult == eCSR_ROAM_RESULT_NONE) ?
415 eSAP_STATUS_SUCCESS : eSAP_STATUS_FAILURE));
416 break;
Madan Mohan Koyyalamudi167b95e2012-11-27 15:53:38 -0800417
418 case eCSR_ROAM_DISCONNECT_ALL_P2P_CLIENTS:
419 sapSignalHDDevent(sapContext, pCsrRoamInfo,
420 eSAP_DISCONNECT_ALL_P2P_CLIENT,
421 (v_PVOID_t) eSAP_STATUS_SUCCESS );
422 break;
423
424 case eCSR_ROAM_SEND_P2P_STOP_BSS:
425 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, Received stopbss", __func__);
426 sapSignalHDDevent(sapContext, pCsrRoamInfo,
427 eSAP_MAC_TRIG_STOP_BSS_EVENT,
428 (v_PVOID_t) eSAP_STATUS_SUCCESS );
429 break;
Jeff Johnson295189b2012-06-20 16:38:30 -0700430
431 default:
432 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR, "In %s, CSR roamStatus not handled roamStatus = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700433 __func__, get_eRoamCmdStatus_str(roamStatus), roamStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -0700434 break;
435
436 }
437
438 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, before switch on roamResult = %d\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700439 __func__, roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700440
441 switch (roamResult)
442 {
443 case eCSR_ROAM_RESULT_INFRA_ASSOCIATION_IND:
444 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700445 __func__, "eCSR_ROAM_RESULT_INFRA_ASSOCIATION_IND", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700446 sapContext->nStaWPARSnReqIeLength = pCsrRoamInfo->rsnIELen;
447
448 if(sapContext->nStaWPARSnReqIeLength)
449 vos_mem_copy( sapContext->pStaWpaRsnReqIE,
450 pCsrRoamInfo->prsnIE, sapContext->nStaWPARSnReqIeLength);
451
452 sapContext->nStaAddIeLength = pCsrRoamInfo->addIELen;
453
454 if(sapContext->nStaAddIeLength)
455 vos_mem_copy( sapContext->pStaAddIE,
456 pCsrRoamInfo->paddIE, sapContext->nStaAddIeLength);
457
458 sapContext->SapQosCfg.WmmIsEnabled = pCsrRoamInfo->wmmEnabledSta;
459 // MAC filtering
460 vosStatus = sapIsPeerMacAllowed(sapContext, (v_U8_t *)pCsrRoamInfo->peerMac);
461
462 if ( VOS_STATUS_SUCCESS == vosStatus )
463 {
464 vosStatus = sapSignalHDDevent( sapContext, pCsrRoamInfo, eSAP_STA_ASSOC_IND, (v_PVOID_t)eSAP_STATUS_SUCCESS);
465 if(!VOS_IS_STATUS_SUCCESS(vosStatus))
466 {
467 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR,
468 "In %s, CSR roamResult = (%d) MAC"
469 "(%02X-%02X-%02X-%02X-%02X-%02X) fail",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700470 __func__, roamResult, pCsrRoamInfo->peerMac[0],
Jeff Johnson295189b2012-06-20 16:38:30 -0700471 pCsrRoamInfo->peerMac[1], pCsrRoamInfo->peerMac[2],
472 pCsrRoamInfo->peerMac[3], pCsrRoamInfo->peerMac[4],
473 pCsrRoamInfo->peerMac[5]);
474 halStatus = eHAL_STATUS_FAILURE;
475 }
476 }
477 else
478 {
479 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_WARN,
480 "In %s, CSR roamResult = (%d) MAC"
481 "(%02X-%02X-%02X-%02X-%02X-%02X) not allowed",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700482 __func__, roamResult, pCsrRoamInfo->peerMac[0],
Jeff Johnson295189b2012-06-20 16:38:30 -0700483 pCsrRoamInfo->peerMac[1], pCsrRoamInfo->peerMac[2],
484 pCsrRoamInfo->peerMac[3], pCsrRoamInfo->peerMac[4], pCsrRoamInfo->peerMac[5]);
485 halStatus = eHAL_STATUS_FAILURE;
486 }
487
488 break;
489
490 case eCSR_ROAM_RESULT_INFRA_ASSOCIATION_CNF:
491 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700492 __func__, "eCSR_ROAM_RESULT_INFRA_ASSOCIATION_CNF", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700493
494 sapContext->nStaWPARSnReqIeLength = pCsrRoamInfo->rsnIELen;
495 if (sapContext->nStaWPARSnReqIeLength)
496 vos_mem_copy( sapContext->pStaWpaRsnReqIE,
497 pCsrRoamInfo->prsnIE, sapContext->nStaWPARSnReqIeLength);
498
499 sapContext->nStaAddIeLength = pCsrRoamInfo->addIELen;
500 if(sapContext->nStaAddIeLength)
501 vos_mem_copy( sapContext->pStaAddIE,
502 pCsrRoamInfo->paddIE, sapContext->nStaAddIeLength);
503
504 sapContext->SapQosCfg.WmmIsEnabled = pCsrRoamInfo->wmmEnabledSta;
505 /* Fill in the event structure */
506 vosStatus = sapSignalHDDevent( sapContext, pCsrRoamInfo, eSAP_STA_ASSOC_EVENT, (v_PVOID_t)eSAP_STATUS_SUCCESS);
507 if(!VOS_IS_STATUS_SUCCESS(vosStatus))
508 {
509 halStatus = eHAL_STATUS_FAILURE;
510 }
511 break;
512
513 case eCSR_ROAM_RESULT_DISASSOC_IND:
514 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700515 __func__, "eCSR_ROAM_RESULT_DISASSOC_IND", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700516 /* Fill in the event structure */
517 vosStatus = sapSignalHDDevent( sapContext, pCsrRoamInfo, eSAP_STA_DISASSOC_EVENT, (v_PVOID_t)eSAP_STATUS_SUCCESS);
518 if(!VOS_IS_STATUS_SUCCESS(vosStatus))
519 {
520 halStatus = eHAL_STATUS_FAILURE;
521 }
522 break;
523
524 case eCSR_ROAM_RESULT_DEAUTH_IND:
525 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700526 __func__, "eCSR_ROAM_RESULT_DEAUTH_IND", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700527 /* Fill in the event structure */
528 //TODO: we will use the same event inorder to inform HDD to disassociate the station
529 vosStatus = sapSignalHDDevent( sapContext, pCsrRoamInfo, eSAP_STA_DISASSOC_EVENT, (v_PVOID_t)eSAP_STATUS_SUCCESS);
530 if(!VOS_IS_STATUS_SUCCESS(vosStatus))
531 {
532 halStatus = eHAL_STATUS_FAILURE;
533 }
534 break;
535
536 case eCSR_ROAM_RESULT_MIC_ERROR_GROUP:
537 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700538 __func__, "eCSR_ROAM_RESULT_MIC_ERROR_GROUP", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700539 /* Fill in the event structure */
540 //TODO: support for group key MIC failure event to be handled
541 vosStatus = sapSignalHDDevent( sapContext, pCsrRoamInfo, eSAP_STA_MIC_FAILURE_EVENT,(v_PVOID_t) NULL);
542 if(!VOS_IS_STATUS_SUCCESS(vosStatus))
543 {
544 halStatus = eHAL_STATUS_FAILURE;
545 }
546 break;
547
548 case eCSR_ROAM_RESULT_MIC_ERROR_UNICAST:
549 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700550 __func__, "eCSR_ROAM_RESULT_MIC_ERROR_UNICAST", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700551 /* Fill in the event structure */
552 //TODO: support for unicast key MIC failure event to be handled
553 vosStatus = sapSignalHDDevent( sapContext, pCsrRoamInfo, eSAP_STA_MIC_FAILURE_EVENT,(v_PVOID_t) NULL);
554 if(!VOS_IS_STATUS_SUCCESS(vosStatus))
555 {
556 halStatus = eHAL_STATUS_FAILURE;
557 }
558 break;
559
560 case eCSR_ROAM_RESULT_AUTHENTICATED:
561 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700562 __func__, "eCSR_ROAM_RESULT_AUTHENTICATED", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700563 /* Fill in the event structure */
564 sapSignalHDDevent( sapContext, pCsrRoamInfo,eSAP_STA_SET_KEY_EVENT, (v_PVOID_t)eSAP_STATUS_SUCCESS);
565 if(!VOS_IS_STATUS_SUCCESS(vosStatus))
566 {
567 halStatus = eHAL_STATUS_FAILURE;
568 }
569 break;
570
571 case eCSR_ROAM_RESULT_ASSOCIATED:
572 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700573 __func__, "eCSR_ROAM_RESULT_ASSOCIATED", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700574 /* Fill in the event structure */
575 sapSignalHDDevent( sapContext, pCsrRoamInfo,eSAP_STA_REASSOC_EVENT, (v_PVOID_t)eSAP_STATUS_SUCCESS);
576 break;
577
578 case eCSR_ROAM_RESULT_INFRA_STARTED:
579 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700580 __func__, "eCSR_ROAM_RESULT_INFRA_STARTED", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700581 /* Fill in the event structure */
582 sapEvent.event = eSAP_MAC_START_BSS_SUCCESS;
583 sapEvent.params = pCsrRoamInfo;
584 sapEvent.u1 = roamStatus;
585 sapEvent.u2 = roamResult;
586
587 /* Handle event */
588 vosStatus = sapFsm(sapContext, &sapEvent);
589 if(!VOS_IS_STATUS_SUCCESS(vosStatus))
590 {
591 halStatus = eHAL_STATUS_FAILURE;
592 }
593 break;
594
595 case eCSR_ROAM_RESULT_INFRA_STOPPED:
596 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700597 __func__, "eCSR_ROAM_RESULT_INFRA_STOPPED", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700598 /* Fill in the event structure */
599 sapEvent.event = eSAP_MAC_READY_FOR_CONNECTIONS;
600 sapEvent.params = pCsrRoamInfo;
601 sapEvent.u1 = roamStatus;
602 sapEvent.u2 = roamResult;
603
604 /* Handle event */
605 vosStatus = sapFsm(sapContext, &sapEvent);
606 if(!VOS_IS_STATUS_SUCCESS(vosStatus))
607 {
608 halStatus = eHAL_STATUS_FAILURE;
609 }
610 break;
611
612 case eCSR_ROAM_RESULT_WPS_PBC_PROBE_REQ_IND:
613 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700614 __func__, "eCSR_ROAM_RESULT_WPS_PBC_PROBE_REQ_IND", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700615 /* Fill in the event structure */
616 //TODO: support for group key MIC failure event to be handled
617 vosStatus = sapSignalHDDevent( sapContext, pCsrRoamInfo, eSAP_WPS_PBC_PROBE_REQ_EVENT,(v_PVOID_t) NULL);
618 if(!VOS_IS_STATUS_SUCCESS(vosStatus))
619 {
620 halStatus = eHAL_STATUS_FAILURE;
621 }
622 break;
623
624 case eCSR_ROAM_RESULT_FORCED:
625 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700626 __func__, "eCSR_ROAM_RESULT_FORCED", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700627 //This event can be used to inform hdd about user triggered disassoc event
628 /* Fill in the event structure */
629 sapSignalHDDevent( sapContext, pCsrRoamInfo, eSAP_STA_DISASSOC_EVENT, (v_PVOID_t)eSAP_STATUS_SUCCESS);
630 break;
631
632 case eCSR_ROAM_RESULT_NONE:
633 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700634 __func__, "eCSR_ROAM_RESULT_NONE", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700635 //This event can be used to inform hdd about user triggered disassoc event
636 /* Fill in the event structure */
637 if ( roamStatus == eCSR_ROAM_SET_KEY_COMPLETE)
638 {
639 sapSignalHDDevent( sapContext, pCsrRoamInfo,eSAP_STA_SET_KEY_EVENT,(v_PVOID_t) eSAP_STATUS_SUCCESS);
640 }
641 else if (roamStatus == eCSR_ROAM_REMOVE_KEY_COMPLETE )
642 {
643 sapSignalHDDevent( sapContext, pCsrRoamInfo,eSAP_STA_DEL_KEY_EVENT,(v_PVOID_t) eSAP_STATUS_SUCCESS);
644 }
645 break;
646
647 case eCSR_ROAM_RESULT_MAX_ASSOC_EXCEEDED:
648 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_INFO_HIGH, "In %s, CSR roamResult = %s (%d)\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700649 __func__, "eCSR_ROAM_RESULT_MAX_ASSOC_EXCEEDED", roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700650 /* Fill in the event structure */
651 vosStatus = sapSignalHDDevent(sapContext, pCsrRoamInfo, eSAP_MAX_ASSOC_EXCEEDED, (v_PVOID_t)NULL);
652 if(!VOS_IS_STATUS_SUCCESS(vosStatus))
653 {
654 halStatus = eHAL_STATUS_FAILURE;
655 }
656
657 break;
658 default:
659 VOS_TRACE( VOS_MODULE_ID_SAP, VOS_TRACE_LEVEL_ERROR, "In %s, CSR roamResult = %s (%d) not handled\n",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -0700660 __func__,get_eCsrRoamResult_str(roamResult),roamResult);
Jeff Johnson295189b2012-06-20 16:38:30 -0700661 break;
662 }
663
664 return halStatus;
665}