blob: 4b213db7ff29f35ac0a4e204ed02b5a6cc056534 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-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 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 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$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#include "pttMsgApi.h"
Srikant Kuppa17ef2a62013-08-29 15:27:56 -0700106#include "vos_trace.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700107
108/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700109 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700110 ===========================================================================*/
111#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
112
Jeff Johnsone7245742012-09-05 17:12:55 -0700113#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
114#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
115
Yue Ma70627492013-03-28 11:33:46 -0700116#define FEATURE_NOT_SUPPORTED 127
Jeff Johnson295189b2012-06-20 16:38:30 -0700117
118#ifdef FEATURE_WLAN_SCAN_PNO
119#define WDI_PNO_VERSION_MASK 0x8000
120#endif
121
122/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700123static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700124/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700125static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700126/* array of features supported. Need to add a new feature
127 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
128 */
129static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800130 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800131#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700132 ,SAP32STA //5
Yathishd8713192012-12-10 14:21:35 -0800133#else
134 ,FEATURE_NOT_SUPPORTED
135#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800136#ifdef FEATURE_WLAN_TDLS
Ravi Joshi96d77342013-07-23 08:37:49 -0700137 ,TDLS //6
Yathishd8713192012-12-10 14:21:35 -0800138#else
139 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800140#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700141 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathishd8713192012-12-10 14:21:35 -0800142#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshi96d77342013-07-23 08:37:49 -0700143 ,WLANACTIVE_OFFLOAD //8
Yathishd8713192012-12-10 14:21:35 -0800144#else
145 ,FEATURE_NOT_SUPPORTED
146#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700147 ,FEATURE_NOT_SUPPORTED //9
148 ,FEATURE_NOT_SUPPORTED //10
149 ,FEATURE_NOT_SUPPORTED //11
150 ,FEATURE_NOT_SUPPORTED //12
151 ,FEATURE_NOT_SUPPORTED //13
152 ,FEATURE_NOT_SUPPORTED //14
153 ,FEATURE_NOT_SUPPORTED //15
154 ,FEATURE_NOT_SUPPORTED //16
155 ,FEATURE_NOT_SUPPORTED //17
156 ,FEATURE_NOT_SUPPORTED //18
157 ,FEATURE_NOT_SUPPORTED //19
158 ,FEATURE_NOT_SUPPORTED //20
159 ,FEATURE_NOT_SUPPORTED //21
Yue Mae2e09da2013-08-26 10:59:03 -0700160 ,WOW //22
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700161#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Mae2e09da2013-08-26 10:59:03 -0700162 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700163#else
164 ,FEATURE_NOT_SUPPORTED
165#endif
Ravi Joshi96d77342013-07-23 08:37:49 -0700166 ,FEATURE_NOT_SUPPORTED //24
167 ,FEATURE_NOT_SUPPORTED //25
168 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Mae2e09da2013-08-26 10:59:03 -0700169 ,FEATURE_NOT_SUPPORTED //27
170 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudi5aa244c2013-09-13 19:36:52 +0530171#ifdef FEATURE_WLAN_TDLS
172 ,ADVANCE_TDLS //29
173#else
174 ,FEATURE_NOT_SUPPORTED //29
175#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800176 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700177
178/*--------------------------------------------------------------------------
179 WLAN DAL State Machine
180 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700181WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700182{
183 /*WDI_INIT_ST*/
184 {{
185 WDI_MainStart, /*WDI_START_EVENT*/
186 NULL, /*WDI_STOP_EVENT*/
187 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
188 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
189 WDI_MainClose, /*WDI_CLOSE_EVENT*/
190 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
191 }},
192
193 /*WDI_STARTED_ST*/
194 {{
195 WDI_MainStartStarted, /*WDI_START_EVENT*/
196 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
197 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
198 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
199 NULL, /*WDI_CLOSE_EVENT*/
200 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
201 }},
202
203 /*WDI_STOPPED_ST*/
204 {{
205 WDI_MainStart, /*WDI_START_EVENT*/
206 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
207 NULL, /*WDI_REQUEST_EVENT*/
208 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
209 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700210 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700211 }},
212
213 /*WDI_BUSY_ST*/
214 {{
215 WDI_MainStartBusy, /*WDI_START_EVENT*/
216 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
217 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
218 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
219 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
220 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
221 }}
222};
223
Jeff Johnsone7245742012-09-05 17:12:55 -0700224/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700225 DAL Request Processing Array - the functions in this table will only be
226 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700227 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700228 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700229WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700230{
231 /*INIT*/
232 WDI_ProcessStartReq, /* WDI_START_REQ */
233 WDI_ProcessStopReq, /* WDI_STOP_REQ */
234 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
235
236 /*SCAN*/
237 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
238 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
239 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
240 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
241
242 /*ASSOCIATION*/
243 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
244 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
245 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
246 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
247 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
248
249 /* Security */
250 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
251 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
252 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
253 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
254
255 /* QoS and BA APIs */
256 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
257 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
258 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
259 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
260 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
261
262 /* Miscellaneous Control APIs */
263 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
264 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
265 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
266 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
267 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
268
269 /*BA APIs*/
270 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
271 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
272
273 /*Beacon processing APIs*/
274 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
275 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
276
277 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
278 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
279 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
280 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700281 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700282 /* PowerSave APIs */
283 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
284 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
285 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
286 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
287 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
288 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
289 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
290 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
291 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
292 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
293 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
294 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
295 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
296 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
297 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
298 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
299 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
300 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
301 /*NV Download APIs*/
302 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
303 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
304 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
305#ifdef WLAN_FEATURE_VOWIFI_11R
306 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
307#else
308 NULL,
309#endif /* WLAN_FEATURE_VOWIFI_11R */
310 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
311 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700313
314#ifdef FEATURE_OEM_DATA_SUPPORT
315 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
316#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700317 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700318#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700319 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700320
321 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700322
323#ifdef FEATURE_WLAN_SCAN_PNO
324 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
325 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
326 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
327#else
328 NULL,
329 NULL,
330 NULL,
331#endif /* FEATURE_WLAN_SCAN_PNO */
332
333 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700334
Jeff Johnson295189b2012-06-20 16:38:30 -0700335#ifdef WLAN_FEATURE_PACKET_FILTERING
336 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700337 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700338 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700339 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700340 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700341 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700342 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700343 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700344#else
345 NULL,
346 NULL,
347 NULL,
348 NULL,
349#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700350 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700351 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
352 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
353
354 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
355#ifdef FEATURE_WLAN_CCX
356 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
357#else
358 NULL,
359#endif
360
361#ifdef WLAN_FEATURE_GTK_OFFLOAD
362 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
363 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
364#else
365 NULL,
366 NULL,
367#endif // WLAN_FEATURE_GTK_OFFLOAD
368
369 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
370 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700371#ifdef WLAN_FEATURE_11AC
372 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800373#else
374 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700375#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800376#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
377 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
378#else
schangd82195a2013-03-13 18:41:24 -0700379 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800380#endif
schangd82195a2013-03-13 18:41:24 -0700381 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700382#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700383 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700384#else
385 NULL,
386#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530387#ifdef FEATURE_WLAN_TDLS
388 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
389#else
390 NULL,
391#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700392#ifdef FEATURE_WLAN_LPHB
393 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
394#else
395 NULL,
396#endif /* FEATURE_WLAN_LPHB */
Rajeev3db91f12013-10-05 11:03:42 +0530397
398#ifdef FEATURE_WLAN_BATCH_SCAN
399 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
400#else
401 NULL,
402#endif /* FEATURE_WLAN_BATCH_SCAN */
403
schangd82195a2013-03-13 18:41:24 -0700404 /*-------------------------------------------------------------------------
405 Indications
406 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700407 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800408 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +0530409 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
410 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700411#ifdef WLAN_FEATURE_11W
412 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
413#else
414 NULL,
415#endif
Yue Ma365933a2013-08-14 15:59:08 -0700416 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
417 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530418#ifdef FEATURE_WLAN_BATCH_SCAN
419 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
420 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
421#else
422 NULL,
423 NULL,
424#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -0700425 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700426};
427
428
Jeff Johnsone7245742012-09-05 17:12:55 -0700429/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700430 DAL Request Processing Array - the functions in this table will only be
431 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700432 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700433 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700434WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700435{
436 /*INIT*/
437 WDI_ProcessStartRsp, /* WDI_START_RESP */
438 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
439 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
440
441 /*SCAN*/
442 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
443 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
444 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
445 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
446
447 /* ASSOCIATION*/
448 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
449 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
450 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
451 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
452 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
453
454 /* Security */
455 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
456 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
457 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
458 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
459
460 /* QoS and BA APIs */
461 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
462 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
463 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
464 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
465 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
466
467 /* Miscellaneous Control APIs */
468 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
469 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
470 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
471 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
472 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
473
474 /* BA APIs*/
475 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
476 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700477
Jeff Johnson295189b2012-06-20 16:38:30 -0700478 /* IBSS APIs*/
479 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
480 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
481
482 /*Soft AP APIs*/
483 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
484 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
485 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
486 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
487
488 /* PowerSave APIs */
489 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
490 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
491 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
492 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
493 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
494 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
495 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
496 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
497 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
498 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
499 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
500 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
501 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
502 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
503 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
504 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
505 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
506 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700507
Jeff Johnson295189b2012-06-20 16:38:30 -0700508
509 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
510
511 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
512 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
513#ifdef WLAN_FEATURE_VOWIFI_11R
514 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
515#else
516 NULL,
517#endif /* WLAN_FEATURE_VOWIFI_11R */
518 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
519 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700520#ifdef FEATURE_OEM_DATA_SUPPORT
521 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
522#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700523 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700524#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700525 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
526
Jeff Johnson295189b2012-06-20 16:38:30 -0700527 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700528
Jeff Johnson295189b2012-06-20 16:38:30 -0700529 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700530
Jeff Johnsone7245742012-09-05 17:12:55 -0700531 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
532
Jeff Johnson295189b2012-06-20 16:38:30 -0700533#ifdef FEATURE_WLAN_SCAN_PNO
534 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
535 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
536 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
537#else
538 NULL,
539 NULL,
540 NULL,
541#endif // FEATURE_WLAN_SCAN_PNO
542
543 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
544
545 /*---------------------------------------------------------------------
546 Indications
547 ---------------------------------------------------------------------*/
548#ifdef WLAN_FEATURE_PACKET_FILTERING
549 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700550 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700551 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700552 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700553 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700554 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700555 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700556 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700557#else
558 NULL,
559 NULL,
560 NULL,
561 NULL,
562#endif // WLAN_FEATURE_PACKET_FILTERING
563
564 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
565 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
566
567 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
568#ifdef FEATURE_WLAN_CCX
569 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
570#else
571 NULL,
572#endif
573
574#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700575 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
576 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700577#else
578 NULL,
579 NULL,
580#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700581 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
582 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700583#ifdef WLAN_FEATURE_11AC
584 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700585#else
586 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700587#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800588#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
589 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
590#else
591 NULL,
592#endif
schangd82195a2013-03-13 18:41:24 -0700593 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700594#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700595 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700596#else
597 NULL,
598#endif
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530599#ifdef FEATURE_WLAN_TDLS
600 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
601#else
602 NULL,
603#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700604#ifdef FEATURE_WLAN_LPHB
605 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
606#else
607 NULL,
608#endif /* FEATURE_WLAN_LPHB */
Rajeev3db91f12013-10-05 11:03:42 +0530609
610#ifdef FEATURE_WLAN_BATCH_SCAN
611 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
612#else
613 NULL,
614#endif /*FEATURE_WLAN_BATCH_SCAN*/
615
Jeff Johnson295189b2012-06-20 16:38:30 -0700616 /*---------------------------------------------------------------------
617 Indications
618 ---------------------------------------------------------------------*/
619 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
620 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
621 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
622 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
623 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
624 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
625
626 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
627
628 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
629
Jeff Johnson295189b2012-06-20 16:38:30 -0700630 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700631
632#ifdef FEATURE_WLAN_SCAN_PNO
633 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
634#else
635 NULL,
636#endif // FEATURE_WLAN_SCAN_PNO
637
638#ifdef WLAN_WAKEUP_EVENTS
639 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
640#else // WLAN_WAKEUP_EVENTS
641 NULL,
642#endif // WLAN_WAKEUP_EVENTS
643
644 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800645
Viral Modi9dc288a2012-12-10 13:09:21 -0800646 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530647#ifdef FEATURE_WLAN_TDLS
648 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
649#else
650 NULL,
651#endif
Leo Chang00bc9132013-08-01 19:21:11 -0700652
653#ifdef FEATURE_WLAN_LPHB
Leo Chang8d19a5f2013-09-26 13:32:26 -0700654 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang00bc9132013-08-01 19:21:11 -0700655#else
656 NULL,
657#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -0700658
659 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Ma365933a2013-08-14 15:59:08 -0700660
661 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev3db91f12013-10-05 11:03:42 +0530662
663#ifdef FEATURE_WLAN_BATCH_SCAN
664 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
665#else
666 NULL,
667#endif
668
Jeff Johnson295189b2012-06-20 16:38:30 -0700669};
670
671
Jeff Johnsone7245742012-09-05 17:12:55 -0700672/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700673 WLAN DAL Global Control Block
674 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700675WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700676static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
677
Jeff Johnsone7245742012-09-05 17:12:55 -0700678const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700679
680/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700681WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700682void* WDI_GET_PAL_CTX( void )
683{
Jeff Johnsone7245742012-09-05 17:12:55 -0700684 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700685}/*WDI_GET_PAL_CTX*/
686
Jeff Johnsone7245742012-09-05 17:12:55 -0700687/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700688 Helper inline converters
689 ============================================================================*/
690/*Convert WDI driver type into HAL driver type*/
691WPT_STATIC WPT_INLINE WDI_Status
692WDI_HAL_2_WDI_STATUS
693(
694 eHalStatus halStatus
695);
696
697/*Convert WDI request type into HAL request type*/
698WPT_STATIC WPT_INLINE tHalHostMsgType
699WDI_2_HAL_REQ_TYPE
700(
701 WDI_RequestEnumType wdiReqType
702);
703
704/*Convert WDI response type into HAL response type*/
705WPT_STATIC WPT_INLINE WDI_ResponseEnumType
706HAL_2_WDI_RSP_TYPE
707(
708 tHalHostMsgType halMsg
709);
710
711/*Convert WDI driver type into HAL driver type*/
712WPT_STATIC WPT_INLINE tDriverType
713WDI_2_HAL_DRV_TYPE
714(
715 WDI_DriverType wdiDriverType
716);
717
718/*Convert WDI stop reason into HAL stop reason*/
719WPT_STATIC WPT_INLINE tHalStopType
720WDI_2_HAL_STOP_REASON
721(
722 WDI_StopType wdiStopType
723);
724
725/*Convert WDI scan mode type into HAL scan mode type*/
726WPT_STATIC WPT_INLINE eHalSysMode
727WDI_2_HAL_SCAN_MODE
728(
729 WDI_ScanMode wdiScanMode
730);
731
732/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700733WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700734WDI_2_HAL_SEC_CH_OFFSET
735(
736 WDI_HTSecondaryChannelOffset wdiSecChOffset
737);
738
739/*Convert WDI BSS type into HAL BSS type*/
740WPT_STATIC WPT_INLINE tSirBssType
741WDI_2_HAL_BSS_TYPE
742(
743 WDI_BssType wdiBSSType
744);
745
746/*Convert WDI NW type into HAL NW type*/
747WPT_STATIC WPT_INLINE tSirNwType
748WDI_2_HAL_NW_TYPE
749(
750 WDI_NwType wdiNWType
751);
752
753/*Convert WDI chanel bonding type into HAL cb type*/
754WPT_STATIC WPT_INLINE ePhyChanBondState
755WDI_2_HAL_CB_STATE
756(
757 WDI_PhyChanBondState wdiCbState
758);
759
760/*Convert WDI chanel bonding type into HAL cb type*/
761WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
762WDI_2_HAL_HT_OPER_MODE
763(
764 WDI_HTOperatingMode wdiHTOperMode
765);
766
767/*Convert WDI mimo PS type into HAL mimo PS type*/
768WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
769WDI_2_HAL_MIMO_PS
770(
771 WDI_HTMIMOPowerSaveState wdiHTOperMode
772);
773
774/*Convert WDI ENC type into HAL ENC type*/
775WPT_STATIC WPT_INLINE tAniEdType
776WDI_2_HAL_ENC_TYPE
777(
778 WDI_EncryptType wdiEncType
779);
780
781/*Convert WDI WEP type into HAL WEP type*/
782WPT_STATIC WPT_INLINE tAniWepType
783WDI_2_HAL_WEP_TYPE
784(
785 WDI_WepType wdiWEPType
786);
787
788/*Convert WDI Link State into HAL Link State*/
789WPT_STATIC WPT_INLINE tSirLinkState
790WDI_2_HAL_LINK_STATE
791(
792 WDI_LinkStateType wdiLinkState
793);
794
Jeff Johnsone7245742012-09-05 17:12:55 -0700795/*Translate a STA Context from WDI into HAL*/
796WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700797void
798WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700799(
Jeff Johnson295189b2012-06-20 16:38:30 -0700800 tConfigStaParams* phalConfigSta,
801 WDI_ConfigStaReqInfoType* pwdiConfigSta
802);
Jeff Johnsone7245742012-09-05 17:12:55 -0700803
804/*Translate a Rate set info from WDI into HAL*/
805WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700806WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700807(
Jeff Johnson295189b2012-06-20 16:38:30 -0700808 tSirMacRateSet* pHalRateSet,
809 WDI_RateSet* pwdiRateSet
810);
811
812/*Translate an EDCA Parameter Record from WDI into HAL*/
813WPT_STATIC WPT_INLINE void
814WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700815(
Jeff Johnson295189b2012-06-20 16:38:30 -0700816 tSirMacEdcaParamRecord* phalEdcaParam,
817 WDI_EdcaParamRecord* pWDIEdcaParam
818);
819
820/*Copy a management frame header from WDI fmt into HAL fmt*/
821WPT_STATIC WPT_INLINE void
822WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
823(
824 tSirMacMgmtHdr* pmacMgmtHdr,
825 WDI_MacMgmtHdr* pwdiMacMgmtHdr
826);
827
828/*Copy config bss parameters from WDI fmt into HAL fmt*/
829WPT_STATIC WPT_INLINE void
830WDI_CopyWDIConfigBSSToHALConfigBSS
831(
832 tConfigBssParams* phalConfigBSS,
833 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
834);
835
Jeff Johnsone7245742012-09-05 17:12:55 -0700836/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700837 pointed to by user data */
838WPT_STATIC WPT_INLINE void
839WDI_ExtractRequestCBFromEvent
840(
841 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700842 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700843 void** ppUserData
844);
845
846wpt_uint8
847WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700848(
Jeff Johnson295189b2012-06-20 16:38:30 -0700849 WDI_ControlBlockType* pWDICtx,
850 WDI_BSSSessionType** ppSession
851);
852
853void
854WDI_AddBcastSTAtoSTATable
855(
856 WDI_ControlBlockType* pWDICtx,
857 WDI_AddStaParams * staParams,
858 wpt_uint16 usBcastStaIdx
859);
860
861WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700862(
Jeff Johnson295189b2012-06-20 16:38:30 -0700863 WDI_ControlBlockType* pWDICtx,
864 WDI_EventInfoType* pEventData
865);
866
867void
868WDI_SetPowerStateCb
869(
870 wpt_status status,
871 unsigned int dxePhyAddr,
872 void *pContext
873);
874
875#define CASE_RETURN_STRING( str ) \
876 case ( ( str ) ): return( #str ); break \
877
878/**
879 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700880
881 @param wdiReqMsgId: WDI Message request Id
882
883 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700884 @return Result of the function call
885*/
886static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
887{
888 switch (wdiReqMsgId)
889 {
890 CASE_RETURN_STRING( WDI_START_REQ );
891 CASE_RETURN_STRING( WDI_STOP_REQ );
892 CASE_RETURN_STRING( WDI_CLOSE_REQ );
893 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
894 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
895 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
896 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
897 CASE_RETURN_STRING( WDI_JOIN_REQ );
898 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
899 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
900 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
901 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
902 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
903 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
904 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
905 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
906 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
907 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
908 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
909 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
910 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
911 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
912 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
913 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
914 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
915 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
916 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
917 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
918 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
919 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
920 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
921 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
922 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
923 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
924 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +0530925#ifdef FEATURE_WLAN_TDLS
926 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
927#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700928 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
929 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
930 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
931 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
932 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
933 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
934 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
935 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
936 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
937 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
938 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
939 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
940 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
941 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
942 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
943 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
944 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
945 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
946 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
947 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
948 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
949 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
950 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
951 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
952 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700953 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700954 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
955 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
956 #ifdef FEATURE_WLAN_SCAN_PNO
957 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
958 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
959 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
960 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700961#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -0700962 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -0700963#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700964 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
965 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
966 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
967 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
968 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
969 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
970 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
971 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
972 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800973 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800974 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700975#ifdef WLAN_FEATURE_11W
976 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
977#endif
Rajeev3db91f12013-10-05 11:03:42 +0530978#ifdef FEATURE_WLAN_BATCH_SCAN
979 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
980 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
981 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
982#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700983 default:
984 return "Unknown WDI MessageId";
985 }
986}
987
988
989
990/**
991 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700992
993 @param wdiRespMsgId: WDI Message response Id
994
995 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700996 @return Result of the function call
997*/
998static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
999{
1000 switch (wdiRespMsgId)
1001 {
1002 CASE_RETURN_STRING( WDI_START_RESP );
1003 CASE_RETURN_STRING( WDI_STOP_RESP );
1004 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1005 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1006 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1007 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1008 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1009 CASE_RETURN_STRING( WDI_JOIN_RESP );
1010 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1011 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1012 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1013 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1014 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1015 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1016 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1017 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1018 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1019 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1020 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1021 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1022 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1023 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1024 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1025 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1026 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1027 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1028 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1029 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1030 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1031 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1032 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1033 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1034 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1035 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1036 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05301037#ifdef FEATURE_WLAN_TDLS
1038 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
1039 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1040#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001041 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1042 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1043 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1044 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1045 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1046 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1047 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1048 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1049 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1050 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1051 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1052 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1053 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1054 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1055 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1056 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1057 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1058 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1059 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1060 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1061 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1062 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1063 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1064 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1065 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001066 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001067 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1068 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1069 #ifdef FEATURE_WLAN_SCAN_PNO
1070 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1071 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1072 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1073 #endif
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001074#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -07001075 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturu08614702013-04-15 21:58:13 -07001076#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001077 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1078 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1079 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1080 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1081 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1082 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1083 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1084 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -08001085 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev3db91f12013-10-05 11:03:42 +05301086#ifdef FEATURE_WLAN_BATCH_SCAN
1087 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1088#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001089 default:
1090 return "Unknown WDI MessageId";
1091 }
1092}
1093
1094/**
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301095 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1096 Capability bitmap array.
1097 @param capabilityBitmap - Base address of Bitmap array
1098 @see
1099 @returns None
1100 */
1101void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1102{
1103 int i;
1104 char capStr[512];
1105 char *pCapStr = capStr;
1106 for (i = 0; i < 32; i++) {
1107 if ((*(capabilityBitmap + 0) & (1 << i))) {
1108 switch(i) {
1109 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1110 pCapStr += strlen("MCC");
1111 break;
1112 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1113 pCapStr += strlen("P2P");
1114 break;
1115 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1116 pCapStr += strlen("DOT11AC");
1117 break;
1118 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1119 pCapStr += strlen("SLM_SESSIONIZATION");
1120 break;
1121 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1122 pCapStr += strlen("DOT11AC_OPMODE");
1123 break;
1124 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1125 pCapStr += strlen("SAP32STA");
1126 break;
1127 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1128 pCapStr += strlen("TDLS");
1129 break;
1130 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1131 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1132 break;
1133 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1134 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1135 break;
1136 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1137 pCapStr += strlen("BEACON_OFFLOAD");
1138 break;
1139 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1140 pCapStr += strlen("SCAN_OFFLOAD");
1141 break;
1142 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1143 pCapStr += strlen("ROAM_OFFLOAD");
1144 break;
1145 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1146 pCapStr += strlen("BCN_MISS_OFFLOAD");
1147 break;
1148 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1149 pCapStr += strlen("STA_POWERSAVE");
1150 break;
1151 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1152 pCapStr += strlen("AP_UAPSD");
1153 break;
1154 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1155 pCapStr += strlen("AP_DFS");
1156 break;
1157 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1158 pCapStr += strlen("BLOCKACK");
1159 break;
1160 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1161 pCapStr += strlen("PHY_ERR");
1162 break;
1163 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1164 pCapStr += strlen("BCN_FILTER");
1165 break;
1166 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1167 pCapStr += strlen("RTT");
1168 break;
1169 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1170 pCapStr += strlen("RATECTRL");
1171 break;
1172 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1173 pCapStr += strlen("WOW");
1174 break;
1175 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1176 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1177 break;
1178 }
1179 *pCapStr++ = ',';
1180 *pCapStr++ = ' ';
1181 }
1182 }
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301183 pCapStr -= 2;
1184 *pCapStr = '\0';
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301185 pCapStr = capStr;
Madan Mohan Koyyalamudi936663c2013-08-07 14:19:18 +05301186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "\t\t%s", pCapStr);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +05301187}
1188
1189/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001190 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001191
1192 @param halStatusId: HAL status Id
1193
1194 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001195 @return Result of the function call
1196*/
1197static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1198{
1199 switch (halStatusId)
1200 {
1201 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1202 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1203 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1204 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1205 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1206 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1207 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1208 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1209 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1210 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1211 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1212 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1213 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1214 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1215 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1216 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1217 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1218 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1219 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1220 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1221 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1222 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1223 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1224 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1225 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1226 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1227 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1228 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1229 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1230 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1231 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1232 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1233 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1234 default:
1235 return "Unknown HAL status";
1236 }
1237}
1238
Jeff Johnsone7245742012-09-05 17:12:55 -07001239/*========================================================================
1240
Jeff Johnson295189b2012-06-20 16:38:30 -07001241 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001242
Jeff Johnson295189b2012-06-20 16:38:30 -07001243==========================================================================*/
1244
1245/**
1246 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001247
Jeff Johnson295189b2012-06-20 16:38:30 -07001248 DAL will allocate all the resources it needs. It will open PAL, it will also
1249 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001250 DXE/SMD or any other drivers that they need.
1251
Jeff Johnson295189b2012-06-20 16:38:30 -07001252 @param pOSContext: pointer to the OS context provided by the UMAC
1253 will be passed on to PAL on Open
1254 ppWDIGlobalCtx: output pointer of Global Context
1255 pWdiDevCapability: output pointer of device capability
1256
1257 @return Result of the function call
1258*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001259WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001260WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001261(
Jeff Johnson295189b2012-06-20 16:38:30 -07001262 void* pOSContext,
1263 void** ppWDIGlobalCtx,
1264 WDI_DeviceCapabilityType* pWdiDevCapability,
1265 unsigned int driverType
1266)
1267{
1268 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001269 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001270 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001271 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1273
1274 /*---------------------------------------------------------------------
1275 Sanity check
1276 ---------------------------------------------------------------------*/
1277 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1278 {
1279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1280 "Invalid input parameters in WDI_Init");
1281
Jeff Johnsone7245742012-09-05 17:12:55 -07001282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001283 }
1284
1285 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001286 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001287 ---------------------------------------------------------------------*/
1288 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1289 {
1290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1291 "WDI module already initialized - return");
1292
Jeff Johnsone7245742012-09-05 17:12:55 -07001293 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001294 }
1295
1296 /*Module is now initialized - this flag is to ensure the fact that multiple
1297 init will not happen on WDI
1298 !! - potential race does exist because read and set are not atomic,
1299 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001300 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001301
1302 /*Setup the control block */
1303 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001304 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001305
1306 /*Setup the STA Table*/
1307 wdiStatus = WDI_STATableInit(&gWDICb);
1308 if ( WDI_STATUS_SUCCESS != wdiStatus )
1309 {
1310 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1311 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001312 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001313 goto fail_STATableInit;
1314 }
1315
1316 /*------------------------------------------------------------------------
1317 Open the PAL
1318 ------------------------------------------------------------------------*/
1319 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1320 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1321 {
1322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1323 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001324 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001325 goto fail_wpalOpen;
1326 }
1327
1328 /*Initialize main synchro mutex - it will be used to ensure integrity of
1329 the main WDI Control Block*/
1330 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1331 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1332 {
1333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1334 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001335 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001336 goto fail_mutex;
1337 }
1338
1339 /*Initialize the response timer - it will be used to time all messages
1340 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001341 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1342 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001343 &gWDICb);
1344 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1345 {
1346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1347 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001348 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001349 goto fail_timer;
1350 }
1351
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001352 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1353 WDI_SsrTimerCB,
1354 &gWDICb);
1355 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1356 {
1357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1358 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001359 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001360 goto fail_timer2;
1361 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001362 /* Initialize the WDI Pending Request Queue*/
1363 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1364 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1365 {
1366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1367 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001368 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001369 goto fail_pend_queue;
1370 }
1371
1372 /*Init WDI Pending Assoc Id Queue */
1373 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1374 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1375 {
1376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1377 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001378 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001379 goto fail_assoc_queue;
1380 }
1381
1382 /*Initialize the BSS sessions pending Queue */
1383 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1384 {
1385 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1386 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1387 {
1388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1389 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001390 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001391 goto fail_bss_queue;
1392 }
1393 }
1394
1395 /*Indicate the control block is sufficiently initialized for callbacks*/
1396 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1397
1398 /*------------------------------------------------------------------------
1399 Initialize the Data Path Utility Module
1400 ------------------------------------------------------------------------*/
1401 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1402 if ( WDI_STATUS_SUCCESS != wdiStatus )
1403 {
1404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1405 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001406 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001407 goto fail_dp_util_init;
1408 }
1409
1410 /* Init Set power state event */
1411 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001412 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001413 {
1414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1415 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001416 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001417 goto fail_power_event;
1418 }
1419
1420 /* Init WCTS action event */
1421 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001422 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001423 {
1424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1425 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001426 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001427 goto fail_wcts_event;
1428 }
1429
1430 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001431 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001432 ------------------------------------------------------------------------*/
1433 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1434 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001435 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001436 wctsCBs.wctsRxMsgCBData = &gWDICb;
1437
Jeff Johnsone7245742012-09-05 17:12:55 -07001438 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001439 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001440 WDI_CT_CHANNEL_SIZE,
1441 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001442
1443 if ( NULL == gWDICb.wctsHandle )
1444 {
1445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001446 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001447 goto fail_wcts_open;
1448 }
1449
1450 gWDICb.driverMode = (tDriverType)driverType;
1451 /* FTM mode not need to open Transport Driver */
1452 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001453 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001454 /*------------------------------------------------------------------------
1455 Open the Data Transport
1456 ------------------------------------------------------------------------*/
1457 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1458 {
1459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001460 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001461 goto fail_wdts_open;
1462 }
1463 }
1464
1465 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001466 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001467
1468 /*Send the context as a ptr to the global WDI Control Block*/
1469 *ppWDIGlobalCtx = &gWDICb;
1470
1471 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001472 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001473 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1474 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1475 return WDI_STATUS_SUCCESS;
1476
1477 /* ERROR handlers
1478 Undo everything that completed successfully */
1479
1480 fail_wdts_open:
1481 {
1482 wpt_status eventStatus;
1483
1484 /* Closing WCTS in this scenario is tricky since it has to close
1485 the SMD channel and then we get notified asynchronously when
1486 the channel has been closed. So we take some of the logic from
1487 the "normal" close procedure in WDI_Close()
1488 */
1489
1490 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001491 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001492 {
1493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001494 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001495 }
1496
1497 WCTS_CloseTransport(gWDICb.wctsHandle);
1498
1499 /* Wait for WCTS to close the control transport. If we were able
1500 to reset the event flag, then we'll wait for the event,
1501 otherwise we'll wait for a maximum amount of time required for
1502 the channel to be closed */
1503 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1504 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001505 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001506 WDI_WCTS_ACTION_TIMEOUT);
1507 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1508 {
1509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001510 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001511 }
1512 }
1513 else
1514 {
1515 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1516 }
1517 }
1518 fail_wcts_open:
1519 wpalEventDelete(&gWDICb.wctsActionEvent);
1520 fail_wcts_event:
1521 wpalEventDelete(&gWDICb.setPowerStateEvent);
1522 fail_power_event:
1523 WDI_DP_UtilsExit(&gWDICb);
1524 fail_dp_util_init:
1525 gWDICb.magic = 0;
1526 fail_bss_queue:
1527 /* entries 0 thru i-1 were successfully initialized */
1528 while (0 < i)
1529 {
1530 i--;
1531 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1532 }
1533 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1534 fail_assoc_queue:
1535 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1536 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001537 wpalTimerDelete(&gWDICb.ssrTimer);
1538 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001539 wpalTimerDelete(&gWDICb.wptResponseTimer);
1540 fail_timer:
1541 wpalMutexDelete(&gWDICb.wptMutex);
1542 fail_mutex:
1543 wpalClose(gWDICb.pPALContext);
1544 fail_wpalOpen:
1545 WDI_STATableClose(&gWDICb);
1546 fail_STATableInit:
1547 gWDIInitialized = eWLAN_PAL_FALSE;
1548
1549 return WDI_STATUS_E_FAILURE;
1550
1551}/*WDI_Init*/;
1552
1553/**
1554 @brief WDI_Start will be called when the upper MAC is ready to
1555 commence operation with the WLAN Device. Upon the call
1556 of this API the WLAN DAL will pack and send a HAL Start
1557 message to the lower RIVA sub-system if the SMD channel
1558 has been fully opened and the RIVA subsystem is up.
1559
1560 If the RIVA sub-system is not yet up and running DAL
1561 will queue the request for Open and will wait for the
1562 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001563 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001564
1565 WDI_Init must have been called.
1566
Jeff Johnsone7245742012-09-05 17:12:55 -07001567 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001568 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001569
Jeff Johnson295189b2012-06-20 16:38:30 -07001570 wdiStartRspCb: callback for passing back the response of
1571 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001572
Jeff Johnson295189b2012-06-20 16:38:30 -07001573 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001574 callback
1575
Jeff Johnson295189b2012-06-20 16:38:30 -07001576 @see WDI_Start
1577 @return Result of the function call
1578*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001579WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001580WDI_Start
1581(
1582 WDI_StartReqParamsType* pwdiStartParams,
1583 WDI_StartRspCb wdiStartRspCb,
1584 void* pUserData
1585)
1586{
1587 WDI_EventInfoType wdiEventData;
1588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1589
1590 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001591 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001592 ------------------------------------------------------------------------*/
1593 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1594 {
1595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1596 "WDI API call before module is initialized - Fail request");
1597
Jeff Johnsone7245742012-09-05 17:12:55 -07001598 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001599 }
1600
1601 /*------------------------------------------------------------------------
1602 Fill in Event data and post to the Main FSM
1603 ------------------------------------------------------------------------*/
1604 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001605 wdiEventData.pEventData = pwdiStartParams;
1606 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1607 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001608 wdiEventData.pUserData = pUserData;
1609
1610 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1611
1612}/*WDI_Start*/
1613
1614/**
1615 @brief WDI_Stop will be called when the upper MAC is ready to
1616 stop any operation with the WLAN Device. Upon the call
1617 of this API the WLAN DAL will pack and send a HAL Stop
1618 message to the lower RIVA sub-system if the DAL Core is
1619 in started state.
1620
1621 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001622
1623 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001624
1625 WDI_Start must have been called.
1626
Jeff Johnsone7245742012-09-05 17:12:55 -07001627 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001628 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001629
Jeff Johnson295189b2012-06-20 16:38:30 -07001630 wdiStopRspCb: callback for passing back the response of
1631 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001632
Jeff Johnson295189b2012-06-20 16:38:30 -07001633 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001634 callback
1635
Jeff Johnson295189b2012-06-20 16:38:30 -07001636 @see WDI_Start
1637 @return Result of the function call
1638*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001639WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001640WDI_Stop
1641(
1642 WDI_StopReqParamsType* pwdiStopParams,
1643 WDI_StopRspCb wdiStopRspCb,
1644 void* pUserData
1645)
1646{
1647 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001648 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1650
1651 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001652 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001653 ------------------------------------------------------------------------*/
1654 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1655 {
1656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1657 "WDI API call before module is initialized - Fail request");
1658
Jeff Johnsone7245742012-09-05 17:12:55 -07001659 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001660 }
1661
Jeff Johnson43971f52012-07-17 12:26:56 -07001662 /*Access to the global state must be locked before cleaning */
1663 wpalMutexAcquire(&pWDICtx->wptMutex);
1664
1665 /*Clear all pending request*/
1666 WDI_ClearPendingRequests(pWDICtx);
1667
1668 /*We have completed cleaning unlock now*/
1669 wpalMutexRelease(&pWDICtx->wptMutex);
1670
Jeff Johnson295189b2012-06-20 16:38:30 -07001671 /* Free the global variables */
1672 wpalMemoryFree(gpHostWlanFeatCaps);
1673 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001674 gpHostWlanFeatCaps = NULL;
1675 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001676
1677 /*------------------------------------------------------------------------
1678 Fill in Event data and post to the Main FSM
1679 ------------------------------------------------------------------------*/
1680 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001681 wdiEventData.pEventData = pwdiStopParams;
1682 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1683 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 wdiEventData.pUserData = pUserData;
1685
1686 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1687
1688}/*WDI_Stop*/
1689
1690
1691
1692/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001693 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001694 needs to interact with DAL. DAL will free its control
1695 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001696
1697 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001698
1699 WDI_Stop must have been called.
1700
1701 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001702
Jeff Johnson295189b2012-06-20 16:38:30 -07001703 @see WDI_Stop
1704 @return Result of the function call
1705*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001706WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001707WDI_Close
1708(
1709 void
1710)
1711{
1712 wpt_uint8 i;
1713 WDI_EventInfoType wdiEventData;
1714 wpt_status wptStatus;
1715 wpt_status eventStatus;
1716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1717
1718 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001719 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001720 ------------------------------------------------------------------------*/
1721 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1722 {
1723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1724 "WDI API call before module is initialized - Fail request");
1725
Jeff Johnsone7245742012-09-05 17:12:55 -07001726 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001727 }
1728
1729 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1730 (the control transport will be closed by the FSM and we'll want
1731 to wait until that completes)*/
1732 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001733 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001734 {
1735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001736 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001737 /* fall through and try to finish closing via the FSM */
1738 }
1739
1740 /*------------------------------------------------------------------------
1741 Fill in Event data and post to the Main FSM
1742 ------------------------------------------------------------------------*/
1743 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001744 wdiEventData.pEventData = NULL;
1745 wdiEventData.uEventDataSize = 0;
1746 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 wdiEventData.pUserData = NULL;
1748
1749 gWDIInitialized = eWLAN_PAL_FALSE;
1750
1751 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1752
1753 /*Wait for WCTS to close the control transport
1754 (but only if we were able to reset the event flag*/
1755 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1756 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001757 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001758 WDI_WCTS_ACTION_TIMEOUT);
1759 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1760 {
1761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001762 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001763 }
1764 }
1765
1766 /* Destroy the WCTS action event */
1767 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1768 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1769 {
1770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1771 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001772 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001773 }
1774
1775 /* Destroy the Set Power State event */
1776 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1777 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1778 {
1779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1780 "WDI Close failed to destroy an event");
1781
Jeff Johnsone7245742012-09-05 17:12:55 -07001782 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001783 }
1784
1785 /*------------------------------------------------------------------------
1786 Closes the Data Path Utility Module
1787 ------------------------------------------------------------------------*/
1788 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1789 {
1790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1791 "WDI Init failed to close the DP Util Module");
1792
Jeff Johnsone7245742012-09-05 17:12:55 -07001793 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001794 }
1795
1796 /*destroy the BSS sessions pending Queue */
1797 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1798 {
1799 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1800 }
1801
1802 /* destroy the WDI Pending Assoc Id Request Queue*/
1803 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1804
1805 /* destroy the WDI Pending Request Queue*/
1806 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001807
Jeff Johnson295189b2012-06-20 16:38:30 -07001808 /*destroy the response timer */
1809 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1810
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001811 /*destroy the SSR timer */
1812 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1813
Jeff Johnson295189b2012-06-20 16:38:30 -07001814 /*invalidate the main synchro mutex */
1815 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1816 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1817 {
1818 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1819 "Failed to delete mutex %d", wptStatus);
1820 WDI_ASSERT(0);
1821 }
1822
1823 /*Clear control block. note that this will clear the "magic"
1824 which will inhibit all asynchronous callbacks*/
1825 WDI_CleanCB(&gWDICb);
1826
1827 return wptStatus;
1828
1829}/*WDI_Close*/
1830
1831/**
1832 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1833 This will do most of the WDI stop & close
1834 operations without doing any handshake with Riva
1835
1836 This will also make sure that the control transport
1837 will NOT be closed.
1838
1839 This request will not be queued.
1840
1841
1842 WDI_Start must have been called.
1843
1844 @param closeTransport: Close control channel if this is set
1845
1846 @return Result of the function call
1847*/
1848WDI_Status
1849WDI_Shutdown
1850(
1851 wpt_boolean closeTransport
1852)
1853{
1854 WDI_EventInfoType wdiEventData;
1855 wpt_status wptStatus;
1856 int i = 0;
1857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1858
1859 /*------------------------------------------------------------------------
1860 Sanity Check
1861 ------------------------------------------------------------------------*/
1862 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1863 {
1864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1865 "WDI API call before module is initialized - Fail request");
1866
1867 return WDI_STATUS_E_NOT_ALLOWED;
1868 }
1869
1870 /*------------------------------------------------------------------------
1871 Fill in Event data and post to the Main FSM
1872 ------------------------------------------------------------------------*/
1873 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1874 wdiEventData.pEventData = NULL;
1875 wdiEventData.uEventDataSize = 0;
1876
1877 /* Shutdown will not be queued, if the state is busy timer will be
1878 * stopped & this message will be processed.*/
1879 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1880 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1881 {
1882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001883 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001884 }
1885 /* Destroy the Set Power State event */
1886 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1887 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1888 {
1889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1890 "WDI Close failed to destroy an event");
1891
1892 WDI_ASSERT(0);
1893 }
1894 /*------------------------------------------------------------------------
1895 Closes the Data Path Utility Module
1896 ------------------------------------------------------------------------*/
1897 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1898 {
1899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1900 "WDI Init failed to close the DP Util Module");
1901
1902 WDI_ASSERT(0);
1903 }
1904 if ( closeTransport )
1905 {
1906 /* Close control transport, called from module unload */
1907 WCTS_CloseTransport(gWDICb.wctsHandle);
1908 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001909 else
1910 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001911 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001912 the pending messages in the transport queue */
1913 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1914 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 /*destroy the BSS sessions pending Queue */
1916 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1917 {
1918 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1919 }
1920
1921 /* destroy the WDI Pending Assoc Id Request Queue*/
1922 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1923 /* destroy the WDI Pending Request Queue*/
1924 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1925 /*destroy the response timer */
1926 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001927 /*destroy the SSR timer */
1928 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001929
1930 /*invalidate the main synchro mutex */
1931 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1932 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1933 {
1934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001935 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001936 WDI_ASSERT(0);
1937 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001938 /* Free the global variables */
1939 wpalMemoryFree(gpHostWlanFeatCaps);
1940 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001941 gpHostWlanFeatCaps = NULL;
1942 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001943 /*Clear control block. note that this will clear the "magic"
1944 which will inhibit all asynchronous callbacks*/
1945 WDI_CleanCB(&gWDICb);
1946 return wptStatus;
1947
1948}/*WDI_Shutdown*/
1949
1950
Jeff Johnsone7245742012-09-05 17:12:55 -07001951/*========================================================================
1952
Jeff Johnson295189b2012-06-20 16:38:30 -07001953 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001954
Jeff Johnson295189b2012-06-20 16:38:30 -07001955==========================================================================*/
1956
1957/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001958 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 the WLAN Device to get ready for a scan procedure. Upon
1960 the call of this API the WLAN DAL will pack and send a
1961 HAL Init Scan request message to the lower RIVA
1962 sub-system if DAL is in state STARTED.
1963
1964 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001965 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001966
1967 WDI_Start must have been called.
1968
1969 @param wdiInitScanParams: the init scan parameters as specified
1970 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001971
Jeff Johnson295189b2012-06-20 16:38:30 -07001972 wdiInitScanRspCb: callback for passing back the response
1973 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001974
Jeff Johnson295189b2012-06-20 16:38:30 -07001975 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001976 callback
1977
Jeff Johnson295189b2012-06-20 16:38:30 -07001978 @see WDI_Start
1979 @return Result of the function call
1980*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001981WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001982WDI_InitScanReq
1983(
1984 WDI_InitScanReqParamsType* pwdiInitScanParams,
1985 WDI_InitScanRspCb wdiInitScanRspCb,
1986 void* pUserData
1987)
1988{
1989 WDI_EventInfoType wdiEventData;
1990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1991
1992 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001993 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001994 ------------------------------------------------------------------------*/
1995 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1996 {
1997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1998 "WDI API call before module is initialized - Fail request");
1999
Jeff Johnsone7245742012-09-05 17:12:55 -07002000 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002001 }
2002
2003 /*------------------------------------------------------------------------
2004 Fill in Event data and post to the Main FSM
2005 ------------------------------------------------------------------------*/
2006 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002007 wdiEventData.pEventData = pwdiInitScanParams;
2008 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2009 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002010 wdiEventData.pUserData = pUserData;
2011
2012 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2013
2014}/*WDI_InitScanReq*/
2015
2016/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002017 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002018 wishes to change the Scan channel on the WLAN Device.
2019 Upon the call of this API the WLAN DAL will pack and
2020 send a HAL Start Scan request message to the lower RIVA
2021 sub-system if DAL is in state STARTED.
2022
2023 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002024 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002025
2026 WDI_InitScanReq must have been called.
2027
Jeff Johnsone7245742012-09-05 17:12:55 -07002028 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002029 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002030
Jeff Johnson295189b2012-06-20 16:38:30 -07002031 wdiStartScanRspCb: callback for passing back the
2032 response of the start scan operation received from the
2033 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002034
Jeff Johnson295189b2012-06-20 16:38:30 -07002035 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002036 callback
2037
Jeff Johnson295189b2012-06-20 16:38:30 -07002038 @see WDI_InitScanReq
2039 @return Result of the function call
2040*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002041WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002042WDI_StartScanReq
2043(
2044 WDI_StartScanReqParamsType* pwdiStartScanParams,
2045 WDI_StartScanRspCb wdiStartScanRspCb,
2046 void* pUserData
2047)
2048{
2049 WDI_EventInfoType wdiEventData;
2050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2051
2052 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 ------------------------------------------------------------------------*/
2055 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2056 {
2057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2058 "WDI API call before module is initialized - Fail request");
2059
Jeff Johnsone7245742012-09-05 17:12:55 -07002060 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002061 }
2062
2063 /*------------------------------------------------------------------------
2064 Fill in Event data and post to the Main FSM
2065 ------------------------------------------------------------------------*/
2066 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002067 wdiEventData.pEventData = pwdiStartScanParams;
2068 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2069 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002070 wdiEventData.pUserData = pUserData;
2071
2072 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2073
2074}/*WDI_StartScanReq*/
2075
2076
2077/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002078 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002079 wants to end scanning for a particular channel that it
2080 had set before by calling Scan Start on the WLAN Device.
2081 Upon the call of this API the WLAN DAL will pack and
2082 send a HAL End Scan request message to the lower RIVA
2083 sub-system if DAL is in state STARTED.
2084
2085 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002086 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002087
2088 WDI_StartScanReq must have been called.
2089
Jeff Johnsone7245742012-09-05 17:12:55 -07002090 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002091 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002092
Jeff Johnson295189b2012-06-20 16:38:30 -07002093 wdiEndScanRspCb: callback for passing back the response
2094 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002095
Jeff Johnson295189b2012-06-20 16:38:30 -07002096 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002097 callback
2098
Jeff Johnson295189b2012-06-20 16:38:30 -07002099 @see WDI_StartScanReq
2100 @return Result of the function call
2101*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002102WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002103WDI_EndScanReq
2104(
2105 WDI_EndScanReqParamsType* pwdiEndScanParams,
2106 WDI_EndScanRspCb wdiEndScanRspCb,
2107 void* pUserData
2108)
2109{
2110 WDI_EventInfoType wdiEventData;
2111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2112
2113 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002114 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002115 ------------------------------------------------------------------------*/
2116 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2117 {
2118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2119 "WDI API call before module is initialized - Fail request");
2120
Jeff Johnsone7245742012-09-05 17:12:55 -07002121 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002122 }
2123
2124 /*------------------------------------------------------------------------
2125 Fill in Event data and post to the Main FSM
2126 ------------------------------------------------------------------------*/
2127 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002128 wdiEventData.pEventData = pwdiEndScanParams;
2129 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2130 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002131 wdiEventData.pUserData = pUserData;
2132
2133 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2134
2135}/*WDI_EndScanReq*/
2136
2137
2138/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002139 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002140 completed the scan process on the WLAN Device. Upon the
2141 call of this API the WLAN DAL will pack and send a HAL
2142 Finish Scan Request request message to the lower RIVA
2143 sub-system if DAL is in state STARTED.
2144
2145 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002146 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002147
2148 WDI_InitScanReq must have been called.
2149
Jeff Johnsone7245742012-09-05 17:12:55 -07002150 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002151 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002152
Jeff Johnson295189b2012-06-20 16:38:30 -07002153 wdiFinishScanRspCb: callback for passing back the
2154 response of the finish scan operation received from the
2155 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002156
Jeff Johnson295189b2012-06-20 16:38:30 -07002157 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002158 callback
2159
Jeff Johnson295189b2012-06-20 16:38:30 -07002160 @see WDI_InitScanReq
2161 @return Result of the function call
2162*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002163WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002164WDI_FinishScanReq
2165(
2166 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2167 WDI_FinishScanRspCb wdiFinishScanRspCb,
2168 void* pUserData
2169)
2170{
2171 WDI_EventInfoType wdiEventData;
2172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2173
2174 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002175 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002176 ------------------------------------------------------------------------*/
2177 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2178 {
2179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2180 "WDI API call before module is initialized - Fail request");
2181
Jeff Johnsone7245742012-09-05 17:12:55 -07002182 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002183 }
2184
2185 /*------------------------------------------------------------------------
2186 Fill in Event data and post to the Main FSM
2187 ------------------------------------------------------------------------*/
2188 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002189 wdiEventData.pEventData = pwdiFinishScanParams;
2190 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2191 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002192 wdiEventData.pUserData = pUserData;
2193
2194 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2195
2196}/*WDI_FinishScanReq*/
2197
Jeff Johnsone7245742012-09-05 17:12:55 -07002198/*========================================================================
2199
Jeff Johnson295189b2012-06-20 16:38:30 -07002200 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002201
Jeff Johnson295189b2012-06-20 16:38:30 -07002202==========================================================================*/
2203
2204/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002205 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002206 to start an association procedure to a BSS. Upon the
2207 call of this API the WLAN DAL will pack and send a HAL
2208 Join request message to the lower RIVA sub-system if
2209 DAL is in state STARTED.
2210
2211 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002212 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002213
2214 WDI_Start must have been called.
2215
Jeff Johnsone7245742012-09-05 17:12:55 -07002216 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002217 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002218
Jeff Johnson295189b2012-06-20 16:38:30 -07002219 wdiJoinRspCb: callback for passing back the response of
2220 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002221
Jeff Johnson295189b2012-06-20 16:38:30 -07002222 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002223 callback
2224
Jeff Johnson295189b2012-06-20 16:38:30 -07002225 @see WDI_Start
2226 @return Result of the function call
2227*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002228WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002229WDI_JoinReq
2230(
2231 WDI_JoinReqParamsType* pwdiJoinParams,
2232 WDI_JoinRspCb wdiJoinRspCb,
2233 void* pUserData
2234)
2235{
2236 WDI_EventInfoType wdiEventData;
2237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2238
2239 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002240 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002241 ------------------------------------------------------------------------*/
2242 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2243 {
2244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2245 "WDI API call before module is initialized - Fail request");
2246
Jeff Johnsone7245742012-09-05 17:12:55 -07002247 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002248 }
2249
2250 /*------------------------------------------------------------------------
2251 Fill in Event data and post to the Main FSM
2252 ------------------------------------------------------------------------*/
2253 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002254 wdiEventData.pEventData = pwdiJoinParams;
2255 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2256 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002257 wdiEventData.pUserData = pUserData;
2258
2259 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2260
2261}/*WDI_JoinReq*/
2262
2263/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002264 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002265 wishes to configure the newly acquired or in process of
2266 being acquired BSS to the HW . Upon the call of this API
2267 the WLAN DAL will pack and send a HAL Config BSS request
2268 message to the lower RIVA sub-system if DAL is in state
2269 STARTED.
2270
2271 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002272 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002273
2274 WDI_JoinReq must have been called.
2275
Jeff Johnsone7245742012-09-05 17:12:55 -07002276 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002277 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002278
Jeff Johnson295189b2012-06-20 16:38:30 -07002279 wdiConfigBSSRspCb: callback for passing back the
2280 response of the config BSS operation received from the
2281 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002282
Jeff Johnson295189b2012-06-20 16:38:30 -07002283 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002284 callback
2285
Jeff Johnson295189b2012-06-20 16:38:30 -07002286 @see WDI_JoinReq
2287 @return Result of the function call
2288*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002289WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002290WDI_ConfigBSSReq
2291(
2292 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2293 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2294 void* pUserData
2295)
2296{
2297 WDI_EventInfoType wdiEventData;
2298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2299
2300 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002301 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002302 ------------------------------------------------------------------------*/
2303 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2304 {
2305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2306 "WDI API call before module is initialized - Fail request");
2307
Jeff Johnsone7245742012-09-05 17:12:55 -07002308 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002309 }
2310
2311 /*------------------------------------------------------------------------
2312 Fill in Event data and post to the Main FSM
2313 ------------------------------------------------------------------------*/
2314 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 wdiEventData.pEventData = pwdiConfigBSSParams;
2316 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2317 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002318 wdiEventData.pUserData = pUserData;
2319
2320 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2321
2322}/*WDI_ConfigBSSReq*/
2323
2324/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002325 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002326 disassociating from the BSS and wishes to notify HW.
2327 Upon the call of this API the WLAN DAL will pack and
2328 send a HAL Del BSS request message to the lower RIVA
2329 sub-system if DAL is in state STARTED.
2330
2331 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002332 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002333
2334 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2335
Jeff Johnsone7245742012-09-05 17:12:55 -07002336 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002337 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002338
Jeff Johnson295189b2012-06-20 16:38:30 -07002339 wdiDelBSSRspCb: callback for passing back the response
2340 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002341
Jeff Johnson295189b2012-06-20 16:38:30 -07002342 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002343 callback
2344
2345 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002346 @return Result of the function call
2347*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002348WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002349WDI_DelBSSReq
2350(
2351 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2352 WDI_DelBSSRspCb wdiDelBSSRspCb,
2353 void* pUserData
2354)
2355{
2356 WDI_EventInfoType wdiEventData;
2357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2358
2359 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002360 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002361 ------------------------------------------------------------------------*/
2362 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2363 {
2364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2365 "WDI API call before module is initialized - Fail request");
2366
Jeff Johnsone7245742012-09-05 17:12:55 -07002367 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002368 }
2369
2370 /*------------------------------------------------------------------------
2371 Fill in Event data and post to the Main FSM
2372 ------------------------------------------------------------------------*/
2373 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002374 wdiEventData.pEventData = pwdiDelBSSParams;
2375 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2376 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002377 wdiEventData.pUserData = pUserData;
2378
2379 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2380
2381}/*WDI_DelBSSReq*/
2382
2383/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002384 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002385 associated to a BSS and wishes to configure HW for
2386 associated state. Upon the call of this API the WLAN DAL
2387 will pack and send a HAL Post Assoc request message to
2388 the lower RIVA sub-system if DAL is in state STARTED.
2389
2390 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002391 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002392
2393 WDI_JoinReq must have been called.
2394
2395 @param wdiPostAssocReqParams: the assoc parameters as specified
2396 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002397
Jeff Johnson295189b2012-06-20 16:38:30 -07002398 wdiPostAssocRspCb: callback for passing back the
2399 response of the post assoc operation received from the
2400 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002401
Jeff Johnson295189b2012-06-20 16:38:30 -07002402 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002403 callback
2404
Jeff Johnson295189b2012-06-20 16:38:30 -07002405 @see WDI_JoinReq
2406 @return Result of the function call
2407*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002409WDI_PostAssocReq
2410(
2411 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2412 WDI_PostAssocRspCb wdiPostAssocRspCb,
2413 void* pUserData
2414)
2415{
2416 WDI_EventInfoType wdiEventData;
2417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2418
2419 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002420 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002421 ------------------------------------------------------------------------*/
2422 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2423 {
2424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2425 "WDI API call before module is initialized - Fail request");
2426
Jeff Johnsone7245742012-09-05 17:12:55 -07002427 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002428 }
2429
2430 /*------------------------------------------------------------------------
2431 Fill in Event data and post to the Main FSM
2432 ------------------------------------------------------------------------*/
2433 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002434 wdiEventData.pEventData = pwdiPostAssocReqParams;
2435 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2436 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 wdiEventData.pUserData = pUserData;
2438
2439 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2440
2441}/*WDI_PostAssocReq*/
2442
2443/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002444 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002445 association with another STA has ended and the station
2446 must be deleted from HW. Upon the call of this API the
2447 WLAN DAL will pack and send a HAL Del STA request
2448 message to the lower RIVA sub-system if DAL is in state
2449 STARTED.
2450
2451 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002452 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002453
2454 WDI_PostAssocReq must have been called.
2455
Jeff Johnsone7245742012-09-05 17:12:55 -07002456 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002457 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002458
Jeff Johnson295189b2012-06-20 16:38:30 -07002459 wdiDelSTARspCb: callback for passing back the response
2460 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002461
Jeff Johnson295189b2012-06-20 16:38:30 -07002462 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002463 callback
2464
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 @see WDI_PostAssocReq
2466 @return Result of the function call
2467*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002468WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002469WDI_DelSTAReq
2470(
2471 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2472 WDI_DelSTARspCb wdiDelSTARspCb,
2473 void* pUserData
2474)
2475{
2476 WDI_EventInfoType wdiEventData;
2477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2478
2479 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 ------------------------------------------------------------------------*/
2482 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2483 {
2484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2485 "WDI API call before module is initialized - Fail request");
2486
Jeff Johnsone7245742012-09-05 17:12:55 -07002487 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002488 }
2489
2490 /*------------------------------------------------------------------------
2491 Fill in Event data and post to the Main FSM
2492 ------------------------------------------------------------------------*/
2493 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002494 wdiEventData.pEventData = pwdiDelSTAParams;
2495 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2496 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002497 wdiEventData.pUserData = pUserData;
2498
2499 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2500
2501}/*WDI_DelSTAReq*/
2502
Jeff Johnsone7245742012-09-05 17:12:55 -07002503/*========================================================================
2504
Jeff Johnson295189b2012-06-20 16:38:30 -07002505 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002506
Jeff Johnson295189b2012-06-20 16:38:30 -07002507==========================================================================*/
2508
2509/**
2510 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2511 install a BSS encryption key on the HW. Upon the call of this
2512 API the WLAN DAL will pack and send a Set BSS Key request
2513 message to the lower RIVA sub-system if DAL is in state
2514 STARTED.
2515
2516 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002517 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002518
2519 WDI_PostAssocReq must have been called.
2520
Jeff Johnsone7245742012-09-05 17:12:55 -07002521 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002523
Jeff Johnson295189b2012-06-20 16:38:30 -07002524 wdiSetBSSKeyRspCb: callback for passing back the
2525 response of the set BSS Key operation received from the
2526 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002527
Jeff Johnson295189b2012-06-20 16:38:30 -07002528 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002529 callback
2530
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 @see WDI_PostAssocReq
2532 @return Result of the function call
2533*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002534WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002535WDI_SetBSSKeyReq
2536(
2537 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2538 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2539 void* pUserData
2540)
2541{
2542 WDI_EventInfoType wdiEventData;
2543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2544
2545 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002546 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002547 ------------------------------------------------------------------------*/
2548 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2549 {
2550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2551 "WDI API call before module is initialized - Fail request");
2552
Jeff Johnsone7245742012-09-05 17:12:55 -07002553 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002554 }
2555
2556 /*------------------------------------------------------------------------
2557 Fill in Event data and post to the Main FSM
2558 ------------------------------------------------------------------------*/
2559 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002560 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2561 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2562 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002563 wdiEventData.pUserData = pUserData;
2564
2565 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2566
2567}/*WDI_SetBSSKeyReq*/
2568
2569/**
2570 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2571 uninstall a BSS key from HW. Upon the call of this API the
2572 WLAN DAL will pack and send a HAL Remove BSS Key request
2573 message to the lower RIVA sub-system if DAL is in state
2574 STARTED.
2575
2576 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002577 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002578
2579 WDI_SetBSSKeyReq must have been called.
2580
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002582 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002583
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 wdiRemoveBSSKeyRspCb: callback for passing back the
2585 response of the remove BSS key operation received from
2586 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002587
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002589 callback
2590
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 @see WDI_SetBSSKeyReq
2592 @return Result of the function call
2593*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002594WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002595WDI_RemoveBSSKeyReq
2596(
2597 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2598 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2599 void* pUserData
2600)
2601{
2602 WDI_EventInfoType wdiEventData;
2603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2604
2605 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002606 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002607 ------------------------------------------------------------------------*/
2608 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2609 {
2610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2611 "WDI API call before module is initialized - Fail request");
2612
Jeff Johnsone7245742012-09-05 17:12:55 -07002613 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002614 }
2615
2616 /*------------------------------------------------------------------------
2617 Fill in Event data and post to the Main FSM
2618 ------------------------------------------------------------------------*/
2619 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002620 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2621 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2622 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 wdiEventData.pUserData = pUserData;
2624
2625 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2626
2627}/*WDI_RemoveBSSKeyReq*/
2628
2629
2630/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002631 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002632 ready to install a STA(ast) encryption key in HW. Upon
2633 the call of this API the WLAN DAL will pack and send a
2634 HAL Set STA Key request message to the lower RIVA
2635 sub-system if DAL is in state STARTED.
2636
2637 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002638 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002639
2640 WDI_PostAssocReq must have been called.
2641
Jeff Johnsone7245742012-09-05 17:12:55 -07002642 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002643 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002644
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 wdiSetSTAKeyRspCb: callback for passing back the
2646 response of the set STA key operation received from the
2647 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002648
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002650 callback
2651
Jeff Johnson295189b2012-06-20 16:38:30 -07002652 @see WDI_PostAssocReq
2653 @return Result of the function call
2654*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002655WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002656WDI_SetSTAKeyReq
2657(
2658 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2659 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2660 void* pUserData
2661)
2662{
2663 WDI_EventInfoType wdiEventData;
2664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2665
2666 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002667 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002668 ------------------------------------------------------------------------*/
2669 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2670 {
2671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2672 "WDI API call before module is initialized - Fail request");
2673
Jeff Johnsone7245742012-09-05 17:12:55 -07002674 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002675 }
2676
2677 /*------------------------------------------------------------------------
2678 Fill in Event data and post to the Main FSM
2679 ------------------------------------------------------------------------*/
2680 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002681 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2682 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2683 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002684 wdiEventData.pUserData = pUserData;
2685
2686 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2687
2688}/*WDI_SetSTAKeyReq*/
2689
2690
2691/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002692 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002693 wants to uninstall a previously set STA key in HW. Upon
2694 the call of this API the WLAN DAL will pack and send a
2695 HAL Remove STA Key request message to the lower RIVA
2696 sub-system if DAL is in state STARTED.
2697
2698 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002699 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002700
2701 WDI_SetSTAKeyReq must have been called.
2702
Jeff Johnsone7245742012-09-05 17:12:55 -07002703 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002704 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002705
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 wdiRemoveSTAKeyRspCb: callback for passing back the
2707 response of the remove STA key operation received from
2708 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002709
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002711 callback
2712
Jeff Johnson295189b2012-06-20 16:38:30 -07002713 @see WDI_SetSTAKeyReq
2714 @return Result of the function call
2715*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002717WDI_RemoveSTAKeyReq
2718(
2719 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2720 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2721 void* pUserData
2722)
2723{
2724 WDI_EventInfoType wdiEventData;
2725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2726
2727 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002728 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 ------------------------------------------------------------------------*/
2730 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2731 {
2732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2733 "WDI API call before module is initialized - Fail request");
2734
Jeff Johnsone7245742012-09-05 17:12:55 -07002735 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002736 }
2737
2738 /*------------------------------------------------------------------------
2739 Fill in Event data and post to the Main FSM
2740 ------------------------------------------------------------------------*/
2741 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002742 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2743 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2744 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002745 wdiEventData.pUserData = pUserData;
2746
2747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2748
2749}/*WDI_RemoveSTAKeyReq*/
2750
2751
2752/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002753 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002754 wants to install a STA Bcast encryption key on the HW.
2755 Upon the call of this API the WLAN DAL will pack and
2756 send a HAL Start request message to the lower RIVA
2757 sub-system if DAL is in state STARTED.
2758
2759 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002760 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002761
2762 WDI_PostAssocReq must have been called.
2763
Jeff Johnsone7245742012-09-05 17:12:55 -07002764 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002765 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002766
Jeff Johnson295189b2012-06-20 16:38:30 -07002767 wdiSetSTABcastKeyRspCb: callback for passing back the
2768 response of the set BSS Key operation received from the
2769 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002770
Jeff Johnson295189b2012-06-20 16:38:30 -07002771 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002772 callback
2773
Jeff Johnson295189b2012-06-20 16:38:30 -07002774 @see WDI_PostAssocReq
2775 @return Result of the function call
2776*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002777WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002778WDI_SetSTABcastKeyReq
2779(
2780 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2781 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2782 void* pUserData
2783)
2784
2785{
2786 WDI_EventInfoType wdiEventData;
2787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2788
2789 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002790 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002791 ------------------------------------------------------------------------*/
2792 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2793 {
2794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2795 "WDI API call before module is initialized - Fail request");
2796
Jeff Johnsone7245742012-09-05 17:12:55 -07002797 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002798 }
2799
2800 /*------------------------------------------------------------------------
2801 Fill in Event data and post to the Main FSM
2802 ------------------------------------------------------------------------*/
2803 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002804 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2805 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2806 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002807 wdiEventData.pUserData = pUserData;
2808
2809 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2810
2811}/*WDI_SetSTABcastKeyReq*/
2812
2813/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002814 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002815 MAC wants to uninstall a STA Bcast key from HW. Upon the
2816 call of this API the WLAN DAL will pack and send a HAL
2817 Remove STA Bcast Key request message to the lower RIVA
2818 sub-system if DAL is in state STARTED.
2819
2820 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002821 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002822
2823 WDI_SetSTABcastKeyReq must have been called.
2824
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002826 parameters as specified by the Device
2827 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002828
Jeff Johnson295189b2012-06-20 16:38:30 -07002829 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2830 response of the remove STA Bcast key operation received
2831 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002832
Jeff Johnson295189b2012-06-20 16:38:30 -07002833 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 callback
2835
Jeff Johnson295189b2012-06-20 16:38:30 -07002836 @see WDI_SetSTABcastKeyReq
2837 @return Result of the function call
2838*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002839WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002840WDI_RemoveSTABcastKeyReq
2841(
2842 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2843 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2844 void* pUserData
2845)
2846{
2847 WDI_EventInfoType wdiEventData;
2848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2849
2850 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002851 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002852 ------------------------------------------------------------------------*/
2853 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2854 {
2855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2856 "WDI API call before module is initialized - Fail request");
2857
Jeff Johnsone7245742012-09-05 17:12:55 -07002858 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002859 }
2860
2861 /*------------------------------------------------------------------------
2862 Fill in Event data and post to the Main FSM
2863 ------------------------------------------------------------------------*/
2864 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002865 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2866 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2867 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002868 wdiEventData.pUserData = pUserData;
2869
2870 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2871
2872}/*WDI_RemoveSTABcastKeyReq*/
2873
2874/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002876 MAC wants to set Max Tx Power to HW. Upon the
2877 call of this API the WLAN DAL will pack and send a HAL
2878 Remove STA Bcast Key request message to the lower RIVA
2879 sub-system if DAL is in state STARTED.
2880
2881 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002882 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002883
2884 WDI_SetSTABcastKeyReq must have been called.
2885
Jeff Johnsone7245742012-09-05 17:12:55 -07002886 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002887 parameters as specified by the Device
2888 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002889
Jeff Johnson295189b2012-06-20 16:38:30 -07002890 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2891 response of the remove STA Bcast key operation received
2892 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002893
Jeff Johnson295189b2012-06-20 16:38:30 -07002894 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002895 callback
2896
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 @see WDI_SetMaxTxPowerReq
2898 @return Result of the function call
2899*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002900WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002901WDI_SetMaxTxPowerReq
2902(
2903 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2904 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2905 void* pUserData
2906)
2907{
2908 WDI_EventInfoType wdiEventData;
2909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2910
2911 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002912 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002913 ------------------------------------------------------------------------*/
2914 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2915 {
2916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2917 "WDI API call before module is initialized - Fail request");
2918
Jeff Johnsone7245742012-09-05 17:12:55 -07002919 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002920 }
2921
2922 /*------------------------------------------------------------------------
2923 Fill in Event data and post to the Main FSM
2924 ------------------------------------------------------------------------*/
2925 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002926 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2927 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2928 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002929 wdiEventData.pUserData = pUserData;
2930
2931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2932}
2933
schangd82195a2013-03-13 18:41:24 -07002934/**
2935 @brief WDI_SetTxPowerReq will be called when the upper
2936 MAC wants to set Tx Power to HW.
2937 In state BUSY this request will be queued. Request won't
2938 be allowed in any other state.
2939
2940
2941 @param pwdiSetTxPowerParams: set TS Power parameters
2942 BSSID and target TX Power with dbm included
2943
2944 wdiReqStatusCb: callback for passing back the response
2945
2946 pUserData: user data will be passed back with the
2947 callback
2948
2949 @return Result of the function call
2950*/
2951WDI_Status
2952WDI_SetTxPowerReq
2953(
2954 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2955 WDA_SetTxPowerRspCb wdiReqStatusCb,
2956 void* pUserData
2957)
2958{
2959 WDI_EventInfoType wdiEventData;
2960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2961
2962 /*------------------------------------------------------------------------
2963 Sanity Check
2964 ------------------------------------------------------------------------*/
2965 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2966 {
2967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2968 "WDI API call before module is initialized - Fail request");
2969
2970 return WDI_STATUS_E_NOT_ALLOWED;
2971 }
2972
2973 /*------------------------------------------------------------------------
2974 Fill in Event data and post to the Main FSM
2975 ------------------------------------------------------------------------*/
2976 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2977 wdiEventData.pEventData = pwdiSetTxPowerParams;
2978 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2979 wdiEventData.pCBfnc = wdiReqStatusCb;
2980 wdiEventData.pUserData = pUserData;
2981
2982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2983}
2984
Jeff Johnson295189b2012-06-20 16:38:30 -07002985#ifdef FEATURE_WLAN_CCX
2986WDI_Status
2987WDI_TSMStatsReq
2988(
2989 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2990 WDI_TsmRspCb wdiReqStatusCb,
2991 void* pUserData
2992)
2993{
2994 WDI_EventInfoType wdiEventData;
2995 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002996 /*------------------------------------------------------------------------
2997 Sanity Check
2998 ------------------------------------------------------------------------*/
2999 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3000 {
3001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3002 "WDI API call before module is initialized - Fail request");
3003
3004 return WDI_STATUS_E_NOT_ALLOWED;
3005 }
3006
3007 /*------------------------------------------------------------------------
3008 Fill in Event data and post to the Main FSM
3009 ------------------------------------------------------------------------*/
3010 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3011 wdiEventData.pEventData = pwdiTsmReqParams;
3012 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3013 wdiEventData.pCBfnc = wdiReqStatusCb;
3014 wdiEventData.pUserData = pUserData;
3015
3016 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3017
3018}
3019#endif
3020
3021/*========================================================================
3022
3023 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003024
Jeff Johnson295189b2012-06-20 16:38:30 -07003025==========================================================================*/
3026
3027/**
3028 @brief WDI_AddTSReq will be called when the upper MAC to inform
3029 the device of a successful add TSpec negotiation. HW
3030 needs to receive the TSpec Info from the UMAC in order
3031 to configure properly the QoS data traffic. Upon the
3032 call of this API the WLAN DAL will pack and send a HAL
3033 Add TS request message to the lower RIVA sub-system if
3034 DAL is in state STARTED.
3035
3036 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003037 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003038
3039 WDI_PostAssocReq must have been called.
3040
3041 @param wdiAddTsReqParams: the add TS parameters as specified by
3042 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003043
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 wdiAddTsRspCb: callback for passing back the response of
3045 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003046
Jeff Johnson295189b2012-06-20 16:38:30 -07003047 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003048 callback
3049
Jeff Johnson295189b2012-06-20 16:38:30 -07003050 @see WDI_PostAssocReq
3051 @return Result of the function call
3052*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003053WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003054WDI_AddTSReq
3055(
3056 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3057 WDI_AddTsRspCb wdiAddTsRspCb,
3058 void* pUserData
3059)
3060{
3061 WDI_EventInfoType wdiEventData;
3062 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3063
3064 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003065 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003066 ------------------------------------------------------------------------*/
3067 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3068 {
3069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3070 "WDI API call before module is initialized - Fail request");
3071
Jeff Johnsone7245742012-09-05 17:12:55 -07003072 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003073 }
3074
3075 /*------------------------------------------------------------------------
3076 Fill in Event data and post to the Main FSM
3077 ------------------------------------------------------------------------*/
3078 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003079 wdiEventData.pEventData = pwdiAddTsReqParams;
3080 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3081 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003082 wdiEventData.pUserData = pUserData;
3083
3084 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3085
3086}/*WDI_AddTSReq*/
3087
3088
3089
3090/**
3091 @brief WDI_DelTSReq will be called when the upper MAC has ended
3092 admission on a specific AC. This is to inform HW that
3093 QoS traffic parameters must be rest. Upon the call of
3094 this API the WLAN DAL will pack and send a HAL Del TS
3095 request message to the lower RIVA sub-system if DAL is
3096 in state STARTED.
3097
3098 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003099 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003100
3101 WDI_AddTSReq must have been called.
3102
3103 @param wdiDelTsReqParams: the del TS parameters as specified by
3104 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003105
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 wdiDelTsRspCb: callback for passing back the response of
3107 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003108
Jeff Johnson295189b2012-06-20 16:38:30 -07003109 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003110 callback
3111
Jeff Johnson295189b2012-06-20 16:38:30 -07003112 @see WDI_AddTSReq
3113 @return Result of the function call
3114*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003115WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003116WDI_DelTSReq
3117(
3118 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3119 WDI_DelTsRspCb wdiDelTsRspCb,
3120 void* pUserData
3121)
3122{
3123 WDI_EventInfoType wdiEventData;
3124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3125
3126 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003128 ------------------------------------------------------------------------*/
3129 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3130 {
3131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3132 "WDI API call before module is initialized - Fail request");
3133
Jeff Johnsone7245742012-09-05 17:12:55 -07003134 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003135 }
3136
3137 /*------------------------------------------------------------------------
3138 Fill in Event data and post to the Main FSM
3139 ------------------------------------------------------------------------*/
3140 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003141 wdiEventData.pEventData = pwdiDelTsReqParams;
3142 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3143 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003144 wdiEventData.pUserData = pUserData;
3145
3146 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3147
3148}/*WDI_DelTSReq*/
3149
3150
3151
3152/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003153 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003154 wishes to update the EDCA parameters used by HW for QoS
3155 data traffic. Upon the call of this API the WLAN DAL
3156 will pack and send a HAL Update EDCA Params request
3157 message to the lower RIVA sub-system if DAL is in state
3158 STARTED.
3159
3160 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003161 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003162
3163 WDI_PostAssocReq must have been called.
3164
Jeff Johnsone7245742012-09-05 17:12:55 -07003165 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003166 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003167
Jeff Johnson295189b2012-06-20 16:38:30 -07003168 wdiUpdateEDCAParamsRspCb: callback for passing back the
3169 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003170
Jeff Johnson295189b2012-06-20 16:38:30 -07003171 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003172 callback
3173
Jeff Johnson295189b2012-06-20 16:38:30 -07003174 @see WDI_PostAssocReq
3175 @return Result of the function call
3176*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003177WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003178WDI_UpdateEDCAParams
3179(
3180 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3181 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3182 void* pUserData
3183)
3184{
3185 WDI_EventInfoType wdiEventData;
3186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3187
3188 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003189 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003190 ------------------------------------------------------------------------*/
3191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3192 {
3193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3194 "WDI API call before module is initialized - Fail request");
3195
Jeff Johnsone7245742012-09-05 17:12:55 -07003196 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003197 }
3198
3199 /*------------------------------------------------------------------------
3200 Fill in Event data and post to the Main FSM
3201 ------------------------------------------------------------------------*/
3202 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003203 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3204 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3205 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003206 wdiEventData.pUserData = pUserData;
3207
3208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3209
3210}/*WDI_UpdateEDCAParams*/
3211
3212
3213/**
3214 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3215 successfully a BA session and needs to notify the HW for
3216 the appropriate settings to take place. Upon the call of
3217 this API the WLAN DAL will pack and send a HAL Add BA
3218 request message to the lower RIVA sub-system if DAL is
3219 in state STARTED.
3220
3221 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003222 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003223
3224 WDI_PostAssocReq must have been called.
3225
3226 @param wdiAddBAReqParams: the add BA parameters as specified by
3227 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003228
Jeff Johnson295189b2012-06-20 16:38:30 -07003229 wdiAddBARspCb: callback for passing back the response of
3230 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003231
Jeff Johnson295189b2012-06-20 16:38:30 -07003232 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003233 callback
3234
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 @see WDI_PostAssocReq
3236 @return Result of the function call
3237*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003238WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003239WDI_AddBASessionReq
3240(
3241 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3242 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3243 void* pUserData
3244)
3245{
3246 WDI_EventInfoType wdiEventData;
3247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3248
3249 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003250 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003251 ------------------------------------------------------------------------*/
3252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3253 {
3254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3255 "WDI API call before module is initialized - Fail request");
3256
Jeff Johnsone7245742012-09-05 17:12:55 -07003257 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003258 }
3259
3260 /*------------------------------------------------------------------------
3261 Fill in Event data and post to the Main FSM
3262 ------------------------------------------------------------------------*/
3263 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003264 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3265 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3266 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003267 wdiEventData.pUserData = pUserData;
3268
3269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3270
3271}/*WDI_AddBASessionReq*/
3272
3273/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003274 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003275 inform HW that it has deleted a previously created BA
3276 session. Upon the call of this API the WLAN DAL will
3277 pack and send a HAL Del BA request message to the lower
3278 RIVA sub-system if DAL is in state STARTED.
3279
3280 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003281 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003282
3283 WDI_AddBAReq must have been called.
3284
3285 @param wdiDelBAReqParams: the del BA parameters as specified by
3286 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003287
Jeff Johnson295189b2012-06-20 16:38:30 -07003288 wdiDelBARspCb: callback for passing back the response of
3289 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003290
Jeff Johnson295189b2012-06-20 16:38:30 -07003291 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003292 callback
3293
Jeff Johnson295189b2012-06-20 16:38:30 -07003294 @see WDI_AddBAReq
3295 @return Result of the function call
3296*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003297WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003298WDI_DelBAReq
3299(
3300 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3301 WDI_DelBARspCb wdiDelBARspCb,
3302 void* pUserData
3303)
3304{
3305 WDI_EventInfoType wdiEventData;
3306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3307
3308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003309 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003310 ------------------------------------------------------------------------*/
3311 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3312 {
3313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3314 "WDI API call before module is initialized - Fail request");
3315
Jeff Johnsone7245742012-09-05 17:12:55 -07003316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003317 }
3318
3319 /*------------------------------------------------------------------------
3320 Fill in Event data and post to the Main FSM
3321 ------------------------------------------------------------------------*/
3322 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003323 wdiEventData.pEventData = pwdiDelBAReqParams;
3324 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3325 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003326 wdiEventData.pUserData = pUserData;
3327
3328 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3329
3330}/*WDI_DelBAReq*/
3331
Jeff Johnsone7245742012-09-05 17:12:55 -07003332/*========================================================================
3333
Jeff Johnson295189b2012-06-20 16:38:30 -07003334 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003335
Jeff Johnson295189b2012-06-20 16:38:30 -07003336==========================================================================*/
3337
3338/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003339 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003340 wants to set the power save related configurations of
3341 the WLAN Device. Upon the call of this API the WLAN DAL
3342 will pack and send a HAL Update CFG request message to
3343 the lower RIVA sub-system if DAL is in state STARTED.
3344
3345 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003346 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003347
3348 WDI_Start must have been called.
3349
Jeff Johnsone7245742012-09-05 17:12:55 -07003350 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003351 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003352
Jeff Johnson295189b2012-06-20 16:38:30 -07003353 wdiSetPwrSaveCfgCb: callback for passing back the
3354 response of the set power save cfg operation received
3355 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003356
Jeff Johnson295189b2012-06-20 16:38:30 -07003357 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003358 callback
3359
Jeff Johnson295189b2012-06-20 16:38:30 -07003360 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003361 @return Result of the function call
3362*/
3363WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003364WDI_SetPwrSaveCfgReq
3365(
3366 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3367 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3368 void* pUserData
3369)
3370{
3371 WDI_EventInfoType wdiEventData;
3372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3373
3374 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003375 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003376 ------------------------------------------------------------------------*/
3377 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3378 {
3379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3380 "WDI API call before module is initialized - Fail request");
3381
Jeff Johnsone7245742012-09-05 17:12:55 -07003382 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003383 }
3384
3385 /*------------------------------------------------------------------------
3386 Fill in Event data and post to the Main FSM
3387 ------------------------------------------------------------------------*/
3388 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003389 wdiEventData.pEventData = pwdiPowerSaveCfg;
3390 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3391 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003392 wdiEventData.pUserData = pUserData;
3393
3394 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3395
3396}/*WDI_SetPwrSaveCfgReq*/
3397
3398/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003399 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003400 request the device to get into IMPS power state. Upon
3401 the call of this API the WLAN DAL will send a HAL Enter
3402 IMPS request message to the lower RIVA sub-system if DAL
3403 is in state STARTED.
3404
3405 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003406 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003407
Jeff Johnsone7245742012-09-05 17:12:55 -07003408
3409 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 response of the Enter IMPS operation received from the
3411 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003412
Jeff Johnson295189b2012-06-20 16:38:30 -07003413 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003414 callback
3415
Jeff Johnson295189b2012-06-20 16:38:30 -07003416 @see WDI_Start
3417 @return Result of the function call
3418*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003419WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003420WDI_EnterImpsReq
3421(
3422 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3423 void* pUserData
3424)
3425{
3426 WDI_EventInfoType wdiEventData;
3427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3428
3429 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003430 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003431 ------------------------------------------------------------------------*/
3432 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3433 {
3434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3435 "WDI API call before module is initialized - Fail request");
3436
Jeff Johnsone7245742012-09-05 17:12:55 -07003437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003438 }
3439
3440 /*------------------------------------------------------------------------
3441 Fill in Event data and post to the Main FSM
3442 ------------------------------------------------------------------------*/
3443 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003444 wdiEventData.pEventData = NULL;
3445 wdiEventData.uEventDataSize = 0;
3446 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003447 wdiEventData.pUserData = pUserData;
3448
3449 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3450
3451}/*WDI_EnterImpsReq*/
3452
3453/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003454 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003455 request the device to get out of IMPS power state. Upon
3456 the call of this API the WLAN DAL will send a HAL Exit
3457 IMPS request message to the lower RIVA sub-system if DAL
3458 is in state STARTED.
3459
3460 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003461 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003462
Jeff Johnson295189b2012-06-20 16:38:30 -07003463
Jeff Johnsone7245742012-09-05 17:12:55 -07003464
3465 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003466 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003467
Jeff Johnson295189b2012-06-20 16:38:30 -07003468 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003469 callback
3470
Jeff Johnson295189b2012-06-20 16:38:30 -07003471 @see WDI_Start
3472 @return Result of the function call
3473*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003474WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003475WDI_ExitImpsReq
3476(
3477 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3478 void* pUserData
3479)
3480{
3481 WDI_EventInfoType wdiEventData;
3482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3483
3484 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003485 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003486 ------------------------------------------------------------------------*/
3487 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3488 {
3489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3490 "WDI API call before module is initialized - Fail request");
3491
Jeff Johnsone7245742012-09-05 17:12:55 -07003492 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003493 }
3494
3495 /*------------------------------------------------------------------------
3496 Fill in Event data and post to the Main FSM
3497 ------------------------------------------------------------------------*/
3498 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003499 wdiEventData.pEventData = NULL;
3500 wdiEventData.uEventDataSize = 0;
3501 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003502 wdiEventData.pUserData = pUserData;
3503
3504 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3505
3506}/*WDI_ExitImpsReq*/
3507
3508/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003509 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003510 request the device to get into BMPS power state. Upon
3511 the call of this API the WLAN DAL will pack and send a
3512 HAL Enter BMPS request message to the lower RIVA
3513 sub-system if DAL is in state STARTED.
3514
3515 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003516 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003517
3518 WDI_PostAssocReq must have been called.
3519
Jeff Johnsone7245742012-09-05 17:12:55 -07003520 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003521 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003522
Jeff Johnson295189b2012-06-20 16:38:30 -07003523 wdiEnterBmpsRspCb: callback for passing back the
3524 response of the Enter BMPS operation received from the
3525 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003526
Jeff Johnson295189b2012-06-20 16:38:30 -07003527 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003528 callback
3529
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 @see WDI_PostAssocReq
3531 @return Result of the function call
3532*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003533WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003534WDI_EnterBmpsReq
3535(
3536 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3537 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3538 void* pUserData
3539)
3540{
3541 WDI_EventInfoType wdiEventData;
3542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3543
3544 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003545 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003546 ------------------------------------------------------------------------*/
3547 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3548 {
3549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3550 "WDI API call before module is initialized - Fail request");
3551
Jeff Johnsone7245742012-09-05 17:12:55 -07003552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003553 }
3554
3555 /*------------------------------------------------------------------------
3556 Fill in Event data and post to the Main FSM
3557 ------------------------------------------------------------------------*/
3558 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003559 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3560 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3561 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003562 wdiEventData.pUserData = pUserData;
3563
3564 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3565
3566}/*WDI_EnterBmpsReq*/
3567
3568/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003569 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003570 request the device to get out of BMPS power state. Upon
3571 the call of this API the WLAN DAL will pack and send a
3572 HAL Exit BMPS request message to the lower RIVA
3573 sub-system if DAL is in state STARTED.
3574
3575 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003576 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003577
3578 WDI_PostAssocReq must have been called.
3579
Jeff Johnsone7245742012-09-05 17:12:55 -07003580 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003581 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003582
Jeff Johnson295189b2012-06-20 16:38:30 -07003583 wdiExitBmpsRspCb: callback for passing back the response
3584 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003585
Jeff Johnson295189b2012-06-20 16:38:30 -07003586 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003587 callback
3588
Jeff Johnson295189b2012-06-20 16:38:30 -07003589 @see WDI_PostAssocReq
3590 @return Result of the function call
3591*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003592WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003593WDI_ExitBmpsReq
3594(
3595 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3596 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3597 void* pUserData
3598)
3599{
3600 WDI_EventInfoType wdiEventData;
3601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3602
3603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 ------------------------------------------------------------------------*/
3606 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3607 {
3608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3609 "WDI API call before module is initialized - Fail request");
3610
Jeff Johnsone7245742012-09-05 17:12:55 -07003611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003612 }
3613
3614 /*------------------------------------------------------------------------
3615 Fill in Event data and post to the Main FSM
3616 ------------------------------------------------------------------------*/
3617 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003618 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3619 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3620 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 wdiEventData.pUserData = pUserData;
3622
3623 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3624
3625}/*WDI_ExitBmpsReq*/
3626
3627/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003628 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003629 request the device to get into UAPSD power state. Upon
3630 the call of this API the WLAN DAL will pack and send a
3631 HAL Enter UAPSD request message to the lower RIVA
3632 sub-system if DAL is in state STARTED.
3633
3634 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003635 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003636
3637 WDI_PostAssocReq must have been called.
3638 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003639
3640 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003641 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003642
Jeff Johnson295189b2012-06-20 16:38:30 -07003643 wdiEnterUapsdRspCb: callback for passing back the
3644 response of the Enter UAPSD operation received from the
3645 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003646
Jeff Johnson295189b2012-06-20 16:38:30 -07003647 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003648 callback
3649
Jeff Johnson295189b2012-06-20 16:38:30 -07003650 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3651 @return Result of the function call
3652*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003653WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003654WDI_EnterUapsdReq
3655(
3656 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3657 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3658 void* pUserData
3659)
3660{
3661 WDI_EventInfoType wdiEventData;
3662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3663
3664 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003665 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 ------------------------------------------------------------------------*/
3667 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3668 {
3669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3670 "WDI API call before module is initialized - Fail request");
3671
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 }
3674
3675 /*------------------------------------------------------------------------
3676 Fill in Event data and post to the Main FSM
3677 ------------------------------------------------------------------------*/
3678 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003679 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3680 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3681 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003682 wdiEventData.pUserData = pUserData;
3683
3684 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3685
3686}/*WDI_EnterUapsdReq*/
3687
3688/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003689 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003690 request the device to get out of UAPSD power state. Upon
3691 the call of this API the WLAN DAL will send a HAL Exit
3692 UAPSD request message to the lower RIVA sub-system if
3693 DAL is in state STARTED.
3694
3695 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003696 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003697
3698 WDI_PostAssocReq must have been called.
3699
Jeff Johnsone7245742012-09-05 17:12:55 -07003700 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 response of the Exit UAPSD operation received from the
3702 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003703
Jeff Johnson295189b2012-06-20 16:38:30 -07003704 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003705 callback
3706
Jeff Johnson295189b2012-06-20 16:38:30 -07003707 @see WDI_PostAssocReq
3708 @return Result of the function call
3709*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003710WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003711WDI_ExitUapsdReq
3712(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003713 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3715 void* pUserData
3716)
3717{
3718 WDI_EventInfoType wdiEventData;
3719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3720
3721 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003723 ------------------------------------------------------------------------*/
3724 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3725 {
3726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3727 "WDI API call before module is initialized - Fail request");
3728
Jeff Johnsone7245742012-09-05 17:12:55 -07003729 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003730 }
3731
3732 /*------------------------------------------------------------------------
3733 Fill in Event data and post to the Main FSM
3734 ------------------------------------------------------------------------*/
3735 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003736 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3737 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003738 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003739 wdiEventData.pUserData = pUserData;
3740
3741 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3742
3743}/*WDI_ExitUapsdReq*/
3744
3745/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003747 MAC wants to set the UAPSD related configurations
3748 of an associated STA (while acting as an AP) to the WLAN
3749 Device. Upon the call of this API the WLAN DAL will pack
3750 and send a HAL Update UAPSD params request message to
3751 the lower RIVA sub-system if DAL is in state STARTED.
3752
3753 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003754 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003755
3756 WDI_ConfigBSSReq must have been called.
3757
Jeff Johnsone7245742012-09-05 17:12:55 -07003758 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003760
Jeff Johnson295189b2012-06-20 16:38:30 -07003761 wdiUpdateUapsdParamsCb: callback for passing back the
3762 response of the update UAPSD params operation received
3763 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003764
Jeff Johnson295189b2012-06-20 16:38:30 -07003765 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003766 callback
3767
Jeff Johnson295189b2012-06-20 16:38:30 -07003768 @see WDI_ConfigBSSReq
3769 @return Result of the function call
3770*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003771WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003772WDI_UpdateUapsdParamsReq
3773(
3774 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3775 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3776 void* pUserData
3777)
3778{
3779 WDI_EventInfoType wdiEventData;
3780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3781
3782 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003783 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 ------------------------------------------------------------------------*/
3785 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3786 {
3787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3788 "WDI API call before module is initialized - Fail request");
3789
Jeff Johnsone7245742012-09-05 17:12:55 -07003790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003791 }
3792
3793 /*------------------------------------------------------------------------
3794 Fill in Event data and post to the Main FSM
3795 ------------------------------------------------------------------------*/
3796 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003797 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003798 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003799 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003800 wdiEventData.pUserData = pUserData;
3801
3802 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3803
3804}/*WDI_UpdateUapsdParamsReq*/
3805
3806/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003807 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003808 MAC wants to set the UAPSD related configurations before
3809 requesting for enter UAPSD power state to the WLAN
3810 Device. Upon the call of this API the WLAN DAL will pack
3811 and send a HAL Set UAPSD params request message to
3812 the lower RIVA sub-system if DAL is in state STARTED.
3813
3814 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003815 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003816
3817 WDI_PostAssocReq must have been called.
3818
3819 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3820 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003821
Jeff Johnson295189b2012-06-20 16:38:30 -07003822 wdiSetUapsdAcParamsCb: callback for passing back the
3823 response of the set UAPSD params operation received from
3824 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003827 callback
3828
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 @see WDI_PostAssocReq
3830 @return Result of the function call
3831*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003833WDI_SetUapsdAcParamsReq
3834(
3835 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3836 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3837 void* pUserData
3838)
3839{
3840 WDI_EventInfoType wdiEventData;
3841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3842
3843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 ------------------------------------------------------------------------*/
3846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3847 {
3848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3849 "WDI API call before module is initialized - Fail request");
3850
Jeff Johnsone7245742012-09-05 17:12:55 -07003851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 }
3853
3854 /*------------------------------------------------------------------------
3855 Fill in Event data and post to the Main FSM
3856 ------------------------------------------------------------------------*/
3857 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 wdiEventData.pEventData = pwdiUapsdInfo;
3859 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3860 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 wdiEventData.pUserData = pUserData;
3862
3863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3864
3865}/*WDI_SetUapsdAcParamsReq*/
3866
3867/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003868 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003869 MAC wants to set/reset the RXP filters for received pkts
3870 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3871 and send a HAL configure RXP filter request message to
3872 the lower RIVA sub-system.
3873
3874 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003876
Jeff Johnsone7245742012-09-05 17:12:55 -07003877
3878 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003879 filter as specified by the Device
3880 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003881
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 wdiConfigureRxpFilterCb: callback for passing back the
3883 response of the configure RXP filter operation received
3884 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003887 callback
3888
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 @return Result of the function call
3890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003892WDI_ConfigureRxpFilterReq
3893(
3894 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3895 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3896 void* pUserData
3897)
3898{
3899 WDI_EventInfoType wdiEventData;
3900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3901
3902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003904 ------------------------------------------------------------------------*/
3905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3906 {
3907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3908 "WDI API call before module is initialized - Fail request");
3909
Jeff Johnsone7245742012-09-05 17:12:55 -07003910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003911 }
3912
3913 /*------------------------------------------------------------------------
3914 Fill in Event data and post to the Main FSM
3915 ------------------------------------------------------------------------*/
3916 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003917 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3918 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3919 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003920 wdiEventData.pUserData = pUserData;
3921
3922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3923}/*WDI_ConfigureRxpFilterReq*/
3924
3925/**
3926 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3927 wants to set the beacon filters while in power save.
3928 Upon the call of this API the WLAN DAL will pack and
3929 send a Beacon filter request message to the
3930 lower RIVA sub-system.
3931
3932 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003934
Jeff Johnsone7245742012-09-05 17:12:55 -07003935
3936 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003937 filter as specified by the Device
3938 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003939
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 wdiBeaconFilterCb: callback for passing back the
3941 response of the set beacon filter operation received
3942 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003943
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003945 callback
3946
Jeff Johnson295189b2012-06-20 16:38:30 -07003947 @return Result of the function call
3948*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003949WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003950WDI_SetBeaconFilterReq
3951(
3952 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3953 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3954 void* pUserData
3955)
3956{
3957 WDI_EventInfoType wdiEventData;
3958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3959
3960 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003961 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003962 ------------------------------------------------------------------------*/
3963 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3964 {
3965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3966 "WDI API call before module is initialized - Fail request");
3967
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 }
3970
3971 /*------------------------------------------------------------------------
3972 Fill in Event data and post to the Main FSM
3973 ------------------------------------------------------------------------*/
3974 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003975 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003976 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003977 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003978 wdiEventData.pUserData = pUserData;
3979
3980 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3981}/*WDI_SetBeaconFilterReq*/
3982
3983/**
3984 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3985 wants to remove the beacon filter for particular IE
3986 while in power save. Upon the call of this API the WLAN
3987 DAL will pack and send a remove Beacon filter request
3988 message to the lower RIVA sub-system.
3989
3990 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003992
Jeff Johnsone7245742012-09-05 17:12:55 -07003993
3994 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003995 filter as specified by the Device
3996 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003997
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 wdiBeaconFilterCb: callback for passing back the
3999 response of the remove beacon filter operation received
4000 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004001
Jeff Johnson295189b2012-06-20 16:38:30 -07004002 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004003 callback
4004
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 @return Result of the function call
4006*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004007WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004008WDI_RemBeaconFilterReq
4009(
4010 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4011 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4012 void* pUserData
4013)
4014{
4015 WDI_EventInfoType wdiEventData;
4016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4017
4018 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004019 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004020 ------------------------------------------------------------------------*/
4021 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4022 {
4023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4024 "WDI API call before module is initialized - Fail request");
4025
Jeff Johnsone7245742012-09-05 17:12:55 -07004026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004027 }
4028
4029 /*------------------------------------------------------------------------
4030 Fill in Event data and post to the Main FSM
4031 ------------------------------------------------------------------------*/
4032 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004033 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004034 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004036 wdiEventData.pUserData = pUserData;
4037
4038 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4039}/*WDI_RemBeaconFilterReq*/
4040
4041/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 MAC wants to set the RSSI thresholds related
4044 configurations while in power save. Upon the call of
4045 this API the WLAN DAL will pack and send a HAL Set RSSI
4046 thresholds request message to the lower RIVA
4047 sub-system if DAL is in state STARTED.
4048
4049 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004050 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004051
4052 WDI_PostAssocReq must have been called.
4053
4054 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4055 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004056
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 wdiSetUapsdAcParamsCb: callback for passing back the
4058 response of the set UAPSD params operation received from
4059 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004060
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004062 callback
4063
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 @see WDI_PostAssocReq
4065 @return Result of the function call
4066*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004067WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004068WDI_SetRSSIThresholdsReq
4069(
4070 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4071 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4072 void* pUserData
4073)
4074{
4075 WDI_EventInfoType wdiEventData;
4076 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4077
4078 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004079 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 ------------------------------------------------------------------------*/
4081 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4082 {
4083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4084 "WDI API call before module is initialized - Fail request");
4085
Jeff Johnsone7245742012-09-05 17:12:55 -07004086 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 }
4088
4089 /*------------------------------------------------------------------------
4090 Fill in Event data and post to the Main FSM
4091 ------------------------------------------------------------------------*/
4092 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004094 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 wdiEventData.pUserData = pUserData;
4097
4098 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4099}/* WDI_SetRSSIThresholdsReq*/
4100
4101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004103 wants to set the filter to minimize unnecessary host
4104 wakeup due to broadcast traffic while in power save.
4105 Upon the call of this API the WLAN DAL will pack and
4106 send a HAL host offload request message to the
4107 lower RIVA sub-system if DAL is in state STARTED.
4108
4109 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004111
4112 WDI_PostAssocReq must have been called.
4113
Jeff Johnsone7245742012-09-05 17:12:55 -07004114 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004115 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004116
Jeff Johnson295189b2012-06-20 16:38:30 -07004117 wdiHostOffloadCb: callback for passing back the response
4118 of the host offload operation received from the
4119 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004120
Jeff Johnson295189b2012-06-20 16:38:30 -07004121 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004122 callback
4123
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 @see WDI_PostAssocReq
4125 @return Result of the function call
4126*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004127WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004128WDI_HostOffloadReq
4129(
4130 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4131 WDI_HostOffloadCb wdiHostOffloadCb,
4132 void* pUserData
4133)
4134{
4135 WDI_EventInfoType wdiEventData;
4136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4137
4138 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004139 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004140 ------------------------------------------------------------------------*/
4141 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4142 {
4143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4144 "WDI API call before module is initialized - Fail request");
4145
Jeff Johnsone7245742012-09-05 17:12:55 -07004146 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004147 }
4148
4149 /*------------------------------------------------------------------------
4150 Fill in Event data and post to the Main FSM
4151 ------------------------------------------------------------------------*/
4152 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004153 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004154 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004155 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004156 wdiEventData.pUserData = pUserData;
4157
4158 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4159}/*WDI_HostOffloadReq*/
4160
4161/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 @brief WDI_KeepAliveReq will be called when the upper MAC
4163 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 and minimize unnecessary host wakeups due to while in power save.
4165 Upon the call of this API the WLAN DAL will pack and
4166 send a HAL Keep Alive request message to the
4167 lower RIVA sub-system if DAL is in state STARTED.
4168
4169 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004171
4172 WDI_PostAssocReq must have been called.
4173
Jeff Johnsone7245742012-09-05 17:12:55 -07004174 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004176
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 wdiKeepAliveCb: callback for passing back the response
4178 of the Keep Alive operation received from the
4179 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004180
Jeff Johnson295189b2012-06-20 16:38:30 -07004181 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004182 callback
4183
Jeff Johnson295189b2012-06-20 16:38:30 -07004184 @see WDI_PostAssocReq
4185 @return Result of the function call
4186*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004187WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004188WDI_KeepAliveReq
4189(
4190 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
4191 WDI_KeepAliveCb wdiKeepAliveCb,
4192 void* pUserData
4193)
4194{
4195 WDI_EventInfoType wdiEventData;
4196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4197
4198 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004199 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004200 ------------------------------------------------------------------------*/
4201 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4202 {
4203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4204 "WDI_KeepAliveReq: WDI API call before module "
4205 "is initialized - Fail request");
4206
Jeff Johnsone7245742012-09-05 17:12:55 -07004207 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004208 }
4209
4210 /*------------------------------------------------------------------------
4211 Fill in Event data and post to the Main FSM
4212 ------------------------------------------------------------------------*/
4213 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 wdiEventData.pEventData = pwdiKeepAliveParams;
4215 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
4216 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004217 wdiEventData.pUserData = pUserData;
4218
4219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4220}/*WDI_KeepAliveReq*/
4221
4222/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004223 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 wants to set the Wowl Bcast ptrn to minimize unnecessary
4225 host wakeup due to broadcast traffic while in power
4226 save. Upon the call of this API the WLAN DAL will pack
4227 and send a HAL Wowl Bcast ptrn request message to the
4228 lower RIVA sub-system if DAL is in state STARTED.
4229
4230 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004231 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004232
4233 WDI_PostAssocReq must have been called.
4234
Jeff Johnsone7245742012-09-05 17:12:55 -07004235 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004236 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004237
Jeff Johnson295189b2012-06-20 16:38:30 -07004238 wdiWowlAddBcPtrnCb: callback for passing back the
4239 response of the add Wowl bcast ptrn operation received
4240 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004241
Jeff Johnson295189b2012-06-20 16:38:30 -07004242 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004243 callback
4244
Jeff Johnson295189b2012-06-20 16:38:30 -07004245 @see WDI_PostAssocReq
4246 @return Result of the function call
4247*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004248WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004249WDI_WowlAddBcPtrnReq
4250(
4251 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4252 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4253 void* pUserData
4254)
4255{
4256 WDI_EventInfoType wdiEventData;
4257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4258
4259 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004260 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004261 ------------------------------------------------------------------------*/
4262 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4263 {
4264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4265 "WDI API call before module is initialized - Fail request");
4266
Jeff Johnsone7245742012-09-05 17:12:55 -07004267 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004268 }
4269
4270 /*------------------------------------------------------------------------
4271 Fill in Event data and post to the Main FSM
4272 ------------------------------------------------------------------------*/
4273 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004275 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004276 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004277 wdiEventData.pUserData = pUserData;
4278
4279 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4280}/*WDI_WowlAddBcPtrnReq*/
4281
4282/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004283 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004284 wants to clear the Wowl Bcast ptrn. Upon the call of
4285 this API the WLAN DAL will pack and send a HAL delete
4286 Wowl Bcast ptrn request message to the lower RIVA
4287 sub-system if DAL is in state STARTED.
4288
4289 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004290 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004291
4292 WDI_WowlAddBcPtrnReq must have been called.
4293
Jeff Johnsone7245742012-09-05 17:12:55 -07004294 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004295 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004296
Jeff Johnson295189b2012-06-20 16:38:30 -07004297 wdiWowlDelBcPtrnCb: callback for passing back the
4298 response of the del Wowl bcast ptrn operation received
4299 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004300
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004302 callback
4303
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 @see WDI_WowlAddBcPtrnReq
4305 @return Result of the function call
4306*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004307WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004308WDI_WowlDelBcPtrnReq
4309(
4310 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4311 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4312 void* pUserData
4313)
4314{
4315 WDI_EventInfoType wdiEventData;
4316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4317
4318 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004319 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004320 ------------------------------------------------------------------------*/
4321 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4322 {
4323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4324 "WDI API call before module is initialized - Fail request");
4325
Jeff Johnsone7245742012-09-05 17:12:55 -07004326 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004327 }
4328
4329 /*------------------------------------------------------------------------
4330 Fill in Event data and post to the Main FSM
4331 ------------------------------------------------------------------------*/
4332 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004333 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004334 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004336 wdiEventData.pUserData = pUserData;
4337
4338 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4339}/*WDI_WowlDelBcPtrnReq*/
4340
4341/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004342 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004343 wants to enter the Wowl state to minimize unnecessary
4344 host wakeup while in power save. Upon the call of this
4345 API the WLAN DAL will pack and send a HAL Wowl enter
4346 request message to the lower RIVA sub-system if DAL is
4347 in state STARTED.
4348
4349 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004351
4352 WDI_PostAssocReq must have been called.
4353
Jeff Johnsone7245742012-09-05 17:12:55 -07004354 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004355 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004356
Jeff Johnson295189b2012-06-20 16:38:30 -07004357 wdiWowlEnterReqCb: callback for passing back the
4358 response of the enter Wowl operation received from the
4359 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004360
Jeff Johnson295189b2012-06-20 16:38:30 -07004361 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004362 callback
4363
Jeff Johnson295189b2012-06-20 16:38:30 -07004364 @see WDI_PostAssocReq
4365 @return Result of the function call
4366*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004367WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004368WDI_WowlEnterReq
4369(
4370 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4371 WDI_WowlEnterReqCb wdiWowlEnterCb,
4372 void* pUserData
4373)
4374{
4375 WDI_EventInfoType wdiEventData;
4376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4377
4378 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004379 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004380 ------------------------------------------------------------------------*/
4381 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4382 {
4383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4384 "WDI API call before module is initialized - Fail request");
4385
Jeff Johnsone7245742012-09-05 17:12:55 -07004386 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004387 }
4388
4389 /*------------------------------------------------------------------------
4390 Fill in Event data and post to the Main FSM
4391 ------------------------------------------------------------------------*/
4392 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004393 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004394 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004395 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004396 wdiEventData.pUserData = pUserData;
4397
4398 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4399}/*WDI_WowlEnterReq*/
4400
4401/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004402 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004403 wants to exit the Wowl state. Upon the call of this API
4404 the WLAN DAL will pack and send a HAL Wowl exit request
4405 message to the lower RIVA sub-system if DAL is in state
4406 STARTED.
4407
4408 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004409 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004410
4411 WDI_WowlEnterReq must have been called.
4412
Jeff Johnsone7245742012-09-05 17:12:55 -07004413 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004414 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004415
Jeff Johnson295189b2012-06-20 16:38:30 -07004416 wdiWowlExitReqCb: callback for passing back the response
4417 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004418
Jeff Johnson295189b2012-06-20 16:38:30 -07004419 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004420 callback
4421
Jeff Johnson295189b2012-06-20 16:38:30 -07004422 @see WDI_WowlEnterReq
4423 @return Result of the function call
4424*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004425WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004426WDI_WowlExitReq
4427(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004428 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004429 WDI_WowlExitReqCb wdiWowlExitCb,
4430 void* pUserData
4431)
4432{
4433 WDI_EventInfoType wdiEventData;
4434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4435
4436 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004437 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004438 ------------------------------------------------------------------------*/
4439 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4440 {
4441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4442 "WDI API call before module is initialized - Fail request");
4443
Jeff Johnsone7245742012-09-05 17:12:55 -07004444 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004445 }
4446
4447 /*------------------------------------------------------------------------
4448 Fill in Event data and post to the Main FSM
4449 ------------------------------------------------------------------------*/
4450 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004451 wdiEventData.pEventData = pwdiWowlExitParams;
4452 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004453 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004454 wdiEventData.pUserData = pUserData;
4455
4456 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4457}/*WDI_WowlExitReq*/
4458
4459/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004460 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004461 the upper MAC wants to dynamically adjusts the listen
4462 interval based on the WLAN/MSM activity. Upon the call
4463 of this API the WLAN DAL will pack and send a HAL
4464 configure Apps Cpu Wakeup State request message to the
4465 lower RIVA sub-system.
4466
4467 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004468 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004469
Jeff Johnsone7245742012-09-05 17:12:55 -07004470
4471 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004472 Apps Cpu Wakeup State as specified by the
4473 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004474
Jeff Johnson295189b2012-06-20 16:38:30 -07004475 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4476 back the response of the configure Apps Cpu Wakeup State
4477 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004478
Jeff Johnson295189b2012-06-20 16:38:30 -07004479 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004480 callback
4481
Jeff Johnson295189b2012-06-20 16:38:30 -07004482 @return Result of the function call
4483*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004484WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004485WDI_ConfigureAppsCpuWakeupStateReq
4486(
4487 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4488 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4489 void* pUserData
4490)
4491{
4492 WDI_EventInfoType wdiEventData;
4493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4494
4495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004497 ------------------------------------------------------------------------*/
4498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4499 {
4500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4501 "WDI API call before module is initialized - Fail request");
4502
Jeff Johnsone7245742012-09-05 17:12:55 -07004503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004504 }
4505
4506 /*------------------------------------------------------------------------
4507 Fill in Event data and post to the Main FSM
4508 ------------------------------------------------------------------------*/
4509 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004510 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4511 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4512 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004513 wdiEventData.pUserData = pUserData;
4514
4515 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4516}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4517/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004518 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 to to perform a flush operation on a given AC. Upon the
4520 call of this API the WLAN DAL will pack and send a HAL
4521 Flush AC request message to the lower RIVA sub-system if
4522 DAL is in state STARTED.
4523
4524 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004525 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004526
4527 WDI_AddBAReq must have been called.
4528
Jeff Johnsone7245742012-09-05 17:12:55 -07004529 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004530 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004531
Jeff Johnson295189b2012-06-20 16:38:30 -07004532 wdiFlushAcRspCb: callback for passing back the response
4533 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004534
Jeff Johnson295189b2012-06-20 16:38:30 -07004535 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004536 callback
4537
Jeff Johnson295189b2012-06-20 16:38:30 -07004538 @see WDI_AddBAReq
4539 @return Result of the function call
4540*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004541WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004542WDI_FlushAcReq
4543(
4544 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4545 WDI_FlushAcRspCb wdiFlushAcRspCb,
4546 void* pUserData
4547)
4548{
4549 WDI_EventInfoType wdiEventData;
4550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4551
4552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004553 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004554 ------------------------------------------------------------------------*/
4555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4556 {
4557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4558 "WDI API call before module is initialized - Fail request");
4559
Jeff Johnsone7245742012-09-05 17:12:55 -07004560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004561 }
4562
4563 /*------------------------------------------------------------------------
4564 Fill in Event data and post to the Main FSM
4565 ------------------------------------------------------------------------*/
4566 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004567 wdiEventData.pEventData = pwdiFlushAcReqParams;
4568 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4569 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004570 wdiEventData.pUserData = pUserData;
4571
4572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4573
4574}/*WDI_FlushAcReq*/
4575
4576/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 wants to notify the lower mac on a BT AMP event. This is
4579 to inform BTC-SLM that some BT AMP event occurred. Upon
4580 the call of this API the WLAN DAL will pack and send a
4581 HAL BT AMP event request message to the lower RIVA
4582 sub-system if DAL is in state STARTED.
4583
4584 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004585 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004586
Jeff Johnsone7245742012-09-05 17:12:55 -07004587
4588 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004589 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004590
Jeff Johnson295189b2012-06-20 16:38:30 -07004591 wdiBtAmpEventRspCb: callback for passing back the
4592 response of the BT AMP event operation received from the
4593 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004594
Jeff Johnson295189b2012-06-20 16:38:30 -07004595 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004596 callback
4597
Jeff Johnson295189b2012-06-20 16:38:30 -07004598 @return Result of the function call
4599*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004600WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004601WDI_BtAmpEventReq
4602(
4603 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4604 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4605 void* pUserData
4606)
4607{
4608 WDI_EventInfoType wdiEventData;
4609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4610
4611 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004612 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004613 ------------------------------------------------------------------------*/
4614 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4615 {
4616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4617 "WDI API call before module is initialized - Fail request");
4618
Jeff Johnsone7245742012-09-05 17:12:55 -07004619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 }
4621
4622 /*------------------------------------------------------------------------
4623 Fill in Event data and post to the Main FSM
4624 ------------------------------------------------------------------------*/
4625 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004626 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4627 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4628 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004629 wdiEventData.pUserData = pUserData;
4630
4631 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4632
4633}/*WDI_BtAmpEventReq*/
4634
Jeff Johnsone7245742012-09-05 17:12:55 -07004635#ifdef FEATURE_OEM_DATA_SUPPORT
4636/**
4637 @brief WDI_Start Oem Data Req will be called when the upper MAC
4638 wants to notify the lower mac on a oem data Req event.Upon
4639 the call of this API the WLAN DAL will pack and send a
4640 HAL OEM Data Req event request message to the lower RIVA
4641 sub-system if DAL is in state STARTED.
4642
4643 In state BUSY this request will be queued. Request won't
4644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004645
4646
Jeff Johnsone7245742012-09-05 17:12:55 -07004647
4648 @param pwdiOemDataReqParams: the Oem Data Req as
4649 specified by the Device Interface
4650
4651 wdiStartOemDataRspCb: callback for passing back the
4652 response of the Oem Data Req received from the
4653 device
4654
4655 pUserData: user data will be passed back with the
4656 callback
4657
4658 @return Result of the function call
4659*/
4660WDI_Status
4661WDI_StartOemDataReq
4662(
4663 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4664 WDI_oemDataRspCb wdiOemDataRspCb,
4665 void* pUserData
4666)
4667{
4668 WDI_EventInfoType wdiEventData;
4669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4670
4671 /*------------------------------------------------------------------------
4672 Sanity Check
4673 ------------------------------------------------------------------------*/
4674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4675 {
4676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4677 "WDI API call before module is initialized - Fail request");
4678
4679 return WDI_STATUS_E_NOT_ALLOWED;
4680 }
4681
4682 /*------------------------------------------------------------------------
4683 Fill in Event data and post to the Main FSM
4684 ------------------------------------------------------------------------*/
4685 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4686 wdiEventData.pEventData = pwdiOemDataReqParams;
4687 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4688 wdiEventData.pCBfnc = wdiOemDataRspCb;
4689 wdiEventData.pUserData = pUserData;
4690
4691 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4692
4693
4694}
4695
4696#endif
4697
4698
4699/*========================================================================
4700
Jeff Johnson295189b2012-06-20 16:38:30 -07004701 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004702
Jeff Johnson295189b2012-06-20 16:38:30 -07004703==========================================================================*/
4704/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004705 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 the WLAN HW to change the current channel of operation.
4707 Upon the call of this API the WLAN DAL will pack and
4708 send a HAL Start request message to the lower RIVA
4709 sub-system if DAL is in state STARTED.
4710
4711 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004712 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004713
4714 WDI_Start must have been called.
4715
Jeff Johnsone7245742012-09-05 17:12:55 -07004716 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004717 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004718
Jeff Johnson295189b2012-06-20 16:38:30 -07004719 wdiSwitchChRspCb: callback for passing back the response
4720 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004721
Jeff Johnson295189b2012-06-20 16:38:30 -07004722 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004723 callback
4724
Jeff Johnson295189b2012-06-20 16:38:30 -07004725 @see WDI_Start
4726 @return Result of the function call
4727*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004728WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004729WDI_SwitchChReq
4730(
4731 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4732 WDI_SwitchChRspCb wdiSwitchChRspCb,
4733 void* pUserData
4734)
4735{
4736 WDI_EventInfoType wdiEventData;
4737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4738
4739 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004740 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 ------------------------------------------------------------------------*/
4742 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4743 {
4744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4745 "WDI API call before module is initialized - Fail request");
4746
Jeff Johnsone7245742012-09-05 17:12:55 -07004747 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004748 }
4749
4750 /*------------------------------------------------------------------------
4751 Fill in Event data and post to the Main FSM
4752 ------------------------------------------------------------------------*/
4753 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004754 wdiEventData.pEventData = pwdiSwitchChReqParams;
4755 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4756 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 wdiEventData.pUserData = pUserData;
4758
4759 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4760
4761}/*WDI_SwitchChReq*/
4762
4763
4764/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004765 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004766 wishes to add or update a STA in HW. Upon the call of
4767 this API the WLAN DAL will pack and send a HAL Start
4768 message request message to the lower RIVA sub-system if
4769 DAL is in state STARTED.
4770
4771 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004772 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004773
4774 WDI_Start must have been called.
4775
Jeff Johnsone7245742012-09-05 17:12:55 -07004776 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004777 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004778
Jeff Johnson295189b2012-06-20 16:38:30 -07004779 wdiConfigSTARspCb: callback for passing back the
4780 response of the config STA operation received from the
4781 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004782
Jeff Johnson295189b2012-06-20 16:38:30 -07004783 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004784 callback
4785
Jeff Johnson295189b2012-06-20 16:38:30 -07004786 @see WDI_Start
4787 @return Result of the function call
4788*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004789WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004790WDI_ConfigSTAReq
4791(
4792 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4793 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4794 void* pUserData
4795)
4796{
4797 WDI_EventInfoType wdiEventData;
4798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4799
4800 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004801 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004802 ------------------------------------------------------------------------*/
4803 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4804 {
4805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4806 "WDI API call before module is initialized - Fail request");
4807
Jeff Johnsone7245742012-09-05 17:12:55 -07004808 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004809 }
4810
4811 /*------------------------------------------------------------------------
4812 Fill in Event data and post to the Main FSM
4813 ------------------------------------------------------------------------*/
4814 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004815 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4816 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4817 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004818 wdiEventData.pUserData = pUserData;
4819
4820 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4821
4822}/*WDI_ConfigSTAReq*/
4823
4824/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004825 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 wants to change the state of an ongoing link. Upon the
4827 call of this API the WLAN DAL will pack and send a HAL
4828 Start message request message to the lower RIVA
4829 sub-system if DAL is in state STARTED.
4830
4831 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004832 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004833
4834 WDI_JoinStartReq must have been called.
4835
Jeff Johnsone7245742012-09-05 17:12:55 -07004836 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004837 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004838
Jeff Johnson295189b2012-06-20 16:38:30 -07004839 wdiSetLinkStateRspCb: callback for passing back the
4840 response of the set link state operation received from
4841 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004842
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004844 callback
4845
Jeff Johnson295189b2012-06-20 16:38:30 -07004846 @see WDI_JoinStartReq
4847 @return Result of the function call
4848*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004849WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004850WDI_SetLinkStateReq
4851(
4852 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4853 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4854 void* pUserData
4855)
4856{
4857 WDI_EventInfoType wdiEventData;
4858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4859
4860 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004861 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004862 ------------------------------------------------------------------------*/
4863 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4864 {
4865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4866 "WDI API call before module is initialized - Fail request");
4867
Jeff Johnsone7245742012-09-05 17:12:55 -07004868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004869 }
4870
4871 /*------------------------------------------------------------------------
4872 Fill in Event data and post to the Main FSM
4873 ------------------------------------------------------------------------*/
4874 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004875 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4876 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4877 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004878 wdiEventData.pUserData = pUserData;
4879
4880 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4881
4882}/*WDI_SetLinkStateReq*/
4883
4884
4885/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004886 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004887 to get statistics (MIB counters) from the device. Upon
4888 the call of this API the WLAN DAL will pack and send a
4889 HAL Start request message to the lower RIVA sub-system
4890 if DAL is in state STARTED.
4891
4892 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004893 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004894
4895 WDI_Start must have been called.
4896
Jeff Johnsone7245742012-09-05 17:12:55 -07004897 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004899
Jeff Johnson295189b2012-06-20 16:38:30 -07004900 wdiGetStatsRspCb: callback for passing back the response
4901 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004902
Jeff Johnson295189b2012-06-20 16:38:30 -07004903 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004904 callback
4905
Jeff Johnson295189b2012-06-20 16:38:30 -07004906 @see WDI_Start
4907 @return Result of the function call
4908*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004909WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004910WDI_GetStatsReq
4911(
4912 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4913 WDI_GetStatsRspCb wdiGetStatsRspCb,
4914 void* pUserData
4915)
4916{
4917 WDI_EventInfoType wdiEventData;
4918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4919
4920 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004921 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004922 ------------------------------------------------------------------------*/
4923 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4924 {
4925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4926 "WDI API call before module is initialized - Fail request");
4927
Jeff Johnsone7245742012-09-05 17:12:55 -07004928 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004929 }
4930
4931 /*------------------------------------------------------------------------
4932 Fill in Event data and post to the Main FSM
4933 ------------------------------------------------------------------------*/
4934 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004935 wdiEventData.pEventData = pwdiGetStatsReqParams;
4936 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4937 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004938 wdiEventData.pUserData = pUserData;
4939
4940 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4941
4942}/*WDI_GetStatsReq*/
4943
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004944#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4945/**
4946 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4947 to get roam rssi from the device. Upon
4948 the call of this API the WLAN DAL will pack and send a
4949 HAL Start request message to the lower RIVA sub-system
4950 if DAL is in state STARTED.
4951
4952 In state BUSY this request will be queued. Request won't
4953 be allowed in any other state.
4954
4955 WDI_Start must have been called.
4956
4957 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4958 specified by the Device Interface
4959
4960 wdiGetRoamRssiRspCb: callback for passing back the response
4961 of the get stats operation received from the device
4962
4963 pUserData: user data will be passed back with the
4964 callback
4965
4966 @see WDI_Start
4967 @return Result of the function call
4968*/
4969WDI_Status
4970WDI_GetRoamRssiReq
4971(
4972 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4973 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4974 void* pUserData
4975)
4976{
4977 WDI_EventInfoType wdiEventData;
4978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4979
4980 /*------------------------------------------------------------------------
4981 Sanity Check
4982 ------------------------------------------------------------------------*/
4983 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4984 {
4985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4986 "WDI API call before module is initialized - Fail request");
4987
4988 return WDI_STATUS_E_NOT_ALLOWED;
4989 }
4990 /*------------------------------------------------------------------------
4991 Fill in Event data and post to the Main FSM
4992 ------------------------------------------------------------------------*/
4993 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4994 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4995 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4996 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4997 wdiEventData.pUserData = pUserData;
4998
4999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5000
5001}/*WDI_GetRoamRssiReq*/
5002#endif
5003
Jeff Johnson295189b2012-06-20 16:38:30 -07005004
5005/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005006 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005007 it wishes to change the configuration of the WLAN
5008 Device. Upon the call of this API the WLAN DAL will pack
5009 and send a HAL Update CFG request message to the lower
5010 RIVA sub-system if DAL is in state STARTED.
5011
5012 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005013 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005014
5015 WDI_Start must have been called.
5016
Jeff Johnsone7245742012-09-05 17:12:55 -07005017 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005018 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005019
Jeff Johnson295189b2012-06-20 16:38:30 -07005020 wdiUpdateCfgsRspCb: callback for passing back the
5021 response of the update cfg operation received from the
5022 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005023
Jeff Johnson295189b2012-06-20 16:38:30 -07005024 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005025 callback
5026
Jeff Johnson295189b2012-06-20 16:38:30 -07005027 @see WDI_Start
5028 @return Result of the function call
5029*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005030WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005031WDI_UpdateCfgReq
5032(
5033 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
5034 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
5035 void* pUserData
5036)
5037{
5038 WDI_EventInfoType wdiEventData;
5039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5040
5041 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005042 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005043 ------------------------------------------------------------------------*/
5044 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5045 {
5046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5047 "WDI API call before module is initialized - Fail request");
5048
Jeff Johnsone7245742012-09-05 17:12:55 -07005049 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005050 }
5051
5052 /*------------------------------------------------------------------------
5053 Fill in Event data and post to the Main FSM
5054 ------------------------------------------------------------------------*/
5055 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005056 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
5057 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
5058 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005059 wdiEventData.pUserData = pUserData;
5060
5061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5062
5063}/*WDI_UpdateCfgReq*/
5064
5065
5066
5067/**
5068 @brief WDI_AddBAReq will be called when the upper MAC has setup
5069 successfully a BA session and needs to notify the HW for
5070 the appropriate settings to take place. Upon the call of
5071 this API the WLAN DAL will pack and send a HAL Add BA
5072 request message to the lower RIVA sub-system if DAL is
5073 in state STARTED.
5074
5075 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005076 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005077
5078 WDI_PostAssocReq must have been called.
5079
5080 @param wdiAddBAReqParams: the add BA parameters as specified by
5081 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005082
Jeff Johnson295189b2012-06-20 16:38:30 -07005083 wdiAddBARspCb: callback for passing back the response of
5084 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005085
Jeff Johnson295189b2012-06-20 16:38:30 -07005086 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005087 callback
5088
Jeff Johnson295189b2012-06-20 16:38:30 -07005089 @see WDI_PostAssocReq
5090 @return Result of the function call
5091*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005092WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005093WDI_AddBAReq
5094(
5095 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
5096 WDI_AddBARspCb wdiAddBARspCb,
5097 void* pUserData
5098)
5099{
5100 WDI_EventInfoType wdiEventData;
5101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5102
5103 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005104 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 ------------------------------------------------------------------------*/
5106 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5107 {
5108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5109 "WDI API call before module is initialized - Fail request");
5110
Jeff Johnsone7245742012-09-05 17:12:55 -07005111 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005112 }
5113
5114 /*------------------------------------------------------------------------
5115 Fill in Event data and post to the Main FSM
5116 ------------------------------------------------------------------------*/
5117 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005118 wdiEventData.pEventData = pwdiAddBAReqParams;
5119 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
5120 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005121 wdiEventData.pUserData = pUserData;
5122
5123 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5124
5125}/*WDI_AddBAReq*/
5126
5127
5128/**
5129 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
5130 successfully a BA session and needs to notify the HW for
5131 the appropriate settings to take place. Upon the call of
5132 this API the WLAN DAL will pack and send a HAL Add BA
5133 request message to the lower RIVA sub-system if DAL is
5134 in state STARTED.
5135
5136 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005138
5139 WDI_PostAssocReq must have been called.
5140
5141 @param wdiAddBAReqParams: the add BA parameters as specified by
5142 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005143
Jeff Johnson295189b2012-06-20 16:38:30 -07005144 wdiAddBARspCb: callback for passing back the response of
5145 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005146
Jeff Johnson295189b2012-06-20 16:38:30 -07005147 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 callback
5149
Jeff Johnson295189b2012-06-20 16:38:30 -07005150 @see WDI_PostAssocReq
5151 @return Result of the function call
5152*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005153WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005154WDI_TriggerBAReq
5155(
5156 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
5157 WDI_TriggerBARspCb wdiTriggerBARspCb,
5158 void* pUserData
5159)
5160{
5161 WDI_EventInfoType wdiEventData;
5162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5163
5164 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005165 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005166 ------------------------------------------------------------------------*/
5167 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5168 {
5169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5170 "WDI API call before module is initialized - Fail request");
5171
Jeff Johnsone7245742012-09-05 17:12:55 -07005172 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005173 }
5174
5175 /*------------------------------------------------------------------------
5176 Fill in Event data and post to the Main FSM
5177 ------------------------------------------------------------------------*/
5178 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005179 wdiEventData.pEventData = pwdiTriggerBAReqParams;
5180 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
5181 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005182 wdiEventData.pUserData = pUserData;
5183
5184 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5185
5186}/*WDI_AddBAReq*/
5187
5188/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005189 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005190 wishes to update any of the Beacon parameters used by HW.
5191 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
5192 message to the lower RIVA sub-system if DAL is in state
5193 STARTED.
5194
5195 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005197
5198 WDI_PostAssocReq must have been called.
5199
Jeff Johnsone7245742012-09-05 17:12:55 -07005200 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005201 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005202
Jeff Johnson295189b2012-06-20 16:38:30 -07005203 wdiUpdateBeaconParamsRspCb: callback for passing back the
5204 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005205
Jeff Johnson295189b2012-06-20 16:38:30 -07005206 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005207 callback
5208
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 @see WDI_PostAssocReq
5210 @return Result of the function call
5211*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005212WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005213WDI_UpdateBeaconParamsReq
5214(
5215 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
5216 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
5217 void* pUserData
5218)
5219{
5220 WDI_EventInfoType wdiEventData;
5221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5222
5223 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005224 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005225 ------------------------------------------------------------------------*/
5226 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5227 {
5228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5229 "WDI API call before module is initialized - Fail request");
5230
Jeff Johnsone7245742012-09-05 17:12:55 -07005231 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005232 }
5233
5234 /*------------------------------------------------------------------------
5235 Fill in Event data and post to the Main FSM
5236 ------------------------------------------------------------------------*/
5237 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005238 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5239 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5240 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005241 wdiEventData.pUserData = pUserData;
5242
5243 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5244
5245}/*WDI_UpdateBeaconParamsReq*/
5246
5247/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005248 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005249 wishes to update the Beacon template used by HW.
5250 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5251 message to the lower RIVA sub-system if DAL is in state
5252 STARTED.
5253
5254 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005255 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005256
5257 WDI_PostAssocReq must have been called.
5258
Jeff Johnsone7245742012-09-05 17:12:55 -07005259 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005260 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005261
Jeff Johnson295189b2012-06-20 16:38:30 -07005262 wdiSendBeaconParamsRspCb: callback for passing back the
5263 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005264
Jeff Johnson295189b2012-06-20 16:38:30 -07005265 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005266 callback
5267
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 @see WDI_PostAssocReq
5269 @return Result of the function call
5270*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005271WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005272WDI_SendBeaconParamsReq
5273(
5274 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5275 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5276 void* pUserData
5277)
5278{
5279 WDI_EventInfoType wdiEventData;
5280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5281
5282 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005283 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005284 ------------------------------------------------------------------------*/
5285 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5286 {
5287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5288 "WDI API call before module is initialized - Fail request");
5289
Jeff Johnsone7245742012-09-05 17:12:55 -07005290 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005291 }
5292
5293 /*------------------------------------------------------------------------
5294 Fill in Event data and post to the Main FSM
5295 ------------------------------------------------------------------------*/
5296 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005297 wdiEventData.pEventData = pwdiSendBeaconParams;
5298 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5299 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005300 wdiEventData.pUserData = pUserData;
5301
5302 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5303
5304}/*WDI_SendBeaconParamsReq*/
5305
5306/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 upper MAC wants to update the probe response template to
5309 be transmitted as Soft AP
5310 Upon the call of this API the WLAN DAL will
5311 pack and send the probe rsp template message to the
5312 lower RIVA sub-system if DAL is in state STARTED.
5313
5314 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005315 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005316
5317
Jeff Johnsone7245742012-09-05 17:12:55 -07005318 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005320
Jeff Johnson295189b2012-06-20 16:38:30 -07005321 wdiSendBeaconParamsRspCb: callback for passing back the
5322 response of the Send Beacon Params operation received
5323 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005324
Jeff Johnson295189b2012-06-20 16:38:30 -07005325 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005326 callback
5327
Jeff Johnson295189b2012-06-20 16:38:30 -07005328 @see WDI_AddBAReq
5329 @return Result of the function call
5330*/
5331
Jeff Johnsone7245742012-09-05 17:12:55 -07005332WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005333WDI_UpdateProbeRspTemplateReq
5334(
5335 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5336 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5337 void* pUserData
5338)
5339{
5340 WDI_EventInfoType wdiEventData;
5341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5342
5343 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005344 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 ------------------------------------------------------------------------*/
5346 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5347 {
5348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5349 "WDI API call before module is initialized - Fail request");
5350
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005352 }
5353
5354 /*------------------------------------------------------------------------
5355 Fill in Event data and post to the Main FSM
5356 ------------------------------------------------------------------------*/
5357 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005358 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5359 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5360 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005361 wdiEventData.pUserData = pUserData;
5362
5363 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5364
5365}/*WDI_UpdateProbeRspTemplateReq*/
5366
5367/**
5368 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5369 to the NV memory.
5370
5371
5372 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5373 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005374
Jeff Johnson295189b2012-06-20 16:38:30 -07005375 wdiNvDownloadRspCb: callback for passing back the response of
5376 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005377
Jeff Johnson295189b2012-06-20 16:38:30 -07005378 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005379 callback
5380
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 @see WDI_PostAssocReq
5382 @return Result of the function call
5383*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005384WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005385WDI_NvDownloadReq
5386(
5387 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5388 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5389 void* pUserData
5390)
5391{
5392 WDI_EventInfoType wdiEventData;
5393
5394 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005395 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005396 ------------------------------------------------------------------------*/
5397 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5398 {
5399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5400 "WDI API call before module is initialized - Fail request");
5401
Jeff Johnsone7245742012-09-05 17:12:55 -07005402 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005403 }
5404
5405 /*------------------------------------------------------------------------
5406 Fill in Event data and post to the Main FSM
5407 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005408 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5409 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5410 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5411 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005412 wdiEventData.pUserData = pUserData;
5413
5414 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5415
5416}/*WDI_NVDownloadReq*/
5417
Jeff Johnson295189b2012-06-20 16:38:30 -07005418/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005419 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005420 upper MAC wants to send Notice of Absence
5421 Upon the call of this API the WLAN DAL will
5422 pack and send the probe rsp template message to the
5423 lower RIVA sub-system if DAL is in state STARTED.
5424
5425 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005426 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005427
5428
Jeff Johnsone7245742012-09-05 17:12:55 -07005429 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005430 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005431
Jeff Johnson295189b2012-06-20 16:38:30 -07005432 wdiSendBeaconParamsRspCb: callback for passing back the
5433 response of the Send Beacon Params operation received
5434 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005435
Jeff Johnson295189b2012-06-20 16:38:30 -07005436 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005437 callback
5438
Jeff Johnson295189b2012-06-20 16:38:30 -07005439 @see WDI_AddBAReq
5440 @return Result of the function call
5441*/
5442WDI_Status
5443WDI_SetP2PGONOAReq
5444(
5445 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5446 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5447 void* pUserData
5448)
5449{
5450 WDI_EventInfoType wdiEventData;
5451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5452
5453 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005454 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005455 ------------------------------------------------------------------------*/
5456 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5457 {
5458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5459 "WDI API call before module is initialized - Fail request");
5460
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 }
5463
5464 /*------------------------------------------------------------------------
5465 Fill in Event data and post to the Main FSM
5466 ------------------------------------------------------------------------*/
5467 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005468 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5469 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5470 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005471 wdiEventData.pUserData = pUserData;
5472
5473 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5474
5475}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005476
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +05305477#ifdef FEATURE_WLAN_TDLS
5478/**
5479 @brief WDI_SetTDLSLinkEstablishReq will be called when the
5480 upper MAC wants to send TDLS Link Establish Request Parameters
5481 Upon the call of this API the WLAN DAL will
5482 pack and send the TDLS Link Establish Request message to the
5483 lower RIVA sub-system if DAL is in state STARTED.
5484
5485 In state BUSY this request will be queued. Request won't
5486 be allowed in any other state.
5487
5488
5489 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
5490 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
5491
5492 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
5493 response of the TDLS Link Establish request received
5494 from the device
5495
5496 pUserData: user data will be passed back with the
5497 callback
5498
5499 @see
5500 @return Result of the function call
5501*/
5502WDI_Status
5503WDI_SetTDLSLinkEstablishReq
5504(
5505 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
5506 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
5507 void* pUserData
5508)
5509{
5510 WDI_EventInfoType wdiEventData;
5511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5512
5513 /*------------------------------------------------------------------------
5514 Sanity Check
5515 ------------------------------------------------------------------------*/
5516 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5517 {
5518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5519 "WDI API call before module is initialized - Fail request");
5520
5521 return WDI_STATUS_E_NOT_ALLOWED;
5522 }
5523
5524 /*------------------------------------------------------------------------
5525 Fill in Event data and post to the Main FSM
5526 ------------------------------------------------------------------------*/
5527 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
5528 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
5529 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
5530 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
5531 wdiEventData.pUserData = pUserData;
5532
5533 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5534
5535}/*WDI_SetTDLSLinkEstablishReq*/
5536#endif
5537
Jeff Johnson295189b2012-06-20 16:38:30 -07005538/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005539 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005540 UMAC wanted to add STA self while opening any new session
5541 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005542 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005543
5544
Jeff Johnsone7245742012-09-05 17:12:55 -07005545 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005546 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005547
Jeff Johnson295189b2012-06-20 16:38:30 -07005548 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005549 callback
5550
5551 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005552 @return Result of the function call
5553*/
5554WDI_Status
5555WDI_AddSTASelfReq
5556(
5557 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5558 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5559 void* pUserData
5560)
5561{
5562 WDI_EventInfoType wdiEventData;
5563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5564
5565 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005566 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005567 ------------------------------------------------------------------------*/
5568 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5569 {
5570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5571 "WDI API call before module is initialized - Fail request");
5572
Jeff Johnsone7245742012-09-05 17:12:55 -07005573 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005574 }
5575
5576 /*------------------------------------------------------------------------
5577 Fill in Event data and post to the Main FSM
5578 ------------------------------------------------------------------------*/
5579 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005580 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5581 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5582 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005583 wdiEventData.pUserData = pUserData;
5584
5585 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5586
5587}/*WDI_AddSTASelfReq*/
5588
5589
Jeff Johnsone7245742012-09-05 17:12:55 -07005590#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005591/**
5592 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5593 the device of a successful add TSpec negotiation. HW
5594 needs to receive the TSpec Info from the UMAC in order
5595 to configure properly the QoS data traffic. Upon the
5596 call of this API the WLAN DAL will pack and send a HAL
5597 Add TS request message to the lower RIVA sub-system if
5598 DAL is in state STARTED.
5599
5600 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005601 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005602
5603 WDI_PostAssocReq must have been called.
5604
5605 @param wdiAddTsReqParams: the add TS parameters as specified by
5606 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005607
Jeff Johnson295189b2012-06-20 16:38:30 -07005608 wdiAddTsRspCb: callback for passing back the response of
5609 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005610
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005612 callback
5613
Jeff Johnson295189b2012-06-20 16:38:30 -07005614 @see WDI_PostAssocReq
5615 @return Result of the function call
5616*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005617WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005618WDI_AggrAddTSReq
5619(
5620 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5621 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5622 void* pUserData
5623)
5624{
5625 WDI_EventInfoType wdiEventData;
5626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5627
5628 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005629 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005630 ------------------------------------------------------------------------*/
5631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5632 {
5633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5634 "WDI API call before module is initialized - Fail request");
5635
Jeff Johnsone7245742012-09-05 17:12:55 -07005636 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005637 }
5638
5639 /*------------------------------------------------------------------------
5640 Fill in Event data and post to the Main FSM
5641 ------------------------------------------------------------------------*/
5642 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005643 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5644 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5645 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005646 wdiEventData.pUserData = pUserData;
5647
5648 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5649
5650}/*WDI_AggrAddTSReq*/
5651
5652#endif /* WLAN_FEATURE_VOWIFI_11R */
5653
Jeff Johnson295189b2012-06-20 16:38:30 -07005654/**
5655 @brief WDI_FTMCommandReq
5656 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005657
5658 @param ftmCommandReq: FTM Command Body
5659 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005660 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005661
Jeff Johnson295189b2012-06-20 16:38:30 -07005662 @see
5663 @return Result of the function call
5664*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005665WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005666WDI_FTMCommandReq
5667(
5668 WDI_FTMCommandReqType *ftmCommandReq,
5669 WDI_FTMCommandRspCb ftmCommandRspCb,
5670 void *pUserData
5671)
5672{
5673 WDI_EventInfoType wdiEventData;
5674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5675
5676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 ------------------------------------------------------------------------*/
5679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5680 {
5681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5682 "WDI API call before module is initialized - Fail request");
5683
Jeff Johnsone7245742012-09-05 17:12:55 -07005684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 }
5686
5687 /*------------------------------------------------------------------------
5688 Fill in Event data and post to the Main FSM
5689 ------------------------------------------------------------------------*/
5690 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5691 wdiEventData.pEventData = (void *)ftmCommandReq;
5692 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5693 wdiEventData.pCBfnc = ftmCommandRspCb;
5694 wdiEventData.pUserData = pUserData;
5695
5696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5697}
Jeff Johnson295189b2012-06-20 16:38:30 -07005698/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005699 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005700
5701 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005702 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005703
5704
5705 @param pwdiResumeReqParams: as specified by
5706 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005707
Jeff Johnson295189b2012-06-20 16:38:30 -07005708 wdiResumeReqRspCb: callback for passing back the response of
5709 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005710
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005712 callback
5713
5714 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005715 @return Result of the function call
5716*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005717WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005718WDI_HostResumeReq
5719(
5720 WDI_ResumeParamsType* pwdiResumeReqParams,
5721 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5722 void* pUserData
5723)
5724{
5725 WDI_EventInfoType wdiEventData;
5726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5727
5728 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005729 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005730 ------------------------------------------------------------------------*/
5731 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5732 {
5733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5734 "WDI API call before module is initialized - Fail request");
5735
Jeff Johnsone7245742012-09-05 17:12:55 -07005736 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005737 }
5738
5739 /*------------------------------------------------------------------------
5740 Fill in Event data and post to the Main FSM
5741 ------------------------------------------------------------------------*/
5742 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005743 wdiEventData.pEventData = pwdiResumeReqParams;
5744 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5745 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005746 wdiEventData.pUserData = pUserData;
5747
5748 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5749
5750}/*WDI_HostResumeReq*/
5751
5752/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005753 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005754
5755 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005756 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005757
5758
5759 @param pwdiDelStaSelfReqParams: as specified by
5760 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005761
Jeff Johnson295189b2012-06-20 16:38:30 -07005762 wdiDelStaSelfRspCb: callback for passing back the response of
5763 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005764
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005766 callback
5767
Jeff Johnson295189b2012-06-20 16:38:30 -07005768 @see WDI_PostAssocReq
5769 @return Result of the function call
5770*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005771WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005772WDI_DelSTASelfReq
5773(
5774 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5775 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5776 void* pUserData
5777)
5778{
5779 WDI_EventInfoType wdiEventData;
5780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5781
5782 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005783 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005784 ------------------------------------------------------------------------*/
5785 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5786 {
5787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5788 "WDI API call before module is initialized - Fail request");
5789
Jeff Johnsone7245742012-09-05 17:12:55 -07005790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 }
5792
5793 /*------------------------------------------------------------------------
5794 Fill in Event data and post to the Main FSM
5795 ------------------------------------------------------------------------*/
5796 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005797 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5798 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5799 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005800 wdiEventData.pUserData = pUserData;
5801
5802 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5803
5804}/*WDI_AggrAddTSReq*/
5805
5806/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005807 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5808 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005809 Upon the call of this API the WLAN DAL will pack
5810 and send a HAL Set Tx Per Tracking request message to the
5811 lower RIVA sub-system if DAL is in state STARTED.
5812
5813 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005815
Jeff Johnsone7245742012-09-05 17:12:55 -07005816 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005817 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005818
Jeff Johnson295189b2012-06-20 16:38:30 -07005819 pwdiSetTxPerTrackingRspCb: callback for passing back the
5820 response of the set Tx PER Tracking configurations operation received
5821 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005822
Jeff Johnson295189b2012-06-20 16:38:30 -07005823 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005824 callback
5825
Jeff Johnson295189b2012-06-20 16:38:30 -07005826 @return Result of the function call
5827*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005828WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005829WDI_SetTxPerTrackingReq
5830(
5831 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5832 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5833 void* pUserData
5834)
5835{
5836 WDI_EventInfoType wdiEventData;
5837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5838
5839 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005840 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005841 ------------------------------------------------------------------------*/
5842 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5843 {
5844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5845 "WDI API call before module is initialized - Fail request");
5846
Jeff Johnsone7245742012-09-05 17:12:55 -07005847 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005848 }
5849
5850 /*------------------------------------------------------------------------
5851 Fill in Event data and post to the Main FSM
5852 ------------------------------------------------------------------------*/
5853 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005854 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005855 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005856 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005857 wdiEventData.pUserData = pUserData;
5858
5859 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5860
5861}/*WDI_SetTxPerTrackingReq*/
5862
5863/**
5864 @brief WDI_SetTmLevelReq
5865 If HW Thermal condition changed, driver should react based on new
5866 HW thermal condition.
5867
5868 @param pwdiSetTmLevelReq: New thermal condition information
5869
5870 pwdiSetTmLevelRspCb: callback
5871
5872 usrData: user data will be passed back with the
5873 callback
5874
5875 @return Result of the function call
5876*/
5877WDI_Status
5878WDI_SetTmLevelReq
5879(
5880 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5881 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5882 void *usrData
5883)
5884{
5885 WDI_EventInfoType wdiEventData;
5886 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5887
5888 /*------------------------------------------------------------------------
5889 Sanity Check
5890 ------------------------------------------------------------------------*/
5891 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5892 {
5893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5894 "WDI API call before module is initialized - Fail request");
5895
5896 return WDI_STATUS_E_NOT_ALLOWED;
5897 }
5898
5899 /*------------------------------------------------------------------------
5900 Fill in Event data and post to the Main FSM
5901 ------------------------------------------------------------------------*/
5902 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5903 wdiEventData.pEventData = pwdiSetTmLevelReq;
5904 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5905 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5906 wdiEventData.pUserData = usrData;
5907
5908 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5909}
5910
5911/**
5912 @brief WDI_HostSuspendInd
5913
5914 Suspend Indication from the upper layer will be sent
5915 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005916
Jeff Johnson295189b2012-06-20 16:38:30 -07005917 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005918
5919 @see
5920
Jeff Johnson295189b2012-06-20 16:38:30 -07005921 @return Status of the request
5922*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005923WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005924WDI_HostSuspendInd
5925(
5926 WDI_SuspendParamsType* pwdiSuspendIndParams
5927)
5928{
5929
5930 WDI_EventInfoType wdiEventData;
5931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5932
5933 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005934 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005935 ------------------------------------------------------------------------*/
5936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5937 {
5938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5939 "WDI API call before module is initialized - Fail request");
5940
Jeff Johnsone7245742012-09-05 17:12:55 -07005941 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005942 }
5943
5944 /*------------------------------------------------------------------------
5945 Fill in Event data and post to the Main FSM
5946 ------------------------------------------------------------------------*/
5947 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005948 wdiEventData.pEventData = pwdiSuspendIndParams;
5949 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5950 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005951 wdiEventData.pUserData = NULL;
5952
5953 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5954
5955}/*WDI_HostSuspendInd*/
5956
5957/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005958 @brief WDI_TrafficStatsInd
5959 Traffic Stats from the upper layer will be sent
5960 down to HAL
5961
5962 @param WDI_TrafficStatsIndType
5963
5964 @see
5965
5966 @return Status of the request
5967*/
5968WDI_Status
5969WDI_TrafficStatsInd
5970(
5971 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5972)
5973{
5974
5975 WDI_EventInfoType wdiEventData;
5976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5977
5978 /*------------------------------------------------------------------------
5979 Sanity Check
5980 ------------------------------------------------------------------------*/
5981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5982 {
5983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5984 "WDI API call before module is initialized - Fail request");
5985
5986 return WDI_STATUS_E_NOT_ALLOWED;
5987 }
5988
5989 /*------------------------------------------------------------------------
5990 Fill in Event data and post to the Main FSM
5991 ------------------------------------------------------------------------*/
5992 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5993 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5994 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5995 wdiEventData.pCBfnc = NULL;
5996 wdiEventData.pUserData = NULL;
5997
5998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5999
6000}/*WDI_TrafficStatsInd*/
6001
Chet Lanctota96bb432013-03-18 10:26:30 -07006002#ifdef WLAN_FEATURE_11W
6003/**
6004 @brief WDI_ExcludeUnencryptedInd
6005 Register with HAL to receive/drop unencrypted frames
6006
6007 @param WDI_ExcludeUnencryptIndType
6008
6009 @see
6010
6011 @return Status of the request
6012*/
6013WDI_Status
6014WDI_ExcludeUnencryptedInd
6015(
6016 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
6017)
6018{
6019
6020 WDI_EventInfoType wdiEventData;
6021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6022
6023 /*------------------------------------------------------------------------
6024 Sanity Check
6025 ------------------------------------------------------------------------*/
6026 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6027 {
6028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6029 "WDI API call before module is initialized - Fail request");
6030
6031 return WDI_STATUS_E_NOT_ALLOWED;
6032 }
6033
6034 /*------------------------------------------------------------------------
6035 Fill in Event data and post to the Main FSM
6036 ------------------------------------------------------------------------*/
6037 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
6038 wdiEventData.pEventData = pWdiExcUnencParams;
6039 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
6040 wdiEventData.pCBfnc = NULL;
6041 wdiEventData.pUserData = NULL;
6042
6043 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6044
6045}/*WDI_TrafficStatsInd*/
6046#endif
6047
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08006048/**
Yue Ma365933a2013-08-14 15:59:08 -07006049 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
6050
6051 @param addPeriodicTxPtrnParams: Add Pattern parameters
6052
6053 @see
6054
6055 @return Status of the request
6056*/
6057WDI_Status
6058WDI_AddPeriodicTxPtrnInd
6059(
6060 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
6061)
6062{
6063 WDI_EventInfoType wdiEventData;
6064
6065 /*-------------------------------------------------------------------------
6066 Sanity Check
6067 ------------------------------------------------------------------------*/
6068 if (eWLAN_PAL_FALSE == gWDIInitialized)
6069 {
6070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6071 "WDI API call before module is initialized - Fail request!");
6072
6073 return WDI_STATUS_E_NOT_ALLOWED;
6074 }
6075
6076 /*-------------------------------------------------------------------------
6077 Fill in Event data and post to the Main FSM
6078 ------------------------------------------------------------------------*/
6079 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
6080 wdiEventData.pEventData = addPeriodicTxPtrnParams;
6081 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
6082 wdiEventData.pCBfnc = NULL;
6083 wdiEventData.pUserData = NULL;
6084
6085 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6086}
6087
6088/**
6089 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
6090
6091 @param delPeriodicTxPtrnParams: Delete Pattern parameters
6092
6093 @see
6094
6095 @return Status of the request
6096*/
6097WDI_Status
6098WDI_DelPeriodicTxPtrnInd
6099(
6100 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
6101)
6102{
6103 WDI_EventInfoType wdiEventData;
6104
6105 /*-------------------------------------------------------------------------
6106 Sanity Check
6107 ------------------------------------------------------------------------*/
6108 if (eWLAN_PAL_FALSE == gWDIInitialized)
6109 {
6110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6111 "WDI API call before module is initialized - Fail request!");
6112
6113 return WDI_STATUS_E_NOT_ALLOWED;
6114 }
6115
6116 /*-------------------------------------------------------------------------
6117 Fill in Event data and post to the Main FSM
6118 ------------------------------------------------------------------------*/
6119 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
6120 wdiEventData.pEventData = delPeriodicTxPtrnParams;
6121 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
6122 wdiEventData.pCBfnc = NULL;
6123 wdiEventData.pUserData = NULL;
6124
6125 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6126}
6127
6128/**
Jeff Johnson295189b2012-06-20 16:38:30 -07006129 @brief WDI_HALDumpCmdReq
6130 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006131
6132 @param halDumpCmdReqParams: Hal Dump Command Body
6133 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006134 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006135
Jeff Johnson295189b2012-06-20 16:38:30 -07006136 @see
6137 @return Result of the function call
6138*/
6139WDI_Status WDI_HALDumpCmdReq
6140(
6141 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
6142 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
6143 void *pUserData
6144)
6145{
6146 WDI_EventInfoType wdiEventData;
6147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6148
6149 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006150 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006151 ------------------------------------------------------------------------*/
6152 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6153 {
6154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6155 "WDI API call before module is initialized - Fail request");
6156
Jeff Johnsone7245742012-09-05 17:12:55 -07006157 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006158 }
6159
6160 /*------------------------------------------------------------------------
6161 Fill in Event data and post to the Main FSM
6162 ------------------------------------------------------------------------*/
6163 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
6164 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
6165 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
6166 wdiEventData.pCBfnc = halDumpCmdRspCb;
6167 wdiEventData.pUserData = pUserData;
6168
6169 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6170}
6171
Jeff Johnsone7245742012-09-05 17:12:55 -07006172/*============================================================================
6173
Jeff Johnson295189b2012-06-20 16:38:30 -07006174 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07006175
Jeff Johnson295189b2012-06-20 16:38:30 -07006176 ============================================================================*/
6177
6178/**
6179 @brief Main FSM Start function for all states except BUSY
6180
Jeff Johnsone7245742012-09-05 17:12:55 -07006181
6182 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006183 wdiEV: event posted to the main DAL FSM
6184 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07006185 structure
6186
Jeff Johnson295189b2012-06-20 16:38:30 -07006187 @see
6188 @return Result of the function call
6189*/
6190WDI_Status
6191WDI_PostMainEvent
6192(
Jeff Johnsone7245742012-09-05 17:12:55 -07006193 WDI_ControlBlockType* pWDICtx,
6194 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07006195 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07006196
Jeff Johnson295189b2012-06-20 16:38:30 -07006197)
6198{
Jeff Johnsone7245742012-09-05 17:12:55 -07006199 WDI_Status wdiStatus;
6200 WDI_MainFuncType pfnWDIMainEvHdlr;
6201 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07006202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6203
6204 /*-------------------------------------------------------------------------
6205 Sanity check
6206 -------------------------------------------------------------------------*/
6207 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
6208 ( wdiEV >= WDI_MAX_EVENT ))
6209 {
6210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6211 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
6212 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07006213 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006214 }
6215
6216 /*Access to the global state must be locked */
6217 wpalMutexAcquire(&pWDICtx->wptMutex);
6218
6219 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006220 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07006221
6222 wdiOldState = pWDICtx->uGlobalState;
6223
6224 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006225 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
6226 response comes from CCPU for the request sent by host:
6227 the WDI global state will be in WDI_BUSY_ST already, so do not set it to BUSY again.
Jeff Johnson295189b2012-06-20 16:38:30 -07006228 This state will be set to WDI_STARTED_ST in WDI_MainRsp, if it is a expected response.
Jeff Johnsone7245742012-09-05 17:12:55 -07006229 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07006230 CCPU:
6231 don't change the state */
6232 if ( WDI_RESPONSE_EVENT != wdiEV)
6233 {
6234 /*Transition to BUSY State - the request is now being processed by the FSM,
6235 if the request fails we shall transition back to the old state, if not
6236 the request will manage its own state transition*/
6237 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
6238 }
6239 /* If the state function associated with the EV is NULL it means that this
6240 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006241 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07006242 {
6243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006244 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07006245 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006246 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006247 }
6248 else
6249 {
6250 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006251 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07006252 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006253 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006254 }
6255
6256 /* If a request handles itself well it will end up in a success or in a
6257 pending
6258 Success - means that the request was processed and the proper state
6259 transition already occurred or will occur when the resp is received
6260 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07006261
Jeff Johnson295189b2012-06-20 16:38:30 -07006262 Pending - means the request could not be processed at this moment in time
6263 because the FSM was already busy so no state transition or dequeueing
6264 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07006265
Jeff Johnson295189b2012-06-20 16:38:30 -07006266 Success for synchronous case means that the transition may occur and
6267 processing of pending requests may continue - so it should go through
6268 and restores the state and continue processing queued requests*/
6269 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
6270 ( WDI_STATUS_PENDING != wdiStatus ))
6271 {
6272 if ( WDI_RESPONSE_EVENT != wdiEV)
6273 {
6274 /*The request has failed or could not be processed - transition back to
6275 the old state - check to see if anything was queued and try to execute
6276 The dequeue logic should post a message to a thread and return - no
6277 actual processing can occur */
6278 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
6279 }
6280 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006281
Jeff Johnson295189b2012-06-20 16:38:30 -07006282 }
6283
6284 /* we have completed processing the event */
6285 wpalMutexRelease(&pWDICtx->wptMutex);
6286
Jeff Johnsone7245742012-09-05 17:12:55 -07006287 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006288
6289}/*WDI_PostMainEvent*/
6290
6291
6292/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006293 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006294--------------------------------------------------------------------------*/
6295/**
6296 @brief Main FSM Start function for all states except BUSY
6297
Jeff Johnsone7245742012-09-05 17:12:55 -07006298
6299 @param pWDICtx: pointer to the WLAN DAL context
6300 pEventData: pointer to the event information structure
6301
Jeff Johnson295189b2012-06-20 16:38:30 -07006302 @see
6303 @return Result of the function call
6304*/
6305WDI_Status
6306WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07006307(
Jeff Johnson295189b2012-06-20 16:38:30 -07006308 WDI_ControlBlockType* pWDICtx,
6309 WDI_EventInfoType* pEventData
6310)
6311{
6312
6313 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006314 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006315 ----------------------------------------------------------------------*/
6316 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6317 {
6318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006319 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006320 pWDICtx, pEventData);
6321 return WDI_STATUS_E_FAILURE;
6322 }
6323
6324 wpalMutexAcquire(&pWDICtx->wptMutex);
6325
6326 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006327 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006328 ----------------------------------------------------------------------*/
6329 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
6330 {
6331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6332 "Control Transport not yet Open - queueing the request");
6333
6334 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07006335 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006336
6337 wpalMutexRelease(&pWDICtx->wptMutex);
6338 return WDI_STATUS_PENDING;
6339 }
Jeff Johnsone7245742012-09-05 17:12:55 -07006340
Jeff Johnson295189b2012-06-20 16:38:30 -07006341 wpalMutexRelease(&pWDICtx->wptMutex);
6342
6343 /*Return Success*/
6344 return WDI_ProcessRequest( pWDICtx, pEventData );
6345
6346}/*WDI_MainStart*/
6347
6348/**
6349 @brief Main FSM Response function for state INIT
6350
Jeff Johnsone7245742012-09-05 17:12:55 -07006351
6352 @param pWDICtx: pointer to the WLAN DAL context
6353 pEventData: pointer to the event information structure
6354
Jeff Johnson295189b2012-06-20 16:38:30 -07006355 @see
6356 @return Result of the function call
6357*/
6358WDI_Status
6359WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07006360(
Jeff Johnson295189b2012-06-20 16:38:30 -07006361 WDI_ControlBlockType* pWDICtx,
6362 WDI_EventInfoType* pEventData
6363)
6364{
6365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006366 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006367 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006368 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006369
6370 /*Return Success*/
6371 return WDI_STATUS_E_NOT_ALLOWED;
6372}/* WDI_MainRspInit */
6373
6374/**
6375 @brief Main FSM Close function for all states except BUSY
6376
Jeff Johnsone7245742012-09-05 17:12:55 -07006377
6378 @param pWDICtx: pointer to the WLAN DAL context
6379 pEventData: pointer to the event information structure
6380
Jeff Johnson295189b2012-06-20 16:38:30 -07006381 @see
6382 @return Result of the function call
6383*/
6384WDI_Status
6385WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006386(
Jeff Johnson295189b2012-06-20 16:38:30 -07006387 WDI_ControlBlockType* pWDICtx,
6388 WDI_EventInfoType* pEventData
6389)
6390{
6391
6392 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006393 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006394 ----------------------------------------------------------------------*/
6395 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6396 {
6397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006398 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006399 pWDICtx, pEventData);
6400 return WDI_STATUS_E_FAILURE;
6401 }
6402
6403 /*Return Success*/
6404 return WDI_ProcessRequest( pWDICtx, pEventData );
6405
6406}/*WDI_MainClose*/
6407/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006408 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006409--------------------------------------------------------------------------*/
6410/**
6411 @brief Main FSM Start function for state STARTED
6412
Jeff Johnsone7245742012-09-05 17:12:55 -07006413
6414 @param pWDICtx: pointer to the WLAN DAL context
6415 pEventData: pointer to the event information structure
6416
Jeff Johnson295189b2012-06-20 16:38:30 -07006417 @see
6418 @return Result of the function call
6419*/
6420WDI_Status
6421WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006422(
Jeff Johnson295189b2012-06-20 16:38:30 -07006423 WDI_ControlBlockType* pWDICtx,
6424 WDI_EventInfoType* pEventData
6425)
6426{
6427 WDI_StartRspCb wdiStartRspCb = NULL;
6428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6429
6430 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006431 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006432 ----------------------------------------------------------------------*/
6433 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6434 {
6435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006436 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006437 pWDICtx, pEventData);
6438 return WDI_STATUS_E_FAILURE;
6439 }
6440
6441 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006442 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006443 ----------------------------------------------------------------------*/
6444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006445 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006446
6447 wpalMutexAcquire(&pWDICtx->wptMutex);
6448
6449 /*Transition back to started because the post function transitioned us to
6450 busy*/
6451 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6452
6453 /*Check to see if any request is pending*/
6454 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006455
Jeff Johnson295189b2012-06-20 16:38:30 -07006456 wpalMutexRelease(&pWDICtx->wptMutex);
6457
6458 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006459 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6460
Jeff Johnson295189b2012-06-20 16:38:30 -07006461 /*Notify UMAC*/
6462 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6463
6464 /*Return Success*/
6465 return WDI_STATUS_SUCCESS;
6466
6467}/*WDI_MainStartStarted*/
6468
6469/**
6470 @brief Main FSM Stop function for state STARTED
6471
Jeff Johnsone7245742012-09-05 17:12:55 -07006472
6473 @param pWDICtx: pointer to the WLAN DAL context
6474 pEventData: pointer to the event information structure
6475
Jeff Johnson295189b2012-06-20 16:38:30 -07006476 @see
6477 @return Result of the function call
6478*/
6479WDI_Status
6480WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006481(
Jeff Johnson295189b2012-06-20 16:38:30 -07006482 WDI_ControlBlockType* pWDICtx,
6483 WDI_EventInfoType* pEventData
6484)
6485{
6486 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006487 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006488 ----------------------------------------------------------------------*/
6489 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6490 {
6491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006492 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006493 pWDICtx, pEventData);
6494 return WDI_STATUS_E_FAILURE;
6495 }
6496
6497 /*State at this point is BUSY - because we enter this state before posting
6498 an event to the FSM in order to prevent potential race conditions*/
6499
6500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6501 "Processing stop request in FSM");
6502
6503 /*Return Success*/
6504 return WDI_ProcessRequest( pWDICtx, pEventData );
6505
6506}/*WDI_MainStopStarted*/
6507/**
6508 @brief Main FSM Request function for state started
6509
Jeff Johnsone7245742012-09-05 17:12:55 -07006510
6511 @param pWDICtx: pointer to the WLAN DAL context
6512 pEventData: pointer to the event information structure
6513
Jeff Johnson295189b2012-06-20 16:38:30 -07006514 @see
6515 @return Result of the function call
6516*/
6517WDI_Status
6518WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006519(
Jeff Johnson295189b2012-06-20 16:38:30 -07006520 WDI_ControlBlockType* pWDICtx,
6521 WDI_EventInfoType* pEventData
6522)
6523{
6524
6525 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006526 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006527 ----------------------------------------------------------------------*/
6528 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6529 {
6530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006531 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006532 pWDICtx, pEventData);
6533 return WDI_STATUS_E_FAILURE;
6534 }
6535
6536 /*State at this point is BUSY - because we enter this state before posting
6537 an event to the FSM in order to prevent potential race conditions*/
6538
6539 /*Return Success*/
6540 return WDI_ProcessRequest( pWDICtx, pEventData );
6541
6542}/*WDI_MainReqStarted*/
6543
6544/**
6545 @brief Main FSM Response function for all states except INIT
6546
Jeff Johnsone7245742012-09-05 17:12:55 -07006547
6548 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006549 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006550
Jeff Johnson295189b2012-06-20 16:38:30 -07006551 @see
6552 @return Result of the function call
6553*/
6554WDI_Status
6555WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006556(
Jeff Johnson295189b2012-06-20 16:38:30 -07006557 WDI_ControlBlockType* pWDICtx,
6558 WDI_EventInfoType* pEventData
6559)
6560{
Jeff Johnsone7245742012-09-05 17:12:55 -07006561 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006562 wpt_boolean expectedResponse;
6563
6564 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006565 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006566 ----------------------------------------------------------------------*/
6567 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6568 {
6569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006570 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006571 pWDICtx, pEventData);
6572 return WDI_STATUS_E_FAILURE;
6573 }
6574
6575 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6576 {
6577 /* we received an expected response */
6578 expectedResponse = eWLAN_PAL_TRUE;
6579
6580 /*We expect that we will transition to started after this processing*/
6581 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6582
6583 /* we are no longer expecting a response */
6584 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6585 }
6586 else
6587 {
6588 /* we received an indication or unexpected response */
6589 expectedResponse = eWLAN_PAL_FALSE;
6590 /* for indications no need to update state from what it is right
6591 now, unless it explicitly does it in the indication handler (say
6592 for device failure ind) */
6593 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6594 }
6595
6596 /*Process the response and indication */
6597 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6598
6599 /*Lock the CB as we are about to do a state transition*/
6600 wpalMutexAcquire(&pWDICtx->wptMutex);
6601
6602 /*Transition to the expected state after the response processing
6603 - this should always be started state with the following exceptions:
6604 1. processing of a failed start response
6605 2. device failure detected while processing response
6606 3. stop response received*/
6607 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006608
Jeff Johnson295189b2012-06-20 16:38:30 -07006609 /*Dequeue request that may have been queued while we were waiting for the
6610 response */
6611 if ( expectedResponse )
6612 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006613 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006614 }
6615
6616 wpalMutexRelease(&pWDICtx->wptMutex);
6617
6618 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006619 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006620
6621}/*WDI_MainRsp*/
6622
6623/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006624 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006625--------------------------------------------------------------------------*/
6626/**
6627 @brief Main FSM Stop function for state STOPPED
6628
Jeff Johnsone7245742012-09-05 17:12:55 -07006629
6630 @param pWDICtx: pointer to the WLAN DAL context
6631 pEventData: pointer to the event information structure
6632
Jeff Johnson295189b2012-06-20 16:38:30 -07006633 @see
6634 @return Result of the function call
6635*/
6636WDI_Status
6637WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006638(
Jeff Johnson295189b2012-06-20 16:38:30 -07006639 WDI_ControlBlockType* pWDICtx,
6640 WDI_EventInfoType* pEventData
6641)
6642{
6643 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006644 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006645 ----------------------------------------------------------------------*/
6646 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6647 {
6648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006649 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006650 pWDICtx, pEventData);
6651 return WDI_STATUS_E_FAILURE;
6652 }
6653
6654 /*We should normally not get a STOP request if we are already stopped
6655 since we should normally be stopped by the UMAC. However in some
6656 error situations we put ourselves in the stopped state without the
6657 UMAC knowing, so when we get a STOP request in this state we still
6658 process it since we need to clean up the underlying state */
6659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6660 "Processing stop request while stopped in FSM");
6661
6662 /*Return Success*/
6663 return WDI_ProcessRequest( pWDICtx, pEventData );
6664
6665}/*WDI_MainStopStopped*/
6666
6667/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006668 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006669--------------------------------------------------------------------------*/
6670/**
6671 @brief Main FSM Start function for state BUSY
6672
Jeff Johnsone7245742012-09-05 17:12:55 -07006673
6674 @param pWDICtx: pointer to the WLAN DAL context
6675 pEventData: pointer to the event information structure
6676
Jeff Johnson295189b2012-06-20 16:38:30 -07006677 @see
6678 @return Result of the function call
6679*/
6680WDI_Status
6681WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006682(
Jeff Johnson295189b2012-06-20 16:38:30 -07006683 WDI_ControlBlockType* pWDICtx,
6684 WDI_EventInfoType* pEventData
6685)
6686{
6687 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006688 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006689 ----------------------------------------------------------------------*/
6690 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6691 {
6692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006693 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006694 pWDICtx, pEventData);
6695 return WDI_STATUS_E_FAILURE;
6696 }
6697
6698 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006699 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006700 ----------------------------------------------------------------------*/
6701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6702 "WDI Busy state - queue start request");
6703
6704 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006705 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006706
6707 /*Return Success*/
6708 return WDI_STATUS_PENDING;
6709}/*WDI_MainStartBusy*/
6710
6711/**
6712 @brief Main FSM Stop function for state BUSY
6713
Jeff Johnsone7245742012-09-05 17:12:55 -07006714
6715 @param pWDICtx: pointer to the WLAN DAL context
6716 pEventData: pointer to the event information structure
6717
Jeff Johnson295189b2012-06-20 16:38:30 -07006718 @see
6719 @return Result of the function call
6720*/
6721WDI_Status
6722WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006723(
Jeff Johnson295189b2012-06-20 16:38:30 -07006724 WDI_ControlBlockType* pWDICtx,
6725 WDI_EventInfoType* pEventData
6726)
6727{
6728 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006729 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006730 ----------------------------------------------------------------------*/
6731 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6732 {
6733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006734 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006735 pWDICtx, pEventData);
6736 return WDI_STATUS_E_FAILURE;
6737 }
6738
6739 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006740 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006741 ----------------------------------------------------------------------*/
6742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6743 "WDI Busy state - queue stop request");
6744
Jeff Johnsone7245742012-09-05 17:12:55 -07006745 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006746 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006747
Jeff Johnson295189b2012-06-20 16:38:30 -07006748}/*WDI_MainStopBusy*/
6749
6750/**
6751 @brief Main FSM Request function for state BUSY
6752
Jeff Johnsone7245742012-09-05 17:12:55 -07006753
6754 @param pWDICtx: pointer to the WLAN DAL context
6755 pEventData: pointer to the event information structure
6756
Jeff Johnson295189b2012-06-20 16:38:30 -07006757 @see
6758 @return Result of the function call
6759*/
6760WDI_Status
6761WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006762(
Jeff Johnson295189b2012-06-20 16:38:30 -07006763 WDI_ControlBlockType* pWDICtx,
6764 WDI_EventInfoType* pEventData
6765)
6766{
6767 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006768 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006769 ----------------------------------------------------------------------*/
6770 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6771 {
6772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006773 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006774 pWDICtx, pEventData);
6775 return WDI_STATUS_E_FAILURE;
6776 }
6777
6778 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006779 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006780 ----------------------------------------------------------------------*/
6781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6782 "WDI Busy state - queue request %d because waiting for response %d",
6783 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6784
Jeff Johnsone7245742012-09-05 17:12:55 -07006785 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006786 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006787
Jeff Johnson295189b2012-06-20 16:38:30 -07006788}/*WDI_MainReqBusy*/
6789/**
6790 @brief Main FSM Close function for state BUSY
6791
Jeff Johnsone7245742012-09-05 17:12:55 -07006792
6793 @param pWDICtx: pointer to the WLAN DAL context
6794 pEventData: pointer to the event information structure
6795
Jeff Johnson295189b2012-06-20 16:38:30 -07006796 @see
6797 @return Result of the function call
6798*/
6799WDI_Status
6800WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006801(
Jeff Johnson295189b2012-06-20 16:38:30 -07006802 WDI_ControlBlockType* pWDICtx,
6803 WDI_EventInfoType* pEventData
6804)
6805{
6806 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006807 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006808 ----------------------------------------------------------------------*/
6809 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6810 {
6811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006812 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006813 pWDICtx, pEventData);
6814 return WDI_STATUS_E_FAILURE;
6815 }
6816
6817 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006818 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006819 ----------------------------------------------------------------------*/
6820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6821 "WDI Busy state - queue close request");
6822
Jeff Johnsone7245742012-09-05 17:12:55 -07006823 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006824 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006825
Jeff Johnson295189b2012-06-20 16:38:30 -07006826}/*WDI_MainCloseBusy*/
6827
6828/**
6829 @brief Main FSM Shutdown function for INIT & STARTED states
6830
6831
6832 @param pWDICtx: pointer to the WLAN DAL context
6833 pEventData: pointer to the event information structure
6834
6835 @see
6836 @return Result of the function call
6837*/
6838WDI_Status
6839WDI_MainShutdown
6840(
6841 WDI_ControlBlockType* pWDICtx,
6842 WDI_EventInfoType* pEventData
6843)
6844{
6845 /*--------------------------------------------------------------------
6846 Sanity Check
6847 ----------------------------------------------------------------------*/
6848 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6849 {
6850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006851 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006852 pWDICtx, pEventData);
6853 return WDI_STATUS_E_FAILURE;
6854 }
6855
6856 /*State at this point is BUSY - because we enter this state before posting
6857 an event to the FSM in order to prevent potential race conditions*/
6858
6859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6860 "Processing shutdown request in FSM");
6861
6862 /*Return Success*/
6863 return WDI_ProcessRequest( pWDICtx, pEventData );
6864
6865}/*WDI_MainShutdown*/
6866
6867/**
6868 @brief Main FSM Shutdown function for BUSY state
6869
6870
6871 @param pWDICtx: pointer to the WLAN DAL context
6872 pEventData: pointer to the event information structure
6873
6874 @see
6875 @return Result of the function call
6876*/
6877WDI_Status
6878WDI_MainShutdownBusy
6879(
6880 WDI_ControlBlockType* pWDICtx,
6881 WDI_EventInfoType* pEventData
6882)
6883{
6884 /*--------------------------------------------------------------------
6885 Sanity Check
6886 ----------------------------------------------------------------------*/
6887 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6888 {
6889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006890 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006891 pWDICtx, pEventData);
6892 return WDI_STATUS_E_FAILURE;
6893 }
6894
6895 /* If you are waiting for a HAL response at this stage, you are not
6896 * going to get it. Riva is already shutdown/crashed.
6897 */
6898 wpalTimerStop(&gWDICb.wptResponseTimer);
6899
6900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6901 "Processing shutdown request in FSM: Busy state ");
6902
6903 return WDI_ProcessRequest( pWDICtx, pEventData );
6904
6905}/*WDI_MainShutdownBusy*/
6906
6907
Jeff Johnsone7245742012-09-05 17:12:55 -07006908/*=======================================================================
6909
Jeff Johnson295189b2012-06-20 16:38:30 -07006910 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006911
Jeff Johnson295189b2012-06-20 16:38:30 -07006912*=======================================================================*/
6913
6914/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006915 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006916========================================================================*/
6917/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006918 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006919 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006920
6921 @param pWDICtx: pointer to the WLAN DAL context
6922 pEventData: pointer to the event information structure
6923
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 @see
6925 @return Result of the function call
6926*/
6927WDI_Status
6928WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006929(
Jeff Johnson295189b2012-06-20 16:38:30 -07006930 WDI_ControlBlockType* pWDICtx,
6931 WDI_EventInfoType* pEventData
6932)
6933{
6934 WDI_StartReqParamsType* pwdiStartParams = NULL;
6935 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006936 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 wpt_uint16 usDataOffset = 0;
6938 wpt_uint16 usSendSize = 0;
6939
Jeff Johnsone7245742012-09-05 17:12:55 -07006940 tHalMacStartReqMsg halStartReq;
6941 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6943
6944 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006945 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006946 -------------------------------------------------------------------------*/
6947 if (( NULL == pEventData ) ||
6948 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6949 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6950 {
6951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006952 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006953 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006955 }
6956
6957 /*-----------------------------------------------------------------------
6958 Get message buffer
6959 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006960 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006961 pwdiStartParams->usConfigBufferLen;
6962
Jeff Johnsone7245742012-09-05 17:12:55 -07006963 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 usLen,
6965 &pSendBuffer, &usDataOffset, &usSendSize))||
6966 ( usSendSize < (usDataOffset + usLen )))
6967 {
6968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08006969 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07006970 pEventData, pwdiStartParams, wdiStartRspCb);
6971 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006972 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006973 }
6974
6975 /*-----------------------------------------------------------------------
6976 Fill in the message
6977 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006978 halStartReq.startReqParams.driverType =
6979 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006980
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 halStartReq.startReqParams.uConfigBufferLen =
6982 pwdiStartParams->usConfigBufferLen;
6983 wpalMemoryCopy( pSendBuffer+usDataOffset,
6984 &halStartReq.startReqParams,
6985 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006986
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 usDataOffset += sizeof(halStartReq.startReqParams);
6988 wpalMemoryCopy( pSendBuffer+usDataOffset,
6989 pwdiStartParams->pConfigBuffer,
6990 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006991
6992 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006993 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006994
6995 /*Save Low Level Ind CB and associated user data - it will be used further
6996 on when an indication is coming from the lower MAC*/
6997 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006998 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006999
Jeff Johnsone7245742012-09-05 17:12:55 -07007000 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007002 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007003 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007004 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
7006
Jeff Johnsone7245742012-09-05 17:12:55 -07007007
Jeff Johnson295189b2012-06-20 16:38:30 -07007008}/*WDI_ProcessStartReq*/
7009
7010/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007011 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007013
7014 @param pWDICtx: pointer to the WLAN DAL context
7015 pEventData: pointer to the event information structure
7016
Jeff Johnson295189b2012-06-20 16:38:30 -07007017 @see
7018 @return Result of the function call
7019*/
7020WDI_Status
7021WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007022(
Jeff Johnson295189b2012-06-20 16:38:30 -07007023 WDI_ControlBlockType* pWDICtx,
7024 WDI_EventInfoType* pEventData
7025)
7026{
7027 WDI_StopReqParamsType* pwdiStopParams = NULL;
7028 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007029 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007030 wpt_uint16 usDataOffset = 0;
7031 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07007032 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07007033 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07007034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7035
7036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007038 -------------------------------------------------------------------------*/
7039 if (( NULL == pEventData ) ||
7040 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
7041 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
7042 {
7043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007046 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007047 }
7048
7049 /*-----------------------------------------------------------------------
7050 Get message buffer
7051 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 sizeof(halStopReq.stopReqParams),
7054 &pSendBuffer, &usDataOffset, &usSendSize))||
7055 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
7056 {
7057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007058 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007059 pEventData, pwdiStopParams, wdiStopRspCb);
7060 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007061 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07007062 }
7063
7064 /*-----------------------------------------------------------------------
7065 Fill in the message
7066 -----------------------------------------------------------------------*/
7067 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
7068 pwdiStopParams->wdiStopReason);
7069
Jeff Johnsone7245742012-09-05 17:12:55 -07007070 wpalMemoryCopy( pSendBuffer+usDataOffset,
7071 &halStopReq.stopReqParams,
7072 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007073
7074 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007075 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007076
7077 /*! TO DO: stop the data services */
7078 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7079 {
7080 /*Stop the STA Table !UT- check this logic again
7081 It is safer to do it here than on the response - because a stop is imminent*/
7082 WDI_STATableStop(pWDICtx);
7083
7084 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07007085 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
7086 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007087 {
7088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7089 "WDI Init failed to reset power state event");
7090
Jeff Johnsone7245742012-09-05 17:12:55 -07007091 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007092 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007093 }
7094 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007095 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
7096 if( eWLAN_PAL_STATUS_SUCCESS != status )
7097 {
7098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7099 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
7100 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007101 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007102 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007103 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007104 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07007105 */
Jeff Johnson43971f52012-07-17 12:26:56 -07007106 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
7107 WDI_SET_POWER_STATE_TIMEOUT);
7108 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07007109 {
7110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7111 "WDI Init failed to wait on an event");
7112
Jeff Johnsone7245742012-09-05 17:12:55 -07007113 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007114 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 }
7116 }
7117
7118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007119 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007121 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007122 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
7123
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007124fail:
7125 // Release the message buffer so we don't leak
7126 wpalMemoryFree(pSendBuffer);
7127
7128failRequest:
7129 //WDA should have failure check to avoid the memory leak
7130 return WDI_STATUS_E_FAILURE;
7131
Jeff Johnson295189b2012-06-20 16:38:30 -07007132}/*WDI_ProcessStopReq*/
7133
7134/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007135 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007136 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007137
7138 @param pWDICtx: pointer to the WLAN DAL context
7139 pEventData: pointer to the event information structure
7140
Jeff Johnson295189b2012-06-20 16:38:30 -07007141 @see
7142 @return Result of the function call
7143*/
7144WDI_Status
7145WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007146(
Jeff Johnson295189b2012-06-20 16:38:30 -07007147 WDI_ControlBlockType* pWDICtx,
7148 WDI_EventInfoType* pEventData
7149)
7150{
Jeff Johnsone7245742012-09-05 17:12:55 -07007151 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7153
7154 /*Lock control block for cleanup*/
7155 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007156
Jeff Johnson295189b2012-06-20 16:38:30 -07007157 /*Clear all pending request*/
7158 WDI_ClearPendingRequests(pWDICtx);
7159
7160 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007161 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07007162
7163 /* Close Data transport*/
7164 /* FTM mode does not open Data Path */
7165 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
7166 {
7167 WDTS_Close(pWDICtx);
7168 }
7169
7170 /*Close the STA Table !UT- check this logic again*/
7171 WDI_STATableClose(pWDICtx);
7172
7173 /*close the PAL */
7174 wptStatus = wpalClose(pWDICtx->pPALContext);
7175 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7176 {
7177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7178 "Failed to wpal Close %d", wptStatus);
7179 WDI_ASSERT(0);
7180 }
7181
7182 /*Transition back to init state*/
7183 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
7184
7185 wpalMutexRelease(&pWDICtx->wptMutex);
7186
7187 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007188 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007189
Jeff Johnsone7245742012-09-05 17:12:55 -07007190 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007191}/*WDI_ProcessCloseReq*/
7192
7193
7194/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007195 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07007196===========================================================================*/
7197
7198/**
7199 @brief Process Init Scan Request function (called when Main FSM
7200 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007201
7202 @param pWDICtx: pointer to the WLAN DAL context
7203 pEventData: pointer to the event information structure
7204
Jeff Johnson295189b2012-06-20 16:38:30 -07007205 @see
7206 @return Result of the function call
7207*/
7208WDI_Status
7209WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007210(
Jeff Johnson295189b2012-06-20 16:38:30 -07007211 WDI_ControlBlockType* pWDICtx,
7212 WDI_EventInfoType* pEventData
7213)
7214{
7215 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
7216 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007217 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007218 wpt_uint16 usDataOffset = 0;
7219 wpt_uint16 usSendSize = 0;
7220 wpt_uint8 i = 0;
7221
7222 tHalInitScanReqMsg halInitScanReqMsg;
7223
Jeff Johnsone7245742012-09-05 17:12:55 -07007224 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007225 * It shold be removed once host and riva changes are in sync*/
7226 tHalInitScanConReqMsg halInitScanConReqMsg;
7227
7228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7229
7230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007232 -------------------------------------------------------------------------*/
7233 if (( NULL == pEventData ) ||
7234 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
7235 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
7236 {
7237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007238 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007241 }
7242
7243#if 0
7244 wpalMutexAcquire(&pWDICtx->wptMutex);
7245 /*-----------------------------------------------------------------------
7246 Check to see if SCAN is already in progress - if so reject the req
7247 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07007248 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07007249 -----------------------------------------------------------------------*/
7250 if ( pWDICtx->bScanInProgress )
7251 {
7252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7253 "Scan is already in progress - subsequent scan is not allowed"
7254 " until the first scan completes");
7255
7256 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007257 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 }
7259
Jeff Johnsone7245742012-09-05 17:12:55 -07007260 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
7261 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007262
7263 wpalMutexRelease(&pWDICtx->wptMutex);
7264#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08007265 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07007266 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007267 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07007268 * It shold be removed once host and riva changes are in sync*/
7269 /*-----------------------------------------------------------------------
7270 Get message buffer
7271 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007272 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007273 sizeof(halInitScanConReqMsg.initScanParams),
7274 &pSendBuffer, &usDataOffset, &usSendSize))||
7275 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
7276 {
7277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007278 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007279 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007282 }
7283
7284
7285 /*-----------------------------------------------------------------------
7286 Fill in the message
7287 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007288 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7290
7291 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
7292 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7293
Jeff Johnsone7245742012-09-05 17:12:55 -07007294 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007295 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007296 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007298 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007299 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7300
7301 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
7302 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7303
Jeff Johnson295189b2012-06-20 16:38:30 -07007304 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
7305 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07007306
Jeff Johnsone7245742012-09-05 17:12:55 -07007307 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7309
7310 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7311 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007312 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7314 }
7315
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 wpalMemoryCopy( pSendBuffer+usDataOffset,
7317 &halInitScanConReqMsg.initScanParams,
7318 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007319 }
7320 else
7321 {
7322 /*-----------------------------------------------------------------------
7323 Get message buffer
7324 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007326 sizeof(halInitScanReqMsg.initScanParams),
7327 &pSendBuffer, &usDataOffset, &usSendSize))||
7328 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
7329 {
7330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007331 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
7333 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007334 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007335 }
7336
7337
7338 /*-----------------------------------------------------------------------
7339 Fill in the message
7340 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007341 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007342 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
7343
7344 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
7345 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7346
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07007351 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007352 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
7353
7354 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
7355 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
7356
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007358 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
7359
7360 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7361 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007362 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7364 }
7365
Jeff Johnsone7245742012-09-05 17:12:55 -07007366 wpalMemoryCopy( pSendBuffer+usDataOffset,
7367 &halInitScanReqMsg.initScanParams,
7368 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 }
7370
7371 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007372 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007373
7374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007377 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007378 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7379
7380}/*WDI_ProcessInitScanReq*/
7381
7382/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007383 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007384 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007385
7386 @param pWDICtx: pointer to the WLAN DAL context
7387 pEventData: pointer to the event information structure
7388
Jeff Johnson295189b2012-06-20 16:38:30 -07007389 @see
7390 @return Result of the function call
7391*/
7392WDI_Status
7393WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007394(
Jeff Johnson295189b2012-06-20 16:38:30 -07007395 WDI_ControlBlockType* pWDICtx,
7396 WDI_EventInfoType* pEventData
7397)
7398{
7399 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7400 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007401 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 wpt_uint16 usDataOffset = 0;
7403 wpt_uint16 usSendSize = 0;
7404
Jeff Johnsone7245742012-09-05 17:12:55 -07007405 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7407
7408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007409 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 -------------------------------------------------------------------------*/
7411 if (( NULL == pEventData ) ||
7412 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7413 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7414 {
7415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007419 }
7420
7421#if 0
7422 wpalMutexAcquire(&pWDICtx->wptMutex);
7423 /*-----------------------------------------------------------------------
7424 Check to see if SCAN is already in progress - start scan is only
7425 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007426 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7430 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7431 {
7432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7433 "Scan start not allowed in this state %d %d",
7434 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007435
Jeff Johnson295189b2012-06-20 16:38:30 -07007436 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007437 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007438 }
7439
Jeff Johnsone7245742012-09-05 17:12:55 -07007440 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007441
7442 wpalMutexRelease(&pWDICtx->wptMutex);
7443#endif
7444
7445 /*-----------------------------------------------------------------------
7446 Get message buffer
7447 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007448 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007449 sizeof(halStartScanReqMsg.startScanParams),
7450 &pSendBuffer, &usDataOffset, &usSendSize))||
7451 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7452 {
7453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007454 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007455 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007458 }
7459
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007461 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007462 wpalMemoryCopy( pSendBuffer+usDataOffset,
7463 &halStartScanReqMsg.startScanParams,
7464 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007465
7466 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007468
7469 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007470 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007471 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007472 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007473 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7474}/*WDI_ProcessStartScanReq*/
7475
7476
7477/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007478 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007479 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007480
7481 @param pWDICtx: pointer to the WLAN DAL context
7482 pEventData: pointer to the event information structure
7483
Jeff Johnson295189b2012-06-20 16:38:30 -07007484 @see
7485 @return Result of the function call
7486*/
7487WDI_Status
7488WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007489(
Jeff Johnson295189b2012-06-20 16:38:30 -07007490 WDI_ControlBlockType* pWDICtx,
7491 WDI_EventInfoType* pEventData
7492)
7493{
7494 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7495 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007496 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 wpt_uint16 usDataOffset = 0;
7498 wpt_uint16 usSendSize = 0;
7499
Jeff Johnsone7245742012-09-05 17:12:55 -07007500 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7502
7503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007504 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007505 -------------------------------------------------------------------------*/
7506 if (( NULL == pEventData ) ||
7507 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7508 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7509 {
7510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007512 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 }
7515
Jeff Johnsone7245742012-09-05 17:12:55 -07007516 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7517 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007518 * forwarded to HAL and result in hang*/
7519#if 0
7520 wpalMutexAcquire(&pWDICtx->wptMutex);
7521 /*-----------------------------------------------------------------------
7522 Check to see if SCAN is already in progress - end scan is only
7523 allowed when a scan is ongoing and the state of the scan procedure
7524 is started
7525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007526 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007527 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7528 {
7529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7530 "End start not allowed in this state %d %d",
7531 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007532
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007534 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 }
7536
Jeff Johnsone7245742012-09-05 17:12:55 -07007537 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007538
7539 wpalMutexRelease(&pWDICtx->wptMutex);
7540#endif
7541
7542 /*-----------------------------------------------------------------------
7543 Get message buffer
7544 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007545 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007546 sizeof(halEndScanReqMsg.endScanParams),
7547 &pSendBuffer, &usDataOffset, &usSendSize))||
7548 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7549 {
7550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007551 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007552 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007555 }
7556
7557 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7558
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 wpalMemoryCopy( pSendBuffer+usDataOffset,
7560 &halEndScanReqMsg.endScanParams,
7561 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007562
7563 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007564 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007565
7566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007567 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7571}/*WDI_ProcessEndScanReq*/
7572
7573
7574/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007575 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007576 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007577
7578 @param pWDICtx: pointer to the WLAN DAL context
7579 pEventData: pointer to the event information structure
7580
Jeff Johnson295189b2012-06-20 16:38:30 -07007581 @see
7582 @return Result of the function call
7583*/
7584WDI_Status
7585WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007586(
Jeff Johnson295189b2012-06-20 16:38:30 -07007587 WDI_ControlBlockType* pWDICtx,
7588 WDI_EventInfoType* pEventData
7589)
7590{
7591 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7592 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 wpt_uint16 usDataOffset = 0;
7595 wpt_uint16 usSendSize = 0;
7596 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007597 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007598 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7600
7601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007602 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 -------------------------------------------------------------------------*/
7604 if (( NULL == pEventData ) ||
7605 ( NULL == pEventData->pEventData) ||
7606 ( NULL == pEventData->pCBfnc))
7607 {
7608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007612 }
7613
7614 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7615 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007616 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7617 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007618 * forwarded to HAL and result in hang*/
7619#if 0
7620 wpalMutexAcquire(&pWDICtx->wptMutex);
7621 /*-----------------------------------------------------------------------
7622 Check to see if SCAN is already in progress
7623 Finish scan gets invoked any scan states. ie. abort scan
7624 It should be allowed in any states.
7625 -----------------------------------------------------------------------*/
7626 if ( !pWDICtx->bScanInProgress )
7627 {
7628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7629 "Finish start not allowed in this state %d",
7630 pWDICtx->bScanInProgress );
7631
7632 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007633 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007634 }
7635
7636 /*-----------------------------------------------------------------------
7637 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007638 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007639 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007640 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7641 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007642 wpalMutexRelease(&pWDICtx->wptMutex);
7643#endif
7644
7645 if ( pWDICtx->bInBmps )
7646 {
7647 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007648 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7649 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7650 {
7651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7652 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7653 WDI_ASSERT(0);
7654 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007655 }
7656
7657 /*-----------------------------------------------------------------------
7658 Get message buffer
7659 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007661 sizeof(halFinishScanReqMsg.finishScanParams),
7662 &pSendBuffer, &usDataOffset, &usSendSize))||
7663 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7664 {
7665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007666 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007667 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007670 }
7671
Jeff Johnsone7245742012-09-05 17:12:55 -07007672 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007673 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7674
Jeff Johnsone7245742012-09-05 17:12:55 -07007675 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007676 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7677
Jeff Johnsone7245742012-09-05 17:12:55 -07007678 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007679 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7680
7681 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7682 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7683
Jeff Johnsone7245742012-09-05 17:12:55 -07007684 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007686 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007688 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7690
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7693
7694 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7695 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007696 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007697 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7698 }
7699
7700 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7701 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7702
Jeff Johnsone7245742012-09-05 17:12:55 -07007703 wpalMemoryCopy( pSendBuffer+usDataOffset,
7704 &halFinishScanReqMsg.finishScanParams,
7705 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007706
7707 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007708 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007709
7710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007711 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007712 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007713 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7715}/*WDI_ProcessFinishScanReq*/
7716
7717
7718/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007720==========================================================================*/
7721/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007722 @brief Process BSS Join for a given Session
7723
7724 @param pWDICtx: pointer to the WLAN DAL context
7725 pEventData: pointer to the event information structure
7726
Jeff Johnson295189b2012-06-20 16:38:30 -07007727 @see
7728 @return Result of the function call
7729*/
7730WDI_Status
7731WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007732(
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 WDI_ControlBlockType* pWDICtx,
7734 WDI_JoinReqParamsType* pwdiJoinParams,
7735 WDI_JoinRspCb wdiJoinRspCb,
7736 void* pUserData
7737)
7738{
7739 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007740 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007741 wpt_uint16 usDataOffset = 0;
7742 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007744
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7747
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007748 wpalMutexAcquire(&pWDICtx->wptMutex);
7749
Jeff Johnson295189b2012-06-20 16:38:30 -07007750 /*------------------------------------------------------------------------
7751 Check to see if we have any session with this BSSID already stored, we
7752 should not
7753 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7755 pwdiJoinParams->wdiReqInfo.macBSSID,
7756 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007757
7758 if ( NULL != pBSSSes )
7759 {
7760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007761 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7762 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007763
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007764 /*reset the bAssociationInProgress otherwise the next
7765 *join request will be queued*/
7766 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7767 wpalMutexRelease(&pWDICtx->wptMutex);
7768 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007769 }
7770
Jeff Johnson295189b2012-06-20 16:38:30 -07007771 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007772 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007774 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 if ( NULL == pBSSSes )
7776 {
7777
7778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7779 "DAL has no free sessions - cannot run another join");
7780
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007781 /*reset the bAssociationInProgress otherwise the next
7782 *join request will be queued*/
7783 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007784 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007785 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007786 }
7787
7788 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007789 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7790 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007791 WDI_MAC_ADDR_LEN);
7792
7793 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007794 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007796
Jeff Johnson295189b2012-06-20 16:38:30 -07007797 wpalMutexRelease(&pWDICtx->wptMutex);
7798
7799 /*-----------------------------------------------------------------------
7800 Get message buffer
7801 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 sizeof(halJoinReqMsg.joinReqParams),
7804 &pSendBuffer, &usDataOffset, &usSendSize))||
7805 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7806 {
7807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08007808 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 pUserData, pwdiJoinParams, wdiJoinRspCb);
7810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007812 }
7813
7814 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007815 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007816
7817 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007818 pwdiJoinParams->wdiReqInfo.macSTASelf,
7819 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007820
Jeff Johnsone7245742012-09-05 17:12:55 -07007821 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7823
7824 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7825
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007826#ifdef WLAN_FEATURE_VOWIFI
7827 halJoinReqMsg.joinReqParams.maxTxPower =
7828 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7829#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007830 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007831 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7832#endif
7833
Jeff Johnsone7245742012-09-05 17:12:55 -07007834 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007835 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7836 wdiSecondaryChannelOffset);
7837
Jeff Johnsone7245742012-09-05 17:12:55 -07007838 wpalMemoryCopy( pSendBuffer+usDataOffset,
7839 &halJoinReqMsg.joinReqParams,
7840 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007841
7842 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007843 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007844
7845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007846 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7849 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007850
7851}/*WDI_ProcessBSSSessionJoinReq*/
7852
7853/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007854 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007855 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007856
7857 @param pWDICtx: pointer to the WLAN DAL context
7858 pEventData: pointer to the event information structure
7859
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 @see
7861 @return Result of the function call
7862*/
7863WDI_Status
7864WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007865(
Jeff Johnson295189b2012-06-20 16:38:30 -07007866 WDI_ControlBlockType* pWDICtx,
7867 WDI_EventInfoType* pEventData
7868)
7869{
7870 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7871 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7872 WDI_JoinRspCb wdiJoinRspCb = NULL;
7873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7874
7875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 -------------------------------------------------------------------------*/
7878 if (( NULL == pEventData ) ||
7879 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7880 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7881 {
7882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007886 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007887
Jeff Johnson295189b2012-06-20 16:38:30 -07007888 /*-------------------------------------------------------------------------
7889 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007890 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007891 -------------------------------------------------------------------------*/
7892 wpalMutexAcquire(&pWDICtx->wptMutex);
7893
7894 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7895 {
7896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7897 "Association is currently in progress, queueing new join req");
7898
7899 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007900 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007901 pwdiJoinParams->wdiReqInfo.macBSSID);
7902
7903 wpalMutexRelease(&pWDICtx->wptMutex);
7904
Jeff Johnsone7245742012-09-05 17:12:55 -07007905 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007906 }
7907
7908 /*Starting a new association */
7909 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7910 wpalMutexRelease(&pWDICtx->wptMutex);
7911
7912 /*Process the Join Request*/
7913 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7914 wdiJoinRspCb,pEventData->pUserData);
7915
7916}/*WDI_ProcessJoinReq*/
7917
7918
7919/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007922
7923 @param pWDICtx: pointer to the WLAN DAL context
7924 pEventData: pointer to the event information structure
7925
Jeff Johnson295189b2012-06-20 16:38:30 -07007926 @see
7927 @return Result of the function call
7928*/
7929WDI_Status
7930WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007931(
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 WDI_ControlBlockType* pWDICtx,
7933 WDI_EventInfoType* pEventData
7934)
7935{
7936 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7937 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 wpt_uint16 uMsgSize = 0;
7941 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007942 wpt_uint16 usDataOffset = 0;
7943 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007944 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007945
Jeff Johnsone7245742012-09-05 17:12:55 -07007946 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7948
7949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007951 -------------------------------------------------------------------------*/
7952 if (( NULL == pEventData ) ||
7953 ( NULL == pEventData->pEventData ) ||
7954 ( NULL == pEventData->pCBfnc ))
7955 {
7956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 }
7961
7962 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7963 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7964 /*-------------------------------------------------------------------------
7965 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007966 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007967 -------------------------------------------------------------------------*/
7968 wpalMutexAcquire(&pWDICtx->wptMutex);
7969
7970 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007971 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007972 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007973 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7974 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7975 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007976
Jeff Johnsone7245742012-09-05 17:12:55 -07007977 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007978 {
7979#ifdef WLAN_FEATURE_VOWIFI_11R
7980 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007981 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007982 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007983 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007984 if ( NULL == pBSSSes )
7985 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007986
Jeff Johnson295189b2012-06-20 16:38:30 -07007987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7988 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007989
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007991 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007992 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007993
Jeff Johnson295189b2012-06-20 16:38:30 -07007994 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007995 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7996 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007997 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007998
Jeff Johnson295189b2012-06-20 16:38:30 -07007999 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8002#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008003 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 * Request in case of IBSS*/
8005 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
8006 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
8007 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
8008 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
8009 {
8010 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008011 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008012 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008014 if ( NULL == pBSSSes )
8015 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008016
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8018 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07008019
Jeff Johnson295189b2012-06-20 16:38:30 -07008020 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008023
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8026 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008027 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008028
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008030 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
8032 }
8033 else
8034 {
8035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
8037 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8038 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
8039
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 /* for IBSS testing */
8041 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008042 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008043 }
8044#endif
8045 }
8046
8047 /*------------------------------------------------------------------------
8048 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 ------------------------------------------------------------------------*/
8051 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8052 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8054 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
8055 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
8056 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008057
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008059
8060 wpalMutexRelease(&pWDICtx->wptMutex);
8061
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008063 }
8064
8065 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07008066 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
8067 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 sizeof(pWDICtx->wdiCachedConfigBssReq));
8069
8070 wpalMutexRelease(&pWDICtx->wptMutex);
8071
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
8073#ifdef WLAN_FEATURE_11AC
8074 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008075 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07008076 else
8077#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07008078 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07008079
8080 /*-----------------------------------------------------------------------
8081 Get message buffer
8082 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008083 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008084 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
8085 ( usSendSize < (usDataOffset + uMsgSize )))
8086 {
8087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008088 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
8090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008092 }
8093
8094 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07008095#ifdef WLAN_FEATURE_11AC
8096 if (WDI_getFwWlanFeatCaps(DOT11AC))
8097 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
8098 &pwdiConfigBSSParams->wdiReqInfo);
8099 else
8100#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07008101 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07008102 &pwdiConfigBSSParams->wdiReqInfo);
8103
8104 /* Need to fill in the STA Index to invalid, since at this point we have not
8105 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07008106 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07008107
8108 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
8110
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008111#ifdef WLAN_FEATURE_11AC
8112 if (WDI_getFwWlanFeatCaps(DOT11AC)){
8113 wpalMemoryCopy( pSendBuffer+usDataOffset,
8114 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
8115 uMsgSize);
8116 }else
8117#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008118 {
8119 if ( uMsgSize <= sizeof(tConfigBssParams) )
8120 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07008121 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07008122 &halConfigBssReqMsg.uBssParams.configBssParams,
8123 uMsgSize);
8124 }
8125 else
8126 {
8127 return WDI_STATUS_E_FAILURE;
8128 }
8129 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008130
8131 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008132 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008133
8134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008135 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8138 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008139 WDI_CONFIG_BSS_RESP);
8140
8141}/*WDI_ProcessConfigBSSReq*/
8142
8143
8144/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008145 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008146 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008147
8148 @param pWDICtx: pointer to the WLAN DAL context
8149 pEventData: pointer to the event information structure
8150
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 @see
8152 @return Result of the function call
8153*/
8154WDI_Status
8155WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008156(
Jeff Johnson295189b2012-06-20 16:38:30 -07008157 WDI_ControlBlockType* pWDICtx,
8158 WDI_EventInfoType* pEventData
8159)
8160{
8161 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
8162 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008163 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008166 wpt_uint16 usDataOffset = 0;
8167 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008169
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8172
8173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008175 -------------------------------------------------------------------------*/
8176 if (( NULL == pEventData ) ||
8177 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
8178 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
8179 {
8180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008181 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008184 }
8185
8186 /*-------------------------------------------------------------------------
8187 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008188 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008189 -------------------------------------------------------------------------*/
8190 wpalMutexAcquire(&pWDICtx->wptMutex);
8191
8192 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008193 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008195 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8196 pwdiDelBSSParams->ucBssIdx,
8197 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008198
Jeff Johnsone7245742012-09-05 17:12:55 -07008199 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008200 {
8201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 "%s: BSS does not yet exist. ucBssIdx %d",
8203 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008204
8205 wpalMutexRelease(&pWDICtx->wptMutex);
8206
8207 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008208 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008209
8210 /*------------------------------------------------------------------------
8211 Check if this BSS is being currently processed or queued,
8212 if queued - queue the new request as well
8213 ------------------------------------------------------------------------*/
8214 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07008215 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8217 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8218 __func__, pwdiDelBSSParams->ucBssIdx);
8219
8220 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
8221
8222 wpalMutexRelease(&pWDICtx->wptMutex);
8223
8224 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008225 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008226
Jeff Johnson295189b2012-06-20 16:38:30 -07008227 /*-----------------------------------------------------------------------
8228 If we receive a Del BSS request for an association that is already in
8229 progress, it indicates that the assoc has failed => we no longer have
8230 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07008231 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07008232 -----------------------------------------------------------------------*/
8233 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
8234 {
8235 /*We can switch to false here because even if a subsequent Join comes in
8236 it will only be processed when DAL transitions out of BUSY state which
8237 happens when the Del BSS request comes */
8238 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8239
8240 /*Former association is complete - prepare next pending assoc for
8241 processing */
8242 WDI_DequeueAssocRequest(pWDICtx);
8243 }
8244
8245 wpalMutexRelease(&pWDICtx->wptMutex);
8246 /*-----------------------------------------------------------------------
8247 Get message buffer
8248 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008249 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008250 sizeof(halBssReqMsg.deleteBssParams),
8251 &pSendBuffer, &usDataOffset, &usSendSize))||
8252 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
8253 {
8254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008255 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008256 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
8257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008259 }
8260
8261 /*Fill in the message request structure*/
8262
8263 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08008264 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008265
Jeff Johnsone7245742012-09-05 17:12:55 -07008266 wpalMemoryCopy( pSendBuffer+usDataOffset,
8267 &halBssReqMsg.deleteBssParams,
8268 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008269
8270 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008271 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008272
Jeff Johnsone7245742012-09-05 17:12:55 -07008273
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008275 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008276 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008277 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008278 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
8279
Jeff Johnsone7245742012-09-05 17:12:55 -07008280
Jeff Johnson295189b2012-06-20 16:38:30 -07008281}/*WDI_ProcessDelBSSReq*/
8282
8283/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008286
8287 @param pWDICtx: pointer to the WLAN DAL context
8288 pEventData: pointer to the event information structure
8289
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 @see
8291 @return Result of the function call
8292*/
8293WDI_Status
8294WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008295(
Jeff Johnson295189b2012-06-20 16:38:30 -07008296 WDI_ControlBlockType* pWDICtx,
8297 WDI_EventInfoType* pEventData
8298)
8299{
8300 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
8301 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008305 wpt_uint16 usDataOffset = 0;
8306 wpt_uint16 usSendSize = 0;
8307 wpt_uint16 uMsgSize = 0;
8308 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008310
Jeff Johnsone7245742012-09-05 17:12:55 -07008311 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8313
8314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008315 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008316 -------------------------------------------------------------------------*/
8317 if (( NULL == pEventData ) ||
8318 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
8319 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
8320 {
8321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008322 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008325 }
8326
8327 /*-------------------------------------------------------------------------
8328 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008329 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008330 -------------------------------------------------------------------------*/
8331 wpalMutexAcquire(&pWDICtx->wptMutex);
8332
8333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008334 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008335 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008336 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8337 pwdiPostAssocParams->wdiBSSParams.macBSSID,
8338 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008339
8340 if ( NULL == pBSSSes )
8341 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8343 "%s: Association sequence for this BSS does not yet exist - "
8344 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
8345 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008346
8347 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008348 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008349 }
8350
8351 /*------------------------------------------------------------------------
8352 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008353 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008354 ------------------------------------------------------------------------*/
8355 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8356 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8358 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8359 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008360
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008362
8363 wpalMutexRelease(&pWDICtx->wptMutex);
8364
Jeff Johnsone7245742012-09-05 17:12:55 -07008365 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008366 }
8367
8368 /*-----------------------------------------------------------------------
8369 If Post Assoc was not yet received - the current association must
8370 be in progress
8371 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008372 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8374 {
8375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8376 "Association sequence for this BSS association no longer in "
8377 "progress - not allowed");
8378
8379 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008380 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008381 }
8382
8383 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 -----------------------------------------------------------------------*/
8386 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8387 {
8388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8389 "Post Assoc not allowed before JOIN - failing request");
8390
8391 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008393 }
8394
8395 wpalMutexRelease(&pWDICtx->wptMutex);
8396
8397 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8398 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8399 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008400 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008401 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008402 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008403 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8404 ( usSendSize < (usDataOffset + uMsgSize )))
8405 {
8406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008407 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008411 }
8412
8413 /*Copy the STA parameters */
8414 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8415 &pwdiPostAssocParams->wdiSTAParams );
8416
8417 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008418 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008419 WDI_STATableFindStaidByAddr(pWDICtx,
8420 pwdiPostAssocParams->wdiSTAParams.macSTA,
8421 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8422 {
8423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008424 MAC_ADDRESS_STR
8425 ": This station does not exist in the WDI Station Table",
8426 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008428 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008430 }
8431
8432 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008433 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008434 pBSSSes->ucBSSIdx;
8435
8436 /*Copy the BSS parameters */
8437 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8438 &pwdiPostAssocParams->wdiBSSParams);
8439
8440 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 WDI_STATableFindStaidByAddr(pWDICtx,
8443 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008445 {
8446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008447 MAC_ADDRESS_STR
8448 ": This station does not exist in the WDI Station Table",
8449 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07008450 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008451 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 }
8454
8455 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008457 pBSSSes->ucBSSIdx;
8458
Jeff Johnsone7245742012-09-05 17:12:55 -07008459
8460 wpalMemoryCopy( pSendBuffer+usDataOffset,
8461 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8462 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008463
8464 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8465
Jeff Johnsone7245742012-09-05 17:12:55 -07008466 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8467 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8468 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008469
Jeff Johnsone7245742012-09-05 17:12:55 -07008470
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008473
Jeff Johnsone7245742012-09-05 17:12:55 -07008474
8475 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008478
8479 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008480 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008482 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008483 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8484
Jeff Johnsone7245742012-09-05 17:12:55 -07008485
Jeff Johnson295189b2012-06-20 16:38:30 -07008486}/*WDI_ProcessPostAssocReq*/
8487
8488/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008491
8492 @param pWDICtx: pointer to the WLAN DAL context
8493 pEventData: pointer to the event information structure
8494
Jeff Johnson295189b2012-06-20 16:38:30 -07008495 @see
8496 @return Result of the function call
8497*/
8498WDI_Status
8499WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008500(
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 WDI_ControlBlockType* pWDICtx,
8502 WDI_EventInfoType* pEventData
8503)
8504{
8505 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8506 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 wpt_uint16 usDataOffset = 0;
8511 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008513 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8514
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8517
8518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 -------------------------------------------------------------------------*/
8521 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8522 ( NULL == pEventData->pCBfnc ))
8523 {
8524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 }
8529
8530 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8531 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8532 /*-------------------------------------------------------------------------
8533 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008534 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008535 -------------------------------------------------------------------------*/
8536 wpalMutexAcquire(&pWDICtx->wptMutex);
8537
8538 /*------------------------------------------------------------------------
8539 Find the BSS for which the request is made and identify WDI session
8540 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8542 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008543 &macBSSID))
8544 {
8545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008546 "This station does not exist in the WDI Station Table %d",
8547 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 }
8551
Jeff Johnsone7245742012-09-05 17:12:55 -07008552 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8553 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008554 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8556 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8557 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008558
8559 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008560 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 }
8562
8563 /*------------------------------------------------------------------------
8564 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008566 ------------------------------------------------------------------------*/
8567 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8568 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8570 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8571 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008572
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008575 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008576 }
8577
8578 wpalMutexRelease(&pWDICtx->wptMutex);
8579 /*-----------------------------------------------------------------------
8580 Get message buffer
8581 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008583 sizeof(halDelStaReqMsg.delStaParams),
8584 &pSendBuffer, &usDataOffset, &usSendSize))||
8585 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8586 {
8587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008588 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008592 }
8593
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8595 wpalMemoryCopy( pSendBuffer+usDataOffset,
8596 &halDelStaReqMsg.delStaParams,
8597 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008598
8599 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008600 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008601
8602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008606 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8607
8608}/*WDI_ProcessDelSTAReq*/
8609
8610
8611/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008612 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008613==========================================================================*/
8614/**
8615 @brief Process Set BSS Key Request function (called when Main FSM
8616 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008617
8618 @param pWDICtx: pointer to the WLAN DAL context
8619 pEventData: pointer to the event information structure
8620
Jeff Johnson295189b2012-06-20 16:38:30 -07008621 @see
8622 @return Result of the function call
8623*/
8624WDI_Status
8625WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008626(
Jeff Johnson295189b2012-06-20 16:38:30 -07008627 WDI_ControlBlockType* pWDICtx,
8628 WDI_EventInfoType* pEventData
8629)
8630{
8631 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8632 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008635 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008636 wpt_uint16 usDataOffset = 0;
8637 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008638 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8640 wpt_uint8 keyIndex = 0;
8641
8642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8643
8644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 -------------------------------------------------------------------------*/
8647 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8648 ( NULL == pEventData->pCBfnc ))
8649 {
8650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008654 }
8655
8656 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8657 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8658 /*-------------------------------------------------------------------------
8659 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 -------------------------------------------------------------------------*/
8662 wpalMutexAcquire(&pWDICtx->wptMutex);
8663
8664 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8668 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8669 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008670
Jeff Johnsone7245742012-09-05 17:12:55 -07008671 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008672 {
8673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8675 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008676
8677 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008679 }
8680
8681 /*------------------------------------------------------------------------
8682 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008683 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008684 ------------------------------------------------------------------------*/
8685 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8686 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8688 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8689 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008690
Jeff Johnsone7245742012-09-05 17:12:55 -07008691 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008693 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008694 }
8695
8696
8697 wpalMutexRelease(&pWDICtx->wptMutex);
8698 /*-----------------------------------------------------------------------
8699 Get message buffer
8700 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008702 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8703 &pSendBuffer, &usDataOffset, &usSendSize))||
8704 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8705 {
8706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008707 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008711 }
8712
8713 /*-----------------------------------------------------------------------
8714 Copy the Key parameters into the HAL message
8715 -----------------------------------------------------------------------*/
8716
Jeff Johnsone7245742012-09-05 17:12:55 -07008717 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008718
Jeff Johnsone7245742012-09-05 17:12:55 -07008719 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8721
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8724
8725 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8726 keyIndex++)
8727 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008728 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8730 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8731 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8732 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8733 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8734 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008736 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008739 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008740 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8741 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008742 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008743 WDI_MAX_KEY_LENGTH);
8744 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008745
8746 wpalMemoryCopy( pSendBuffer+usDataOffset,
8747 &halSetBssKeyReqMsg.setBssKeyParams,
8748 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008749
8750 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008752
8753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008756 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8757 wdiSetBSSKeyRspCb, pEventData->pUserData,
8758 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008759
8760}/*WDI_ProcessSetBssKeyReq*/
8761
8762/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008763 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008765
8766 @param pWDICtx: pointer to the WLAN DAL context
8767 pEventData: pointer to the event information structure
8768
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 @see
8770 @return Result of the function call
8771*/
8772WDI_Status
8773WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008774(
Jeff Johnson295189b2012-06-20 16:38:30 -07008775 WDI_ControlBlockType* pWDICtx,
8776 WDI_EventInfoType* pEventData
8777)
8778{
8779 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8780 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008781 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008783 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008784 wpt_uint16 usDataOffset = 0;
8785 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8789
8790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008792 -------------------------------------------------------------------------*/
8793 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8794 ( NULL == pEventData->pCBfnc ))
8795 {
8796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008797 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008800 }
8801
8802 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8803 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8804 /*-------------------------------------------------------------------------
8805 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008806 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 -------------------------------------------------------------------------*/
8808 wpalMutexAcquire(&pWDICtx->wptMutex);
8809
8810 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008812 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008813 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8814 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8815 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008816
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 {
8819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008820 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8821 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008822
8823 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008825 }
8826
8827 /*------------------------------------------------------------------------
8828 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008829 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008830 ------------------------------------------------------------------------*/
8831 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8832 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8834 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8835 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008836
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008839 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008840 }
8841
8842
8843 wpalMutexRelease(&pWDICtx->wptMutex);
8844
8845 /*-----------------------------------------------------------------------
8846 Get message buffer
8847 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008848 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008849 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8850 &pSendBuffer, &usDataOffset, &usSendSize))||
8851 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8852 {
8853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008854 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 }
8859 /*-----------------------------------------------------------------------
8860 Copy the Key parameters into the HAL message
8861 -----------------------------------------------------------------------*/
8862 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8863
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8866
8867 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8868
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8871
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 wpalMemoryCopy( pSendBuffer+usDataOffset,
8873 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8874 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008875
8876 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008877 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008878
8879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008880 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008885}/*WDI_ProcessRemoveBssKeyReq*/
8886
8887/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008888 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008890
8891 @param pWDICtx: pointer to the WLAN DAL context
8892 pEventData: pointer to the event information structure
8893
Jeff Johnson295189b2012-06-20 16:38:30 -07008894 @see
8895 @return Result of the function call
8896*/
8897WDI_Status
8898WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008899(
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 WDI_ControlBlockType* pWDICtx,
8901 WDI_EventInfoType* pEventData
8902)
8903{
8904 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8905 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8906 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 wpt_uint16 usDataOffset = 0;
8909 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008912 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008913 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8914 wpt_uint8 keyIndex = 0;
8915
8916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8917
8918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 -------------------------------------------------------------------------*/
8921 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8922 ( NULL == pEventData->pCBfnc ))
8923 {
8924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008928 }
8929
8930 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8931 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8932 /*-------------------------------------------------------------------------
8933 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 -------------------------------------------------------------------------*/
8936 wpalMutexAcquire(&pWDICtx->wptMutex);
8937
8938 /*------------------------------------------------------------------------
8939 Find the BSS for which the request is made and identify WDI session
8940 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8942 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008943 &macBSSID))
8944 {
8945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008946 "This station does not exist in the WDI Station Table %d",
8947 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 }
8951
Jeff Johnsone7245742012-09-05 17:12:55 -07008952 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8953 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008954 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8956 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8957 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008958
8959 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008960 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008961 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008962
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 /*------------------------------------------------------------------------
8964 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008965 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008966 ------------------------------------------------------------------------*/
8967 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8968 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8970 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8971 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008972
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008975 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008976 }
8977
8978
8979 wpalMutexRelease(&pWDICtx->wptMutex);
8980 /*-----------------------------------------------------------------------
8981 Get message buffer
8982 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008983 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008984 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8985 &pSendBuffer, &usDataOffset, &usSendSize))||
8986 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8987 {
8988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08008989 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8991 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008992 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008993 }
8994 /*-----------------------------------------------------------------------
8995 Copy the STA Key parameters into the HAL message
8996 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008998 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8999
Jeff Johnsone7245742012-09-05 17:12:55 -07009000 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009001 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9002
9003 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9004
9005 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9006
9007 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9008
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9010 keyIndex++)
9011 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9014 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9015 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9016 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9017 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9018 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9025 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 WDI_MAX_KEY_LENGTH);
9028 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009029
Jeff Johnsone7245742012-09-05 17:12:55 -07009030 wpalMemoryCopy( pSendBuffer+usDataOffset,
9031 &halSetStaKeyReqMsg.setStaKeyParams,
9032 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009033
9034 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009035 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009036
9037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009038 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009039 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009040 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9041 wdiSetSTAKeyRspCb, pEventData->pUserData,
9042 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009043
9044}/*WDI_ProcessSetSTAKeyReq*/
9045
9046/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009049
9050 @param pWDICtx: pointer to the WLAN DAL context
9051 pEventData: pointer to the event information structure
9052
Jeff Johnson295189b2012-06-20 16:38:30 -07009053 @see
9054 @return Result of the function call
9055*/
9056WDI_Status
9057WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009058(
Jeff Johnson295189b2012-06-20 16:38:30 -07009059 WDI_ControlBlockType* pWDICtx,
9060 WDI_EventInfoType* pEventData
9061)
9062{
9063 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
9064 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9065 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 wpt_uint16 usDataOffset = 0;
9068 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009070 wpt_macAddr macBSSID;
9071 wpt_uint8 ucCurrentBSSSesIdx;
9072 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
9073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9074
9075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009077 -------------------------------------------------------------------------*/
9078 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9079 ( NULL == pEventData->pCBfnc ))
9080 {
9081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009085 }
9086
9087 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9088 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9089 /*-------------------------------------------------------------------------
9090 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 -------------------------------------------------------------------------*/
9093 wpalMutexAcquire(&pWDICtx->wptMutex);
9094
9095 /*------------------------------------------------------------------------
9096 Find the BSS for which the request is made and identify WDI session
9097 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9099 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 &macBSSID))
9101 {
9102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009103 "This station does not exist in the WDI Station Table %d",
9104 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009105 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009107 }
9108
Jeff Johnsone7245742012-09-05 17:12:55 -07009109 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9110 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009111 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9113 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9114 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009115
9116 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009119
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 /*------------------------------------------------------------------------
9121 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009123 ------------------------------------------------------------------------*/
9124 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9125 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9127 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9128 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009129
Jeff Johnsone7245742012-09-05 17:12:55 -07009130 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009131 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 }
9134
9135
9136
9137 wpalMutexRelease(&pWDICtx->wptMutex);
9138 /*-----------------------------------------------------------------------
9139 Get message buffer
9140 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009141 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009142 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
9143 &pSendBuffer, &usDataOffset, &usSendSize))||
9144 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
9145 {
9146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009147 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009148 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
9149 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 }
9152
9153 /*-----------------------------------------------------------------------
9154 Copy the Key parameters into the HAL message
9155 -----------------------------------------------------------------------*/
9156
Jeff Johnsone7245742012-09-05 17:12:55 -07009157 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009158 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9159
Jeff Johnsone7245742012-09-05 17:12:55 -07009160 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009161 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
9162
Jeff Johnsone7245742012-09-05 17:12:55 -07009163 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009164 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
9165
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009167 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
9168
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 wpalMemoryCopy( pSendBuffer+usDataOffset,
9170 &halRemoveStaKeyReqMsg.removeStaKeyParams,
9171 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009172
9173 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009175
9176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009179 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009180 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009182
9183}/*WDI_ProcessRemoveSTAKeyReq*/
9184
9185/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009186 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009187 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009188
9189 @param pWDICtx: pointer to the WLAN DAL context
9190 pEventData: pointer to the event information structure
9191
Jeff Johnson295189b2012-06-20 16:38:30 -07009192 @see
9193 @return Result of the function call
9194*/
9195WDI_Status
9196WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009197(
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 WDI_ControlBlockType* pWDICtx,
9199 WDI_EventInfoType* pEventData
9200)
9201{
9202 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9203 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9204 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 wpt_uint16 usDataOffset = 0;
9207 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009210 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9212 wpt_uint8 keyIndex = 0;
9213
9214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9215
9216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 -------------------------------------------------------------------------*/
9219 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9220 ( NULL == pEventData->pCBfnc ))
9221 {
9222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009223 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 }
9227
9228 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
9229 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
9230 /*-------------------------------------------------------------------------
9231 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009232 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009233 -------------------------------------------------------------------------*/
9234 wpalMutexAcquire(&pWDICtx->wptMutex);
9235
9236 /*------------------------------------------------------------------------
9237 Find the BSS for which the request is made and identify WDI session
9238 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009239 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9240 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 &macBSSID))
9242 {
9243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009244 "This station does not exist in the WDI Station Table %d",
9245 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009246 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 }
9249
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9251 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009252 {
9253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009254 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009255 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009256
9257 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009258 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009260
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 /*------------------------------------------------------------------------
9262 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009263 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009264 ------------------------------------------------------------------------*/
9265 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9266 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9268 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9269 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009270
Jeff Johnsone7245742012-09-05 17:12:55 -07009271 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009272 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009273 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009274 }
9275
9276
9277 wpalMutexRelease(&pWDICtx->wptMutex);
9278 /*-----------------------------------------------------------------------
9279 Get message buffer
9280 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009281 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009282 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
9283 &pSendBuffer, &usDataOffset, &usSendSize))||
9284 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
9285 {
9286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009287 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
9289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 }
9292 /*-----------------------------------------------------------------------
9293 Copy the STA Key parameters into the HAL message
9294 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009295 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009296 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
9297
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009299 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
9300
9301 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
9302
9303 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
9304
9305 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
9306
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
9308 keyIndex++)
9309 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009310 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
9312 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
9313 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
9314 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
9315 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
9316 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009321 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
9323 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07009324 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07009325 WDI_MAX_KEY_LENGTH);
9326 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009327
Jeff Johnsone7245742012-09-05 17:12:55 -07009328 wpalMemoryCopy( pSendBuffer+usDataOffset,
9329 &halSetStaKeyReqMsg.setStaKeyParams,
9330 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009331
9332 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009334
9335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009337 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9339 wdiSetSTAKeyRspCb, pEventData->pUserData,
9340 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009341
9342}/*WDI_ProcessSetSTABcastKeyReq*/
9343
9344/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009347
9348 @param pWDICtx: pointer to the WLAN DAL context
9349 pEventData: pointer to the event information structure
9350
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 @see
9352 @return Result of the function call
9353*/
9354WDI_Status
9355WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009356(
Jeff Johnson295189b2012-06-20 16:38:30 -07009357 WDI_ControlBlockType* pWDICtx,
9358 WDI_EventInfoType* pEventData
9359)
9360{
9361 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
9362 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
9363 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009364 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009365 wpt_uint16 usDataOffset = 0;
9366 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009367 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009368 wpt_macAddr macBSSID;
9369 wpt_uint8 ucCurrentBSSSesIdx;
9370 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
9371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9372
9373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 -------------------------------------------------------------------------*/
9376 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9377 ( NULL == pEventData->pCBfnc ))
9378 {
9379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009383 }
9384
9385 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9386 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9387 /*-------------------------------------------------------------------------
9388 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009390 -------------------------------------------------------------------------*/
9391 wpalMutexAcquire(&pWDICtx->wptMutex);
9392
9393 /*------------------------------------------------------------------------
9394 Find the BSS for which the request is made and identify WDI session
9395 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9397 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009398 &macBSSID))
9399 {
9400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009401 "This station does not exist in the WDI Station Table %d",
9402 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009405 }
9406
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9408 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009409 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9411 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9412 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009413
9414 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009415 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009417
Jeff Johnson295189b2012-06-20 16:38:30 -07009418 /*------------------------------------------------------------------------
9419 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 ------------------------------------------------------------------------*/
9422 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9423 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9425 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9426 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009427
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009429 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 }
9432
9433
9434
9435 wpalMutexRelease(&pWDICtx->wptMutex);
9436 /*-----------------------------------------------------------------------
9437 Get message buffer
9438 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009439 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9441 &pSendBuffer, &usDataOffset, &usSendSize))||
9442 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9443 {
9444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009445 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9447 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 }
9450
9451 /*-----------------------------------------------------------------------
9452 Copy the Key parameters into the HAL message
9453 -----------------------------------------------------------------------*/
9454
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9457
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9460
Jeff Johnsone7245742012-09-05 17:12:55 -07009461 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9463
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009465 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9466
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 wpalMemoryCopy( pSendBuffer+usDataOffset,
9468 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9469 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009470
9471 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009472 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009473
9474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009480
9481}/*WDI_ProcessRemoveSTABcastKeyReq*/
9482
9483/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009485==========================================================================*/
9486/**
9487 @brief Process Add TSpec Request function (called when Main FSM
9488 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009489
9490 @param pWDICtx: pointer to the WLAN DAL context
9491 pEventData: pointer to the event information structure
9492
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 @see
9494 @return Result of the function call
9495*/
9496WDI_Status
9497WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009498(
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 WDI_ControlBlockType* pWDICtx,
9500 WDI_EventInfoType* pEventData
9501)
9502{
9503 WDI_AddTSReqParamsType* pwdiAddTSParams;
9504 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009505 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009506 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 wpt_uint16 usDataOffset = 0;
9509 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 wpt_macAddr macBSSID;
9512 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009513
Jeff Johnson295189b2012-06-20 16:38:30 -07009514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9515
9516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 -------------------------------------------------------------------------*/
9519 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9520 ( NULL == pEventData->pCBfnc ))
9521 {
9522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 }
9527
9528 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9529 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9530 /*-------------------------------------------------------------------------
9531 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009532 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009533 -------------------------------------------------------------------------*/
9534 wpalMutexAcquire(&pWDICtx->wptMutex);
9535
9536 /*------------------------------------------------------------------------
9537 Find the BSS for which the request is made and identify WDI session
9538 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9540 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 &macBSSID))
9542 {
9543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009544 "This station does not exist in the WDI Station Table %d",
9545 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009548 }
9549
Jeff Johnsone7245742012-09-05 17:12:55 -07009550 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9551 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9554 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9555 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009556
9557 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009560
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 /*------------------------------------------------------------------------
9562 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 ------------------------------------------------------------------------*/
9565 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9566 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9568 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9569 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009570
Jeff Johnsone7245742012-09-05 17:12:55 -07009571 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009572 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009573 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009574 }
9575
9576 wpalMutexRelease(&pWDICtx->wptMutex);
9577 /*-----------------------------------------------------------------------
9578 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009579 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009580 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9582 sizeof(halAddTsParams),
9583 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 &usSendSize))||
9585 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9586 {
9587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009588 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009589 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 }
9593
9594 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9595 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9596
9597 //TSPEC IE
9598 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9599 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009601 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009602 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009607 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009609 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009610 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009616 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009620 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009621 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009627 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9630
9631 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009634 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009638 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009642 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009643 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009644 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009645 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9646
9647 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9652
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 wpalMemoryCopy( pSendBuffer+usDataOffset,
9654 &halAddTsParams,
9655 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009656
9657 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009658 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009659
9660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009666}/*WDI_ProcessAddTSpecReq*/
9667
9668
9669/**
9670 @brief Process Del TSpec Request function (called when Main FSM
9671 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009672
9673 @param pWDICtx: pointer to the WLAN DAL context
9674 pEventData: pointer to the event information structure
9675
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 @see
9677 @return Result of the function call
9678*/
9679WDI_Status
9680WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009681(
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 WDI_ControlBlockType* pWDICtx,
9683 WDI_EventInfoType* pEventData
9684)
9685{
9686 WDI_DelTSReqParamsType* pwdiDelTSParams;
9687 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009691 wpt_uint16 usDataOffset = 0;
9692 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9695
9696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 -------------------------------------------------------------------------*/
9699 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9700 ( NULL == pEventData->pCBfnc ))
9701 {
9702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009706 }
9707
9708 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9709 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9710
9711 /*-------------------------------------------------------------------------
9712 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009713 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009714 -------------------------------------------------------------------------*/
9715 wpalMutexAcquire(&pWDICtx->wptMutex);
9716
9717 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009718 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009719 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9721 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9722 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009723
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9727 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9728 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9729
Jeff Johnson295189b2012-06-20 16:38:30 -07009730 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009732 }
9733
9734 /*------------------------------------------------------------------------
9735 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009736 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009737 ------------------------------------------------------------------------*/
9738 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9739 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9741 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9742 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009743
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009745 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009746 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009747 }
9748
9749
9750 wpalMutexRelease(&pWDICtx->wptMutex);
9751 /*-----------------------------------------------------------------------
9752 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009753 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009754 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009755 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009756 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9757 &pSendBuffer, &usDataOffset, &usSendSize))||
9758 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9759 {
9760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009761 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009762 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 }
9766
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 wpalMemoryCopy( pSendBuffer+usDataOffset,
9768 &pwdiDelTSParams->wdiDelTSInfo,
9769 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009770
9771 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009773
9774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009776 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009777 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9778 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009779}/*WDI_ProcessDelTSpecReq*/
9780
9781/**
9782 @brief Process Update EDCA Params Request function (called when
9783 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009784
9785 @param pWDICtx: pointer to the WLAN DAL context
9786 pEventData: pointer to the event information structure
9787
Jeff Johnson295189b2012-06-20 16:38:30 -07009788 @see
9789 @return Result of the function call
9790*/
9791WDI_Status
9792WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009793(
Jeff Johnson295189b2012-06-20 16:38:30 -07009794 WDI_ControlBlockType* pWDICtx,
9795 WDI_EventInfoType* pEventData
9796)
9797{
9798 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9799 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009800 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009801 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009802 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009803 wpt_uint16 usDataOffset = 0;
9804 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9807
9808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009810 -------------------------------------------------------------------------*/
9811 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9812 ( NULL == pEventData->pCBfnc ))
9813 {
9814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009815 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 }
9819
9820 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9821 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9822 /*-------------------------------------------------------------------------
9823 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009825 -------------------------------------------------------------------------*/
9826 wpalMutexAcquire(&pWDICtx->wptMutex);
9827
9828 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009830 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9832 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9833 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009834
Jeff Johnsone7245742012-09-05 17:12:55 -07009835 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009836 {
9837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9839 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009840
9841 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 }
9844
9845 /*------------------------------------------------------------------------
9846 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009847 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 ------------------------------------------------------------------------*/
9849 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9850 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9852 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9853 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009854
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009857 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009858 }
9859
9860
9861 wpalMutexRelease(&pWDICtx->wptMutex);
9862 /*-----------------------------------------------------------------------
9863 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009864 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009866 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009867 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9868 &pSendBuffer, &usDataOffset, &usSendSize))||
9869 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9870 {
9871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009872 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009873 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009876 }
9877
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 wpalMemoryCopy( pSendBuffer+usDataOffset,
9879 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9880 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009881
9882 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009883 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009884
9885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009888 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9889 wdiUpdateEDCARspCb, pEventData->pUserData,
9890 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009891}/*WDI_ProcessUpdateEDCAParamsReq*/
9892
9893/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009894 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009895 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009896
9897 @param pWDICtx: pointer to the WLAN DAL context
9898 pEventData: pointer to the event information structure
9899
Jeff Johnson295189b2012-06-20 16:38:30 -07009900 @see
9901 @return Result of the function call
9902*/
9903WDI_Status
9904WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009905(
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 WDI_ControlBlockType* pWDICtx,
9907 WDI_EventInfoType* pEventData
9908)
9909{
9910 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9911 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009912 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009913 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 wpt_uint16 usDataOffset = 0;
9916 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009917 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009918 wpt_macAddr macBSSID;
9919
9920 tAddBASessionReqMsg halAddBASessionReq;
9921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9922
9923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009924 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 -------------------------------------------------------------------------*/
9926 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9927 ( NULL == pEventData->pCBfnc ))
9928 {
9929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009931 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009932 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 }
9934
Jeff Johnsone7245742012-09-05 17:12:55 -07009935 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009936 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9939 /*-------------------------------------------------------------------------
9940 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009941 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009942 -------------------------------------------------------------------------*/
9943 wpalMutexAcquire(&pWDICtx->wptMutex);
9944
9945 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9949 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009950 &macBSSID))
9951 {
9952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -08009953 "This station does not exist in the WDI Station Table %d",
9954 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009955 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009957 }
9958
9959
Jeff Johnsone7245742012-09-05 17:12:55 -07009960 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009961
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9965 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9966 __func__, MAC_ADDR_ARRAY(macBSSID));
9967
Jeff Johnson295189b2012-06-20 16:38:30 -07009968 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009969 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009970 }
9971
9972 /*------------------------------------------------------------------------
9973 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 ------------------------------------------------------------------------*/
9976 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9977 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9979 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9980 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009981
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 }
9986
9987
9988 wpalMutexRelease(&pWDICtx->wptMutex);
9989 /*-----------------------------------------------------------------------
9990 Get message buffer
9991 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009992 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9993 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009994 sizeof(halAddBASessionReq.addBASessionParams),
9995 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009996 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009997 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9998 {
9999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010000 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
10002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010004 }
10005
10006 halAddBASessionReq.addBASessionParams.staIdx =
10007 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
10008 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
10009 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
10010 WDI_MAC_ADDR_LEN);
10011 halAddBASessionReq.addBASessionParams.baTID =
10012 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
10013 halAddBASessionReq.addBASessionParams.baPolicy =
10014 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
10015 halAddBASessionReq.addBASessionParams.baBufferSize =
10016 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
10017 halAddBASessionReq.addBASessionParams.baTimeout =
10018 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
10019 halAddBASessionReq.addBASessionParams.baSSN =
10020 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
10021 halAddBASessionReq.addBASessionParams.baDirection =
10022 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
10023
Jeff Johnsone7245742012-09-05 17:12:55 -070010024 wpalMemoryCopy( pSendBuffer+usDataOffset,
10025 &halAddBASessionReq.addBASessionParams,
10026 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010027
10028 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010030
10031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010032 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010033 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010034 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10035 wdiAddBASessionRspCb, pEventData->pUserData,
10036 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010037}/*WDI_ProcessAddBASessionReq*/
10038
10039/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010040 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010041 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010042
10043 @param pWDICtx: pointer to the WLAN DAL context
10044 pEventData: pointer to the event information structure
10045
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 @see
10047 @return Result of the function call
10048*/
10049WDI_Status
10050WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010051(
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 WDI_ControlBlockType* pWDICtx,
10053 WDI_EventInfoType* pEventData
10054)
10055{
10056 WDI_DelBAReqParamsType* pwdiDelBAParams;
10057 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010058 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010060 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010061 wpt_uint16 usDataOffset = 0;
10062 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 wpt_macAddr macBSSID;
10065 tDelBAParams halDelBAparam;
10066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10067
10068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 -------------------------------------------------------------------------*/
10071 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10072 ( NULL == pEventData->pCBfnc ))
10073 {
10074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010075 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010078 }
10079
10080 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
10081 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
10082 /*-------------------------------------------------------------------------
10083 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010084 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010085 -------------------------------------------------------------------------*/
10086 wpalMutexAcquire(&pWDICtx->wptMutex);
10087
10088 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10092 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010093 &macBSSID))
10094 {
10095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010096 "This station does not exist in the WDI Station Table %d",
10097 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010098 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010100 }
10101
Jeff Johnsone7245742012-09-05 17:12:55 -070010102 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010103
Jeff Johnsone7245742012-09-05 17:12:55 -070010104 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010105 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10107 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10108 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010109
10110 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010111 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010112 }
10113
10114 /*------------------------------------------------------------------------
10115 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010116 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 ------------------------------------------------------------------------*/
10118 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10119 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10121 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10122 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010123
Jeff Johnsone7245742012-09-05 17:12:55 -070010124 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010125 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010126 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010127 }
10128
10129 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010130 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010131 sizeof(halDelBAparam),
10132 &pSendBuffer, &usDataOffset, &usSendSize))||
10133 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
10134 {
10135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010136 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010137 pEventData, pwdiDelBAParams, wdiDelBARspCb);
10138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010140 }
10141
10142 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
10143 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
10144 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
10145
Jeff Johnsone7245742012-09-05 17:12:55 -070010146 wpalMemoryCopy( pSendBuffer+usDataOffset,
10147 &halDelBAparam,
10148 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010149
10150 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010151 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010152
10153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010154 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010156 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10157 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010158}/*WDI_ProcessDelBAReq*/
10159
10160#ifdef FEATURE_WLAN_CCX
10161
10162WDI_Status
10163WDI_ProcessTSMStatsReq
10164(
10165 WDI_ControlBlockType* pWDICtx,
10166 WDI_EventInfoType* pEventData
10167)
10168{
10169 WDI_TSMStatsReqParamsType* pwdiTSMParams;
10170 WDI_TsmRspCb wdiTSMRspCb;
10171 wpt_uint8 ucCurrentBSSSesIdx = 0;
10172 WDI_BSSSessionType* pBSSSes = NULL;
10173 wpt_uint8* pSendBuffer = NULL;
10174 wpt_uint16 usDataOffset = 0;
10175 wpt_uint16 usSendSize = 0;
10176 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10177 tTsmStatsParams halTsmStatsReqParams = {0};
10178
10179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10180
10181 /*-------------------------------------------------------------------------
10182 Sanity check
10183 -------------------------------------------------------------------------*/
10184 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10185 ( NULL == pEventData->pCBfnc ))
10186 {
10187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010188 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 WDI_ASSERT(0);
10190 return WDI_STATUS_E_FAILURE;
10191 }
10192
10193 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
10194 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
10195 /*-------------------------------------------------------------------------
10196 Check to see if we are in the middle of an association, if so queue, if
10197 not it means it is free to process request
10198 -------------------------------------------------------------------------*/
10199 wpalMutexAcquire(&pWDICtx->wptMutex);
10200
10201 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
10202 if ( NULL == pBSSSes )
10203 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10205 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10206 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010207
10208 wpalMutexRelease(&pWDICtx->wptMutex);
10209 return WDI_STATUS_E_NOT_ALLOWED;
10210 }
10211
10212 /*------------------------------------------------------------------------
10213 Check if this BSS is being currently processed or queued,
10214 if queued - queue the new request as well
10215 ------------------------------------------------------------------------*/
10216 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10217 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10219 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10220 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070010221
10222 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
10223 wpalMutexRelease(&pWDICtx->wptMutex);
10224 return wdiStatus;
10225 }
10226
10227 wpalMutexRelease(&pWDICtx->wptMutex);
10228 /*-----------------------------------------------------------------------
10229 Get message buffer
10230 ! TO DO : proper conversion into the HAL Message Request Format
10231 -----------------------------------------------------------------------*/
10232 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
10233 sizeof(halTsmStatsReqParams),
10234 &pSendBuffer, &usDataOffset, &usSendSize))||
10235 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
10236 {
10237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010238 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010239 pEventData, pwdiTSMParams, wdiTSMRspCb);
10240 WDI_ASSERT(0);
10241 return WDI_STATUS_E_FAILURE;
10242 }
10243
10244 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
10245 wpalMemoryCopy(halTsmStatsReqParams.bssId,
10246 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
10247 WDI_MAC_ADDR_LEN);
10248 wpalMemoryCopy( pSendBuffer+usDataOffset,
10249 &halTsmStatsReqParams,
10250 sizeof(halTsmStatsReqParams));
10251
10252 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
10253 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
10254
10255 /*-------------------------------------------------------------------------
10256 Send TSM Stats Request to HAL
10257 -------------------------------------------------------------------------*/
10258 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10259 wdiTSMRspCb, pEventData->pUserData,
10260 WDI_TSM_STATS_RESP);
10261}/*WDI_ProcessTSMStatsReq*/
10262
10263#endif
10264
10265
10266/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010267 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010268 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010269
10270 @param pWDICtx: pointer to the WLAN DAL context
10271 pEventData: pointer to the event information structure
10272
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 @see
10274 @return Result of the function call
10275*/
10276WDI_Status
10277WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010278(
Jeff Johnson295189b2012-06-20 16:38:30 -070010279 WDI_ControlBlockType* pWDICtx,
10280 WDI_EventInfoType* pEventData
10281)
10282{
10283 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
10284 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 wpt_uint16 usDataOffset = 0;
10287 wpt_uint16 usSendSize = 0;
10288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10289
10290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 -------------------------------------------------------------------------*/
10293 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10294 ( NULL == pEventData->pCBfnc ))
10295 {
10296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 }
10301
10302 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
10303 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
10304 /*-----------------------------------------------------------------------
10305 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010306 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010307 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010309 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
10310 &pSendBuffer, &usDataOffset, &usSendSize))||
10311 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
10312 {
10313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010314 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
10316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010318 }
10319
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 wpalMemoryCopy( pSendBuffer+usDataOffset,
10321 &pwdiFlushAcParams->wdiFlushAcInfo,
10322 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010323
10324 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010325 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010326
10327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010330 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10331 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010332}/*WDI_ProcessFlushAcReq*/
10333
10334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010335 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010336 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010337
10338 @param pWDICtx: pointer to the WLAN DAL context
10339 pEventData: pointer to the event information structure
10340
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 @see
10342 @return Result of the function call
10343*/
10344WDI_Status
10345WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010346(
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 WDI_ControlBlockType* pWDICtx,
10348 WDI_EventInfoType* pEventData
10349)
10350{
10351 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
10352 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 wpt_uint16 usDataOffset = 0;
10355 wpt_uint16 usSendSize = 0;
10356
10357 tBtAmpEventMsg haltBtAmpEventMsg;
10358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10359
10360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010361 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010362 -------------------------------------------------------------------------*/
10363 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10364 ( NULL == pEventData->pCBfnc ))
10365 {
10366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010370 }
10371
10372 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
10373 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
10374 /*-----------------------------------------------------------------------
10375 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010376 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010377 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010378 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010379 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10380 &pSendBuffer, &usDataOffset, &usSendSize))||
10381 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10382 {
10383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010384 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010385 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 }
10389
Jeff Johnsone7245742012-09-05 17:12:55 -070010390 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010391 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010392 wpalMemoryCopy( pSendBuffer+usDataOffset,
10393 &haltBtAmpEventMsg.btAmpEventParams,
10394 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010395
10396 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010398
10399 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010400 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010401 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010402 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10403 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010404}/*WDI_ProcessBtAmpEventReq*/
10405
10406/**
10407 @brief Process Add STA self Request function (called when Main FSM
10408 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010409
10410 @param pWDICtx: pointer to the WLAN DAL context
10411 pEventData: pointer to the event information structure
10412
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 @see
10414 @return Result of the function call
10415*/
10416WDI_Status
10417WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010418(
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 WDI_ControlBlockType* pWDICtx,
10420 WDI_EventInfoType* pEventData
10421)
10422{
10423 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10424 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010425 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010426 wpt_uint16 usDataOffset = 0;
10427 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010428 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10430
10431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 -------------------------------------------------------------------------*/
10434 if (( NULL == pEventData ) ||
10435 ( NULL == pEventData->pEventData) ||
10436 ( NULL == pEventData->pCBfnc))
10437 {
10438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010442 }
10443
Jeff Johnsone7245742012-09-05 17:12:55 -070010444 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10448 /*-----------------------------------------------------------------------
10449 Get message buffer
10450 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10452 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010453 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070010454 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010455 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010456 {
10457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010458 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010462 }
10463
10464 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010465 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010466 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10467
Jeff Johnsone7245742012-09-05 17:12:55 -070010468 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010469 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
10470 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
10471 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
10472 {
10473 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
10474 }
10475 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10476 VOS_P2P_CLIENT_MODE) ||
10477 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
10478 VOS_P2P_DEVICE))
10479 {
10480 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
10481 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010482 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere9d968292013-06-25 11:26:22 -070010483 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070010484
10485 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010487
10488 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010491 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10492 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10493 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010494}/*WDI_ProcessAddSTASelfReq*/
10495
10496
10497
10498/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010499 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010500 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010501
10502 @param pWDICtx: pointer to the WLAN DAL context
10503 pEventData: pointer to the event information structure
10504
Jeff Johnson295189b2012-06-20 16:38:30 -070010505 @see
10506 @return Result of the function call
10507*/
10508WDI_Status
10509WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010510(
Jeff Johnson295189b2012-06-20 16:38:30 -070010511 WDI_ControlBlockType* pWDICtx,
10512 WDI_EventInfoType* pEventData
10513)
10514{
10515 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10516 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010517 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 wpt_uint16 usDataOffset = 0;
10519 wpt_uint16 usSendSize = 0;
10520 tDelStaSelfParams halSetDelSelfSTAParams;
10521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10522
10523 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 -------------------------------------------------------------------------*/
10526 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10527 ( NULL == pEventData->pCBfnc ))
10528 {
10529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 }
10534
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10537 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10538
10539 /*-----------------------------------------------------------------------
10540 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010541 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010542 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10545 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010547 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10548 {
10549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010550 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010554 }
10555
Jeff Johnsone7245742012-09-05 17:12:55 -070010556 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10558
Jeff Johnsone7245742012-09-05 17:12:55 -070010559 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10560 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010561
10562 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010563 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010564
10565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010566 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010568 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10569 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 WDI_DEL_STA_SELF_RESP);
10571
10572}
10573
Jeff Johnsone7245742012-09-05 17:12:55 -070010574#ifdef FEATURE_OEM_DATA_SUPPORT
10575/**
10576 @brief Process Start Oem Data Request function (called when Main
10577 FSM allows it)
10578
10579 @param pWDICtx: pointer to the WLAN DAL context
10580 pEventData: pointer to the event information structure
10581
10582 @see
10583 @return Result of the function call
10584*/
10585WDI_Status
10586WDI_ProcessStartOemDataReq
10587(
10588 WDI_ControlBlockType* pWDICtx,
10589 WDI_EventInfoType* pEventData
10590)
10591{
10592 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10593 WDI_oemDataRspCb wdiOemDataRspCb;
10594 wpt_uint8* pSendBuffer = NULL;
10595 wpt_uint16 usDataOffset = 0;
10596 wpt_uint16 usSendSize = 0;
10597 wpt_uint16 reqLen;
10598 tStartOemDataReqParams* halStartOemDataReqParams;
10599
10600 /*-------------------------------------------------------------------------
10601 Sanity check
10602 -------------------------------------------------------------------------*/
10603 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10604 ( NULL == pEventData->pCBfnc ))
10605 {
10606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010607 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010608 WDI_ASSERT(0);
10609 return WDI_STATUS_E_FAILURE;
10610 }
10611
10612 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10613 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10614
10615 /*-----------------------------------------------------------------------
10616 Get message buffer
10617 -----------------------------------------------------------------------*/
10618
10619 reqLen = sizeof(tStartOemDataReqParams);
10620
10621 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10622 WDI_START_OEM_DATA_REQ, reqLen,
10623 &pSendBuffer, &usDataOffset, &usSendSize))||
10624 (usSendSize < (usDataOffset + reqLen)))
10625 {
10626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010627 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070010628 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10629 WDI_ASSERT(0);
10630 return WDI_STATUS_E_FAILURE;
10631 }
10632
10633 //copying WDI OEM DATA REQ PARAMS to shared memory
10634 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10635
10636 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10637 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10638
10639 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10640 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10641
10642 /*-------------------------------------------------------------------------
10643 Send Start Request to HAL
10644 -------------------------------------------------------------------------*/
10645 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10646 wdiOemDataRspCb, pEventData->pUserData,
10647 WDI_START_OEM_DATA_RESP);
10648}/*WDI_ProcessStartOemDataReq*/
10649#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010650
10651/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010652 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010653 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010654
10655 @param pWDICtx: pointer to the WLAN DAL context
10656 pEventData: pointer to the event information structure
10657
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 @see
10659 @return Result of the function call
10660*/
10661WDI_Status
10662WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010663(
Jeff Johnson295189b2012-06-20 16:38:30 -070010664 WDI_ControlBlockType* pWDICtx,
10665 WDI_EventInfoType* pEventData
10666)
10667{
10668 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10669 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 wpt_uint16 usDataOffset = 0;
10672 wpt_uint16 usSendSize = 0;
10673 tHalWlanHostResumeReqParam halResumeReqParams;
10674
10675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10676
10677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010679 -------------------------------------------------------------------------*/
10680 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10681 ( NULL == pEventData->pCBfnc ))
10682 {
10683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010684 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010687 }
10688
10689 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10690 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10691
10692 /*-----------------------------------------------------------------------
10693 Get message buffer
10694 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10697 &pSendBuffer, &usDataOffset, &usSendSize))||
10698 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10699 {
10700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010701 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 }
10706
Jeff Johnsone7245742012-09-05 17:12:55 -070010707 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010709
10710 wpalMemoryCopy( pSendBuffer+usDataOffset,
10711 &halResumeReqParams,
10712 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010713
10714 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010715 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010716
10717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010718 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010719 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010720 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10721 wdiHostResumeRspCb, pEventData->pUserData,
10722 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010723}/*WDI_ProcessHostResumeReq*/
10724
10725/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010727 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010728
10729 @param pWDICtx: pointer to the WLAN DAL context
10730 pEventData: pointer to the event information structure
10731
Jeff Johnson295189b2012-06-20 16:38:30 -070010732 @see
10733 @return Result of the function call
10734*/
10735WDI_Status
10736WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010737(
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 WDI_ControlBlockType* pWDICtx,
10739 WDI_EventInfoType* pEventData
10740)
10741{
10742 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10743 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010744 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010745 wpt_uint16 usDataOffset = 0;
10746 wpt_uint16 usSendSize = 0;
10747 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10748 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10749
10750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010751 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010752 -------------------------------------------------------------------------*/
10753 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10754 ( NULL == pEventData->pCBfnc ))
10755 {
10756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010757 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010758 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010759 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010760 }
10761
10762 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10763 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010764
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 /*-----------------------------------------------------------------------
10766 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010769 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010770 sizeof(halTxPerTrackingReqParam),
10771 &pSendBuffer, &usDataOffset, &usSendSize))||
10772 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10773 {
10774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080010775 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010776 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010778 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010780
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10782 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10783 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10784 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010785
10786 wpalMemoryCopy( pSendBuffer+usDataOffset,
10787 &halTxPerTrackingReqParam,
10788 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010789
10790 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010791 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010792
10793 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010794 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010795 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010796 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10797 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010798}/*WDI_ProcessSetTxPerTrackingReq*/
10799
10800/*=========================================================================
10801 Indications
10802=========================================================================*/
10803
10804/**
10805 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010806
10807 @param pWDICtx: pointer to the WLAN DAL context
10808 pEventData: pointer to the event information structure
10809
Jeff Johnson295189b2012-06-20 16:38:30 -070010810 @see
10811 @return Result of the function call
10812*/
10813WDI_Status
10814WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010815(
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 WDI_ControlBlockType* pWDICtx,
10817 WDI_EventInfoType* pEventData
10818)
10819{
10820 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010821 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 wpt_uint16 usDataOffset = 0;
10823 wpt_uint16 usSendSize = 0;
10824 WDI_Status wdiStatus;
10825 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10826 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10827
10828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 -------------------------------------------------------------------------*/
10831 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10832 {
10833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010834 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010836 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010837 }
10838
10839 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10840
10841 /*-----------------------------------------------------------------------
10842 Get message buffer
10843 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10845 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010846 sizeof(halWlanSuspendIndparams),
10847 &pSendBuffer, &usDataOffset, &usSendSize))||
10848 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10849 {
10850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10851 "Unable to get send buffer in Suspend Ind ");
10852 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 }
10855
10856 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10857 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10858
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee26599972013-04-24 01:21:58 -070010860 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070010861
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10863 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010864
10865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010866 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010867 -------------------------------------------------------------------------*/
10868 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010869 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010870
Jeff Johnsone7245742012-09-05 17:12:55 -070010871 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010872 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10873}/*WDI_ProcessHostSuspendInd*/
10874
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010875
10876
10877/**
10878 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10879
10880 @param pWDICtx: pointer to the WLAN DAL context
10881 pEventData: pointer to the event information structure
10882
10883 @see
10884 @return Result of the function call
10885*/
10886WDI_Status
10887WDI_ProcessTrafficStatsInd
10888(
10889 WDI_ControlBlockType* pWDICtx,
10890 WDI_EventInfoType* pEventData
10891)
10892{
10893 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10894 wpt_uint8* pSendBuffer = NULL;
10895 wpt_uint16 usDataOffset = 0;
10896 wpt_uint16 usSendSize = 0;
10897 WDI_Status wdiStatus;
10898 tStatsClassBIndParams* pStatsClassBIndParams;
10899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10900
10901 /*-------------------------------------------------------------------------
10902 Sanity check
10903 -------------------------------------------------------------------------*/
10904 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10905 {
10906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10907 "%s: Invalid parameters in Traffic Stats ind",__func__);
10908 WDI_ASSERT(0);
10909 return WDI_STATUS_E_FAILURE;
10910 }
10911
10912 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10913
10914 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10915 {
10916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10917 "%s: Invalid parameters in Traffic Stats ind",__func__);
10918 WDI_ASSERT(0);
10919 return WDI_STATUS_E_FAILURE;
10920 }
10921
10922 /*-----------------------------------------------------------------------
10923 Get message buffer
10924 -----------------------------------------------------------------------*/
10925 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10926 WDI_TRAFFIC_STATS_IND,
10927 sizeof(tStatsClassBIndParams),
10928 &pSendBuffer, &usDataOffset, &usSendSize))||
10929 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10930 {
10931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10932 "Unable to get send buffer in Traffic Stats Ind ");
10933 WDI_ASSERT(0);
10934 return WDI_STATUS_E_FAILURE;
10935 }
10936
10937 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10938
10939 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10940
10941 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10942 pTrafficStatsIndParams->pTrafficStats,
10943 pTrafficStatsIndParams->length);
10944
10945 /*-------------------------------------------------------------------------
10946 Send Suspend Request to HAL
10947 -------------------------------------------------------------------------*/
10948 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10949 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10950
10951 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10952 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10953}/*WDI_ProcessTrafficStatsInd*/
10954
Chet Lanctota96bb432013-03-18 10:26:30 -070010955#ifdef WLAN_FEATURE_11W
10956/**
10957 @brief Process Exclude Unencrypted Indications function (called
10958 when Main FSM allows it)
10959
10960 @param pWDICtx: pointer to the WLAN DAL context
10961 pEventData: pointer to the event information structure
10962
10963 @see
10964 @return Result of the function call
10965*/
10966WDI_Status
10967WDI_ProcessExcludeUnencryptInd
10968(
10969 WDI_ControlBlockType* pWDICtx,
10970 WDI_EventInfoType* pEventData
10971)
10972{
10973 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10974 wpt_uint8* pSendBuffer = NULL;
10975 wpt_uint16 usDataOffset = 0;
10976 wpt_uint16 usSendSize = 0;
10977 WDI_Status wdiStatus;
10978 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10980
10981 /*-------------------------------------------------------------------------
10982 Sanity check
10983 -------------------------------------------------------------------------*/
10984 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10985 {
10986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10987 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10988 WDI_ASSERT(0);
10989 return WDI_STATUS_E_FAILURE;
10990 }
10991
10992 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10993
10994 /*-----------------------------------------------------------------------
10995 Get message buffer
10996 -----------------------------------------------------------------------*/
10997 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10998 WDI_EXCLUDE_UNENCRYPTED_IND,
10999 sizeof(tHalWlanExcludeUnEncryptedIndParam),
11000 &pSendBuffer, &usDataOffset, &usSendSize))||
11001 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
11002 {
11003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
11004 "Unable to get send buffer in Exclude Unencrypted Ind ");
11005 WDI_ASSERT(0);
11006 return WDI_STATUS_E_FAILURE;
11007 }
11008
11009 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
11010
11011 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
11012
11013 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
11014 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
11015
11016 /*-------------------------------------------------------------------------
11017 Send Suspend Request to HAL
11018 -------------------------------------------------------------------------*/
11019 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
11020 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
11021
11022 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
11023 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11024}/*WDI_ProcessExcludeUnencryptInd*/
11025#endif
11026
Yue Ma365933a2013-08-14 15:59:08 -070011027/**
11028 @brief Process Add Periodic Tx Pattern Indication function (called when
11029 Main FSM allows it)
11030
11031 @param pWDICtx: pointer to the WLAN DAL context
11032 pEventData: pointer to the event information structure
11033
11034 @see
11035 @return Result of the function call
11036*/
11037WDI_Status
11038WDI_ProcessAddPeriodicTxPtrnInd
11039(
11040 WDI_ControlBlockType* pWDICtx,
11041 WDI_EventInfoType* pEventData
11042)
11043{
11044 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
11045 wpt_uint8* pSendBuffer = NULL;
11046 wpt_uint16 usDataOffset = 0;
11047 wpt_uint16 usSendSize = 0;
11048 WDI_Status wdiStatus;
11049 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
11050 wpt_uint8 selfStaIdx = 0;
11051
11052 /*-------------------------------------------------------------------------
11053 Sanity check
11054 -------------------------------------------------------------------------*/
11055 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11056 {
11057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11058 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
11059 WDI_ASSERT(0);
11060 return WDI_STATUS_E_FAILURE;
11061 }
11062
11063 pAddPeriodicTxPtrnParams =
11064 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
11065
11066 /*------------------------------------------------------------------------
11067 Get message buffer
11068 ------------------------------------------------------------------------*/
11069 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11070 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
11071 &pSendBuffer, &usDataOffset, &usSendSize))||
11072 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
11073 {
11074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11075 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
11076 __func__);
11077 WDI_ASSERT(0);
11078 return WDI_STATUS_E_FAILURE;
11079 }
11080
11081 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11082
11083 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11084 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
11085 &selfStaIdx))
11086 {
11087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11088 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011089 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011090
11091 return WDI_STATUS_E_FAILURE;
11092 }
11093
11094 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11095 halAddPeriodicTxPtrn->ucPtrnId =
11096 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
11097 halAddPeriodicTxPtrn->usPtrnSize =
11098 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
11099 halAddPeriodicTxPtrn->uPtrnIntervalMs =
11100 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
11101
11102 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
11103 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
11104 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
11105
11106 /*-------------------------------------------------------------------------
11107 Send Indication to HAL
11108 -------------------------------------------------------------------------*/
11109 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
11110 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
11111
11112 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11113
11114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11115 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11116
11117 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11118} /* WDI_ProcessAddPeriodicTxPtrnInd */
11119
11120/**
11121 @brief Process Delete Periodic Tx Pattern Indication function (called when
11122 Main FSM allows it)
11123
11124 @param pWDICtx: pointer to the WLAN DAL context
11125 pEventData: pointer to the event information structure
11126
11127 @see
11128 @return Result of the function call
11129*/
11130WDI_Status
11131WDI_ProcessDelPeriodicTxPtrnInd
11132(
11133 WDI_ControlBlockType* pWDICtx,
11134 WDI_EventInfoType* pEventData
11135)
11136{
11137 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
11138 wpt_uint8* pSendBuffer = NULL;
11139 wpt_uint16 usDataOffset = 0;
11140 wpt_uint16 usSendSize = 0;
11141 WDI_Status wdiStatus;
11142 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
11143 wpt_uint8 selfStaIdx = 0;
11144
11145 /*-------------------------------------------------------------------------
11146 Sanity check
11147 -------------------------------------------------------------------------*/
11148 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
11149 {
11150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11151 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
11152 WDI_ASSERT(0);
11153 return WDI_STATUS_E_FAILURE;
11154 }
11155
11156 pDelPeriodicTxPtrnParams =
11157 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
11158
11159 /*------------------------------------------------------------------------
11160 Get message buffer
11161 ------------------------------------------------------------------------*/
11162 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
11163 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
11164 &pSendBuffer, &usDataOffset, &usSendSize))||
11165 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
11166 {
11167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11168 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
11169 __func__);
11170 WDI_ASSERT(0);
11171 return WDI_STATUS_E_FAILURE;
11172 }
11173
11174 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
11175
11176 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
11177 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
11178 &selfStaIdx))
11179 {
11180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11181 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yangcf2cf012013-10-10 23:13:38 -070011182 wpalMemoryFree(pSendBuffer);
Yue Ma365933a2013-08-14 15:59:08 -070011183
11184 return WDI_STATUS_E_FAILURE;
11185 }
11186
11187 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
11188 halDelPeriodicTxPtrn->uPatternIdBitmap =
11189 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
11190
11191 /*-------------------------------------------------------------------------
11192 Send Indication to HAL
11193 -------------------------------------------------------------------------*/
11194 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
11195 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
11196
11197 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
11198
11199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11200 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
11201
11202 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
11203} /* WDI_ProcessDelPeriodicTxPtrnInd */
11204
Jeff Johnson295189b2012-06-20 16:38:30 -070011205/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011206 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011207==========================================================================*/
11208/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011209 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011211
11212 @param pWDICtx: pointer to the WLAN DAL context
11213 pEventData: pointer to the event information structure
11214
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 @see
11216 @return Result of the function call
11217*/
11218WDI_Status
11219WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011220(
Jeff Johnson295189b2012-06-20 16:38:30 -070011221 WDI_ControlBlockType* pWDICtx,
11222 WDI_EventInfoType* pEventData
11223)
11224{
11225 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
11226 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011227 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011228 wpt_uint16 usDataOffset = 0;
11229 wpt_uint16 usSendSize = 0;
11230 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
11231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11232
11233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011235 -------------------------------------------------------------------------*/
11236 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11237 ( NULL == pEventData->pCBfnc ))
11238 {
11239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011243 }
11244
11245 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
11246 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
11247 /*-----------------------------------------------------------------------
11248 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011249 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011250 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011252 sizeof(halSwitchChannelReq.switchChannelParams),
11253 &pSendBuffer, &usDataOffset, &usSendSize))||
11254 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
11255 {
11256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011257 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011258 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
11259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 }
11262
Jeff Johnsone7245742012-09-05 17:12:55 -070011263 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070011264 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070011265#ifndef WLAN_FEATURE_VOWIFI
11266 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070011267 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
11268#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011269 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011270 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
11271
11272#ifdef WLAN_FEATURE_VOWIFI
11273 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070011274 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070011275 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
11276 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
11277 WDI_MAC_ADDR_LEN);
11278 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
11279 pwdiSwitchChParams->wdiChInfo.macBSSId,
11280 WDI_MAC_ADDR_LEN);
11281#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070011282 wpalMemoryCopy( pSendBuffer+usDataOffset,
11283 &halSwitchChannelReq.switchChannelParams,
11284 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011285
11286 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011287 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011288
11289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011290 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011291 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011292 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11293 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011294}/*WDI_ProcessChannelSwitchReq*/
11295
11296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011297 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011298 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011299
11300 @param pWDICtx: pointer to the WLAN DAL context
11301 pEventData: pointer to the event information structure
11302
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 @see
11304 @return Result of the function call
11305*/
11306WDI_Status
11307WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011308(
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 WDI_ControlBlockType* pWDICtx,
11310 WDI_EventInfoType* pEventData
11311)
11312{
11313 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
11314 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011315 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011316 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 wpt_uint16 usDataOffset = 0;
11319 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011320 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011321
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 tConfigStaReqMsg halConfigStaReqMsg;
11323 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11325
11326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011328 -------------------------------------------------------------------------*/
11329 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11330 ( NULL == pEventData->pCBfnc ))
11331 {
11332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011336 }
11337
11338 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
11339 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
11340 /*-------------------------------------------------------------------------
11341 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 -------------------------------------------------------------------------*/
11344 wpalMutexAcquire(&pWDICtx->wptMutex);
11345
11346 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011347 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011348 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011349 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11350 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
11351 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011352
Jeff Johnsone7245742012-09-05 17:12:55 -070011353 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011354 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11356 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11357 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011358
11359 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 }
11362
11363 /*------------------------------------------------------------------------
11364 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011365 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011366 ------------------------------------------------------------------------*/
11367 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11368 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11370 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11371 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011372
Jeff Johnsone7245742012-09-05 17:12:55 -070011373 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011374 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011375 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 }
11377
11378 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011379
11380 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
11381#ifdef WLAN_FEATURE_11AC
11382 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011383 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070011384 else
11385#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070011386 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070011387
Jeff Johnson295189b2012-06-20 16:38:30 -070011388 /*-----------------------------------------------------------------------
11389 Get message buffer
11390 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011391 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
11392 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011393 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011395 {
11396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011397 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
11399 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011401 }
11402
11403 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011404 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 &pwdiConfigSTAParams->wdiReqInfo);
11406
11407 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
11408 {
11409 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011410 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070011411 WDI_STATableFindStaidByAddr(pWDICtx,
11412 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070011413 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 {
11415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011416 MAC_ADDRESS_STR
11417 ": This station does not exist in the WDI Station Table",
11418 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070011419 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080011420 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070011421 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011422 }
11423 }
11424 else
11425 {
11426 /* Need to fill in the STA Index to invalid, since at this point we have not
11427 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070011428 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 }
11430
11431 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070011432 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011433
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 wpalMemoryCopy( pSendBuffer+usDataOffset,
11435 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070011436 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011437
11438 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011439 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011440
Jeff Johnsone7245742012-09-05 17:12:55 -070011441 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
11442 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011443 sizeof(pWDICtx->wdiCachedConfigStaReq));
11444
11445 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011446 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011448 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11449 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011450}/*WDI_ProcessConfigStaReq*/
11451
11452
11453/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011454 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011455 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011456
11457 @param pWDICtx: pointer to the WLAN DAL context
11458 pEventData: pointer to the event information structure
11459
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 @see
11461 @return Result of the function call
11462*/
11463WDI_Status
11464WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011465(
Jeff Johnson295189b2012-06-20 16:38:30 -070011466 WDI_ControlBlockType* pWDICtx,
11467 WDI_EventInfoType* pEventData
11468)
11469{
11470 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
11471 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011472 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011474 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 wpt_uint16 usDataOffset = 0;
11476 wpt_uint16 usSendSize = 0;
11477 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070011478 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070011479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11480
11481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011483 -------------------------------------------------------------------------*/
11484 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11485 ( NULL == pEventData->pCBfnc ))
11486 {
11487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011491 }
11492
11493 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
11494 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
11495 /*-------------------------------------------------------------------------
11496 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011497 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 -------------------------------------------------------------------------*/
11499 wpalMutexAcquire(&pWDICtx->wptMutex);
11500
11501 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011502 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011503 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011504 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11505 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
11506 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011507
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070011510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070011511 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
11512 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011513 }
11514 else
11515 {
11516 /*------------------------------------------------------------------------
11517 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011518 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011519 ------------------------------------------------------------------------*/
11520 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11521 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11523 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11524 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
11525
11526 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011527 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011528 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011529 }
11530 }
11531 /* If the link is set to enter IDLE - the Session allocated for this BSS
11532 will be deleted on the Set Link State response coming from HAL
11533 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011534 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011535 sizeof(pWDICtx->wdiCacheSetLinkStReq));
11536
11537 wpalMutexRelease(&pWDICtx->wptMutex);
11538 /*-----------------------------------------------------------------------
11539 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011542
11543 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011544 sizeof(halLinkStateReqMsg),
11545 &pSendBuffer, &usDataOffset, &usSendSize))||
11546 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
11547 {
11548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011549 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
11551 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011553 }
11554
11555 wpalMemoryCopy(halLinkStateReqMsg.bssid,
11556 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
11557
11558 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
11559 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
11560
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
11563
Jeff Johnsone7245742012-09-05 17:12:55 -070011564 wpalMemoryCopy( pSendBuffer+usDataOffset,
11565 &halLinkStateReqMsg,
11566 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011567
11568 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011569 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011570
11571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011572 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011574 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11575 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011576}/*WDI_ProcessSetLinkStateReq*/
11577
11578
11579/**
11580 @brief Process Get Stats Request function (called when Main FSM
11581 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011582
11583 @param pWDICtx: pointer to the WLAN DAL context
11584 pEventData: pointer to the event information structure
11585
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 @see
11587 @return Result of the function call
11588*/
11589WDI_Status
11590WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011591(
Jeff Johnson295189b2012-06-20 16:38:30 -070011592 WDI_ControlBlockType* pWDICtx,
11593 WDI_EventInfoType* pEventData
11594)
11595{
11596 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11597 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011598 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011599 wpt_uint16 usDataOffset = 0;
11600 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011601 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011602 WDI_BSSSessionType* pBSSSes = NULL;
11603 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011604 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011605 tHalStatsReqMsg halStatsReqMsg;
11606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11607
11608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011610 -------------------------------------------------------------------------*/
11611 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11612 ( NULL == pEventData->pCBfnc ) )
11613 {
11614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011618 }
11619
11620 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11621 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11622
11623 /*-------------------------------------------------------------------------
11624 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011626 -------------------------------------------------------------------------*/
11627 wpalMutexAcquire(&pWDICtx->wptMutex);
11628
11629 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011630 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011631 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011632 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11633 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011634 &macBSSID))
11635 {
11636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011637 "This station does not exist in the WDI Station Table %d",
11638 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011639 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011640 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011641 }
11642
Jeff Johnsone7245742012-09-05 17:12:55 -070011643 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11644 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011645 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11647 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11648 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011649
11650 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 }
11653
11654 /*------------------------------------------------------------------------
11655 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011656 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011657 ------------------------------------------------------------------------*/
11658 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11659 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11661 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11662 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011663
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011666 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011667 }
11668
11669
11670 wpalMutexRelease(&pWDICtx->wptMutex);
11671
11672 /*-----------------------------------------------------------------------
11673 Get message buffer
11674 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 sizeof(halStatsReqMsg.statsReqParams),
11677 &pSendBuffer, &usDataOffset, &usSendSize))||
11678 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11679 {
11680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011681 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011682 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011685 }
11686
Jeff Johnsone7245742012-09-05 17:12:55 -070011687 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011688 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011691 wpalMemoryCopy( pSendBuffer+usDataOffset,
11692 &halStatsReqMsg.statsReqParams,
11693 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011694
11695 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011696 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011697
11698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011699 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011700 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011701 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11702 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011703}/*WDI_ProcessGetStatsReq*/
11704
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011705#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11706/**
11707 @brief Process Get Roam Rssi Request function (called when Main FSM
11708 allows it)
11709
11710 @param pWDICtx: pointer to the WLAN DAL context
11711 pEventData: pointer to the event information structure
11712
11713 @see
11714 @return Result of the function call
11715*/
11716WDI_Status
11717WDI_ProcessGetRoamRssiReq
11718(
11719 WDI_ControlBlockType* pWDICtx,
11720 WDI_EventInfoType* pEventData
11721)
11722{
11723 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11724 WDI_GetStatsRspCb wdiGetStatsRspCb;
11725 wpt_uint8* pSendBuffer = NULL;
11726 wpt_uint16 usDataOffset = 0;
11727 wpt_uint16 usSendSize = 0;
11728 wpt_uint8 ucCurrentBSSSesIdx = 0;
11729 WDI_BSSSessionType* pBSSSes = NULL;
11730 wpt_macAddr macBSSID;
11731 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11732 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11734 /*-------------------------------------------------------------------------
11735 Sanity check
11736 -------------------------------------------------------------------------*/
11737 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11738 ( NULL == pEventData->pCBfnc ) )
11739 {
11740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11741 "%s: Invalid parameters", __func__);
11742 WDI_ASSERT(0);
11743 return WDI_STATUS_E_FAILURE;
11744 }
11745
11746 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11747 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11748
11749 /*-------------------------------------------------------------------------
11750 Check to see if we are in the middle of an association, if so queue, if
11751 not it means it is free to process request
11752 -------------------------------------------------------------------------*/
11753 wpalMutexAcquire(&pWDICtx->wptMutex);
11754
11755 /*------------------------------------------------------------------------
11756 Find the BSS for which the request is made
11757 ------------------------------------------------------------------------*/
11758 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11759 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11760 &macBSSID))
11761 {
11762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011763 "This station does not exist in the WDI Station Table %d",
11764 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011765 wpalMutexRelease(&pWDICtx->wptMutex);
11766 return WDI_STATUS_E_FAILURE;
11767 }
11768
11769 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11770 if ( NULL == pBSSSes )
11771 {
11772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11773 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11774 __func__, MAC_ADDR_ARRAY(macBSSID));
11775
11776 wpalMutexRelease(&pWDICtx->wptMutex);
11777 return WDI_STATUS_E_NOT_ALLOWED;
11778 }
11779
11780 /*------------------------------------------------------------------------
11781 Check if this BSS is being currently processed or queued,
11782 if queued - queue the new request as well
11783 ------------------------------------------------------------------------*/
11784 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11785 {
11786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11787 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11788 __func__, MAC_ADDR_ARRAY(macBSSID));
11789
11790 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11791 wpalMutexRelease(&pWDICtx->wptMutex);
11792 return wdiStatus;
11793 }
11794
11795 wpalMutexRelease(&pWDICtx->wptMutex);
11796
11797 /*-----------------------------------------------------------------------
11798 Get message buffer
11799 -----------------------------------------------------------------------*/
11800 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11801 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11802 &pSendBuffer, &usDataOffset, &usSendSize))||
11803 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11804 {
11805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011806 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011807 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11808 WDI_ASSERT(0);
11809 return WDI_STATUS_E_FAILURE;
11810 }
11811
11812 halRssiRoamReqMsg.roamRssiReqParams.staId =
11813 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11814 wpalMemoryCopy( pSendBuffer+usDataOffset,
11815 &halRssiRoamReqMsg.roamRssiReqParams,
11816 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11817
11818 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11819 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11820
11821 /*-------------------------------------------------------------------------
11822 Send Get STA Request to HAL
11823 -------------------------------------------------------------------------*/
11824 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11825 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11826}/*WDI_ProcessGetRoamRssiReq*/
11827#endif
11828
Jeff Johnson295189b2012-06-20 16:38:30 -070011829/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011830 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011831 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011832
11833 @param pWDICtx: pointer to the WLAN DAL context
11834 pEventData: pointer to the event information structure
11835
Jeff Johnson295189b2012-06-20 16:38:30 -070011836 @see
11837 @return Result of the function call
11838*/
11839WDI_Status
11840WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011841(
Jeff Johnson295189b2012-06-20 16:38:30 -070011842 WDI_ControlBlockType* pWDICtx,
11843 WDI_EventInfoType* pEventData
11844)
11845{
11846 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11847 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11848
Jeff Johnsone7245742012-09-05 17:12:55 -070011849 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 wpt_uint16 usDataOffset = 0;
11851 wpt_uint16 usSendSize = 0;
11852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11853
11854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011855 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011856 -------------------------------------------------------------------------*/
11857 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11858 ( NULL == pEventData->pCBfnc))
11859 {
11860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011861 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011864 }
11865
11866 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11867 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11868
11869 /*-----------------------------------------------------------------------
11870 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011871 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011872 -----------------------------------------------------------------------*/
11873
Jeff Johnsone7245742012-09-05 17:12:55 -070011874 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011875 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11876 &pSendBuffer, &usDataOffset, &usSendSize))||
11877 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11878 {
11879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011880 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011881 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011884 }
11885
Jeff Johnsone7245742012-09-05 17:12:55 -070011886 wpalMemoryCopy( pSendBuffer+usDataOffset,
11887 &pwdiUpdateCfgParams->uConfigBufferLen,
11888 sizeof(wpt_uint32));
11889 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11890 pwdiUpdateCfgParams->pConfigBuffer,
11891 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011892
11893 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011894 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011895
11896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011897 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011898 -------------------------------------------------------------------------*/
11899
Jeff Johnsone7245742012-09-05 17:12:55 -070011900 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11901 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011902
11903}/*WDI_ProcessUpdateCfgReq*/
11904
11905
11906/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011907 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011908 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011909
11910 @param pWDICtx: pointer to the WLAN DAL context
11911 pEventData: pointer to the event information structure
11912
Jeff Johnson295189b2012-06-20 16:38:30 -070011913 @see
11914 @return Result of the function call
11915*/
11916WDI_Status
11917WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011918(
Jeff Johnson295189b2012-06-20 16:38:30 -070011919 WDI_ControlBlockType* pWDICtx,
11920 WDI_EventInfoType* pEventData
11921)
11922{
11923 WDI_AddBAReqParamsType* pwdiAddBAParams;
11924 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011925 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011926 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011927 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011928 wpt_uint16 usDataOffset = 0;
11929 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011930 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011931 wpt_macAddr macBSSID;
11932
11933 tAddBAReqMsg halAddBAReq;
11934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11935
11936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011938 -------------------------------------------------------------------------*/
11939 if (( NULL == pEventData ) ||
11940 ( NULL == pEventData->pEventData) ||
11941 ( NULL == pEventData->pCBfnc ))
11942 {
11943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011947 }
11948
11949 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11950 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11951
11952 /*-------------------------------------------------------------------------
11953 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011954 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 -------------------------------------------------------------------------*/
11956 wpalMutexAcquire(&pWDICtx->wptMutex);
11957
11958 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011959 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011960 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011961 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11962 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 &macBSSID))
11964 {
11965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080011966 "This station does not exist in the WDI Station Table %d",
11967 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011968 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011970 }
11971
Jeff Johnsone7245742012-09-05 17:12:55 -070011972 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11973 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011974 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11976 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11977 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011978
11979 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011980 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 }
11982
11983 /*------------------------------------------------------------------------
11984 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011985 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011986 ------------------------------------------------------------------------*/
11987 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11988 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11990 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11991 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011992
Jeff Johnsone7245742012-09-05 17:12:55 -070011993 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011994 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011995 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 }
11997
11998
11999 wpalMutexRelease(&pWDICtx->wptMutex);
12000 /*-----------------------------------------------------------------------
12001 Get message buffer
12002 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012004 sizeof(halAddBAReq.addBAParams),
12005 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012006 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012007 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
12008 {
12009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012010 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012011 pEventData, pwdiAddBAParams, wdiAddBARspCb);
12012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 }
12015
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
12018 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
12019#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
12022#endif
12023
Jeff Johnsone7245742012-09-05 17:12:55 -070012024 wpalMemoryCopy( pSendBuffer+usDataOffset,
12025 &halAddBAReq.addBAParams,
12026 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012027
12028 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012029 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012030
12031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012032 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12035 wdiAddBARspCb, pEventData->pUserData,
12036 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012037}/*WDI_ProcessAddBAReq*/
12038
12039
12040
12041/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012043 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012044
12045 @param pWDICtx: pointer to the WLAN DAL context
12046 pEventData: pointer to the event information structure
12047
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 @see
12049 @return Result of the function call
12050*/
12051WDI_Status
12052WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012053(
Jeff Johnson295189b2012-06-20 16:38:30 -070012054 WDI_ControlBlockType* pWDICtx,
12055 WDI_EventInfoType* pEventData
12056)
12057{
12058 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
12059 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012060 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012061 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 wpt_uint16 usDataOffset = 0;
12064 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012065 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 wpt_uint16 index;
12067 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012068
Jeff Johnson295189b2012-06-20 16:38:30 -070012069 tTriggerBAReqMsg halTriggerBAReq;
12070 tTriggerBaReqCandidate* halTriggerBACandidate;
12071 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
12072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12073
12074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012075 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012076 -------------------------------------------------------------------------*/
12077 if (( NULL == pEventData ) ||
12078 ( NULL == pEventData->pEventData ) ||
12079 ( NULL == pEventData->pCBfnc ))
12080 {
12081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 }
12086
12087 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
12088 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
12089 /*-------------------------------------------------------------------------
12090 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012091 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012092 -------------------------------------------------------------------------*/
12093 wpalMutexAcquire(&pWDICtx->wptMutex);
12094
12095 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012096 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012097 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012098 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12099 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012100 &macBSSID))
12101 {
12102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012103 "This station does not exist in the WDI Station Table %d",
12104 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012107 }
12108
Jeff Johnsone7245742012-09-05 17:12:55 -070012109 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12110 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012111 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12113 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12114 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012115
12116 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012118 }
12119
12120 /*------------------------------------------------------------------------
12121 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012123 ------------------------------------------------------------------------*/
12124 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12125 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12127 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12128 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012129
Jeff Johnsone7245742012-09-05 17:12:55 -070012130 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012132 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012133 }
12134
12135
12136 wpalMutexRelease(&pWDICtx->wptMutex);
12137 /*-----------------------------------------------------------------------
12138 Get message buffer
12139 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012140 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12141 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012142 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070012143 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012144 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
12145 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012146 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012147 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070012148 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070012149 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
12150 {
12151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012152 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012153 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
12154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 }
12157
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
12162
Jeff Johnsone7245742012-09-05 17:12:55 -070012163 wpalMemoryCopy( pSendBuffer+usDataOffset,
12164 &halTriggerBAReq.triggerBAParams,
12165 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012166
Jeff Johnsone7245742012-09-05 17:12:55 -070012167 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070012168 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
12169 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
12170 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070012171
12172 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070012173 index++)
12174 {
12175 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
12176 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
12177 halTriggerBACandidate++;
12178 wdiTriggerBACandidate++;
12179 }
12180
12181 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012182 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012183
12184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012186 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012187 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12188 wdiTriggerBARspCb, pEventData->pUserData,
12189 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012190}/*WDI_ProcessTriggerBAReq*/
12191
12192
12193
12194/**
12195 @brief Process Update Beacon Params Request function (called when Main FSM
12196 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012197
12198 @param pWDICtx: pointer to the WLAN DAL context
12199 pEventData: pointer to the event information structure
12200
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 @see
12202 @return Result of the function call
12203*/
12204WDI_Status
12205WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012206(
Jeff Johnson295189b2012-06-20 16:38:30 -070012207 WDI_ControlBlockType* pWDICtx,
12208 WDI_EventInfoType* pEventData
12209)
12210{
12211 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
12212 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012213 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012214 wpt_uint16 usDataOffset = 0;
12215 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012216 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12218
12219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012221 -------------------------------------------------------------------------*/
12222 if (( NULL == pEventData ) ||
12223 ( NULL == pEventData->pEventData) ||
12224 ( NULL == pEventData->pCBfnc))
12225 {
12226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012230 }
12231
12232 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
12233 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
12234 /*-----------------------------------------------------------------------
12235 Get message buffer
12236 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012237 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012238 sizeof(halUpdateBeaconParams),
12239 &pSendBuffer, &usDataOffset, &usSendSize))||
12240 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
12241 {
12242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012243 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012244 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
12245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 }
12248
12249 /*BSS Index of the BSS*/
12250 halUpdateBeaconParams.bssIdx =
12251 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
12252 /*shortPreamble mode. HAL should update all the STA rates when it
12253 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012254 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070012255 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
12256 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012257 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070012258 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
12259 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
12262
12263 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070012264 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012266 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012267 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012268 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012269 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012270 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012271 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012272 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070012274 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070012275 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
12276 halUpdateBeaconParams.fRIFSMode =
12277 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070012278 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070012279 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
12280
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
12282 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012283
12284 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012285 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012286
12287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012288 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012289 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012290 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12291 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012292}/*WDI_ProcessUpdateBeaconParamsReq*/
12293
12294
12295
12296/**
12297 @brief Process Send Beacon template Request function (called when Main FSM
12298 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012299
12300 @param pWDICtx: pointer to the WLAN DAL context
12301 pEventData: pointer to the event information structure
12302
Jeff Johnson295189b2012-06-20 16:38:30 -070012303 @see
12304 @return Result of the function call
12305*/
12306WDI_Status
12307WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012308(
Jeff Johnson295189b2012-06-20 16:38:30 -070012309 WDI_ControlBlockType* pWDICtx,
12310 WDI_EventInfoType* pEventData
12311)
12312{
12313 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
12314 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012315 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012316 wpt_uint16 usDataOffset = 0;
12317 wpt_uint16 usSendSize = 0;
12318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12319
12320 tSendBeaconReqMsg halSendBeaconReq;
12321 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012322 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012323 -------------------------------------------------------------------------*/
12324 if (( NULL == pEventData ) ||
12325 ( NULL == pEventData->pEventData ) ||
12326 ( NULL == pEventData->pCBfnc ))
12327 {
12328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012329 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 }
12333
12334 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
12335 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
12336 /*-----------------------------------------------------------------------
12337 Get message buffer
12338 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012339 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012340 sizeof(halSendBeaconReq.sendBeaconParam),
12341 &pSendBuffer, &usDataOffset, &usSendSize))||
12342 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
12343 {
12344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012345 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012346 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
12347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 }
12350
12351 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
12352 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
12353 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012354 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070012355 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
12356 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
12357 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
12358 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070012359 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012360 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053012361 /* usP2PIeOffset should be atleast greater than timIeOffset */
12362 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
12363 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
12364 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
12365 {
12366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12367 "Invalid usP2PIeOffset %hu",
12368 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
12369 WDI_ASSERT(0);
12370 return WDI_STATUS_E_FAILURE;
12371 }
12372
Jeff Johnsone7245742012-09-05 17:12:55 -070012373 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070012375
Jeff Johnsone7245742012-09-05 17:12:55 -070012376 wpalMemoryCopy( pSendBuffer+usDataOffset,
12377 &halSendBeaconReq.sendBeaconParam,
12378 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012379
12380 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012381 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012382
12383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012384 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012385 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012386 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12387 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012388}/*WDI_ProcessSendBeaconParamsReq*/
12389
12390/**
12391 @brief Process Update Beacon Params Request function (called when Main FSM
12392 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012393
12394 @param pWDICtx: pointer to the WLAN DAL context
12395 pEventData: pointer to the event information structure
12396
Jeff Johnson295189b2012-06-20 16:38:30 -070012397 @see
12398 @return Result of the function call
12399*/
12400WDI_Status
12401WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012402(
Jeff Johnson295189b2012-06-20 16:38:30 -070012403 WDI_ControlBlockType* pWDICtx,
12404 WDI_EventInfoType* pEventData
12405)
12406{
12407 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
12408 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 wpt_uint16 usDataOffset = 0;
12411 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012412 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12414
12415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 -------------------------------------------------------------------------*/
12418 if (( NULL == pEventData ) ||
12419 ( NULL == pEventData->pEventData) ||
12420 ( NULL == pEventData->pCBfnc))
12421 {
12422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012423 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012426 }
12427
Jeff Johnsone7245742012-09-05 17:12:55 -070012428 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012429 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012430 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012431 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
12432 /*-----------------------------------------------------------------------
12433 Get message buffer
12434 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012436 sizeof(halUpdateProbeRspTmplParams),
12437 &pSendBuffer, &usDataOffset, &usSendSize))||
12438 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
12439 {
12440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012441 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
12443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012445 }
12446
12447 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070012448 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070012449 WDI_MAC_ADDR_LEN);
12450
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070012452 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
12453
12454 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
12455 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070012456 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012457
12458
12459 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
12460 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
12461 WDI_PROBE_REQ_BITMAP_IE_LEN);
12462
Jeff Johnsone7245742012-09-05 17:12:55 -070012463 wpalMemoryCopy( pSendBuffer+usDataOffset,
12464 &halUpdateProbeRspTmplParams,
12465 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012466
12467 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012468 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012469
12470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012471 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012472 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012473 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12474 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
12475 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012476}/*WDI_ProcessUpdateProbeRspTemplateReq*/
12477
12478/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012479 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012480 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012481
12482 @param pWDICtx: pointer to the WLAN DAL context
12483 pEventData: pointer to the event information structure
12484
Jeff Johnson295189b2012-06-20 16:38:30 -070012485 @see
12486 @return Result of the function call
12487*/
12488WDI_Status
12489WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012490(
Jeff Johnson295189b2012-06-20 16:38:30 -070012491 WDI_ControlBlockType* pWDICtx,
12492 WDI_EventInfoType* pEventData
12493)
12494{
12495
12496 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
12497 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
12498
12499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012500 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012501 -------------------------------------------------------------------------*/
12502 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012503 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012504 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
12507 {
12508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012509 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012510 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012511 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012512 }
12513
12514 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070012515 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070012516 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
12517
12518 /*cache the wdi nv request message here if the the first fragment
12519 * To issue the request to HAL for the next fragment */
12520 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
12521 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
12523 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012524 sizeof(pWDICtx->wdiCachedNvDownloadReq));
12525
12526 pWDICtx->pfncRspCB = pEventData->pCBfnc;
12527 pWDICtx->pRspCBUserData = pEventData->pUserData;
12528 }
12529
12530 return WDI_SendNvBlobReq(pWDICtx,pEventData);
12531}
12532
12533/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012534 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012535 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012536
12537 @param pWDICtx: pointer to the WLAN DAL context
12538 pEventData: pointer to the event information structure
12539
Jeff Johnson295189b2012-06-20 16:38:30 -070012540 @see
12541 @return Result of the function call
12542*/
12543WDI_Status WDI_ProcessSetMaxTxPowerReq
12544(
12545 WDI_ControlBlockType* pWDICtx,
12546 WDI_EventInfoType* pEventData
12547)
12548{
12549 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
12550 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012551 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012552 wpt_uint16 usDataOffset = 0;
12553 wpt_uint16 usSendSize = 0;
12554 tSetMaxTxPwrReq halSetMaxTxPower;
12555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12556
12557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012558 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012559 -------------------------------------------------------------------------*/
12560 if (( NULL == pEventData ) ||
12561 ( NULL == pEventData->pEventData ) ||
12562 ( NULL == pEventData->pCBfnc ))
12563 {
12564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012569 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012570 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12573
12574 /*-----------------------------------------------------------------------
12575 Get message buffer
12576 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012577if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12579 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012581)))
12582 {
12583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012584 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012588 }
12589
12590 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12591 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12592 WDI_MAC_ADDR_LEN);
12593
12594 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12595 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12596 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012597 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012598 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012599
12600 wpalMemoryCopy( pSendBuffer+usDataOffset,
12601 &halSetMaxTxPower.setMaxTxPwrParams,
12602 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012603
12604 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012606
12607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012608 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012609 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012610 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12611 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12612 WDI_SET_MAX_TX_POWER_RESP);
12613
Jeff Johnson295189b2012-06-20 16:38:30 -070012614}
12615
schangd82195a2013-03-13 18:41:24 -070012616/**
12617 @brief Process Set Tx Power Request function (called when Main
12618 FSM allows it)
12619
12620 @param pWDICtx: pointer to the WLAN DAL context
12621 pEventData: pointer to the event information structure
12622
12623 @see
12624 @return Result of the function call
12625*/
12626WDI_Status WDI_ProcessSetTxPowerReq
12627(
12628 WDI_ControlBlockType* pWDICtx,
12629 WDI_EventInfoType* pEventData
12630)
12631{
12632 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12633 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12634 wpt_uint8* pSendBuffer = NULL;
12635 wpt_uint16 usDataOffset = 0;
12636 wpt_uint16 usSendSize = 0;
Leo Changa37e2a92013-03-25 17:39:58 -070012637 tSetTxPwrReqParams *halSetTxPower = NULL;
schangd82195a2013-03-13 18:41:24 -070012638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12639
12640 /*-------------------------------------------------------------------------
12641 Sanity check
12642 -------------------------------------------------------------------------*/
12643 if (( NULL == pEventData ) ||
12644 ( NULL == pEventData->pEventData ) ||
12645 ( NULL == pEventData->pCBfnc ))
12646 {
12647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12648 "%s: Invalid parameters", __func__);
12649 WDI_ASSERT(0);
12650 return WDI_STATUS_E_FAILURE;
12651 }
12652
12653 pwdiSetTxPowerParams =
12654 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12655 wdiSetTxPowerRspCb =
12656 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12657
12658 /*-----------------------------------------------------------------------
12659 Get message buffer
12660 -----------------------------------------------------------------------*/
12661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12662 sizeof(tSetTxPwrReqParams),
12663 &pSendBuffer, &usDataOffset, &usSendSize))||
12664 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12665 )))
12666 {
12667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012668 "Unable to get Set Max Tx Power req %p %p %p",
schangd82195a2013-03-13 18:41:24 -070012669 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12670 WDI_ASSERT(0);
12671 return WDI_STATUS_E_FAILURE;
12672 }
12673
Leo Changa37e2a92013-03-25 17:39:58 -070012674 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
12675 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12676 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schangd82195a2013-03-13 18:41:24 -070012677
12678 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12679 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12680
12681 /*-------------------------------------------------------------------------
12682 Send Set Tx Power Request to HAL
12683 -------------------------------------------------------------------------*/
12684 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12685 wdiSetTxPowerRspCb, pEventData->pUserData,
12686 WDI_SET_TX_POWER_RESP);
12687}
Jeff Johnson295189b2012-06-20 16:38:30 -070012688
12689/**
12690 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12691 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012692
12693 @param pWDICtx: pointer to the WLAN DAL context
12694 pEventData: pointer to the event information structure
12695
Jeff Johnson295189b2012-06-20 16:38:30 -070012696 @see
12697 @return Result of the function call
12698*/
12699WDI_Status
12700WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012701(
Jeff Johnson295189b2012-06-20 16:38:30 -070012702 WDI_ControlBlockType* pWDICtx,
12703 WDI_EventInfoType* pEventData
12704)
12705{
12706 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12707 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012708 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012709 wpt_uint16 usDataOffset = 0;
12710 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012711 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12713
12714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012716 -------------------------------------------------------------------------*/
12717 if (( NULL == pEventData ) ||
12718 ( NULL == pEventData->pEventData) ||
12719 ( NULL == pEventData->pCBfnc))
12720 {
12721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012725 }
12726
Jeff Johnsone7245742012-09-05 17:12:55 -070012727 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012728 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012729 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012730 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12731 /*-----------------------------------------------------------------------
12732 Get message buffer
12733 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012734 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12735 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 sizeof(halSetP2PGONOAParams),
12737 &pSendBuffer, &usDataOffset, &usSendSize))||
12738 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12739 {
12740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012741 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012742 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012745 }
12746
Jeff Johnsone7245742012-09-05 17:12:55 -070012747 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012748 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012749 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012750 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12751 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012752 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012753 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012754 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012755 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012756 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012757 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012758 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012759 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12760
Jeff Johnsone7245742012-09-05 17:12:55 -070012761 wpalMemoryCopy( pSendBuffer+usDataOffset,
12762 &halSetP2PGONOAParams,
12763 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012764
12765 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012766 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012767
12768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012769 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012770 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012771 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12772 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12773 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012774}/*WDI_ProcessP2PGONOAReq*/
12775
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012776#ifdef FEATURE_WLAN_TDLS
12777
12778/**
12779 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12780 allows it)
12781
12782 @param pWDICtx: pointer to the WLAN DAL context
12783 pEventData: pointer to the event information structure
12784
12785 @see
12786 @return Result of the function call
12787*/
12788WDI_Status
12789WDI_ProcessTdlsLinkEstablishReq
12790(
12791 WDI_ControlBlockType* pWDICtx,
12792 WDI_EventInfoType* pEventData
12793)
12794{
12795 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
12796 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
12797 wpt_uint8* pSendBuffer = NULL;
12798 wpt_uint16 usDataOffset = 0;
12799 wpt_uint16 usSendSize = 0;
12800
12801 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
12802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12803
12804 /*-------------------------------------------------------------------------
12805 Sanity check
12806 -------------------------------------------------------------------------*/
12807 if (( NULL == pEventData ) ||
12808 ( NULL == pEventData->pEventData) ||
12809 ( NULL == pEventData->pCBfnc))
12810 {
12811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12812 "%s: Invalid parameters", __func__);
12813 WDI_ASSERT(0);
12814 return WDI_STATUS_E_FAILURE;
12815 }
12816 pwdiTDLSLinkEstablishReqParams =
12817 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
12818 wdiTDLSLinkEstablishReqRspCb =
12819 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
12820
12821
12822 /*-----------------------------------------------------------------------
12823 Get message buffer
12824 -----------------------------------------------------------------------*/
12825 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12826 WDI_TDLS_LINK_ESTABLISH_REQ,
12827 sizeof(halSetTDLSLinkEstablishParams),
12828 &pSendBuffer, &usDataOffset, &usSendSize))||
12829 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
12830 {
12831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012832 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053012833 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
12834 WDI_ASSERT(0);
12835 return WDI_STATUS_E_FAILURE;
12836 }
12837
12838 halSetTDLSLinkEstablishParams.staIdx =
12839 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
12840 halSetTDLSLinkEstablishParams.bIsResponder =
12841 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
12842 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
12843 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
12844 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
12845 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
12846 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
12847 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
12848 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
12849 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
12850 halSetTDLSLinkEstablishParams.aAck = 0;
12851 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
12852 halSetTDLSLinkEstablishParams.moreDataAck = 0;
12853 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
12854
12855 wpalMemoryCopy( pSendBuffer+usDataOffset,
12856 &halSetTDLSLinkEstablishParams,
12857 sizeof(halSetTDLSLinkEstablishParams));
12858
12859 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
12860 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
12861
12862 /*-------------------------------------------------------------------------
12863 Send Update Probe Resp Template Request to HAL
12864 -------------------------------------------------------------------------*/
12865 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12866 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
12867 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
12868 return 0;
12869}/*WDI_ProcessTdlsLinkEstablishReq*/
12870
12871
12872#endif
12873
Jeff Johnson295189b2012-06-20 16:38:30 -070012874
12875
12876/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012877 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012878 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012879 @param None
12880
12881 @see
12882 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012883*/
12884void
12885WDI_SetPowerStateCb
12886(
12887 wpt_status status,
12888 unsigned int dxePhyAddr,
12889 void *pContext
12890)
12891{
12892 wpt_status wptStatus;
12893 WDI_ControlBlockType *pCB = NULL;
12894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12895 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12896 {
12897 //it shouldn't happen, put an error msg
12898 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 /*
12900 * Trigger the event to bring the Enter BMPS req function to come
12901 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012902*/
12903 if( NULL != pContext )
12904 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 }
12907 else
12908 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012909 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012910 pCB = &gWDICb;
12911 }
12912 pCB->dxePhyAddr = dxePhyAddr;
12913 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12914 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12915 {
12916 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12917 "Failed to set an event");
12918
Jeff Johnsone7245742012-09-05 17:12:55 -070012919 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012920 }
12921 return;
12922}
12923
12924
12925/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012926 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012927 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012928
12929 @param pWDICtx: pointer to the WLAN DAL context
12930 pEventData: pointer to the event information structure
12931
Jeff Johnson295189b2012-06-20 16:38:30 -070012932 @see
12933 @return Result of the function call
12934*/
12935WDI_Status
12936WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012937(
Jeff Johnson295189b2012-06-20 16:38:30 -070012938 WDI_ControlBlockType* pWDICtx,
12939 WDI_EventInfoType* pEventData
12940)
12941{
Jeff Johnson43971f52012-07-17 12:26:56 -070012942 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012943 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012944 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012945 wpt_uint16 usDataOffset = 0;
12946 wpt_uint16 usSendSize = 0;
12947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12948
12949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012951 -------------------------------------------------------------------------*/
12952 if (( NULL == pEventData ) ||
12953 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12954 {
12955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012957 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012958 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 }
12960
12961 /*-----------------------------------------------------------------------
12962 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012964 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012965 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012966 0,
12967 &pSendBuffer, &usDataOffset, &usSendSize))||
12968 ( usSendSize < (usDataOffset )))
12969 {
12970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080012971 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012972 pEventData, wdiEnterImpsRspCb);
12973 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012974 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012975 }
12976
12977 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012978 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12979 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012980 {
12981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12982 "WDI Init failed to reset an event");
12983
Jeff Johnsone7245742012-09-05 17:12:55 -070012984 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012985 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012986 }
12987
12988 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012989 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12990 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12991 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12992 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12993 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012994 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012995 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012996
12997 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012998 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012999 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013000 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13001 WDI_SET_POWER_STATE_TIMEOUT);
13002 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013003 {
13004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13005 "WDI Init failed to wait on an event");
13006
Jeff Johnsone7245742012-09-05 17:12:55 -070013007 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013008 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013009 }
13010
13011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013012 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013013 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013014 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13015 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013016
13017fail:
13018 // Release the message buffer so we don't leak
13019 wpalMemoryFree(pSendBuffer);
13020
13021failRequest:
13022 //WDA should have failure check to avoid the memory leak
13023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013024}/*WDI_ProcessEnterImpsReq*/
13025
13026/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013027 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013028 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013029
13030 @param pWDICtx: pointer to the WLAN DAL context
13031 pEventData: pointer to the event information structure
13032
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 @see
13034 @return Result of the function call
13035*/
13036WDI_Status
13037WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013038(
Jeff Johnson295189b2012-06-20 16:38:30 -070013039 WDI_ControlBlockType* pWDICtx,
13040 WDI_EventInfoType* pEventData
13041)
13042{
13043 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013044 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013045 wpt_uint16 usDataOffset = 0;
13046 wpt_uint16 usSendSize = 0;
13047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13048
13049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013050 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013051 -------------------------------------------------------------------------*/
13052 if (( NULL == pEventData ) ||
13053 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
13054 {
13055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013056 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013057 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013058 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013059 }
13060
13061 /*-----------------------------------------------------------------------
13062 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013063 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013064 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013065 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013066 0,
13067 &pSendBuffer, &usDataOffset, &usSendSize))||
13068 ( usSendSize < (usDataOffset )))
13069 {
13070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013071 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013072 pEventData, wdiExitImpsRspCb);
13073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013075 }
13076
13077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013080 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13081 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013082}/*WDI_ProcessExitImpsReq*/
13083
13084/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013087
13088 @param pWDICtx: pointer to the WLAN DAL context
13089 pEventData: pointer to the event information structure
13090
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 @see
13092 @return Result of the function call
13093*/
13094WDI_Status
13095WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013096(
Jeff Johnson295189b2012-06-20 16:38:30 -070013097 WDI_ControlBlockType* pWDICtx,
13098 WDI_EventInfoType* pEventData
13099)
13100{
13101 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
13102 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013103 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013104 wpt_uint16 usDataOffset = 0;
13105 wpt_uint16 usSendSize = 0;
13106 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070013107 wpt_status wptStatus;
13108
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13110
13111 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013112 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013113 -------------------------------------------------------------------------*/
13114 if (( NULL == pEventData ) ||
13115 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
13116 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
13117 {
13118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013120 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013121 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 }
13123
13124 /*-----------------------------------------------------------------------
13125 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013126 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013128 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013129 sizeof(enterBmpsReq),
13130 &pSendBuffer, &usDataOffset, &usSendSize))||
13131 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
13132 {
13133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013134 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013135 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
13136 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013137 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013138 }
13139
13140 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070013141 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
13142 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013143 {
13144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13145 "WDI Init failed to reset an event");
13146
Jeff Johnsone7245742012-09-05 17:12:55 -070013147 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013148 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 }
13150
13151 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013152 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
13153 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13154 {
13155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
13156 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
13157 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013158 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080013159 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013160
13161/*
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070013163 */
Jeff Johnson43971f52012-07-17 12:26:56 -070013164 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
13165 WDI_SET_POWER_STATE_TIMEOUT);
13166 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 {
13168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13169 "WDI Init failed to wait on an event");
13170
Jeff Johnsone7245742012-09-05 17:12:55 -070013171 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013172 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070013173 }
13174
13175 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
13176
13177 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
13178 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
13179 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
13180 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
13181
13182 // For CCX and 11R Roaming
13183 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
13184 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
13185 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
13186
13187 wpalMemoryCopy( pSendBuffer+usDataOffset,
13188 &enterBmpsReq,
13189 sizeof(enterBmpsReq));
13190
13191 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013192 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013193
13194 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013197 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13198 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013199
13200fail:
13201 // Release the message buffer so we don't leak
13202 wpalMemoryFree(pSendBuffer);
13203
13204failRequest:
13205 //WDA should have failure check to avoid the memory leak
13206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013207}/*WDI_ProcessEnterBmpsReq*/
13208
13209/**
13210 @brief Process Exit BMPS Request function (called when Main FSM
13211 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013212
13213 @param pWDICtx: pointer to the WLAN DAL context
13214 pEventData: pointer to the event information structure
13215
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 @see
13217 @return Result of the function call
13218*/
13219WDI_Status
13220WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013221(
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 WDI_ControlBlockType* pWDICtx,
13223 WDI_EventInfoType* pEventData
13224)
13225{
13226 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
13227 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 wpt_uint16 usDataOffset = 0;
13230 wpt_uint16 usSendSize = 0;
13231 tHalExitBmpsReqParams exitBmpsReq;
13232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13233
13234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013236 -------------------------------------------------------------------------*/
13237 if (( NULL == pEventData ) ||
13238 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
13239 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
13240 {
13241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 }
13246
13247 /*-----------------------------------------------------------------------
13248 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013249 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013251 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013252 sizeof(exitBmpsReq),
13253 &pSendBuffer, &usDataOffset, &usSendSize))||
13254 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
13255 {
13256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013257 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013258 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
13259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 }
13262 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
13263
Jeff Johnsone7245742012-09-05 17:12:55 -070013264 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
13265
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 wpalMemoryCopy( pSendBuffer+usDataOffset,
13267 &exitBmpsReq,
13268 sizeof(exitBmpsReq));
13269
13270 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013271 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013272
13273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13277 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013278}/*WDI_ProcessExitBmpsReq*/
13279
13280/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013283
13284 @param pWDICtx: pointer to the WLAN DAL context
13285 pEventData: pointer to the event information structure
13286
Jeff Johnson295189b2012-06-20 16:38:30 -070013287 @see
13288 @return Result of the function call
13289*/
13290WDI_Status
13291WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013292(
Jeff Johnson295189b2012-06-20 16:38:30 -070013293 WDI_ControlBlockType* pWDICtx,
13294 WDI_EventInfoType* pEventData
13295)
13296{
13297 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
13298 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013299 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013300 wpt_uint16 usDataOffset = 0;
13301 wpt_uint16 usSendSize = 0;
13302 tUapsdReqParams enterUapsdReq;
13303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13304
13305 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013306 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013307 -------------------------------------------------------------------------*/
13308 if (( NULL == pEventData ) ||
13309 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
13310 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
13311 {
13312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013313 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013316 }
13317
13318 /*-----------------------------------------------------------------------
13319 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013320 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013321 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013322 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013323 sizeof(enterUapsdReq),
13324 &pSendBuffer, &usDataOffset, &usSendSize))||
13325 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
13326 {
13327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013328 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013329 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
13330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 }
13333
13334 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
13335 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
13336 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
13337 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
13338 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
13339 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
13340 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
13341 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013343
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 wpalMemoryCopy( pSendBuffer+usDataOffset,
13345 &enterUapsdReq,
13346 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013347
13348 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013349 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013350
13351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013352 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013353 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013354 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13355 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013356}/*WDI_ProcessEnterUapsdReq*/
13357
13358/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013361
13362 @param pWDICtx: pointer to the WLAN DAL context
13363 pEventData: pointer to the event information structure
13364
Jeff Johnson295189b2012-06-20 16:38:30 -070013365 @see
13366 @return Result of the function call
13367*/
13368WDI_Status
13369WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013370(
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 WDI_ControlBlockType* pWDICtx,
13372 WDI_EventInfoType* pEventData
13373)
13374{
13375 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 wpt_uint16 usDataOffset = 0;
13378 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013379 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
13380 wpt_uint8 bssIdx = 0;
13381
Jeff Johnson295189b2012-06-20 16:38:30 -070013382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13383
13384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013385 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 -------------------------------------------------------------------------*/
13387 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013388 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
13390 {
13391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013395 }
13396
13397 /*-----------------------------------------------------------------------
13398 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013402 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013404 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013405 {
13406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013407 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 pEventData, wdiExitUapsdRspCb);
13409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013411 }
13412
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013413 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
13414
13415 wpalMemoryCopy( pSendBuffer+usDataOffset,
13416 &bssIdx,
13417 sizeof(wpt_uint8));
13418
13419 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
13420 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
13421
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013423 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013424 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013425 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13426 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013427}/*WDI_ProcessExitUapsdReq*/
13428
13429/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013430 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013432
13433 @param pWDICtx: pointer to the WLAN DAL context
13434 pEventData: pointer to the event information structure
13435
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 @see
13437 @return Result of the function call
13438*/
13439WDI_Status
13440WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013441(
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 WDI_ControlBlockType* pWDICtx,
13443 WDI_EventInfoType* pEventData
13444)
13445{
13446 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
13447 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 wpt_uint16 usDataOffset = 0;
13450 wpt_uint16 usSendSize = 0;
13451 tUapsdInfo uapsdAcParamsReq;
13452 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13453
13454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013455 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 -------------------------------------------------------------------------*/
13457 if (( NULL == pEventData ) ||
13458 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
13459 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
13460 {
13461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013465 }
13466
13467 /*-----------------------------------------------------------------------
13468 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013469 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013470 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 sizeof(uapsdAcParamsReq),
13473 &pSendBuffer, &usDataOffset, &usSendSize))||
13474 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
13475 {
13476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013477 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013478 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
13479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 }
13482
13483 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
13484 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
13485 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
13486 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
13487 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
13488 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
13489
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 wpalMemoryCopy( pSendBuffer+usDataOffset,
13491 &uapsdAcParamsReq,
13492 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013493
13494 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013495 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013496
13497 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013498 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013500 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13501 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013502}/*WDI_ProcessSetUapsdAcParamsReq*/
13503
13504/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013505 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013506 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013507
13508 @param pWDICtx: pointer to the WLAN DAL context
13509 pEventData: pointer to the event information structure
13510
Jeff Johnson295189b2012-06-20 16:38:30 -070013511 @see
13512 @return Result of the function call
13513*/
13514WDI_Status
13515WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013516(
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 WDI_ControlBlockType* pWDICtx,
13518 WDI_EventInfoType* pEventData
13519)
13520{
13521 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
13522 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013523 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013524 wpt_uint16 usDataOffset = 0;
13525 wpt_uint16 usSendSize = 0;
13526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13527
13528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 -------------------------------------------------------------------------*/
13531 if (( NULL == pEventData ) ||
13532 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
13533 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
13534 {
13535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013536 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 }
13540
13541 /*-----------------------------------------------------------------------
13542 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013543 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013545 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013546 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
13547 &pSendBuffer, &usDataOffset, &usSendSize))||
13548 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
13549 {
13550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013551 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
13553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013555 }
13556
Jeff Johnsone7245742012-09-05 17:12:55 -070013557 wpalMemoryCopy( pSendBuffer+usDataOffset,
13558 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
13559 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013560
13561 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013562 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013563
13564 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013565 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013567 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13568 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013569}/*WDI_ProcessUpdateUapsdParamsReq*/
13570
13571/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013572 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013574
13575 @param pWDICtx: pointer to the WLAN DAL context
13576 pEventData: pointer to the event information structure
13577
Jeff Johnson295189b2012-06-20 16:38:30 -070013578 @see
13579 @return Result of the function call
13580*/
13581WDI_Status
13582WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013583(
Jeff Johnson295189b2012-06-20 16:38:30 -070013584 WDI_ControlBlockType* pWDICtx,
13585 WDI_EventInfoType* pEventData
13586)
13587{
13588 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
13589 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013590 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013591 wpt_uint16 usDataOffset = 0;
13592 wpt_uint16 usSendSize = 0;
13593 tHalConfigureRxpFilterReqParams halRxpFilterParams;
13594
13595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13596
13597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013599 -------------------------------------------------------------------------*/
13600 if (( NULL == pEventData ) ||
13601 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
13602 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
13603 {
13604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013605 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013608 }
13609
13610 /*-----------------------------------------------------------------------
13611 Get message buffer
13612 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013613 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013614 sizeof(halRxpFilterParams),
13615 &pSendBuffer, &usDataOffset, &usSendSize))||
13616 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
13617 {
13618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013619 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013620 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
13621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013623 }
13624
Jeff Johnsone7245742012-09-05 17:12:55 -070013625 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070013626 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070013627 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070013628 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
13629
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 wpalMemoryCopy( pSendBuffer+usDataOffset,
13631 &halRxpFilterParams,
13632 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013633
13634 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013635 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013636
13637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013638 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013639 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013640 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13641 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013642}/*WDI_ProcessConfigureRxpFilterReq*/
13643
13644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013645 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013646 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013647
13648 @param pWDICtx: pointer to the WLAN DAL context
13649 pEventData: pointer to the event information structure
13650
Jeff Johnson295189b2012-06-20 16:38:30 -070013651 @see
13652 @return Result of the function call
13653*/
13654WDI_Status
13655WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013656(
Jeff Johnson295189b2012-06-20 16:38:30 -070013657 WDI_ControlBlockType* pWDICtx,
13658 WDI_EventInfoType* pEventData
13659)
13660{
13661 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13662 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013663 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013664 wpt_uint16 usDataOffset = 0;
13665 wpt_uint16 usSendSize = 0;
13666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13667
13668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013670 -------------------------------------------------------------------------*/
13671 if (( NULL == pEventData ) ||
13672 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13673 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13674 {
13675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013679 }
13680
13681 /*-----------------------------------------------------------------------
13682 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013683 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013684 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013685 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013686 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13687 &pSendBuffer, &usDataOffset, &usSendSize))||
13688 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13689 {
13690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013691 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013692 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013695 }
13696
Jeff Johnsone7245742012-09-05 17:12:55 -070013697 wpalMemoryCopy( pSendBuffer+usDataOffset,
13698 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13699 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13700 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13701 &pwdiBeaconFilterParams->aFilters[0],
13702 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013703
13704 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013706
13707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013708 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013710 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13711 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013712}/*WDI_ProcessSetBeaconFilterReq*/
13713
13714/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013715 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013716 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013717
13718 @param pWDICtx: pointer to the WLAN DAL context
13719 pEventData: pointer to the event information structure
13720
Jeff Johnson295189b2012-06-20 16:38:30 -070013721 @see
13722 @return Result of the function call
13723*/
13724WDI_Status
13725WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013726(
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 WDI_ControlBlockType* pWDICtx,
13728 WDI_EventInfoType* pEventData
13729)
13730{
13731 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13732 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013733 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013734 wpt_uint16 usDataOffset = 0;
13735 wpt_uint16 usSendSize = 0;
13736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13737
13738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 -------------------------------------------------------------------------*/
13741 if (( NULL == pEventData ) ||
13742 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13743 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13744 {
13745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013746 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013748 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013749 }
13750
13751 /*-----------------------------------------------------------------------
13752 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013753 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013755 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13757 &pSendBuffer, &usDataOffset, &usSendSize))||
13758 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13759 {
13760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013761 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013762 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 }
13766
Jeff Johnsone7245742012-09-05 17:12:55 -070013767 wpalMemoryCopy( pSendBuffer+usDataOffset,
13768 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13769 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013770
13771 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013773
13774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013775 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013776 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013777 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13778 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013779}
13780
13781/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013783 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013784
13785 @param pWDICtx: pointer to the WLAN DAL context
13786 pEventData: pointer to the event information structure
13787
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 @see
13789 @return Result of the function call
13790*/
13791WDI_Status
13792WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013793(
Jeff Johnson295189b2012-06-20 16:38:30 -070013794 WDI_ControlBlockType* pWDICtx,
13795 WDI_EventInfoType* pEventData
13796)
13797{
13798 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13799 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013800 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013801 wpt_uint16 usDataOffset = 0;
13802 wpt_uint16 usSendSize = 0;
13803 tHalRSSIThresholds rssiThresholdsReq;
13804 WDI_Status ret_status = 0;
13805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13806
13807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013808 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013809 -------------------------------------------------------------------------*/
13810 if (( NULL == pEventData ) ||
13811 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13812 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13813 {
13814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013815 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 }
13819
13820 /*-----------------------------------------------------------------------
13821 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013822 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013823 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 sizeof(rssiThresholdsReq),
13826 &pSendBuffer, &usDataOffset, &usSendSize))||
13827 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13828 {
13829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013830 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013831 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 }
13835
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013839 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013840 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013841 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013842 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013843 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013844 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013845 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013846 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013847 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013848 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013849 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013850 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013851 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013852 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013853 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013854 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013855 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13856
Jeff Johnsone7245742012-09-05 17:12:55 -070013857 wpalMemoryCopy( pSendBuffer+usDataOffset,
13858 &rssiThresholdsReq,
13859 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013860
13861 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013862 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013863
13864 /*-------------------------------------------------------------------------
13865 Send Set threshold req to HAL
13866 -------------------------------------------------------------------------*/
13867 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13868 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13869 {
13870 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13871 // req. Then as a result of processing the threshold cross ind, we trigger
13872 // a Set threshold req, then we need to indicate to WDI that it needs to
13873 // go to busy state as a result of the indication as we sent a req in the
13874 // same WDI context.
13875 // Hence expected state transition is to busy.
13876 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13877 }
13878
13879 return ret_status;
13880}
13881
13882/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013883 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013884 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013885
13886 @param pWDICtx: pointer to the WLAN DAL context
13887 pEventData: pointer to the event information structure
13888
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 @see
13890 @return Result of the function call
13891*/
13892WDI_Status
13893WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013894(
Jeff Johnson295189b2012-06-20 16:38:30 -070013895 WDI_ControlBlockType* pWDICtx,
13896 WDI_EventInfoType* pEventData
13897)
13898{
13899 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13900 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013901 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013902 wpt_uint16 usDataOffset = 0;
13903 wpt_uint16 usSendSize = 0;
13904 tHalHostOffloadReq hostOffloadParams;
13905 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013906 wpt_uint8 ucCurrentBSSSesIdx = 0;
13907 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013908
13909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13910
13911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013912 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013913 -------------------------------------------------------------------------*/
13914 if (( NULL == pEventData ) ||
13915 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13916 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13917 {
13918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013919 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013920 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013921 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013922 }
13923
13924 /*-----------------------------------------------------------------------
13925 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013926 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013927 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013928 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013929 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13930 &pSendBuffer, &usDataOffset, &usSendSize))||
13931 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13932 {
13933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080013934 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13936 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013937 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 }
13939
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013940 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13941 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13942 &pBSSSes);
13943 if ( NULL == pBSSSes )
13944 {
13945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053013946 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
13947 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013948 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013949 }
13950
Jeff Johnson295189b2012-06-20 16:38:30 -070013951 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13952 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013953
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13955 {
13956 // ARP Offload
13957 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13958 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13959 4);
13960 }
13961 else
13962 {
13963 // NS Offload
13964 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13965 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13966 16);
13967
13968#ifdef WLAN_NS_OFFLOAD
13969 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13970 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13971 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13972 16);
13973 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13974 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13975 16);
13976 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13977 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13978 16);
13979 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13980 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13981 16);
13982 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13983 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13984 6);
Gopichand Nakkala0616f592013-06-11 12:45:54 +053013985 nsOffloadParams.srcIPv6AddrValid =
13986 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13987
13988 nsOffloadParams.targetIPv6Addr1Valid =
13989 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13990
13991 nsOffloadParams.targetIPv6Addr2Valid =
13992 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
13993
13994 nsOffloadParams.slotIndex =
13995 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013996
Jeff Johnson295189b2012-06-20 16:38:30 -070013997#endif // WLAN_NS_OFFLOAD
13998 }
13999
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014000 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
14001
Jeff Johnson295189b2012-06-20 16:38:30 -070014002 // copy hostOffloadParams into pSendBuffer
14003 wpalMemoryCopy( pSendBuffer+usDataOffset,
14004 &hostOffloadParams,
14005 sizeof(hostOffloadParams));
14006
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014007 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014009 // copy nsOffloadParams into pSendBuffer
14010 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014011 &nsOffloadParams,
14012 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014013 }
14014 else
14015 {
14016#ifdef WLAN_NS_OFFLOAD
14017 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
14018 {
14019 // copy nsOffloadParams into pSendBuffer
14020 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
14021 &nsOffloadParams,
14022 sizeof(nsOffloadParams));
14023 }
14024#endif
14025 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014026
14027 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014028 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014029
14030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014031 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014032 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014033 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14034 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014035
14036fail:
14037 // Release the message buffer so we don't leak
14038 wpalMemoryFree(pSendBuffer);
14039
14040failRequest:
14041 //WDA should have failure check to avoid the memory leak
14042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014043}/*WDI_ProcessHostOffloadReq*/
14044
14045/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014046 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014047 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014048
14049 @param pWDICtx: pointer to the WLAN DAL context
14050 pEventData: pointer to the event information structure
14051
Jeff Johnson295189b2012-06-20 16:38:30 -070014052 @see
14053 @return Result of the function call
14054*/
14055WDI_Status
14056WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014057(
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 WDI_ControlBlockType* pWDICtx,
14059 WDI_EventInfoType* pEventData
14060)
14061{
14062 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
14063 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014064 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014065 wpt_uint16 usDataOffset = 0;
14066 wpt_uint16 usSendSize = 0;
14067 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014068 wpt_uint8 ucCurrentBSSSesIdx = 0;
14069 WDI_BSSSessionType* pBSSSes = NULL;
14070
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14072
14073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014074 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014075 -------------------------------------------------------------------------*/
14076 if (( NULL == pEventData ) ||
14077 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
14078 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
14079 {
14080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14081 "Invalid parameters in Keep Alive req");
14082 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014083 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014084 }
14085
14086 /*-----------------------------------------------------------------------
14087 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014088 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014089 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014091 sizeof(keepAliveReq),
14092 &pSendBuffer, &usDataOffset, &usSendSize))||
14093 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
14094 {
14095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014096 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014097 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
14098 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014099 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 }
14101
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014102 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14103 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
14104 &pBSSSes);
14105 if ( NULL == pBSSSes )
14106 {
14107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014108 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014109 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014110 }
14111
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
14113 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
14114
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014115 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014116
Jeff Johnson295189b2012-06-20 16:38:30 -070014117 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
14118 {
14119 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
14120 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
14121 HAL_IPV4_ADDR_LEN);
14122 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
14123 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070014124 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014125 wpalMemoryCopy(keepAliveReq.destMacAddr,
14126 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
14127 HAL_MAC_ADDR_LEN);
14128 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014129
14130 wpalMemoryCopy( pSendBuffer+usDataOffset,
14131 &keepAliveReq,
14132 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014133
14134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14135 "Process keep alive req %d",sizeof(keepAliveReq));
14136
14137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14138 "Process keep alive req time period %d",keepAliveReq.timePeriod);
14139
14140 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014142
14143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14144 "Sending keep alive req to HAL");
14145
14146 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014147 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014148 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014149 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14150 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014151
14152fail:
14153 // Release the message buffer so we don't leak
14154 wpalMemoryFree(pSendBuffer);
14155
14156failRequest:
14157 //WDA should have failure check to avoid the memory leak
14158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014159}/*WDI_ProcessKeepAliveReq*/
14160
14161
14162/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014163 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014164 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014165
14166 @param pWDICtx: pointer to the WLAN DAL context
14167 pEventData: pointer to the event information structure
14168
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 @see
14170 @return Result of the function call
14171*/
14172WDI_Status
14173WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014174(
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 WDI_ControlBlockType* pWDICtx,
14176 WDI_EventInfoType* pEventData
14177)
14178{
14179 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
14180 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014181 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014182 wpt_uint16 usDataOffset = 0;
14183 wpt_uint16 usSendSize = 0;
14184 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014185 wpt_uint8 ucCurrentBSSSesIdx = 0;
14186 WDI_BSSSessionType* pBSSSes = NULL;
14187
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14189
14190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014191 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 -------------------------------------------------------------------------*/
14193 if (( NULL == pEventData ) ||
14194 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
14195 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
14196 {
14197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014199 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014200 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014201 }
14202
14203 /*-----------------------------------------------------------------------
14204 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014205 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014206 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014207 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014208 sizeof(wowlAddBcPtrnReq),
14209 &pSendBuffer, &usDataOffset, &usSendSize))||
14210 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
14211 {
14212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014213 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014214 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
14215 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014216 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014217 }
14218
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014219 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14220 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
14221 &pBSSSes);
14222 if ( NULL == pBSSSes )
14223 {
14224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014225 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014226 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014227 }
14228
Jeff Johnsone7245742012-09-05 17:12:55 -070014229 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014230 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070014233 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014234 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070014235 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070014236 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
14237
14238 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
14239 {
14240 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14241 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14242 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
14243 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14244 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14245 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
14246 }
14247 else
14248 {
14249 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14250 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14251 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14252 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14253 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14254 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14255
14256 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
14257 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
14258 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14259 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
14260 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
14261 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
14262 }
14263
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014264 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14265
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 wpalMemoryCopy( pSendBuffer+usDataOffset,
14267 &wowlAddBcPtrnReq,
14268 sizeof(wowlAddBcPtrnReq));
14269
14270 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014271 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014272
14273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014274 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014275 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014276 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14277 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014278fail:
14279 // Release the message buffer so we don't leak
14280 wpalMemoryFree(pSendBuffer);
14281
14282failRequest:
14283 //WDA should have failure check to avoid the memory leak
14284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014285}/*WDI_ProcessWowlAddBcPtrnReq*/
14286
14287/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014288 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014290
14291 @param pWDICtx: pointer to the WLAN DAL context
14292 pEventData: pointer to the event information structure
14293
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 @see
14295 @return Result of the function call
14296*/
14297WDI_Status
14298WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014299(
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 WDI_ControlBlockType* pWDICtx,
14301 WDI_EventInfoType* pEventData
14302)
14303{
14304 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
14305 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014306 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014307 wpt_uint16 usDataOffset = 0;
14308 wpt_uint16 usSendSize = 0;
14309 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014310 wpt_uint8 ucCurrentBSSSesIdx = 0;
14311 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14313
14314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014315 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014316 -------------------------------------------------------------------------*/
14317 if (( NULL == pEventData ) ||
14318 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
14319 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
14320 {
14321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014322 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014323 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014324 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014325 }
14326
14327 /*-----------------------------------------------------------------------
14328 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014329 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014330 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014331 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014332 sizeof(wowlDelBcPtrnReq),
14333 &pSendBuffer, &usDataOffset, &usSendSize))||
14334 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
14335 {
14336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014337 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
14339 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014340 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014341 }
14342
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014343 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14344 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
14345 &pBSSSes);
14346 if ( NULL == pBSSSes )
14347 {
14348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014349 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014350 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014351 }
14352
Jeff Johnsone7245742012-09-05 17:12:55 -070014353 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070014354 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014355
14356 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
14357
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 wpalMemoryCopy( pSendBuffer+usDataOffset,
14359 &wowlDelBcPtrnReq,
14360 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014361
14362 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014363 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014364
14365 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014366 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014367 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014368 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14369 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080014370
14371fail:
14372 // Release the message buffer so we don't leak
14373 wpalMemoryFree(pSendBuffer);
14374
14375failRequest:
14376 //WDA should have failure check to avoid the memory leak
14377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014378}/*WDI_ProcessWowlDelBcPtrnReq*/
14379
14380/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014381 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014382 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014383
14384 @param pWDICtx: pointer to the WLAN DAL context
14385 pEventData: pointer to the event information structure
14386
Jeff Johnson295189b2012-06-20 16:38:30 -070014387 @see
14388 @return Result of the function call
14389*/
14390WDI_Status
14391WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014392(
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 WDI_ControlBlockType* pWDICtx,
14394 WDI_EventInfoType* pEventData
14395)
14396{
14397 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
14398 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014399 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014400 wpt_uint16 usDataOffset = 0;
14401 wpt_uint16 usSendSize = 0;
14402 tHalWowlEnterParams wowlEnterReq;
14403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14404
14405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 -------------------------------------------------------------------------*/
14408 if (( NULL == pEventData ) ||
14409 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
14410 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
14411 {
14412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014413 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014415 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 }
14417
14418 /*-----------------------------------------------------------------------
14419 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014420 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014421 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014422 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 sizeof(wowlEnterReq),
14424 &pSendBuffer, &usDataOffset, &usSendSize))||
14425 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
14426 {
14427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014428 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
14430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 }
14433
Kumar Anand21a26022013-07-22 14:35:34 -070014434 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
14435
Jeff Johnsone7245742012-09-05 17:12:55 -070014436 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014437 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014438 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014439 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014440 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070014441 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070014442 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014443 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014444 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014446 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070014447 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070014448 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070014450 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
14452
14453#ifdef WLAN_WAKEUP_EVENTS
14454 wowlEnterReq.ucWoWEAPIDRequestEnable =
14455 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
14456
14457 wowlEnterReq.ucWoWEAPOL4WayEnable =
14458 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
14459
14460 wowlEnterReq.ucWowNetScanOffloadMatch =
14461 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
14462
14463 wowlEnterReq.ucWowGTKRekeyError =
14464 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
14465
14466 wowlEnterReq.ucWoWBSSConnLoss =
14467 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
14468#endif // WLAN_WAKEUP_EVENTS
14469
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014470 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
14471
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 wpalMemoryCopy(wowlEnterReq.magicPtrn,
14473 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
14474 sizeof(tSirMacAddr));
14475
Jeff Johnsone7245742012-09-05 17:12:55 -070014476 wpalMemoryCopy( pSendBuffer+usDataOffset,
14477 &wowlEnterReq,
14478 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014479
14480 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014482
14483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14487 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014488}/*WDI_ProcessWowlEnterReq*/
14489
14490/**
14491 @brief Process Wowl exit Request function (called when Main FSM
14492 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014493
14494 @param pWDICtx: pointer to the WLAN DAL context
14495 pEventData: pointer to the event information structure
14496
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 @see
14498 @return Result of the function call
14499*/
14500WDI_Status
14501WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014502(
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 WDI_ControlBlockType* pWDICtx,
14504 WDI_EventInfoType* pEventData
14505)
14506{
14507 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014508 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014509 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014510 wpt_uint16 usDataOffset = 0;
14511 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014512 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14514
14515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014516 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014517 -------------------------------------------------------------------------*/
14518 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014519 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014520 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
14521 {
14522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 }
14527
14528 /*-----------------------------------------------------------------------
14529 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014530 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014531 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014533 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070014534 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014535 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014536 {
14537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014538 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014539 pEventData, wdiWowlExitCb);
14540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014542 }
14543
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014544 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
14545
14546 wpalMemoryCopy( pSendBuffer+usDataOffset,
14547 &wowlExitparams,
14548 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014550 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014552 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14553 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014554}/*WDI_ProcessWowlExitReq*/
14555
14556/**
14557 @brief Process Configure Apps Cpu Wakeup State Request function
14558 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014559
14560 @param pWDICtx: pointer to the WLAN DAL context
14561 pEventData: pointer to the event information structure
14562
Jeff Johnson295189b2012-06-20 16:38:30 -070014563 @see
14564 @return Result of the function call
14565*/
14566WDI_Status
14567WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014568(
Jeff Johnson295189b2012-06-20 16:38:30 -070014569 WDI_ControlBlockType* pWDICtx,
14570 WDI_EventInfoType* pEventData
14571)
14572{
14573 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
14574 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014575 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 wpt_uint16 usDataOffset = 0;
14577 wpt_uint16 usSendSize = 0;
14578 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
14579 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14580
14581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014583 -------------------------------------------------------------------------*/
14584 if (( NULL == pEventData ) ||
14585 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
14586 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
14587 {
14588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014592 }
14593
14594 /*-----------------------------------------------------------------------
14595 Get message buffer
14596 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014597 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014598 sizeof(halCfgAppsCpuWakeupStateReqParams),
14599 &pSendBuffer, &usDataOffset, &usSendSize))||
14600 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
14601 {
14602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014603 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014604 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
14605 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014606 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014607 }
14608
Jeff Johnsone7245742012-09-05 17:12:55 -070014609 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
14611
Jeff Johnsone7245742012-09-05 17:12:55 -070014612 wpalMemoryCopy( pSendBuffer+usDataOffset,
14613 &halCfgAppsCpuWakeupStateReqParams,
14614 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014615
14616 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014617 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014618
14619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014621 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014622 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14623 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
14624 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014625}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
14626
14627#ifdef WLAN_FEATURE_VOWIFI_11R
14628/**
14629 @brief Process Aggregated Add TSpec Request function (called when Main FSM
14630 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014631
14632 @param pWDICtx: pointer to the WLAN DAL context
14633 pEventData: pointer to the event information structure
14634
Jeff Johnson295189b2012-06-20 16:38:30 -070014635 @see
14636 @return Result of the function call
14637*/
14638WDI_Status
14639WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014640(
Jeff Johnson295189b2012-06-20 16:38:30 -070014641 WDI_ControlBlockType* pWDICtx,
14642 WDI_EventInfoType* pEventData
14643)
14644{
14645 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
14646 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014647 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014648 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014649 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 wpt_uint16 usDataOffset = 0;
14651 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014652 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014653 wpt_macAddr macBSSID;
14654 tAggrAddTsReq halAggrAddTsReq;
14655 int i;
14656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14657
14658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014659 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014660 -------------------------------------------------------------------------*/
14661 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
14662 ( NULL == pEventData->pCBfnc ))
14663 {
14664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 }
14669 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
14670 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
14671 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
14672 /*-------------------------------------------------------------------------
14673 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 -------------------------------------------------------------------------*/
14676 wpalMutexAcquire(&pWDICtx->wptMutex);
14677
14678 /*------------------------------------------------------------------------
14679 Find the BSS for which the request is made and identify WDI session
14680 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014681 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14682 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014683 &macBSSID))
14684 {
14685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014686 "This station does not exist in the WDI Station Table %d",
14687 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070014688 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014690 }
14691
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14693 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14696 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14697 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014698
14699 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014700 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014701 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014702
Jeff Johnson295189b2012-06-20 16:38:30 -070014703 /*------------------------------------------------------------------------
14704 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014705 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014706 ------------------------------------------------------------------------*/
14707 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14708 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14710 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14711 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014712
Jeff Johnsone7245742012-09-05 17:12:55 -070014713 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 }
14717
14718 wpalMutexRelease(&pWDICtx->wptMutex);
14719 /*-----------------------------------------------------------------------
14720 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014721 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014722 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014723 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014724 sizeof(tAggrAddTsParams),
14725 &pSendBuffer, &usDataOffset, &usSendSize))||
14726 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14727 {
14728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080014729 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014730 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014733 }
14734
Jeff Johnsone7245742012-09-05 17:12:55 -070014735 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014736 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014737 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014738 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14739
14740 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14741 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014744 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014746 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014747 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14748 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014749 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014750 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14751 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014752 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014753 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14754 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014755 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14757 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014758 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14760 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014761 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014762 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14763 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014765 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14766 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14769 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014771 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014773 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014774
14775
14776 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014778 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014782 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014784 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014786 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014788 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014789 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014790 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014791 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014792 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014796 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014800 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014801 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014804 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14806 }
14807
Jeff Johnsone7245742012-09-05 17:12:55 -070014808 wpalMemoryCopy( pSendBuffer+usDataOffset,
14809 &halAggrAddTsReq,
14810 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014811
14812 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014813 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014814
14815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014816 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014820 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014821}/*WDI_ProcessAggrAddTSpecReq*/
14822#endif /* WLAN_FEATURE_VOWIFI_11R */
14823
14824/**
14825 @brief Process Shutdown Request function (called when Main FSM
14826 allows it)
14827
14828 @param pWDICtx: pointer to the WLAN DAL context
14829 pEventData: pointer to the event information structure
14830
14831 @see
14832 @return Result of the function call
14833*/
14834WDI_Status
14835WDI_ProcessShutdownReq
14836(
14837 WDI_ControlBlockType* pWDICtx,
14838 WDI_EventInfoType* pEventData
14839 )
14840{
14841 wpt_status wptStatus;
14842
14843
14844 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14845
14846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014847 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014848 -------------------------------------------------------------------------*/
14849 if ( NULL == pEventData )
14850 {
14851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 WDI_ASSERT(0);
14854 return WDI_STATUS_E_FAILURE;
14855 }
14856
14857 wpalMutexAcquire(&pWDICtx->wptMutex);
14858
14859
14860 gWDIInitialized = eWLAN_PAL_FALSE;
14861 /*! TO DO: stop the data services */
14862 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14863 {
14864 /*Stop the STA Table !UT- check this logic again
14865 It is safer to do it here than on the response - because a stop is imminent*/
14866 WDI_STATableStop(pWDICtx);
14867
14868 /* Stop Transport Driver, DXE */
14869 WDTS_Stop(pWDICtx);
14870 }
14871
14872 /*Clear all pending request*/
14873 WDI_ClearPendingRequests(pWDICtx);
14874 /* Close Data transport*/
14875 /* FTM mode does not open Data Path */
14876 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14877 {
14878 WDTS_Close(pWDICtx);
14879 }
14880 /*Close the STA Table !UT- check this logic again*/
14881 WDI_STATableClose(pWDICtx);
14882 /*close the PAL */
14883 wptStatus = wpalClose(pWDICtx->pPALContext);
14884 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14885 {
14886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14887 "Failed to wpal Close %d", wptStatus);
14888 WDI_ASSERT(0);
14889 }
14890
14891 /*Transition back to init state*/
14892 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14893
14894 wpalMutexRelease(&pWDICtx->wptMutex);
14895
14896 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014898
14899
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014901}/*WDI_ProcessShutdownReq*/
14902
14903/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014905========================================================================*/
14906
14907/**
14908 @brief Process Start Response function (called when a response
14909 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014910
14911 @param pWDICtx: pointer to the WLAN DAL context
14912 pEventData: pointer to the event information structure
14913
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 @see
14915 @return Result of the function call
14916*/
14917WDI_Status
14918WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014919(
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 WDI_ControlBlockType* pWDICtx,
14921 WDI_EventInfoType* pEventData
14922)
14923{
14924 WDI_StartRspParamsType wdiRspParams;
14925 WDI_StartRspCb wdiStartRspCb = NULL;
14926
14927 tHalMacStartRspParams* startRspParams;
14928
14929#ifndef HAL_SELF_STA_PER_BSS
14930 WDI_AddStaParams wdiAddSTAParam = {0};
14931#endif
14932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14933
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 -------------------------------------------------------------------------*/
14938 if (( NULL == pEventData ) ||
14939 ( NULL == pEventData->pEventData) ||
14940 ( NULL == wdiStartRspCb ))
14941 {
14942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014943 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 }
14947
14948 /*-------------------------------------------------------------------------
14949 Extract response and send it to UMAC
14950 -------------------------------------------------------------------------*/
14951 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14952 {
14953 // not enough data was received
14954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14955 "Invalid response length in Start Resp Expect %x Rcvd %x",
14956 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014959 }
14960
14961 /*-------------------------------------------------------------------------
14962 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014963 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014964 -------------------------------------------------------------------------*/
14965 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14966
14967 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14968 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14969 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14970 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14971 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14972 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14973 wdiRspParams.wlanReportedVersion.major =
14974 startRspParams->wcnssWlanVersion.major;
14975 wdiRspParams.wlanReportedVersion.minor =
14976 startRspParams->wcnssWlanVersion.minor;
14977 wdiRspParams.wlanReportedVersion.version =
14978 startRspParams->wcnssWlanVersion.version;
14979 wdiRspParams.wlanReportedVersion.revision =
14980 startRspParams->wcnssWlanVersion.revision;
14981 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14982 startRspParams->wcnssCrmVersionString,
14983 sizeof(wdiRspParams.wcnssSoftwareVersion));
14984 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14985 startRspParams->wcnssWlanVersionString,
14986 sizeof(wdiRspParams.wcnssHardwareVersion));
14987 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14988
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014989 /*Save the HAL Version*/
14990 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14991
Jeff Johnson295189b2012-06-20 16:38:30 -070014992 wpalMutexAcquire(&pWDICtx->wptMutex);
14993 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14994 {
14995 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14996
14997 /*Cache the start response for further use*/
14998 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014999 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070015000 sizeof(pWDICtx->wdiCachedStartRspParams));
15001
15002 }
15003 else
15004 {
15005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15006 "Failed to start device with status %s(%d)",
15007 WDI_getHALStatusMsgString(startRspParams->status),
15008 startRspParams->status);
15009
15010 /*Set the expected state transition to stopped - because the start has
15011 failed*/
15012 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15013
15014 wpalMutexRelease(&pWDICtx->wptMutex);
15015
15016 /*Notify UMAC*/
15017 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015018
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
15020
15021 /*Although the response is an error - it was processed by our function
15022 so as far as the caller is concerned this is a succesful reponse processing*/
15023 return WDI_STATUS_SUCCESS;
15024 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015025
Jeff Johnson295189b2012-06-20 16:38:30 -070015026 wpalMutexRelease(&pWDICtx->wptMutex);
15027
15028 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
15029 {
15030 /* FTM mode does not need to execute below */
15031 /* Notify UMAC */
15032 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15033 return WDI_STATUS_SUCCESS;
15034 }
15035
15036 /* START the Data transport */
15037 WDTS_startTransport(pWDICtx);
15038
15039 /*Start the STA Table !- check this logic again*/
15040 WDI_STATableStart(pWDICtx);
15041
15042#ifndef HAL_SELF_STA_PER_BSS
15043 /* Store the Self STA Index */
15044 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
15045
15046 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
15047 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
15048 WDI_MAC_ADDR_LEN);
15049
15050 /* At this point add the self-STA */
15051
15052 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
15053 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
15054 /*! TO DO: wdiAddSTAParam.dpuSig */
15055 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15056 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15057 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15058
15059 //all DPU indices are the same for self STA
15060 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
15061 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070015062 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
15064 WDI_MAC_ADDR_LEN);
15065 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
15066 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
15067
15068 /* Note: Since we don't get an explicit config STA request for self STA, we
15069 add the self STA upon receiving the Start response message. But the
15070 self STA entry in the table is deleted when WDI gets an explicit delete STA
15071 request */
15072 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15073#endif
15074
15075 /*Notify UMAC*/
15076 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
15077
Jeff Johnsone7245742012-09-05 17:12:55 -070015078 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015079}/*WDI_ProcessStartRsp*/
15080
15081
15082/**
15083 @brief Process Stop Response function (called when a response
15084 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015085
15086 @param pWDICtx: pointer to the WLAN DAL context
15087 pEventData: pointer to the event information structure
15088
Jeff Johnson295189b2012-06-20 16:38:30 -070015089 @see
15090 @return Result of the function call
15091*/
15092WDI_Status
15093WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015094(
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 WDI_ControlBlockType* pWDICtx,
15096 WDI_EventInfoType* pEventData
15097)
15098{
15099 WDI_Status wdiStatus;
15100 WDI_StopRspCb wdiStopRspCb = NULL;
15101
Jeff Johnsone7245742012-09-05 17:12:55 -070015102 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15104
Jeff Johnsone7245742012-09-05 17:12:55 -070015105 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070015106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015108 -------------------------------------------------------------------------*/
15109 if (( NULL == pEventData ) ||
15110 ( NULL == pEventData->pEventData) ||
15111 ( NULL == wdiStopRspCb ))
15112 {
15113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015117 }
15118
15119 /*-------------------------------------------------------------------------
15120 Extract response and send it to UMAC
15121 -------------------------------------------------------------------------*/
15122 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
15123 {
15124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080015125 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070015126 pEventData->uEventDataSize);
15127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015129 }
15130
15131 /*-------------------------------------------------------------------------
15132 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015133 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
15136 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015137 sizeof(halMacStopRspMsg.stopRspParams));
15138
Jeff Johnsone7245742012-09-05 17:12:55 -070015139 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015140
15141 wpalMutexAcquire(&pWDICtx->wptMutex);
15142
15143 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015144 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070015145 --------------------------------------------------------------------------*/
15146 if ( WDI_STATUS_SUCCESS != wdiStatus )
15147 {
15148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15149 "Failed to stop the device with status %s (%d)",
15150 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
15151 halMacStopRspMsg.stopRspParams.status);
15152
Jeff Johnsone7245742012-09-05 17:12:55 -070015153 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15154
Jeff Johnson295189b2012-06-20 16:38:30 -070015155 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015157 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015158
Jeff Johnson295189b2012-06-20 16:38:30 -070015159 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
15160
15161 /*Transition now as WDI may get preempted imediately after it sends
15162 up the Stop Response and it will not get to process the state transition
15163 from Main Rsp function*/
15164 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
15165 wpalMutexRelease(&pWDICtx->wptMutex);
15166
15167 /*! TO DO: - STOP the Data transport */
15168
15169 /*Notify UMAC*/
15170 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15171
Jeff Johnsone7245742012-09-05 17:12:55 -070015172 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015173}/*WDI_ProcessStopRsp*/
15174
15175/**
15176 @brief Process Close Rsp function (called when a response
15177 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015178
15179 @param pWDICtx: pointer to the WLAN DAL context
15180 pEventData: pointer to the event information structure
15181
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 @see
15183 @return Result of the function call
15184*/
15185WDI_Status
15186WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015187(
Jeff Johnson295189b2012-06-20 16:38:30 -070015188 WDI_ControlBlockType* pWDICtx,
15189 WDI_EventInfoType* pEventData
15190)
15191{
15192 /*There is no close response comming from HAL - function just kept for
15193 simmetry */
15194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015195 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015196}/*WDI_ProcessCloseRsp*/
15197
15198
15199/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015200 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070015201============================================================================*/
15202
15203/**
15204 @brief Process Init Scan Rsp function (called when a response
15205 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015206
15207 @param pWDICtx: pointer to the WLAN DAL context
15208 pEventData: pointer to the event information structure
15209
Jeff Johnson295189b2012-06-20 16:38:30 -070015210 @see
15211 @return Result of the function call
15212*/
15213WDI_Status
15214WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015215(
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 WDI_ControlBlockType* pWDICtx,
15217 WDI_EventInfoType* pEventData
15218)
15219{
15220 WDI_Status wdiStatus;
15221 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015222 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015223 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15225
15226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015227 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015228 -------------------------------------------------------------------------*/
15229 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15230 ( NULL == pEventData->pEventData))
15231 {
15232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 }
15237
15238 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
15239 if( NULL == wdiInitScanRspCb)
15240 {
15241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015242 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015245 }
15246
15247 /*-------------------------------------------------------------------------
15248 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
15252 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015253 sizeof(halInitScanRspMsg.initScanRspParams));
15254
Jeff Johnsone7245742012-09-05 17:12:55 -070015255 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015256
15257 if ( pWDICtx->bInBmps )
15258 {
15259 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080015260 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
15261 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
15263 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
15264 WDI_ASSERT(0);
15265 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015266 }
15267
15268 /*Notify UMAC*/
15269 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15270
Jeff Johnsone7245742012-09-05 17:12:55 -070015271 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015272}/*WDI_ProcessInitScanRsp*/
15273
15274
15275/**
15276 @brief Process Start Scan Rsp function (called when a response
15277 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015278
15279 @param pWDICtx: pointer to the WLAN DAL context
15280 pEventData: pointer to the event information structure
15281
Jeff Johnson295189b2012-06-20 16:38:30 -070015282 @see
15283 @return Result of the function call
15284*/
15285WDI_Status
15286WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015287(
Jeff Johnson295189b2012-06-20 16:38:30 -070015288 WDI_ControlBlockType* pWDICtx,
15289 WDI_EventInfoType* pEventData
15290)
15291{
15292 WDI_StartScanRspParamsType wdiStartScanParams;
15293 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015294
15295 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15297
15298 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 -------------------------------------------------------------------------*/
15301 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15302 ( NULL == pEventData->pEventData))
15303 {
15304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015308 }
15309
15310 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
15311 if( NULL == wdiStartScanRspCb)
15312 {
15313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015314 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015317 }
15318
15319 /*-------------------------------------------------------------------------
15320 Extract response and send it to UMAC
15321 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015322 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
15323 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015324 sizeof(halStartScanRspMsg.startScanRspParams));
15325
15326 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15327 halStartScanRspMsg.startScanRspParams.status);
15328#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015329 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015330 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070015331 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 halStartScanRspMsg.startScanRspParams.startTSF,
15333 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070015334#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070015335
15336 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
15337 {
15338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15339 "Start scan failed with status %s (%d)",
15340 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
15341 halStartScanRspMsg.startScanRspParams.status);
15342 /* send the status to UMAC, don't return from here*/
15343 }
15344
15345 /*Notify UMAC*/
15346 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
15347
Jeff Johnsone7245742012-09-05 17:12:55 -070015348 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015349
15350}/*WDI_ProcessStartScanRsp*/
15351
15352
15353/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015354 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015355 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015356
15357 @param pWDICtx: pointer to the WLAN DAL context
15358 pEventData: pointer to the event information structure
15359
Jeff Johnson295189b2012-06-20 16:38:30 -070015360 @see
15361 @return Result of the function call
15362*/
15363WDI_Status
15364WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015365(
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 WDI_ControlBlockType* pWDICtx,
15367 WDI_EventInfoType* pEventData
15368)
15369{
15370 WDI_Status wdiStatus;
15371 tHalEndScanRspMsg halEndScanRspMsg;
15372 WDI_EndScanRspCb wdiEndScanRspCb;
15373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15374
15375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015377 -------------------------------------------------------------------------*/
15378 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15379 ( NULL == pEventData->pEventData))
15380 {
15381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015385 }
15386
15387 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
15388
15389 /*-------------------------------------------------------------------------
15390 Extract response and send it to UMAC
15391 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015392 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
15393 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015394 sizeof(halEndScanRspMsg.endScanRspParams));
15395
Jeff Johnsone7245742012-09-05 17:12:55 -070015396 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015397
15398 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
15399 {
15400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15401 "End Scan failed with status %s (%d )",
15402 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
15403 halEndScanRspMsg.endScanRspParams.status);
15404 /* send the status to UMAC, don't return from here*/
15405 }
15406
15407 /*Notify UMAC*/
15408 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15409
Jeff Johnsone7245742012-09-05 17:12:55 -070015410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015411}/*WDI_ProcessEndScanRsp*/
15412
15413
15414/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015415 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015417
15418 @param pWDICtx: pointer to the WLAN DAL context
15419 pEventData: pointer to the event information structure
15420
Jeff Johnson295189b2012-06-20 16:38:30 -070015421 @see
15422 @return Result of the function call
15423*/
15424WDI_Status
15425WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015426(
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 WDI_ControlBlockType* pWDICtx,
15428 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070015429)
Jeff Johnson295189b2012-06-20 16:38:30 -070015430{
15431 WDI_Status wdiStatus;
15432 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015433
15434 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15436
15437 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015438 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 -------------------------------------------------------------------------*/
15440 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15441 ( NULL == pEventData->pEventData))
15442 {
15443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015447 }
15448
15449 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
15450
15451 /*-------------------------------------------------------------------------
15452 Extract response and send it to UMAC
15453 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015454 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
15455 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015456 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
15457
Jeff Johnsone7245742012-09-05 17:12:55 -070015458 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015459
15460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070015461 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070015462 halFinishScanRspMsg.finishScanRspParams.status);
15463
15464 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
15465 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
15466 {
15467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15468 "Finish Scan failed with status %s (%d)",
15469 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
15470 halFinishScanRspMsg.finishScanRspParams.status);
15471 /* send the status to UMAC, don't return from here*/
15472 }
15473
15474 /*Notify UMAC*/
15475 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15476
Jeff Johnsone7245742012-09-05 17:12:55 -070015477 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015478}/*WDI_ProcessFinishScanRsp*/
15479
15480/**
15481 @brief Process Join Response function (called when a response
15482 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015483
15484 @param pWDICtx: pointer to the WLAN DAL context
15485 pEventData: pointer to the event information structure
15486
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 @see
15488 @return Result of the function call
15489*/
15490WDI_Status
15491WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015492(
Jeff Johnson295189b2012-06-20 16:38:30 -070015493 WDI_ControlBlockType* pWDICtx,
15494 WDI_EventInfoType* pEventData
15495)
15496{
15497 WDI_Status wdiStatus;
15498 WDI_JoinRspCb wdiJoinRspCb;
15499 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015500
15501 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15503
15504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015505 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015506 -------------------------------------------------------------------------*/
15507 if (( NULL == pWDICtx ) ||
15508 ( NULL == pWDICtx->pfncRspCB ) ||
15509 ( NULL == pEventData ) ||
15510 ( NULL == pEventData->pEventData))
15511 {
15512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015513 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015515 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015516 }
15517
15518 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
15519
15520 /*-------------------------------------------------------------------------
15521 Extract response and send it to UMAC
15522 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015523 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
15524 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 sizeof(halJoinRspMsg.joinRspParams));
15526
Jeff Johnsone7245742012-09-05 17:12:55 -070015527 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015528
15529 wpalMutexAcquire(&pWDICtx->wptMutex);
15530
15531 /*-----------------------------------------------------------------------
15532 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015533 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015534 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015535 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15537 {
15538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
15540 "association no longer in progress %d - mysterious HAL response",
15541 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070015542
Jeff Johnsone7245742012-09-05 17:12:55 -070015543 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015545 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015546 }
15547
15548 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
15549
15550 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015551 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070015552 -----------------------------------------------------------------------*/
15553 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15554 {
15555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15556 "Join only allowed in Joining state - failure state is %d "
15557 "strange HAL response", pBSSSes->wdiAssocState);
15558
Jeff Johnsone7245742012-09-05 17:12:55 -070015559 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15560
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015562 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015563 }
15564
15565
15566 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015567 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015568 -----------------------------------------------------------------------*/
15569 if ( WDI_STATUS_SUCCESS != wdiStatus )
15570 {
15571 /*Association was failed by HAL - remove session*/
15572 WDI_DeleteSession(pWDICtx, pBSSSes);
15573
15574 /*Association no longer in progress */
15575 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15576
15577 /*Association no longer in progress - prepare pending assoc for processing*/
15578 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070015579
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 }
15581 else
15582 {
15583 /*Transition to state Joining - this may be redundant as we are supposed
15584 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015585 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015586 }
15587
15588 wpalMutexRelease(&pWDICtx->wptMutex);
15589
15590 /*Notify UMAC*/
15591 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15592
Jeff Johnsone7245742012-09-05 17:12:55 -070015593 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015594}/*WDI_ProcessJoinRsp*/
15595
15596
15597/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015598 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015600
15601 @param pWDICtx: pointer to the WLAN DAL context
15602 pEventData: pointer to the event information structure
15603
Jeff Johnson295189b2012-06-20 16:38:30 -070015604 @see
15605 @return Result of the function call
15606*/
15607WDI_Status
15608WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015609(
Jeff Johnson295189b2012-06-20 16:38:30 -070015610 WDI_ControlBlockType* pWDICtx,
15611 WDI_EventInfoType* pEventData
15612)
15613{
15614 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
15615 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015617 WDI_BSSSessionType* pBSSSes = NULL;
15618
Jeff Johnsone7245742012-09-05 17:12:55 -070015619 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015620 WDI_AddStaParams wdiBcastAddSTAParam = {0};
15621 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070015622
Jeff Johnson295189b2012-06-20 16:38:30 -070015623 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15624
15625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015626 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 -------------------------------------------------------------------------*/
15628 if (( NULL == pEventData ) ||
15629 ( NULL == pEventData->pEventData))
15630 {
15631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015635 }
15636
15637 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
15638
15639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015640 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015641 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
15643 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 sizeof(halConfigBssRspMsg.configBssRspParams));
15645
15646 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15647 halConfigBssRspMsg.configBssRspParams.status);
15648 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
15649 {
Jeff Johnsone7245742012-09-05 17:12:55 -070015650 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
15652 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015653
Jeff Johnson295189b2012-06-20 16:38:30 -070015654 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015655
15656 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015658
15659 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015661
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015663
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070015665 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070015666 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
15667 #endif
15668 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
15669 halConfigBssRspMsg.configBssRspParams.staMac,
15670 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070015671
Jeff Johnson295189b2012-06-20 16:38:30 -070015672 wpalMutexAcquire(&pWDICtx->wptMutex);
15673 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015674 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015675 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015676 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15677 wdiConfigBSSParams.macBSSID,
15678 &pBSSSes);
15679
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 /*-----------------------------------------------------------------------
15681 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015682 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015683 -----------------------------------------------------------------------*/
15684 if ( NULL == pBSSSes )
15685 {
15686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15687 "Association sequence for this BSS does not yet exist "
15688 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015689
15690 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15691
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015695
Jeff Johnson295189b2012-06-20 16:38:30 -070015696 /*Save data for this BSS*/
15697 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15698 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015699 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015700 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015701 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015702 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015703 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015705 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015706 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015707 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015708 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15709 pBSSSes->bcastStaIdx =
15710 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015711
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015713
Jeff Johnson295189b2012-06-20 16:38:30 -070015714 /*-------------------------------------------------------------------------
15715 Add Peer STA
15716 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015717 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15719 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015720
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015722 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015724 wdiAddSTAParam.ucHTCapable =
15725 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15726 wdiAddSTAParam.ucStaType =
15727 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15728
Jeff Johnson295189b2012-06-20 16:38:30 -070015729 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015730 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15731 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015732 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015733
15734 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15735 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15736 WDI_MAC_ADDR_LEN);
15737
Jeff Johnson295189b2012-06-20 16:38:30 -070015738 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015741 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015742 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015744 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015747 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015748 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015749 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015750 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015751
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15753 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015754
Jeff Johnson295189b2012-06-20 16:38:30 -070015755 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15756 /*-------------------------------------------------------------------------
15757 Add Broadcast STA only in AP mode
15758 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015759 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshia97bf5b2013-07-08 15:48:47 -070015760 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015761 {
15762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15763 "Add BCAST STA to table for index: %d",
15764 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015765
15766 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015767 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015768
Jeff Johnson295189b2012-06-20 16:38:30 -070015769 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15770 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15771 }
15772 wpalMutexRelease(&pWDICtx->wptMutex);
15773 }
15774 else
15775 {
15776 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15777 "Config BSS RSP failed with status : %s(%d)",
15778 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 halConfigBssRspMsg.configBssRspParams.status);
15781
Jeff Johnsone7245742012-09-05 17:12:55 -070015782
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 /*Association was failed by HAL - remove session*/
15784 WDI_DeleteSession(pWDICtx, pBSSSes);
15785
15786 /*Association no longer in progress */
15787 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15788
15789 /*Association no longer in progress - prepare pending assoc for processing*/
15790 WDI_DequeueAssocRequest(pWDICtx);
15791
15792 }
15793
15794 /*Notify UMAC*/
15795 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15796
Jeff Johnsone7245742012-09-05 17:12:55 -070015797 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015798}/*WDI_ProcessConfigBSSRsp*/
15799
15800
15801/**
15802 @brief Process Del BSS Response function (called when a response
15803 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015804
15805 @param pWDICtx: pointer to the WLAN DAL context
15806 pEventData: pointer to the event information structure
15807
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 @see
15809 @return Result of the function call
15810*/
15811WDI_Status
15812WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015813(
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 WDI_ControlBlockType* pWDICtx,
15815 WDI_EventInfoType* pEventData
15816)
15817{
15818 WDI_DelBSSRspParamsType wdiDelBSSParams;
15819 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015820 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015821 WDI_BSSSessionType* pBSSSes = NULL;
15822
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15825
15826 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015827 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015828 -------------------------------------------------------------------------*/
15829 if (( NULL == pEventData ) ||
15830 ( NULL == pEventData->pEventData))
15831 {
15832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015833 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015835 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 }
15837
15838 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15839
15840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015841 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15844 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 sizeof(halDelBssRspMsg.deleteBssRspParams));
15846
15847
15848 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015849 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015850
15851 wpalMutexAcquire(&pWDICtx->wptMutex);
15852
15853 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015854 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015855 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015856 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15857 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15858 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015859
15860 /*-----------------------------------------------------------------------
15861 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015862 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 -----------------------------------------------------------------------*/
15864 if ( NULL == pBSSSes )
15865 {
15866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15867 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015868 "association no longer in progress - mysterious HAL response");
15869
15870 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15871
15872 wpalMutexRelease(&pWDICtx->wptMutex);
15873 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015875
15876 /*Extract BSSID for the response to UMAC*/
15877 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15878 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15879
15880 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15881
15882 /*-----------------------------------------------------------------------
15883 The current session will be deleted
15884 -----------------------------------------------------------------------*/
15885 WDI_DeleteSession(pWDICtx, pBSSSes);
15886
15887
15888 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni06a80512013-10-08 22:41:42 -070015889 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
15890 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015892 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015893 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015894
15895 /* Delete the STA's in this BSS */
15896 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15897
Jeff Johnson295189b2012-06-20 16:38:30 -070015898 wpalMutexRelease(&pWDICtx->wptMutex);
15899
15900 /*Notify UMAC*/
15901 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15902
Jeff Johnsone7245742012-09-05 17:12:55 -070015903 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015904}/*WDI_ProcessDelBSSRsp*/
15905
15906/**
15907 @brief Process Post Assoc Rsp function (called when a response
15908 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015909
15910 @param pWDICtx: pointer to the WLAN DAL context
15911 pEventData: pointer to the event information structure
15912
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 @see
15914 @return Result of the function call
15915*/
15916WDI_Status
15917WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015918(
Jeff Johnson295189b2012-06-20 16:38:30 -070015919 WDI_ControlBlockType* pWDICtx,
15920 WDI_EventInfoType* pEventData
15921)
15922{
15923 WDI_PostAssocRspParamsType wdiPostAssocParams;
15924 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015925 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015926 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015927 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15929
15930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 -------------------------------------------------------------------------*/
15933 if (( NULL == pEventData ) ||
15934 ( NULL == pEventData->pEventData))
15935 {
15936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 }
15941
15942 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15943
15944 /*-------------------------------------------------------------------------
15945 Extract response and send it to UMAC
15946 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015947 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15948 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 sizeof(halPostAssocRspMsg.postAssocRspParams));
15950
15951 /*Extract the Post Assoc STA Params */
15952
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015957 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015958 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15959
Jeff Johnsone7245742012-09-05 17:12:55 -070015960 wdiPostAssocParams.wdiStatus =
15961 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015962
15963 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15964 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15966 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015967 WDI_MAC_ADDR_LEN);
15968
15969 /* Extract Post Assoc BSS Params */
15970
Jeff Johnsone7245742012-09-05 17:12:55 -070015971 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15972 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15973 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015974
15975 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15976 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15979 .macSTA, WDI_MAC_ADDR_LEN);
15980
Jeff Johnsone7245742012-09-05 17:12:55 -070015981 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015982 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15983
Jeff Johnsone7245742012-09-05 17:12:55 -070015984 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015985 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15986
15987 wdiPostAssocParams.bssParams.ucBSSIdx =
15988 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15989
Jeff Johnsone7245742012-09-05 17:12:55 -070015990 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015991 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15992
15993 wpalMutexAcquire(&pWDICtx->wptMutex);
15994
15995 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015996 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015997 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015998 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070016000 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016001
16002 /*-----------------------------------------------------------------------
16003 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016004 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016005 -----------------------------------------------------------------------*/
16006 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070016007 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16009 {
16010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16011 "Association sequence for this BSS does not yet exist or "
16012 "association no longer in progress - mysterious HAL response");
16013
Jeff Johnsone7245742012-09-05 17:12:55 -070016014 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16015
Jeff Johnson295189b2012-06-20 16:38:30 -070016016 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016017 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016018 }
16019
16020 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016021 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070016022 -----------------------------------------------------------------------*/
16023 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16024 {
16025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16026 "Post Assoc not allowed before JOIN - failing request "
16027 "strange HAL response");
16028
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16030
Jeff Johnson295189b2012-06-20 16:38:30 -070016031 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016032 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 }
16034
16035 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016036 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016037 -----------------------------------------------------------------------*/
16038 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
16039 {
16040 /*Association was failed by HAL - remove session*/
16041 WDI_DeleteSession(pWDICtx, pBSSSes);
16042 }
16043 else
16044 {
16045 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016046 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016047
16048 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016049 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016050 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016051 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016052 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070016053 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016054 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016055 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016056 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
16057
Jeff Johnsone7245742012-09-05 17:12:55 -070016058 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016059 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
16060 }
16061
16062 /*Association no longer in progress */
16063 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16064
16065 /*Association no longer in progress - prepare pending assoc for processing*/
16066 WDI_DequeueAssocRequest(pWDICtx);
16067
16068 wpalMutexRelease(&pWDICtx->wptMutex);
16069
16070 /*Notify UMAC*/
16071 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
16072
Jeff Johnsone7245742012-09-05 17:12:55 -070016073 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016074}/*WDI_ProcessPostAssocRsp*/
16075
16076/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016077 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016079
16080 @param pWDICtx: pointer to the WLAN DAL context
16081 pEventData: pointer to the event information structure
16082
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 @see
16084 @return Result of the function call
16085*/
16086WDI_Status
16087WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016088(
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 WDI_ControlBlockType* pWDICtx,
16090 WDI_EventInfoType* pEventData
16091)
16092{
16093 WDI_DelSTARspParamsType wdiDelSTARsp;
16094 WDI_DelSTARspCb wdiDelSTARspCb;
16095 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16098
16099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016101 -------------------------------------------------------------------------*/
16102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16103 ( NULL == pEventData->pEventData))
16104 {
16105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 }
16110
16111 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
16112
16113 /*-------------------------------------------------------------------------
16114 Extract response and send it to UMAC
16115 -------------------------------------------------------------------------*/
16116 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070016117 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 sizeof(halDelStaRspMsg.delStaRspParams));
16119
16120 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 wdiDelSTARsp.wdiStatus =
16122 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016123
16124 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
16125
16126 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
16127 if(staType == WDI_STA_ENTRY_SELF)
16128 {
16129 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16130
16131 /* At this point add the self-STA */
16132
16133 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16134 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16135 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16136
16137#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
16138#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
16139
16140 //all DPU indices are the same for self STA
16141 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16142 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16143 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
16144 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16145 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
16146 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070016147
16148 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070016149 }
16150 else
16151 {
16152 //Delete the station in the table
16153 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
16154 }
16155
16156 /*Notify UMAC*/
16157 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
16158
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016160}/*WDI_ProcessDelSTARsp*/
16161
16162
16163/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016164 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016165==========================================================================*/
16166
16167/**
16168 @brief Process Set BSS Key Rsp function (called when a response
16169 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016170
16171 @param pWDICtx: pointer to the WLAN DAL context
16172 pEventData: pointer to the event information structure
16173
Jeff Johnson295189b2012-06-20 16:38:30 -070016174 @see
16175 @return Result of the function call
16176*/
16177WDI_Status
16178WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016179(
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 WDI_ControlBlockType* pWDICtx,
16181 WDI_EventInfoType* pEventData
16182)
16183{
16184 WDI_Status wdiStatus;
16185 eHalStatus halStatus;
16186 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
16187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16188
16189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 -------------------------------------------------------------------------*/
16192 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16193 ( NULL == pEventData->pEventData))
16194 {
16195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016196 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016199 }
16200
16201 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
16202
16203 /*-------------------------------------------------------------------------
16204 Extract response and send it to UMAC
16205 -------------------------------------------------------------------------*/
16206 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016207 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016208
16209 if ( eHAL_STATUS_SUCCESS != halStatus )
16210 {
16211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16212 "Set BSS Key failed with status %s (%d)",
16213 WDI_getHALStatusMsgString(halStatus),
16214 halStatus);
16215 /* send the status to UMAC, don't return from here*/
16216 }
16217
16218 /*Notify UMAC*/
16219 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16220
Jeff Johnsone7245742012-09-05 17:12:55 -070016221 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016222}/*WDI_ProcessSetBssKeyRsp*/
16223
16224/**
16225 @brief Process Remove BSS Key Rsp function (called when a response
16226 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016227
16228 @param pWDICtx: pointer to the WLAN DAL context
16229 pEventData: pointer to the event information structure
16230
Jeff Johnson295189b2012-06-20 16:38:30 -070016231 @see
16232 @return Result of the function call
16233*/
16234WDI_Status
16235WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016236(
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 WDI_ControlBlockType* pWDICtx,
16238 WDI_EventInfoType* pEventData
16239)
16240{
16241 WDI_Status wdiStatus;
16242 eHalStatus halStatus;
16243 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
16244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16245
16246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016248 -------------------------------------------------------------------------*/
16249 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16250 ( NULL == pEventData->pEventData))
16251 {
16252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016253 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016254 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016255 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016256 }
16257
16258 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
16259
16260 /*-------------------------------------------------------------------------
16261 Extract response and send it to UMAC
16262 -------------------------------------------------------------------------*/
16263 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016265
16266 if ( eHAL_STATUS_SUCCESS != halStatus )
16267 {
16268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16269 "Remove BSS Key failed with status %s (%d )",
16270 WDI_getHALStatusMsgString(halStatus),
16271 halStatus);
16272 /* send the status to UMAC, don't return from here*/
16273 }
16274
16275 /*Notify UMAC*/
16276 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16277
Jeff Johnsone7245742012-09-05 17:12:55 -070016278 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016279}/*WDI_ProcessSetBssKeyRsp*/
16280
16281
16282/**
16283 @brief Process Set STA Key Rsp function (called when a response
16284 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016285
16286 @param pWDICtx: pointer to the WLAN DAL context
16287 pEventData: pointer to the event information structure
16288
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 @see
16290 @return Result of the function call
16291*/
16292WDI_Status
16293WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016294(
Jeff Johnson295189b2012-06-20 16:38:30 -070016295 WDI_ControlBlockType* pWDICtx,
16296 WDI_EventInfoType* pEventData
16297)
16298{
16299 WDI_Status wdiStatus;
16300 eHalStatus halStatus;
16301 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
16302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16303
16304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016306 -------------------------------------------------------------------------*/
16307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16308 ( NULL == pEventData->pEventData))
16309 {
16310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016314 }
16315
16316 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16317
16318 /*-------------------------------------------------------------------------
16319 Extract response and send it to UMAC
16320 -------------------------------------------------------------------------*/
16321 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016322 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016323
16324 if ( eHAL_STATUS_SUCCESS != halStatus )
16325 {
16326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16327 "Set STA Key failed with status %s (%d)",
16328 WDI_getHALStatusMsgString(halStatus),
16329 halStatus);
16330 /* send the status to UMAC, don't return from here*/
16331 }
16332
16333 /*Notify UMAC*/
16334 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16335
Jeff Johnsone7245742012-09-05 17:12:55 -070016336 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016337}/*WDI_ProcessSetSTAKeyRsp*/
16338
16339/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016340 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016341 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016342
16343 @param pWDICtx: pointer to the WLAN DAL context
16344 pEventData: pointer to the event information structure
16345
Jeff Johnson295189b2012-06-20 16:38:30 -070016346 @see
16347 @return Result of the function call
16348*/
16349WDI_Status
16350WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016351(
Jeff Johnson295189b2012-06-20 16:38:30 -070016352 WDI_ControlBlockType* pWDICtx,
16353 WDI_EventInfoType* pEventData
16354)
16355{
16356 WDI_Status wdiStatus;
16357 eHalStatus halStatus;
16358 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
16359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16360
16361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016363 -------------------------------------------------------------------------*/
16364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16365 ( NULL == pEventData->pEventData))
16366 {
16367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016371 }
16372
16373 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16374
16375 /*-------------------------------------------------------------------------
16376 Extract response and send it to UMAC
16377 -------------------------------------------------------------------------*/
16378 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016379 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016380
16381 if ( eHAL_STATUS_SUCCESS != halStatus )
16382 {
16383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16384 "Remove STA Key failed with status %s (%d)",
16385 WDI_getHALStatusMsgString(halStatus),
16386 halStatus);
16387 /* send the status to UMAC, don't return from here*/
16388 }
16389
16390 /*Notify UMAC*/
16391 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16392
Jeff Johnsone7245742012-09-05 17:12:55 -070016393 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016394}/*WDI_ProcessRemoveStaKeyRsp*/
16395
16396/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016398 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016399
16400 @param pWDICtx: pointer to the WLAN DAL context
16401 pEventData: pointer to the event information structure
16402
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 @see
16404 @return Result of the function call
16405*/
16406WDI_Status
16407WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016408(
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 WDI_ControlBlockType* pWDICtx,
16410 WDI_EventInfoType* pEventData
16411)
16412{
16413 WDI_Status wdiStatus;
16414 eHalStatus halStatus;
16415 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
16416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16417
16418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016420 -------------------------------------------------------------------------*/
16421 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16422 ( NULL == pEventData->pEventData))
16423 {
16424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016428 }
16429
16430 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
16431
16432 /*-------------------------------------------------------------------------
16433 Extract response and send it to UMAC
16434 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016435 wpalMemoryCopy( &halStatus,
16436 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016437 sizeof(halStatus));
16438
Jeff Johnsone7245742012-09-05 17:12:55 -070016439 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016440
16441 if ( eHAL_STATUS_SUCCESS != halStatus )
16442 {
16443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16444 "Set STA Key failed with status %s (%d)",
16445 WDI_getHALStatusMsgString(halStatus),
16446 halStatus);
16447 /* send the status to UMAC, don't return from here*/
16448 }
16449
16450 /*Notify UMAC*/
16451 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16452
Jeff Johnsone7245742012-09-05 17:12:55 -070016453 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016454}/*WDI_ProcessSetSTABcastKeyRsp*/
16455
16456/**
16457 @brief Process Remove STA Bcast Key Rsp function (called when a
16458 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016459
16460 @param pWDICtx: pointer to the WLAN DAL context
16461 pEventData: pointer to the event information structure
16462
Jeff Johnson295189b2012-06-20 16:38:30 -070016463 @see
16464 @return Result of the function call
16465*/
16466WDI_Status
16467WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016468(
Jeff Johnson295189b2012-06-20 16:38:30 -070016469 WDI_ControlBlockType* pWDICtx,
16470 WDI_EventInfoType* pEventData
16471)
16472{
16473 WDI_Status wdiStatus;
16474 eHalStatus halStatus;
16475 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
16476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16477
16478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016479 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016480 -------------------------------------------------------------------------*/
16481 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16482 ( NULL == pEventData->pEventData))
16483 {
16484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016485 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016488 }
16489
16490 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
16491
16492 /*-------------------------------------------------------------------------
16493 Extract response and send it to UMAC
16494 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016495 wpalMemoryCopy( &halStatus,
16496 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016497 sizeof(halStatus));
16498
Jeff Johnsone7245742012-09-05 17:12:55 -070016499 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016500
16501 if ( eHAL_STATUS_SUCCESS != halStatus )
16502 {
16503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16504 "Remove STA Key failed with status %s (%d)",
16505 WDI_getHALStatusMsgString(halStatus),
16506 halStatus);
16507 /* send the status to UMAC, don't return from here*/
16508 }
16509
16510 /*Notify UMAC*/
16511 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16512
Jeff Johnsone7245742012-09-05 17:12:55 -070016513 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016514}/*WDI_ProcessRemoveStaBcastKeyRsp*/
16515
16516
16517/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016518 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070016519==========================================================================*/
16520
16521/**
16522 @brief Process Add TSpec Rsp function (called when a response
16523 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016524
16525 @param pWDICtx: pointer to the WLAN DAL context
16526 pEventData: pointer to the event information structure
16527
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 @see
16529 @return Result of the function call
16530*/
16531WDI_Status
16532WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016533(
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 WDI_ControlBlockType* pWDICtx,
16535 WDI_EventInfoType* pEventData
16536)
16537{
16538 WDI_Status wdiStatus;
16539 eHalStatus halStatus;
16540 WDI_AddTsRspCb wdiAddTsRspCb;
16541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16542
16543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016544 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016545 -------------------------------------------------------------------------*/
16546 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16547 ( NULL == pEventData->pEventData))
16548 {
16549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016550 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 }
16554
16555 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
16556
16557 /*-------------------------------------------------------------------------
16558 Extract response and send it to UMAC
16559 -------------------------------------------------------------------------*/
16560 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016561 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016562
16563 /*Notify UMAC*/
16564 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16565
Jeff Johnsone7245742012-09-05 17:12:55 -070016566 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016567}/*WDI_ProcessAddTSpecRsp*/
16568
16569
16570/**
16571 @brief Process Del TSpec Rsp function (called when a response
16572 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016573
16574 @param pWDICtx: pointer to the WLAN DAL context
16575 pEventData: pointer to the event information structure
16576
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 @see
16578 @return Result of the function call
16579*/
16580WDI_Status
16581WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016582(
Jeff Johnson295189b2012-06-20 16:38:30 -070016583 WDI_ControlBlockType* pWDICtx,
16584 WDI_EventInfoType* pEventData
16585)
16586{
16587 WDI_Status wdiStatus;
16588 eHalStatus halStatus;
16589 WDI_DelTsRspCb wdiDelTsRspCb;
16590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16591
16592 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 -------------------------------------------------------------------------*/
16595 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16596 ( NULL == pEventData->pEventData))
16597 {
16598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 }
16603
16604 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
16605
16606 /*-------------------------------------------------------------------------
16607 Extract response and send it to UMAC
16608 -------------------------------------------------------------------------*/
16609 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016611
16612 /*Notify UMAC*/
16613 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16614
Jeff Johnsone7245742012-09-05 17:12:55 -070016615 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016616}/*WDI_ProcessDelTSpecRsp*/
16617
16618/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016619 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016620 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016621
16622 @param pWDICtx: pointer to the WLAN DAL context
16623 pEventData: pointer to the event information structure
16624
Jeff Johnson295189b2012-06-20 16:38:30 -070016625 @see
16626 @return Result of the function call
16627*/
16628WDI_Status
16629WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016630(
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 WDI_ControlBlockType* pWDICtx,
16632 WDI_EventInfoType* pEventData
16633)
16634{
16635 WDI_Status wdiStatus;
16636 eHalStatus halStatus;
16637 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
16638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16639
16640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016642 -------------------------------------------------------------------------*/
16643 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16644 ( NULL == pEventData->pEventData))
16645 {
16646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016650 }
16651
16652 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
16653
16654 /*-------------------------------------------------------------------------
16655 Extract response and send it to UMAC
16656 -------------------------------------------------------------------------*/
16657 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016659
16660 /*Notify UMAC*/
16661 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16662
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016664}/*WDI_ProcessUpdateEDCAParamsRsp*/
16665
16666
16667/**
16668 @brief Process Add BA Rsp function (called when a response
16669 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016670
16671 @param pWDICtx: pointer to the WLAN DAL context
16672 pEventData: pointer to the event information structure
16673
Jeff Johnson295189b2012-06-20 16:38:30 -070016674 @see
16675 @return Result of the function call
16676*/
16677WDI_Status
16678WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016679(
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 WDI_ControlBlockType* pWDICtx,
16681 WDI_EventInfoType* pEventData
16682)
16683{
16684 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16685
16686 tAddBASessionRspParams halBASessionRsp;
16687 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16688
Jeff Johnsone7245742012-09-05 17:12:55 -070016689
Jeff Johnson295189b2012-06-20 16:38:30 -070016690 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16691
16692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016693 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016694 -------------------------------------------------------------------------*/
16695 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16696 ( NULL == pEventData->pEventData))
16697 {
16698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016699 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016702 }
16703
16704 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16705
16706 /*-------------------------------------------------------------------------
16707 Extract response and send it to UMAC
16708 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016709 wpalMemoryCopy( &halBASessionRsp,
16710 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016711 sizeof(halBASessionRsp));
16712
16713 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16714
Jeff Johnson43971f52012-07-17 12:26:56 -070016715 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 {
16717 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16718 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16719 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16720 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16721 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16722 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16723 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16724 }
16725
16726 /*Notify UMAC*/
16727 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16728
Jeff Johnsone7245742012-09-05 17:12:55 -070016729 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016730}/*WDI_ProcessAddSessionBARsp*/
16731
16732
16733/**
16734 @brief Process Del BA Rsp function (called when a response
16735 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016736
16737 @param pWDICtx: pointer to the WLAN DAL context
16738 pEventData: pointer to the event information structure
16739
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 @see
16741 @return Result of the function call
16742*/
16743WDI_Status
16744WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016745(
Jeff Johnson295189b2012-06-20 16:38:30 -070016746 WDI_ControlBlockType* pWDICtx,
16747 WDI_EventInfoType* pEventData
16748)
16749{
16750 WDI_Status wdiStatus;
16751 eHalStatus halStatus;
16752 WDI_DelBARspCb wdiDelBARspCb;
16753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16754
16755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 -------------------------------------------------------------------------*/
16758 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16759 ( NULL == pEventData->pEventData))
16760 {
16761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016764 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016765 }
16766
16767 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16768
16769 /*-------------------------------------------------------------------------
16770 Extract response and send it to UMAC
16771 -------------------------------------------------------------------------*/
16772 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016774
16775 if ( eHAL_STATUS_SUCCESS == halStatus )
16776 {
16777 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16778 }
16779
16780 /*Notify UMAC*/
16781 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16782
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016784}/*WDI_ProcessDelBARsp*/
16785
16786#ifdef FEATURE_WLAN_CCX
16787/**
16788 @brief Process TSM Stats Rsp function (called when a response
16789 is being received over the bus from HAL)
16790
16791 @param pWDICtx: pointer to the WLAN DAL context
16792 pEventData: pointer to the event information structure
16793
16794 @see
16795 @return Result of the function call
16796*/
16797WDI_Status
16798WDI_ProcessTsmStatsRsp
16799(
16800 WDI_ControlBlockType* pWDICtx,
16801 WDI_EventInfoType* pEventData
16802)
16803{
16804 WDI_TsmRspCb wdiTsmStatsRspCb;
16805 tTsmStatsRspMsg halTsmStatsRspMsg;
16806 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16808
16809 /*-------------------------------------------------------------------------
16810 Sanity check
16811 -------------------------------------------------------------------------*/
16812 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16813 ( NULL == pEventData->pEventData))
16814 {
16815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016817 WDI_ASSERT(0);
16818 return WDI_STATUS_E_FAILURE;
16819 }
16820
16821 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16822
16823 /*-------------------------------------------------------------------------
16824 Unpack HAL Response Message - the header was already extracted by the
16825 main Response Handling procedure
16826 -------------------------------------------------------------------------*/
16827 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16828 pEventData->pEventData,
16829 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16830
16831 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16832 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16833 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16834 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16835 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16836 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16837 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16838 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16839 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16840 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16841 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16842 halTsmStatsRspMsg.tsmStatsRspParams.status);
16843
16844 /*Notify UMAC*/
16845 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16846
16847 return WDI_STATUS_SUCCESS;
16848}/*WDI_ProcessTsmStatsRsp*/
16849
16850#endif
16851
16852
16853
16854/**
16855 @brief Process Flush AC Rsp function (called when a response
16856 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016857
16858 @param pWDICtx: pointer to the WLAN DAL context
16859 pEventData: pointer to the event information structure
16860
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 @see
16862 @return Result of the function call
16863*/
16864WDI_Status
16865WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016866(
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 WDI_ControlBlockType* pWDICtx,
16868 WDI_EventInfoType* pEventData
16869)
16870{
16871 WDI_Status wdiStatus;
16872 eHalStatus halStatus;
16873 WDI_FlushAcRspCb wdiFlushAcRspCb;
16874 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16875
16876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016877 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016878 -------------------------------------------------------------------------*/
16879 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16880 ( NULL == pEventData->pEventData))
16881 {
16882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016886 }
16887
16888 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16889
16890 /*-------------------------------------------------------------------------
16891 Extract response and send it to UMAC
16892 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 wpalMemoryCopy( &halStatus,
16894 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 sizeof(halStatus));
16896
Jeff Johnsone7245742012-09-05 17:12:55 -070016897 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016898
16899 /*Notify UMAC*/
16900 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16901
Jeff Johnsone7245742012-09-05 17:12:55 -070016902 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016903}/*WDI_ProcessFlushAcRsp*/
16904
16905/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016906 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016908
16909 @param pWDICtx: pointer to the WLAN DAL context
16910 pEventData: pointer to the event information structure
16911
Jeff Johnson295189b2012-06-20 16:38:30 -070016912 @see
16913 @return Result of the function call
16914*/
16915WDI_Status
16916WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016917(
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 WDI_ControlBlockType* pWDICtx,
16919 WDI_EventInfoType* pEventData
16920)
16921{
16922 WDI_Status wdiStatus;
16923 eHalStatus halStatus;
16924 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16926
16927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016929 -------------------------------------------------------------------------*/
16930 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16931 ( NULL == pEventData->pEventData))
16932 {
16933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016934 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016937 }
16938
16939 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16940
16941 /*-------------------------------------------------------------------------
16942 Extract response and send it to UMAC
16943 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016944 wpalMemoryCopy( &halStatus,
16945 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 sizeof(halStatus));
16947
Jeff Johnsone7245742012-09-05 17:12:55 -070016948 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016949
16950 /*Notify UMAC*/
16951 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16952
Jeff Johnsone7245742012-09-05 17:12:55 -070016953 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016954}/*WDI_ProcessBtAmpEventRsp*/
16955
16956
16957/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016958 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016960
16961 @param pWDICtx: pointer to the WLAN DAL context
16962 pEventData: pointer to the event information structure
16963
Jeff Johnson295189b2012-06-20 16:38:30 -070016964 @see
16965 @return Result of the function call
16966*/
16967WDI_Status
16968WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016969(
Jeff Johnson295189b2012-06-20 16:38:30 -070016970 WDI_ControlBlockType* pWDICtx,
16971 WDI_EventInfoType* pEventData
16972)
16973{
16974 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16975 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16976 tAddStaSelfRspMsg halAddStaSelfRsp;
16977 WDI_AddStaParams wdiAddSTAParam = {0};
16978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16979
16980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016982 -------------------------------------------------------------------------*/
16983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16984 ( NULL == pEventData->pEventData))
16985 {
16986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016990 }
16991
Jeff Johnsone7245742012-09-05 17:12:55 -070016992 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016993 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16994
16995 /*-------------------------------------------------------------------------
16996 Extract response and send it to UMAC
16997 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016998 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16999 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017000 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
17001
17002
Jeff Johnsone7245742012-09-05 17:12:55 -070017003 wdiAddSTASelfParams.wdiStatus =
17004 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017005
Jeff Johnsone7245742012-09-05 17:12:55 -070017006 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017007 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017008 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017010 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017011 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
17012
17013 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
17014 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
17015 WDI_MAC_ADDR_LEN);
17016
17017
17018#ifdef HAL_SELF_STA_PER_BSS
17019
17020 /* At this point add the self-STA */
17021
17022 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17023 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17024 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17025
17026 //all DPU indices are the same for self STA
17027
17028 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017029 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017030 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
17031 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
17032 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
17033 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
17034 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
17035
17036 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
17037 WDI_MAC_ADDR_LEN);
17038
17039 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17040 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
17041
Jeff Johnsone7245742012-09-05 17:12:55 -070017042 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
17044 {
17045 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17046 }
17047#endif
17048
17049 /*Notify UMAC*/
17050 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
17051
Jeff Johnsone7245742012-09-05 17:12:55 -070017052 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017053}/*WDI_ProcessAddSTASelfRsp*/
17054
17055
17056
17057/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017058 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017059 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017060
17061 @param pWDICtx: pointer to the WLAN DAL context
17062 pEventData: pointer to the event information structure
17063
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 @see
17065 @return Result of the function call
17066*/
17067WDI_Status
17068WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017069(
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 WDI_ControlBlockType* pWDICtx,
17071 WDI_EventInfoType* pEventData
17072)
17073{
17074 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
17075 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
17076 tDelStaSelfRspParams delStaSelfRspParams;
17077 wpt_uint8 ucStaIdx;
17078
17079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17080
17081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 -------------------------------------------------------------------------*/
17084 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17085 ( NULL == pEventData->pEventData))
17086 {
17087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 }
17092
17093 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
17094
17095 /*-------------------------------------------------------------------------
17096 Extract response and send it to UMAC
17097 -------------------------------------------------------------------------*/
17098
Jeff Johnsone7245742012-09-05 17:12:55 -070017099 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 (wpt_uint8*)pEventData->pEventData,
17101 sizeof(tDelStaSelfRspParams));
17102
Jeff Johnsone7245742012-09-05 17:12:55 -070017103 wdiDelStaSelfRspParams.wdiStatus =
17104 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017105
Jeff Johnsone7245742012-09-05 17:12:55 -070017106 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070017107 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
17108 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
17109 {
17110 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070017111 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 delStaSelfRspParams.selfMacAddr,
17113 &ucStaIdx);
17114 if(WDI_STATUS_E_FAILURE == wdiStatus)
17115 {
17116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017117 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017120 }
17121 WDI_STATableDelSta(pWDICtx, ucStaIdx);
17122 }
17123
17124 /*Notify UMAC*/
17125 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
17126
17127 return WDI_STATUS_SUCCESS;
17128}
17129
Jeff Johnsone7245742012-09-05 17:12:55 -070017130#ifdef FEATURE_OEM_DATA_SUPPORT
17131/**
17132 @brief Start Oem Data Rsp function (called when a
17133 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070017134
Jeff Johnsone7245742012-09-05 17:12:55 -070017135 @param pWDICtx: pointer to the WLAN DAL context
17136 pEventData: pointer to the event information structure
17137
17138 @see
17139 @return Result of the function call
17140*/
17141#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
17142
17143WDI_Status
17144WDI_ProcessStartOemDataRsp
17145(
17146 WDI_ControlBlockType* pWDICtx,
17147 WDI_EventInfoType* pEventData
17148)
17149{
17150 WDI_oemDataRspCb wdiOemDataRspCb;
17151 WDI_oemDataRspParamsType* wdiOemDataRspParams;
17152 tStartOemDataRspParams* halStartOemDataRspParams;
17153
17154 /*-------------------------------------------------------------------------
17155 Sanity check
17156 -------------------------------------------------------------------------*/
17157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17158 ( NULL == pEventData->pEventData))
17159 {
17160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017161 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070017162 WDI_ASSERT(0);
17163 return WDI_STATUS_E_FAILURE;
17164 }
17165
17166 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
17167
17168 /*-------------------------------------------------------------------------
17169 Extract response and send it to UMAC
17170 -------------------------------------------------------------------------*/
17171 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
17172
17173
17174 //It is the responsibility of the application code to check for failure
17175 //conditions!
17176
17177 //Allocate memory for WDI OEM DATA RSP structure
17178 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
17179
17180 if(NULL == wdiOemDataRspParams)
17181 {
17182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017183 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070017184 pWDICtx, pEventData, pEventData->pEventData);
17185 WDI_ASSERT(0);
17186 return WDI_STATUS_E_FAILURE;
17187 }
17188
17189 /* Populate WDI structure members */
17190 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
17191
17192 /*Notify UMAC*/
17193 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
17194
17195 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
17196 wpalMemoryFree(wdiOemDataRspParams);
17197
17198 return WDI_STATUS_SUCCESS;
17199}/*WDI_PrcoessStartOemDataRsp*/
17200#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017201
17202/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017203 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017204===========================================================================*/
17205
17206/**
17207 @brief Process Channel Switch Rsp function (called when a response
17208 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017209
17210 @param pWDICtx: pointer to the WLAN DAL context
17211 pEventData: pointer to the event information structure
17212
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 @see
17214 @return Result of the function call
17215*/
17216WDI_Status
17217WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017218(
Jeff Johnson295189b2012-06-20 16:38:30 -070017219 WDI_ControlBlockType* pWDICtx,
17220 WDI_EventInfoType* pEventData
17221)
17222{
17223 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
17224 WDI_SwitchChRspCb wdiChSwitchRspCb;
17225 tSwitchChannelRspParams halSwitchChannelRsp;
17226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17227
17228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017229 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017230 -------------------------------------------------------------------------*/
17231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17232 ( NULL == pEventData->pEventData))
17233 {
17234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017238 }
17239
17240 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
17241
17242 /*-------------------------------------------------------------------------
17243 Extract response and send it to UMAC
17244 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017245 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070017246 (wpt_uint8*)pEventData->pEventData,
17247 sizeof(halSwitchChannelRsp));
17248
Jeff Johnsone7245742012-09-05 17:12:55 -070017249 wdiSwitchChRsp.wdiStatus =
17250 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
17252
17253#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070017255#endif
17256
17257 /*Notify UMAC*/
17258 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
17259
Jeff Johnsone7245742012-09-05 17:12:55 -070017260 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017261}/*WDI_ProcessChannelSwitchRsp*/
17262
17263
17264/**
17265 @brief Process Config STA Rsp function (called when a response
17266 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017267
17268 @param pWDICtx: pointer to the WLAN DAL context
17269 pEventData: pointer to the event information structure
17270
Jeff Johnson295189b2012-06-20 16:38:30 -070017271 @see
17272 @return Result of the function call
17273*/
17274WDI_Status
17275WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017276(
Jeff Johnson295189b2012-06-20 16:38:30 -070017277 WDI_ControlBlockType* pWDICtx,
17278 WDI_EventInfoType* pEventData
17279)
17280{
17281 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
17282 WDI_ConfigSTARspCb wdiConfigSTARspCb;
17283 WDI_AddStaParams wdiAddSTAParam;
17284
17285 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017286 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017287
Jeff Johnsone7245742012-09-05 17:12:55 -070017288 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17290
17291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017292 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017293 -------------------------------------------------------------------------*/
17294 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17295 ( NULL == pEventData->pEventData))
17296 {
17297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017301 }
17302
17303 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
17304
17305 /*-------------------------------------------------------------------------
17306 Extract response and send it to UMAC
17307 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017308 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
17309 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017310 sizeof(halConfigStaRsp.configStaRspParams));
17311
17312
17313 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
17314 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
17315 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17316 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
17317 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
17318
17319 /* MAC Address of STA - take from cache as it does not come back in the
17320 response*/
17321 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070017322 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017323 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017324
17325 wdiCfgSTAParams.wdiStatus =
17326 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017327
17328 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
17329 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
17330 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
17331
17332 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
17333 {
17334 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17335 {
17336 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070017337 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017338 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
17339 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017340
Jeff Johnson295189b2012-06-20 16:38:30 -070017341 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017342 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017343 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017344 wdiAddSTAParam.ucHTCapable =
17345 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
17346 wdiAddSTAParam.ucStaType =
17347 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot23e79ed2013-06-27 11:14:56 -070017348 wdiAddSTAParam.ucRmfEnabled =
17349 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017350
Jeff Johnson295189b2012-06-20 16:38:30 -070017351 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017352 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17353 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017354 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017355
17356 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17357 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
17358 WDI_MAC_ADDR_LEN);
17359
17360 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17361 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
17362 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017363
17364 if ( NULL == pBSSSes )
17365 {
17366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17367 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070017368
Jeff Johnson295189b2012-06-20 16:38:30 -070017369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017370 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017371 }
17372
17373 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017374 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017375 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017376 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017377 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017378 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017379 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070017382 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017383
Jeff Johnson295189b2012-06-20 16:38:30 -070017384 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17385 }
17386 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
17387 {
17388 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17389
Jeff Johnsone7245742012-09-05 17:12:55 -070017390 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017391 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017392 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017393 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017394 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017395 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017397 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017398 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017399 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017400 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017401 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017403 halConfigStaRsp.configStaRspParams.ucUcastSig;
17404 }
17405 }
17406
17407 /*Notify UMAC*/
17408 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
17409
Jeff Johnsone7245742012-09-05 17:12:55 -070017410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017411}/*WDI_ProcessConfigStaRsp*/
17412
17413
17414/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017415 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017416 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017417
17418 @param pWDICtx: pointer to the WLAN DAL context
17419 pEventData: pointer to the event information structure
17420
Jeff Johnson295189b2012-06-20 16:38:30 -070017421 @see
17422 @return Result of the function call
17423*/
17424WDI_Status
17425WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017426(
Jeff Johnson295189b2012-06-20 16:38:30 -070017427 WDI_ControlBlockType* pWDICtx,
17428 WDI_EventInfoType* pEventData
17429)
17430{
17431 WDI_Status wdiStatus;
17432 eHalStatus halStatus;
17433 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
17434
17435 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17438
17439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 -------------------------------------------------------------------------*/
17442 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17443 ( NULL == pEventData->pEventData))
17444 {
17445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017446 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017447 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017449 }
17450
17451 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
17452
17453 wpalMutexAcquire(&pWDICtx->wptMutex);
17454
17455 /*If the link is being transitioned to idle - the BSS is to be deleted
17456 - this type of ending a session is possible when UMAC has failed an
17457 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017458 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017459 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17460 {
17461 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017462 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017463 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017464 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17465 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
17466 &pBSSSes);
17467
Jeff Johnson295189b2012-06-20 16:38:30 -070017468 /*-----------------------------------------------------------------------
17469 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017470 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017471 -----------------------------------------------------------------------*/
17472 if ( NULL == pBSSSes )
17473 {
17474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17475 "Set link response received outside association session");
17476 }
17477 else
17478 {
17479 /* For BT AMP roles no need to delete the sessions if assoc fails. There
17480 will be del BSS coming after this to stop the beaconing & cleaning up the
17481 sessions*/
17482 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
17483 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
17484 {
17485 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017486 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017487 -----------------------------------------------------------------------*/
17488 WDI_DeleteSession(pWDICtx, pBSSSes);
17489
17490 /*-----------------------------------------------------------------------
17491 Check to see if this association is in progress - if so disable the
17492 flag as this has ended
17493 -----------------------------------------------------------------------*/
17494 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070017495 {
Jeff Johnson295189b2012-06-20 16:38:30 -070017496 /*Association no longer in progress */
17497 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17498 /*Association no longer in progress - prepare pending assoc for processing*/
17499 WDI_DequeueAssocRequest(pWDICtx);
17500 }
17501 }
17502 }
17503 }
17504 /* If the link state has been set to POST ASSOC, reset the "association in
17505 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070017506 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070017507 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
17508 {
17509 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17510 WDI_DequeueAssocRequest(pWDICtx);
17511 }
17512
17513 wpalMutexRelease(&pWDICtx->wptMutex);
17514
17515 /*-------------------------------------------------------------------------
17516 Extract response and send it to UMAC
17517 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017518 wpalMemoryCopy( &halStatus,
17519 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017520 sizeof(halStatus));
17521
Jeff Johnsone7245742012-09-05 17:12:55 -070017522 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017523
17524 /*Notify UMAC*/
17525 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17526
Jeff Johnsone7245742012-09-05 17:12:55 -070017527 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017528}/*WDI_ProcessSetLinkStateRsp*/
17529
17530/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017531 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017533
17534 @param pWDICtx: pointer to the WLAN DAL context
17535 pEventData: pointer to the event information structure
17536
Jeff Johnson295189b2012-06-20 16:38:30 -070017537 @see
17538 @return Result of the function call
17539*/
17540WDI_Status
17541WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017542(
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 WDI_ControlBlockType* pWDICtx,
17544 WDI_EventInfoType* pEventData
17545)
17546{
17547 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
17548 WDI_GetStatsRspCb wdiGetStatsRspCb;
17549 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070017550
Jeff Johnson295189b2012-06-20 16:38:30 -070017551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17552
17553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017554 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 -------------------------------------------------------------------------*/
17556 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17557 ( NULL == pEventData->pEventData))
17558 {
17559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017560 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 }
17564
17565 /*-------------------------------------------------------------------------
17566 Extract response and send it to UMAC
17567 -------------------------------------------------------------------------*/
17568 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
17569
17570 /*allocate the stats response buffer */
17571 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
17572 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
17573 + sizeof(WDI_GetStatsRspParamsType));
17574
17575 if(NULL == wdiGetStatsRsp)
17576 {
17577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017578 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070017579 pWDICtx, pEventData, pEventData->pEventData);
17580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017582 }
17583
17584 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
17585
17586 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
17587 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
17588 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
17589 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
17590 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
17591 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
17592
17593 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
17594 wpalMemoryCopy(wdiGetStatsRsp + 1,
17595 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
17596 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
17597
17598 /*Notify UMAC*/
17599 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
17600
17601 wpalMemoryFree(wdiGetStatsRsp);
17602
Jeff Johnsone7245742012-09-05 17:12:55 -070017603 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017604}/*WDI_ProcessGetStatsRsp*/
17605
Srinivas Girigowda2471d832013-01-25 13:33:11 -080017606#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
17607/**
17608 @brief Process Get Roam Rssi Rsp function (called when a response is
17609 being received over the bus from HAL)
17610
17611 @param pWDICtx: pointer to the WLAN DAL context
17612 pEventData: pointer to the event information structure
17613
17614 @see
17615 @return Result of the function call
17616*/
17617WDI_Status
17618WDI_ProcessGetRoamRssiRsp
17619(
17620 WDI_ControlBlockType* pWDICtx,
17621 WDI_EventInfoType* pEventData
17622)
17623{
17624 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
17625 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
17626 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
17627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17628
17629 /*-------------------------------------------------------------------------
17630 Sanity check
17631 -------------------------------------------------------------------------*/
17632 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17633 ( NULL == pEventData->pEventData))
17634 {
17635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17636 "%s: Invalid parameters", __func__);
17637 WDI_ASSERT(0);
17638 return WDI_STATUS_E_FAILURE;
17639 }
17640
17641 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
17642 if(NULL == wdiGetRoamRssiRspCb)
17643 {
17644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17645 "%s: call back function is NULL", __func__);
17646 WDI_ASSERT(0);
17647 return WDI_STATUS_E_FAILURE;
17648 }
17649
17650 /*-------------------------------------------------------------------------
17651 Extract response and send it to UMAC
17652 -------------------------------------------------------------------------*/
17653 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
17654 pEventData->pEventData,
17655 sizeof(halRoamRssiRspParams.roamRssiRspParams));
17656
17657 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
17658 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
17659 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
17660
17661 /*Notify UMAC*/
17662 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
17663
17664 return WDI_STATUS_SUCCESS;
17665}/*WDI_ProcessGetRoamRssiRsp*/
17666#endif
17667
Jeff Johnson295189b2012-06-20 16:38:30 -070017668
17669/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017670 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017671 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017672
17673 @param pWDICtx: pointer to the WLAN DAL context
17674 pEventData: pointer to the event information structure
17675
Jeff Johnson295189b2012-06-20 16:38:30 -070017676 @see
17677 @return Result of the function call
17678*/
17679WDI_Status
17680WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017681(
Jeff Johnson295189b2012-06-20 16:38:30 -070017682 WDI_ControlBlockType* pWDICtx,
17683 WDI_EventInfoType* pEventData
17684)
17685{
17686 WDI_Status wdiStatus;
17687 eHalStatus halStatus;
17688 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17690
17691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017693 -------------------------------------------------------------------------*/
17694 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17695 ( NULL == pEventData->pEventData))
17696 {
17697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017701 }
17702
17703 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17704
17705 /*-------------------------------------------------------------------------
17706 Extract response and send it to UMAC
17707 -------------------------------------------------------------------------*/
17708 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017709 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017710
17711 /*Notify UMAC*/
17712 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17713
Jeff Johnsone7245742012-09-05 17:12:55 -070017714 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017715}/*WDI_ProcessUpdateCfgRsp*/
17716
17717
17718
17719/**
17720 @brief Process Add BA Rsp function (called when a response
17721 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017722
17723 @param pWDICtx: pointer to the WLAN DAL context
17724 pEventData: pointer to the event information structure
17725
Jeff Johnson295189b2012-06-20 16:38:30 -070017726 @see
17727 @return Result of the function call
17728*/
17729WDI_Status
17730WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017731(
Jeff Johnson295189b2012-06-20 16:38:30 -070017732 WDI_ControlBlockType* pWDICtx,
17733 WDI_EventInfoType* pEventData
17734)
17735{
17736 WDI_AddBARspCb wdiAddBARspCb;
17737
17738 tAddBARspParams halAddBARsp;
17739 WDI_AddBARspinfoType wdiAddBARsp;
17740
17741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17742
17743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017744 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017745 -------------------------------------------------------------------------*/
17746 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17747 ( NULL == pEventData->pEventData))
17748 {
17749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017750 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017753 }
17754
17755 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17756
17757 /*-------------------------------------------------------------------------
17758 Extract response and send it to UMAC
17759 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017760 wpalMemoryCopy( &halAddBARsp,
17761 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017762 sizeof(halAddBARsp));
17763
17764 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17765
Jeff Johnson43971f52012-07-17 12:26:56 -070017766 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017767 {
17768 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17769 }
17770
17771 /*Notify UMAC*/
17772 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17773
Jeff Johnsone7245742012-09-05 17:12:55 -070017774 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017775}/*WDI_ProcessAddSessionBARsp*/
17776
17777/**
17778 @brief Process Add BA Rsp function (called when a response
17779 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017780
17781 @param pWDICtx: pointer to the WLAN DAL context
17782 pEventData: pointer to the event information structure
17783
Jeff Johnson295189b2012-06-20 16:38:30 -070017784 @see
17785 @return Result of the function call
17786*/
17787WDI_Status
17788WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017789(
Jeff Johnson295189b2012-06-20 16:38:30 -070017790 WDI_ControlBlockType* pWDICtx,
17791 WDI_EventInfoType* pEventData
17792)
17793{
17794 WDI_TriggerBARspCb wdiTriggerBARspCb;
17795
17796 tTriggerBARspParams* halTriggerBARsp;
17797 tTriggerBaRspCandidate* halBaCandidate;
17798 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17799 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17800 wpt_uint16 index;
17801 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017802 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17804
17805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017806 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017807 -------------------------------------------------------------------------*/
17808 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17809 ( NULL == pEventData->pEventData))
17810 {
17811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017812 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017815 }
17816
17817 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17818
17819 /*-------------------------------------------------------------------------
17820 Extract response and send it to UMAC
17821 -------------------------------------------------------------------------*/
17822 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17823
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017824 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17825
17826 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17827 {
17828 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017829 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017831
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017832 if(NULL == wdiTriggerBARsp)
17833 {
17834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017835 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017836 pWDICtx, pEventData, pEventData->pEventData);
17837 WDI_ASSERT(0);
17838 return WDI_STATUS_E_FAILURE;
17839 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017840
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017841 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17842
Jeff Johnson295189b2012-06-20 16:38:30 -070017843 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017844 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017845 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17846
17847 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17848 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17849
17850 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17851 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017852 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017853 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17854 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17855 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017856 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017857 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017858 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017859 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17860 }
17861 wdiTriggerBARspCandidate++;
17862 halBaCandidate++;
17863 }
17864 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017865 else
17866 {
17867 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17868
17869 if(NULL == wdiTriggerBARsp)
17870 {
17871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080017872 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017873 pWDICtx, pEventData, pEventData->pEventData);
17874 WDI_ASSERT(0);
17875 return WDI_STATUS_E_FAILURE;
17876 }
17877
17878 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17879
17880 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017881
17882 /*Notify UMAC*/
17883 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17884
17885 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017886 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017887}/*WDI_ProcessAddSessionBARsp*/
17888
17889/**
17890 @brief Process Update Beacon Params Rsp function (called when a response
17891 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017892
17893 @param pWDICtx: pointer to the WLAN DAL context
17894 pEventData: pointer to the event information structure
17895
Jeff Johnson295189b2012-06-20 16:38:30 -070017896 @see
17897 @return Result of the function call
17898*/
17899WDI_Status
17900WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017901(
Jeff Johnson295189b2012-06-20 16:38:30 -070017902 WDI_ControlBlockType* pWDICtx,
17903 WDI_EventInfoType* pEventData
17904)
17905{
17906 WDI_Status wdiStatus;
17907 eHalStatus halStatus;
17908 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17910
17911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017912 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017913 -------------------------------------------------------------------------*/
17914 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17915 ( NULL == pEventData->pEventData))
17916 {
17917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017921 }
17922
17923 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17924
17925 /*-------------------------------------------------------------------------
17926 Extract response and send it to UMAC
17927 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017928 wpalMemoryCopy( &halStatus,
17929 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017930 sizeof(halStatus));
17931
Jeff Johnsone7245742012-09-05 17:12:55 -070017932 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017933
17934 /*Notify UMAC*/
17935 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17936
Jeff Johnsone7245742012-09-05 17:12:55 -070017937 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017938}/*WDI_ProcessUpdateBeaconParamsRsp*/
17939
17940/**
17941 @brief Process Send Beacon template Rsp function (called when a response
17942 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017943
17944 @param pWDICtx: pointer to the WLAN DAL context
17945 pEventData: pointer to the event information structure
17946
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 @see
17948 @return Result of the function call
17949*/
17950WDI_Status
17951WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017952(
Jeff Johnson295189b2012-06-20 16:38:30 -070017953 WDI_ControlBlockType* pWDICtx,
17954 WDI_EventInfoType* pEventData
17955)
17956{
17957 WDI_Status wdiStatus;
17958 eHalStatus halStatus;
17959 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17961
17962 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017963 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017964 -------------------------------------------------------------------------*/
17965 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17966 ( NULL == pEventData->pEventData))
17967 {
17968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017969 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017970 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017972 }
17973
17974 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17975
17976 /*-------------------------------------------------------------------------
17977 Extract response and send it to UMAC
17978 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017979 wpalMemoryCopy( &halStatus,
17980 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017981 sizeof(halStatus));
17982
Jeff Johnsone7245742012-09-05 17:12:55 -070017983 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017984
17985 /*Notify UMAC*/
17986 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17987
Jeff Johnsone7245742012-09-05 17:12:55 -070017988 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017989}/*WDI_ProcessSendBeaconParamsRsp*/
17990
Jeff Johnsone7245742012-09-05 17:12:55 -070017991
Jeff Johnson295189b2012-06-20 16:38:30 -070017992/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017993 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017994 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017995
17996 @param pWDICtx: pointer to the WLAN DAL context
17997 pEventData: pointer to the event information structure
17998
Jeff Johnson295189b2012-06-20 16:38:30 -070017999 @see
18000 @return Result of the function call
18001*/
18002WDI_Status
18003WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018004(
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 WDI_ControlBlockType* pWDICtx,
18006 WDI_EventInfoType* pEventData
18007)
18008{
18009 WDI_Status wdiStatus;
18010 eHalStatus halStatus;
18011 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
18012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18013
18014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018015 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018016 -------------------------------------------------------------------------*/
18017 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18018 ( NULL == pEventData->pEventData))
18019 {
18020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 }
18025
18026 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
18027
18028 /*-------------------------------------------------------------------------
18029 Extract response and send it to UMAC
18030 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018031 wpalMemoryCopy( &halStatus,
18032 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018033 sizeof(halStatus));
18034
Jeff Johnsone7245742012-09-05 17:12:55 -070018035 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018036
18037 /*Notify UMAC*/
18038 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18039
Jeff Johnsone7245742012-09-05 17:12:55 -070018040 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018041}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
18042
18043 /**
18044 @brief Process Set Max Tx Power Rsp function (called when a response
18045 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018046
18047 @param pWDICtx: pointer to the WLAN DAL context
18048 pEventData: pointer to the event information structure
18049
Jeff Johnson295189b2012-06-20 16:38:30 -070018050 @see
18051 @return Result of the function call
18052*/
18053WDI_Status
18054WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018055(
Jeff Johnson295189b2012-06-20 16:38:30 -070018056 WDI_ControlBlockType* pWDICtx,
18057 WDI_EventInfoType* pEventData
18058)
18059{
18060 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070018061
Jeff Johnson295189b2012-06-20 16:38:30 -070018062 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070018063
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
18065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18066
18067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018068 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018069 -------------------------------------------------------------------------*/
18070 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18071 ( NULL == pEventData->pEventData))
18072 {
18073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018074 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018077 }
18078
18079 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
18080
18081 /*-------------------------------------------------------------------------
18082 Extract response and send it to UMAC
18083 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018084 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
18085 pEventData->pEventData,
18086 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018087
18088 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
18089 {
18090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18091 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070018092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018093 }
18094
Jeff Johnsone7245742012-09-05 17:12:55 -070018095 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070018097 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070018098
18099 /*Notify UMAC*/
18100 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
18101
Jeff Johnsone7245742012-09-05 17:12:55 -070018102 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018103}
18104
schangd82195a2013-03-13 18:41:24 -070018105 /**
18106 @brief Process Set Tx Power Rsp function (called when a response
18107 is being received over the bus from HAL)
18108
18109 @param pWDICtx: pointer to the WLAN DAL context
18110 pEventData: pointer to the event information structure
18111
18112 @see
18113 @return Result of the function call
18114*/
18115WDI_Status
18116WDI_ProcessSetTxPowerRsp
18117(
18118 WDI_ControlBlockType* pWDICtx,
18119 WDI_EventInfoType* pEventData
18120)
18121{
18122 tSetTxPwrRspMsg halTxpowerrsp;
18123 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
18124 WDA_SetTxPowerRspCb wdiReqStatusCb;
18125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18126
18127 /*-------------------------------------------------------------------------
18128 Sanity check
18129 -------------------------------------------------------------------------*/
18130 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18131 ( NULL == pEventData->pEventData))
18132 {
18133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18134 "%s: Invalid parameters", __func__);
18135 WDI_ASSERT(0);
18136 return WDI_STATUS_E_FAILURE;
18137 }
18138
18139 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
18140
18141 /*-------------------------------------------------------------------------
18142 Extract response and send it to UMAC
18143 -------------------------------------------------------------------------*/
18144 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
18145 pEventData->pEventData,
18146 sizeof(halTxpowerrsp.setTxPwrRspParams));
18147
18148 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
18149 {
18150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18151 "Error status returned in Set Tx Power Response ");
18152 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18153 return WDI_STATUS_E_FAILURE;
18154 }
18155
18156 wdiSetTxPowerRspMsg.wdiStatus =
18157 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
18158
18159 /*Notify UMAC*/
18160 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
18161
18162 return WDI_STATUS_SUCCESS;
18163}
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018164#ifdef FEATURE_WLAN_TDLS
18165/**
18166 @brief Process TDLS Link Establish Rsp function (called
18167 when a response is being received over the bus from HAL)
18168
18169 @param pWDICtx: pointer to the WLAN DAL context
18170 pEventData: pointer to the event information structure
18171
18172 @see
18173 @return Result of the function call
18174*/
18175WDI_Status
18176WDI_ProcessLinkEstablishReqRsp
18177(
18178 WDI_ControlBlockType* pWDICtx,
18179 WDI_EventInfoType* pEventData
18180)
18181{
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018182 eHalStatus halStatus;
18183 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018184 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
18185 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
18186
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18188
18189 /*-------------------------------------------------------------------------
18190 Sanity check
18191 -------------------------------------------------------------------------*/
18192 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18193 ( NULL == pEventData->pEventData))
18194 {
18195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18196 "%s: Invalid parameters", __func__);
18197 WDI_ASSERT(0);
18198 return WDI_STATUS_E_FAILURE;
18199 }
18200
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018201 /*-------------------------------------------------------------------------
18202 Extract indication and send it to UMAC
18203 -------------------------------------------------------------------------*/
18204 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
18205 pEventData->pEventData,
18206 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
18207
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018208 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
18209
18210 /*-------------------------------------------------------------------------
18211 Extract response and send it to UMAC
18212 -------------------------------------------------------------------------*/
18213 wpalMemoryCopy( &halStatus,
18214 pEventData->pEventData,
18215 sizeof(halStatus));
18216
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018217 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18218 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018219
18220 /*Notify UMAC*/
Gopichand Nakkala68d0c882013-06-27 19:38:43 +053018221 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053018222
18223 return WDI_STATUS_SUCCESS;
18224}/*WDI_ProcessLinkEstablishReqRsp*/
18225#endif
schangd82195a2013-03-13 18:41:24 -070018226
Jeff Johnson295189b2012-06-20 16:38:30 -070018227/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018228 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018229 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018230
18231 @param pWDICtx: pointer to the WLAN DAL context
18232 pEventData: pointer to the event information structure
18233
Jeff Johnson295189b2012-06-20 16:38:30 -070018234 @see
18235 @return Result of the function call
18236*/
18237WDI_Status
18238WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018239(
Jeff Johnson295189b2012-06-20 16:38:30 -070018240 WDI_ControlBlockType* pWDICtx,
18241 WDI_EventInfoType* pEventData
18242)
18243{
18244 WDI_Status wdiStatus;
18245 eHalStatus halStatus;
18246 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
18247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18248
18249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018251 -------------------------------------------------------------------------*/
18252 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18253 ( NULL == pEventData->pEventData))
18254 {
18255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018259 }
18260
18261 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
18262
18263 /*-------------------------------------------------------------------------
18264 Extract response and send it to UMAC
18265 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018266 wpalMemoryCopy( &halStatus,
18267 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018268 sizeof(halStatus));
18269
Jeff Johnsone7245742012-09-05 17:12:55 -070018270 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018271
18272 /*Notify UMAC*/
18273 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18274
Jeff Johnsone7245742012-09-05 17:12:55 -070018275 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018276}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018277/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018278 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018279 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018280
18281 @param pWDICtx: pointer to the WLAN DAL context
18282 pEventData: pointer to the event information structure
18283
Jeff Johnson295189b2012-06-20 16:38:30 -070018284 @see
18285 @return Result of the function call
18286*/
18287WDI_Status
18288WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018289(
Jeff Johnson295189b2012-06-20 16:38:30 -070018290 WDI_ControlBlockType* pWDICtx,
18291 WDI_EventInfoType* pEventData
18292)
18293{
18294 WDI_Status wdiStatus;
18295 eHalStatus halStatus;
18296 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018297 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18299
18300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018302 -------------------------------------------------------------------------*/
18303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18304 ( NULL == pEventData->pEventData))
18305 {
18306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018310 }
18311
18312 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
18313
18314 /*-------------------------------------------------------------------------
18315 Extract response and send it to UMAC
18316 -------------------------------------------------------------------------*/
18317 halStatus = *((eHalStatus*)pEventData->pEventData);
18318
Jeff Johnsone7245742012-09-05 17:12:55 -070018319 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018320
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018321 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
18322 * Other module states are taken care by PMC.
18323 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
18324 */
18325 if (wdiStatus != WDI_STATUS_SUCCESS) {
18326
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18328 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
18329 halStatus);
18330 /* Call Back is not required as we are putting the DXE in FULL
18331 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018332 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18333
18334 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
18335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18336 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18337 WDI_ASSERT(0);
18338 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018339 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018340 /*Notify UMAC*/
18341 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18342
Jeff Johnsone7245742012-09-05 17:12:55 -070018343 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018344}/*WDI_ProcessEnterImpsRsp*/
18345
18346/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018347 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018348 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018349
18350 @param pWDICtx: pointer to the WLAN DAL context
18351 pEventData: pointer to the event information structure
18352
Jeff Johnson295189b2012-06-20 16:38:30 -070018353 @see
18354 @return Result of the function call
18355*/
18356WDI_Status
18357WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018358(
Jeff Johnson295189b2012-06-20 16:38:30 -070018359 WDI_ControlBlockType* pWDICtx,
18360 WDI_EventInfoType* pEventData
18361)
18362{
18363 WDI_Status wdiStatus;
18364 eHalStatus halStatus;
18365 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018366 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18368
18369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018370 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 -------------------------------------------------------------------------*/
18372 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18373 ( NULL == pEventData->pEventData))
18374 {
18375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018379 }
18380
18381 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
18382
18383 /*-------------------------------------------------------------------------
18384 Extract response and send it to UMAC
18385 -------------------------------------------------------------------------*/
18386 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018387 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018388
Gopichand Nakkalac8c71212013-05-29 18:53:35 +053018389 if (halStatus != eHAL_STATUS_SUCCESS)
18390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18391 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
18392
Jeff Johnson295189b2012-06-20 16:38:30 -070018393 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018394 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18395 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18396 {
18397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18398 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18399 WDI_ASSERT(0);
18400 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018401 /*Notify UMAC*/
18402 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18403
Jeff Johnsone7245742012-09-05 17:12:55 -070018404 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018405}/*WDI_ProcessExitImpsRsp*/
18406
18407/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018408 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018409 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018410
18411 @param pWDICtx: pointer to the WLAN DAL context
18412 pEventData: pointer to the event information structure
18413
Jeff Johnson295189b2012-06-20 16:38:30 -070018414 @see
18415 @return Result of the function call
18416*/
18417WDI_Status
18418WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018419(
Jeff Johnson295189b2012-06-20 16:38:30 -070018420 WDI_ControlBlockType* pWDICtx,
18421 WDI_EventInfoType* pEventData
18422)
18423{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018424 eHalStatus halStatus = eHAL_STATUS_FAILURE;
18425 tHalEnterBmpsRspParams halEnterBmpsRsp;
18426 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
18427 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018428 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18430
18431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018433 -------------------------------------------------------------------------*/
18434 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18435 ( NULL == pEventData->pEventData))
18436 {
18437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018441 }
18442
Jeff Johnson295189b2012-06-20 16:38:30 -070018443 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018444 Extract response and send it to UMAC
18445 -------------------------------------------------------------------------*/
18446 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18447 {
18448 wpalMemoryCopy( &halEnterBmpsRsp,
18449 pEventData->pEventData,
18450 sizeof(halEnterBmpsRsp));
18451
18452 //Used to print debug message
18453 halStatus = halEnterBmpsRsp.status;
18454 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
18455 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
18456 }
18457 else
18458 {
18459 halStatus = *((eHalStatus*)pEventData->pEventData);
18460 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18461 }
18462
18463 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018464
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018465 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
18466 * Other module states are taken care by PMC.
18467 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
18468 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018469 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
18470 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018471
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070018473 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
18474 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018475 /* Call Back is not required as we are putting the DXE in FULL
18476 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018477 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18478 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18479 {
18480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18481 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18482 WDI_ASSERT(0);
18483 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018484 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070018485 }
18486
Jeff Johnson295189b2012-06-20 16:38:30 -070018487 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018488 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018489
Jeff Johnsone7245742012-09-05 17:12:55 -070018490 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018491}/*WDI_ProcessEnterBmpsRsp*/
18492
18493/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018494 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018496
18497 @param pWDICtx: pointer to the WLAN DAL context
18498 pEventData: pointer to the event information structure
18499
Jeff Johnson295189b2012-06-20 16:38:30 -070018500 @see
18501 @return Result of the function call
18502*/
18503WDI_Status
18504WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018505(
Jeff Johnson295189b2012-06-20 16:38:30 -070018506 WDI_ControlBlockType* pWDICtx,
18507 WDI_EventInfoType* pEventData
18508)
18509{
Jeff Johnson295189b2012-06-20 16:38:30 -070018510 eHalStatus halStatus;
18511 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018512 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018513 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
18514 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070018515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18516
18517 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018518 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 -------------------------------------------------------------------------*/
18520 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18521 ( NULL == pEventData->pEventData))
18522 {
18523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018524 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018527 }
18528
18529 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
18530
18531 /*-------------------------------------------------------------------------
18532 Extract response and send it to UMAC
18533 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018534
18535 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18536 {
18537 wpalMemoryCopy( &halExitBmpsRsp,
18538 pEventData->pEventData,
18539 sizeof(halExitBmpsRsp));
18540
18541 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
18542 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
18543 }
18544 else
18545 {
18546 halStatus = *((eHalStatus*)pEventData->pEventData);
18547 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18548 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018549
18550 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080018551 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
18552 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
18553 {
18554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
18555 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
18556 WDI_ASSERT(0);
18557 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018558 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
18559
18560 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018561 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018562
Jeff Johnsone7245742012-09-05 17:12:55 -070018563 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018564}/*WDI_ProcessExitBmpsRsp*/
18565
18566/**
18567 @brief Process Enter UAPSD Rsp function (called when a response
18568 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018569
18570 @param pWDICtx: pointer to the WLAN DAL context
18571 pEventData: pointer to the event information structure
18572
Jeff Johnson295189b2012-06-20 16:38:30 -070018573 @see
18574 @return Result of the function call
18575*/
18576WDI_Status
18577WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018578(
Jeff Johnson295189b2012-06-20 16:38:30 -070018579 WDI_ControlBlockType* pWDICtx,
18580 WDI_EventInfoType* pEventData
18581)
18582{
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018584 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018585 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018586 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
18587
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18589
18590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018591 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018592 -------------------------------------------------------------------------*/
18593 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18594 ( NULL == pEventData->pEventData))
18595 {
18596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018597 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018598 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018599 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018600 }
18601
18602 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
18603
18604 /*-------------------------------------------------------------------------
18605 Extract response and send it to UMAC
18606 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018607 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18608 {
18609 wpalMemoryCopy( &halEnterUapsdRsp,
18610 pEventData->pEventData,
18611 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018612
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018613 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
18614 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
18615 }
18616 else
18617 {
18618 halStatus = *((eHalStatus*)pEventData->pEventData);
18619 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18620 }
18621
18622 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070018623 {
18624 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
18625 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
18626 // the traffic to decide when to suspend the trigger frames when there is no traffic
18627 // activity on the trigger enabled ACs
18628 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
18629
18630#ifdef WLAN_PERF
18631 // Increment the BD signature to refresh the fast path BD utilization
18632 pWDICtx->uBdSigSerialNum++;
18633#endif
18634 }
18635
18636 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018637 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018638
Jeff Johnsone7245742012-09-05 17:12:55 -070018639 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018640}/*WDI_ProcessEnterUapsdRsp*/
18641
18642/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018643 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018644 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018645
18646 @param pWDICtx: pointer to the WLAN DAL context
18647 pEventData: pointer to the event information structure
18648
Jeff Johnson295189b2012-06-20 16:38:30 -070018649 @see
18650 @return Result of the function call
18651*/
18652WDI_Status
18653WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018654(
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 WDI_ControlBlockType* pWDICtx,
18656 WDI_EventInfoType* pEventData
18657)
18658{
Jeff Johnson295189b2012-06-20 16:38:30 -070018659 eHalStatus halStatus;
18660 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018661 tHalExitUapsdRspParams halExitUapsdRsp;
18662 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18664
18665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018666 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018667 -------------------------------------------------------------------------*/
18668 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18669 ( NULL == pEventData->pEventData))
18670 {
18671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018672 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018675 }
18676
18677 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
18678
18679 /*-------------------------------------------------------------------------
18680 Extract response and send it to UMAC
18681 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018682 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18683 {
18684 wpalMemoryCopy( &halExitUapsdRsp,
18685 pEventData->pEventData,
18686 sizeof(halExitUapsdRsp));
18687
18688 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
18689 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
18690 }
18691 else
18692 {
18693 halStatus = *((eHalStatus*)pEventData->pEventData);
18694 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18695 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018696 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
18697 // directly instead of the FW WQ.
18698 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
18699
18700#ifdef WLAN_PERF
18701 // Increment the BD signature to refresh the fast path BD utilization
18702 pWDICtx->uBdSigSerialNum++;
18703#endif
18704
18705 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018706 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018707
Jeff Johnsone7245742012-09-05 17:12:55 -070018708 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018709}/*WDI_ProcessExitUapsdRsp*/
18710
18711/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018712 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018713 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018714
18715 @param pWDICtx: pointer to the WLAN DAL context
18716 pEventData: pointer to the event information structure
18717
Jeff Johnson295189b2012-06-20 16:38:30 -070018718 @see
18719 @return Result of the function call
18720*/
18721WDI_Status
18722WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018723(
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 WDI_ControlBlockType* pWDICtx,
18725 WDI_EventInfoType* pEventData
18726)
18727{
18728 WDI_Status wdiStatus;
18729 eHalStatus halStatus;
18730 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
18731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18732
18733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018734 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018735 -------------------------------------------------------------------------*/
18736 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18737 ( NULL == pEventData->pEventData))
18738 {
18739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018740 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018741 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 }
18744
18745 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18746
18747 /*-------------------------------------------------------------------------
18748 Extract response and send it to UMAC
18749 -------------------------------------------------------------------------*/
18750 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018751 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018752
18753 /*Notify UMAC*/
18754 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18755
Jeff Johnsone7245742012-09-05 17:12:55 -070018756 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018757}/*WDI_ProcessSetUapsdAcParamsRsp*/
18758
18759/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018760 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018761 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018762
18763 @param pWDICtx: pointer to the WLAN DAL context
18764 pEventData: pointer to the event information structure
18765
Jeff Johnson295189b2012-06-20 16:38:30 -070018766 @see
18767 @return Result of the function call
18768*/
18769WDI_Status
18770WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018771(
Jeff Johnson295189b2012-06-20 16:38:30 -070018772 WDI_ControlBlockType* pWDICtx,
18773 WDI_EventInfoType* pEventData
18774)
18775{
18776 WDI_Status wdiStatus;
18777 eHalStatus halStatus;
18778 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18780
18781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018783 -------------------------------------------------------------------------*/
18784 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18785 ( NULL == pEventData->pEventData))
18786 {
18787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018791 }
18792
18793 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18794
18795 /*-------------------------------------------------------------------------
18796 Extract response and send it to UMAC
18797 -------------------------------------------------------------------------*/
18798 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018799 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018800
18801 /*Notify UMAC*/
18802 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18803
Jeff Johnsone7245742012-09-05 17:12:55 -070018804 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018805}/*WDI_ProcessUpdateUapsdParamsRsp*/
18806
18807/**
18808 @brief Process Configure RXP filter Rsp function (called when a
18809 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018810
18811 @param pWDICtx: pointer to the WLAN DAL context
18812 pEventData: pointer to the event information structure
18813
Jeff Johnson295189b2012-06-20 16:38:30 -070018814 @see
18815 @return Result of the function call
18816*/
18817WDI_Status
18818WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018819(
Jeff Johnson295189b2012-06-20 16:38:30 -070018820 WDI_ControlBlockType* pWDICtx,
18821 WDI_EventInfoType* pEventData
18822)
18823{
18824 WDI_Status wdiStatus;
18825 eHalStatus halStatus;
18826 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18828
18829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018831 -------------------------------------------------------------------------*/
18832 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18833 ( NULL == pEventData->pEventData))
18834 {
18835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018839 }
18840
18841 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18842
18843 /*-------------------------------------------------------------------------
18844 Extract response and send it to UMAC
18845 -------------------------------------------------------------------------*/
18846 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018847 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018848
18849 /*Notify UMAC*/
18850 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18851
Jeff Johnsone7245742012-09-05 17:12:55 -070018852 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018853}/*WDI_ProcessConfigureRxpFilterRsp*/
18854
18855/**
18856 @brief Process Set beacon filter Rsp function (called when a
18857 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018858
18859 @param pWDICtx: pointer to the WLAN DAL context
18860 pEventData: pointer to the event information structure
18861
Jeff Johnson295189b2012-06-20 16:38:30 -070018862 @see
18863 @return Result of the function call
18864*/
18865WDI_Status
18866WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018867(
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 WDI_ControlBlockType* pWDICtx,
18869 WDI_EventInfoType* pEventData
18870)
18871{
18872 WDI_Status wdiStatus;
18873 eHalStatus halStatus;
18874 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18876
18877 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018878 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018879 -------------------------------------------------------------------------*/
18880 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18881 ( NULL == pEventData->pEventData))
18882 {
18883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018884 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018887 }
18888
18889 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18890
18891 /*-------------------------------------------------------------------------
18892 Extract response and send it to UMAC
18893 -------------------------------------------------------------------------*/
18894 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018895 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018896
18897 /*Notify UMAC*/
18898 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18899
Jeff Johnsone7245742012-09-05 17:12:55 -070018900 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018901}/*WDI_ProcessSetBeaconFilterRsp*/
18902
18903/**
18904 @brief Process remove beacon filter Rsp function (called when a
18905 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018906
18907 @param pWDICtx: pointer to the WLAN DAL context
18908 pEventData: pointer to the event information structure
18909
Jeff Johnson295189b2012-06-20 16:38:30 -070018910 @see
18911 @return Result of the function call
18912*/
18913WDI_Status
18914WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018915(
Jeff Johnson295189b2012-06-20 16:38:30 -070018916 WDI_ControlBlockType* pWDICtx,
18917 WDI_EventInfoType* pEventData
18918)
18919{
18920 WDI_Status wdiStatus;
18921 eHalStatus halStatus;
18922 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18924
18925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018926 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018927 -------------------------------------------------------------------------*/
18928 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18929 ( NULL == pEventData->pEventData))
18930 {
18931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018932 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018935 }
18936
18937 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18938
18939 /*-------------------------------------------------------------------------
18940 Extract response and send it to UMAC
18941 -------------------------------------------------------------------------*/
18942 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018943 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018944
18945 /*Notify UMAC*/
18946 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18947
Jeff Johnsone7245742012-09-05 17:12:55 -070018948 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018949}/*WDI_ProcessRemBeaconFilterRsp*/
18950
18951/**
18952 @brief Process set RSSI thresholds Rsp function (called when a
18953 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018954
18955 @param pWDICtx: pointer to the WLAN DAL context
18956 pEventData: pointer to the event information structure
18957
Jeff Johnson295189b2012-06-20 16:38:30 -070018958 @see
18959 @return Result of the function call
18960*/
18961WDI_Status
18962WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018963(
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 WDI_ControlBlockType* pWDICtx,
18965 WDI_EventInfoType* pEventData
18966)
18967{
18968 WDI_Status wdiStatus;
18969 eHalStatus halStatus;
18970 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18972
18973 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018974 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 -------------------------------------------------------------------------*/
18976 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18977 ( NULL == pEventData->pEventData))
18978 {
18979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018980 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018981 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018982 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018983 }
18984
18985 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18986
18987 /*-------------------------------------------------------------------------
18988 Extract response and send it to UMAC
18989 -------------------------------------------------------------------------*/
18990 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018991 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018992
18993 /*Notify UMAC*/
18994 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18995
Jeff Johnsone7245742012-09-05 17:12:55 -070018996 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018997}/*WDI_ProcessSetRSSIThresoldsRsp*/
18998
18999/**
19000 @brief Process host offload Rsp function (called when a
19001 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019002
19003 @param pWDICtx: pointer to the WLAN DAL context
19004 pEventData: pointer to the event information structure
19005
Jeff Johnson295189b2012-06-20 16:38:30 -070019006 @see
19007 @return Result of the function call
19008*/
19009WDI_Status
19010WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019011(
Jeff Johnson295189b2012-06-20 16:38:30 -070019012 WDI_ControlBlockType* pWDICtx,
19013 WDI_EventInfoType* pEventData
19014)
19015{
19016 WDI_Status wdiStatus;
19017 eHalStatus halStatus;
19018 WDI_HostOffloadCb wdiHostOffloadCb;
19019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19020
19021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019022 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019023 -------------------------------------------------------------------------*/
19024 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19025 ( NULL == pEventData->pEventData))
19026 {
19027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019028 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019031 }
19032
19033 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
19034
19035 /*-------------------------------------------------------------------------
19036 Extract response and send it to UMAC
19037 -------------------------------------------------------------------------*/
19038 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019039 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019040
19041 /*Notify UMAC*/
19042 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
19043
Jeff Johnsone7245742012-09-05 17:12:55 -070019044 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019045}/*WDI_ProcessHostOffloadRsp*/
19046
19047/**
19048 @brief Process keep alive Rsp function (called when a
19049 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019050
19051 @param pWDICtx: pointer to the WLAN DAL context
19052 pEventData: pointer to the event information structure
19053
Jeff Johnson295189b2012-06-20 16:38:30 -070019054 @see
19055 @return Result of the function call
19056*/
19057WDI_Status
19058WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019059(
Jeff Johnson295189b2012-06-20 16:38:30 -070019060 WDI_ControlBlockType* pWDICtx,
19061 WDI_EventInfoType* pEventData
19062)
19063{
19064 WDI_Status wdiStatus;
19065 eHalStatus halStatus;
19066 WDI_KeepAliveCb wdiKeepAliveCb;
19067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19069 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
19070
19071
19072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019073 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 -------------------------------------------------------------------------*/
19075 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19076 ( NULL == pEventData->pEventData))
19077 {
19078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019079 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 }
19083
Jeff Johnsone7245742012-09-05 17:12:55 -070019084 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
19085
Jeff Johnson295189b2012-06-20 16:38:30 -070019086 /*-------------------------------------------------------------------------
19087 Extract response and send it to UMAC
19088 -------------------------------------------------------------------------*/
19089 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019090 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019091
19092 /*Notify UMAC*/
19093 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
19094
Jeff Johnsone7245742012-09-05 17:12:55 -070019095 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019096}/*WDI_ProcessKeepAliveRsp*/
19097
19098/**
19099 @brief Process wowl add ptrn Rsp function (called when a
19100 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019101
19102 @param pWDICtx: pointer to the WLAN DAL context
19103 pEventData: pointer to the event information structure
19104
Jeff Johnson295189b2012-06-20 16:38:30 -070019105 @see
19106 @return Result of the function call
19107*/
19108WDI_Status
19109WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019110(
Jeff Johnson295189b2012-06-20 16:38:30 -070019111 WDI_ControlBlockType* pWDICtx,
19112 WDI_EventInfoType* pEventData
19113)
19114{
Jeff Johnson295189b2012-06-20 16:38:30 -070019115 eHalStatus halStatus;
19116 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019117 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
19118 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
19119
Jeff Johnson295189b2012-06-20 16:38:30 -070019120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19121
19122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019123 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 -------------------------------------------------------------------------*/
19125 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19126 ( NULL == pEventData->pEventData))
19127 {
19128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019129 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019132 }
19133
19134 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
19135
19136 /*-------------------------------------------------------------------------
19137 Extract response and send it to UMAC
19138 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019139 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19140 {
19141 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
19142 pEventData->pEventData,
19143 sizeof(halAddWowlBcastPtrRsp));
19144
19145 wdiWowlAddBcPtrRsp.wdiStatus =
19146 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
19147 }
19148 else
19149 {
19150 halStatus = *((eHalStatus*)pEventData->pEventData);
19151 wdiWowlAddBcPtrRsp.wdiStatus =
19152 WDI_HAL_2_WDI_STATUS(halStatus);
19153 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019154
19155 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019156 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019157
Jeff Johnsone7245742012-09-05 17:12:55 -070019158 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019159}/*WDI_ProcessWowlAddBcPtrnRsp*/
19160
19161/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019162 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019163 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019164
19165 @param pWDICtx: pointer to the WLAN DAL context
19166 pEventData: pointer to the event information structure
19167
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 @see
19169 @return Result of the function call
19170*/
19171WDI_Status
19172WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019173(
Jeff Johnson295189b2012-06-20 16:38:30 -070019174 WDI_ControlBlockType* pWDICtx,
19175 WDI_EventInfoType* pEventData
19176)
19177{
Jeff Johnson295189b2012-06-20 16:38:30 -070019178 eHalStatus halStatus;
19179 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019180 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
19181 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19183
19184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019185 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019186 -------------------------------------------------------------------------*/
19187 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19188 ( NULL == pEventData->pEventData))
19189 {
19190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019194 }
19195
19196 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
19197
19198 /*-------------------------------------------------------------------------
19199 Extract response and send it to UMAC
19200 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019201 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19202 {
19203 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
19204 pEventData->pEventData,
19205 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070019206
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019207 wdiWowlDelBcstPtrRsp.wdiStatus =
19208 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
19209 }
19210 else
19211 {
19212 halStatus = *((eHalStatus*)pEventData->pEventData);
19213 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19214 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019215 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019216 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019217
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019219}/*WDI_ProcessWowlDelBcPtrnRsp*/
19220
19221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019222 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019223 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019224
19225 @param pWDICtx: pointer to the WLAN DAL context
19226 pEventData: pointer to the event information structure
19227
Jeff Johnson295189b2012-06-20 16:38:30 -070019228 @see
19229 @return Result of the function call
19230*/
19231WDI_Status
19232WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019233(
Jeff Johnson295189b2012-06-20 16:38:30 -070019234 WDI_ControlBlockType* pWDICtx,
19235 WDI_EventInfoType* pEventData
19236)
19237{
Jeff Johnson295189b2012-06-20 16:38:30 -070019238 eHalStatus halStatus;
19239 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019240 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
19241 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19243
19244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019246 -------------------------------------------------------------------------*/
19247 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19248 ( NULL == pEventData->pEventData))
19249 {
19250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019251 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019254 }
19255
19256 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
19257
19258 /*-------------------------------------------------------------------------
19259 Extract response and send it to UMAC
19260 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019261 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19262 {
19263 wpalMemoryCopy( &halEnterWowlRspParams,
19264 (wpt_uint8*)pEventData->pEventData,
19265 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019266
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019267 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
19268 wdiwowlEnterRsp.status =
19269 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
19270 }
19271 else
19272 {
19273 halStatus = *((eHalStatus*)pEventData->pEventData);
19274 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19275 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019276 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019277 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019278
Jeff Johnsone7245742012-09-05 17:12:55 -070019279 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019280}/*WDI_ProcessWowlEnterRsp*/
19281
19282/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019283 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019284 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019285
19286 @param pWDICtx: pointer to the WLAN DAL context
19287 pEventData: pointer to the event information structure
19288
Jeff Johnson295189b2012-06-20 16:38:30 -070019289 @see
19290 @return Result of the function call
19291*/
19292WDI_Status
19293WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019294(
Jeff Johnson295189b2012-06-20 16:38:30 -070019295 WDI_ControlBlockType* pWDICtx,
19296 WDI_EventInfoType* pEventData
19297)
19298{
Jeff Johnson295189b2012-06-20 16:38:30 -070019299 eHalStatus halStatus;
19300 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019301 tHalExitWowlRspParams halExitWowlRspParams;
19302 WDI_WowlExitRspParamsType wdiWowlExitRsp;
19303
Jeff Johnson295189b2012-06-20 16:38:30 -070019304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19305
19306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019308 -------------------------------------------------------------------------*/
19309 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19310 ( NULL == pEventData->pEventData))
19311 {
19312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019313 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019316 }
19317
19318 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
19319
19320 /*-------------------------------------------------------------------------
19321 Extract response and send it to UMAC
19322 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019323 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
19324 {
19325 wpalMemoryCopy( &halExitWowlRspParams,
19326 pEventData->pEventData,
19327 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019328
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019329 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
19330 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
19331
19332 }
19333 else
19334 {
19335 halStatus = *((eHalStatus*)pEventData->pEventData);
19336 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
19337 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019338 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070019339 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019340
Jeff Johnsone7245742012-09-05 17:12:55 -070019341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019342}/*WDI_ProcessWowlExitRsp*/
19343
19344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019345 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070019346 (called when a response is being received over the bus
19347 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019348
19349 @param pWDICtx: pointer to the WLAN DAL context
19350 pEventData: pointer to the event information structure
19351
Jeff Johnson295189b2012-06-20 16:38:30 -070019352 @see
19353 @return Result of the function call
19354*/
19355WDI_Status
19356WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019357(
Jeff Johnson295189b2012-06-20 16:38:30 -070019358 WDI_ControlBlockType* pWDICtx,
19359 WDI_EventInfoType* pEventData
19360)
19361{
19362 WDI_Status wdiStatus;
19363 eHalStatus halStatus;
19364 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
19365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19366
19367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019368 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019369 -------------------------------------------------------------------------*/
19370 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19371 ( NULL == pEventData->pEventData))
19372 {
19373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019377 }
19378
19379 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
19380
19381 /*-------------------------------------------------------------------------
19382 Extract response and send it to UMAC
19383 -------------------------------------------------------------------------*/
19384 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019385 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019386
19387 /*Notify UMAC*/
19388 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
19389
Jeff Johnsone7245742012-09-05 17:12:55 -070019390 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019391}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
19392
19393
19394/**
19395 @brief Process Nv download(called when a response
19396 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070019397
19398 @param pWDICtx: pointer to the WLAN DAL context
19399 pEventData: pointer to the event information structure
19400
Jeff Johnson295189b2012-06-20 16:38:30 -070019401 @see
19402 @return Result of the function call
19403*/
19404WDI_Status
19405WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019406(
Jeff Johnson295189b2012-06-20 16:38:30 -070019407 WDI_ControlBlockType* pWDICtx,
19408 WDI_EventInfoType* pEventData
19409)
19410{
19411
19412 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
19413 tHalNvImgDownloadRspParams halNvDownloadRsp;
19414 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
19415
19416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019417 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019418 -------------------------------------------------------------------------*/
19419 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19420 ( NULL == pEventData->pEventData))
19421 {
19422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019423 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019426 }
19427
19428 /*-------------------------------------------------------------------------
19429 Extract response and send it to UMAC
19430 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019431 wpalMemoryCopy( &halNvDownloadRsp,
19432 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019433 sizeof(halNvDownloadRsp));
19434
19435 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
19436
19437 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070019438 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
19439 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070019440 {
19441 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070019442 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019443 }
19444 else
19445 {
19446 /*Reset the Nv related global information in WDI context information */
19447 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
19448 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
19449 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
19450 /*call WDA callback function for last fragment */
19451 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
19452 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
19453 }
19454
Jeff Johnsone7245742012-09-05 17:12:55 -070019455 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019456}
19457#ifdef WLAN_FEATURE_VOWIFI_11R
19458/**
19459 @brief Process Add TSpec Rsp function (called when a response
19460 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019461
19462 @param pWDICtx: pointer to the WLAN DAL context
19463 pEventData: pointer to the event information structure
19464
Jeff Johnson295189b2012-06-20 16:38:30 -070019465 @see
19466 @return Result of the function call
19467*/
19468WDI_Status
19469WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019470(
Jeff Johnson295189b2012-06-20 16:38:30 -070019471 WDI_ControlBlockType* pWDICtx,
19472 WDI_EventInfoType* pEventData
19473)
19474{
19475 WDI_Status wdiStatus;
19476 tAggrAddTsRspParams aggrAddTsRsp;
19477 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
19478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19479
19480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019482 -------------------------------------------------------------------------*/
19483 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19484 ( NULL == pEventData->pEventData))
19485 {
19486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019487 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019490 }
19491
19492 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
19493
19494 /*-------------------------------------------------------------------------
19495 Extract response and send it to UMAC
19496 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019497 wpalMemoryCopy( &aggrAddTsRsp,
19498 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019499 sizeof(aggrAddTsRsp));
19500
19501 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070019502 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070019503
19504 /*Notify UMAC*/
19505 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19506
Jeff Johnsone7245742012-09-05 17:12:55 -070019507 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019508}/*WDI_ProcessAddTSpecRsp*/
19509#endif /* WLAN_FEATURE_VOWIFI_11R */
19510
19511/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019512 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019513 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019514
19515 @param pWDICtx: pointer to the WLAN DAL context
19516 pEventData: pointer to the event information structure
19517
Jeff Johnson295189b2012-06-20 16:38:30 -070019518 @see
19519 @return Result of the function call
19520*/
19521WDI_Status
19522WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019523(
Jeff Johnson295189b2012-06-20 16:38:30 -070019524 WDI_ControlBlockType* pWDICtx,
19525 WDI_EventInfoType* pEventData
19526)
19527{
19528 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
19529 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
19530 tHalHostResumeRspParams hostResumeRspMsg;
19531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19532
19533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019535 -------------------------------------------------------------------------*/
19536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19537 ( NULL == pEventData->pEventData))
19538 {
19539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019543 }
19544
19545 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
19546
19547 /*-------------------------------------------------------------------------
19548 Extract response and send it to UMAC
19549 -------------------------------------------------------------------------*/
19550
Jeff Johnsone7245742012-09-05 17:12:55 -070019551 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 (wpt_uint8*)pEventData->pEventData,
19553 sizeof(hostResumeRspMsg));
19554
Jeff Johnsone7245742012-09-05 17:12:55 -070019555 wdiResumeRspParams.wdiStatus =
19556 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019557
19558 /*Notify UMAC*/
19559 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
19560
19561 return WDI_STATUS_SUCCESS;
19562}
19563
19564/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019565 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019566 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019567
19568 @param pWDICtx: pointer to the WLAN DAL context
19569 pEventData: pointer to the event information structure
19570
Jeff Johnson295189b2012-06-20 16:38:30 -070019571 @see
19572 @return Result of the function call
19573*/
19574WDI_Status
19575WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019576(
Jeff Johnson295189b2012-06-20 16:38:30 -070019577 WDI_ControlBlockType* pWDICtx,
19578 WDI_EventInfoType* pEventData
19579)
19580{
19581 WDI_Status wdiStatus;
19582 eHalStatus halStatus;
19583 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
19584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19585
19586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019588 -------------------------------------------------------------------------*/
19589 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19590 ( NULL == pEventData->pEventData))
19591 {
19592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019596 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019597
19598 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019599
19600 /*-------------------------------------------------------------------------
19601 Extract response and send it to UMAC
19602 -------------------------------------------------------------------------*/
19603 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019604 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019605
19606 /*Notify UMAC*/
19607 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19608
Jeff Johnsone7245742012-09-05 17:12:55 -070019609 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019610}/*WDI_ProcessSetTxPerTrackingRsp*/
19611
19612/*==========================================================================
19613 Indications from HAL
19614 ==========================================================================*/
19615/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019616 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019617 indication of this kind is being received over the bus
19618 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019619
19620 @param pWDICtx: pointer to the WLAN DAL context
19621 pEventData: pointer to the event information structure
19622
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 @see
19624 @return Result of the function call
19625*/
19626WDI_Status
19627WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019628(
Jeff Johnson295189b2012-06-20 16:38:30 -070019629 WDI_ControlBlockType* pWDICtx,
19630 WDI_EventInfoType* pEventData
19631)
19632{
19633 WDI_LowLevelIndType wdiInd;
19634 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
19635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19636
19637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019639 -------------------------------------------------------------------------*/
19640 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19641 ( NULL == pEventData->pEventData))
19642 {
19643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019647 }
19648
19649 /*-------------------------------------------------------------------------
19650 Extract indication and send it to UMAC
19651 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019652 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
19653 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019654 sizeof(tHalRSSINotification));
19655
19656 /*Fill in the indication parameters*/
19657 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
19658 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
19659 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
19660 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
19661 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
19662 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
19663 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
19664 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
19665 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
19666 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
19667 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
19668 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
19669 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080019670 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
19671 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070019672
ltimariu034f7d62013-01-24 18:54:33 -080019673 if ( pWDICtx->wdiLowLevelIndCB )
19674 {
19675 /*Notify UMAC of indication*/
19676 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19677 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019678
19679 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019680}/*WDI_ProcessLowRSSIInd*/
19681
19682
19683/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019684 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019685 an indication of this kind is being received over the
19686 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019687
19688 @param pWDICtx: pointer to the WLAN DAL context
19689 pEventData: pointer to the event information structure
19690
Jeff Johnson295189b2012-06-20 16:38:30 -070019691 @see
19692 @return Result of the function call
19693*/
19694WDI_Status
19695WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019696(
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 WDI_ControlBlockType* pWDICtx,
19698 WDI_EventInfoType* pEventData
19699)
19700{
19701 WDI_Status wdiStatus;
19702 eHalStatus halStatus;
19703 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019704 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019705 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19706
19707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019709 -------------------------------------------------------------------------*/
19710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19711 ( NULL == pEventData->pEventData))
19712 {
19713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019717 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019718 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019719 /*-------------------------------------------------------------------------
19720 Extract indication and send it to UMAC
19721 -------------------------------------------------------------------------*/
19722 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19723 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019724 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019725
19726 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019727 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080019728 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
19729 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080019730 if ( pWDICtx->wdiLowLevelIndCB )
19731 {
19732 /*Notify UMAC*/
19733 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19734 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019735
19736 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019737}/*WDI_ProcessMissedBeaconInd*/
19738
19739
19740/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019741 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019742 an indication of this kind is being received over the
19743 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019744
19745 @param pWDICtx: pointer to the WLAN DAL context
19746 pEventData: pointer to the event information structure
19747
Jeff Johnson295189b2012-06-20 16:38:30 -070019748 @see
19749 @return Result of the function call
19750*/
19751WDI_Status
19752WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019753(
Jeff Johnson295189b2012-06-20 16:38:30 -070019754 WDI_ControlBlockType* pWDICtx,
19755 WDI_EventInfoType* pEventData
19756)
19757{
19758 WDI_Status wdiStatus;
19759 eHalStatus halStatus;
19760 WDI_LowLevelIndType wdiInd;
19761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19762
19763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019764 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019765 -------------------------------------------------------------------------*/
19766 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19767 ( NULL == pEventData->pEventData))
19768 {
19769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019770 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 }
19774
19775 /*-------------------------------------------------------------------------
19776 Extract indication and send it to UMAC
19777 -------------------------------------------------------------------------*/
19778 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19779 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019780 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019781
19782 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019783 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019784 /* ! TO DO - fill in from HAL struct:
19785 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19786
ltimariu034f7d62013-01-24 18:54:33 -080019787 if ( pWDICtx->wdiLowLevelIndCB )
19788 {
19789 /*Notify UMAC*/
19790 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19791 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019792
19793 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019794}/*WDI_ProcessUnkAddrFrameInd*/
19795
19796
19797/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019798 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 indication of this kind is being received over the bus
19800 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019801
19802 @param pWDICtx: pointer to the WLAN DAL context
19803 pEventData: pointer to the event information structure
19804
Jeff Johnson295189b2012-06-20 16:38:30 -070019805 @see
19806 @return Result of the function call
19807*/
19808WDI_Status
19809WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019810(
Jeff Johnson295189b2012-06-20 16:38:30 -070019811 WDI_ControlBlockType* pWDICtx,
19812 WDI_EventInfoType* pEventData
19813)
19814{
19815 WDI_LowLevelIndType wdiInd;
19816 tpSirMicFailureInd pHalMicFailureInd;
19817
19818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19819
19820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019821 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019822 -------------------------------------------------------------------------*/
19823 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19824 ( NULL == pEventData->pEventData))
19825 {
19826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019827 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019828 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019830 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019831
Jeff Johnson295189b2012-06-20 16:38:30 -070019832 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19833 /*-------------------------------------------------------------------------
19834 Extract indication and send it to UMAC
19835 -------------------------------------------------------------------------*/
19836
19837 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019838 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019839 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19840 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19841 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19842 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19843 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19844 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19845 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19846 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019848 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019849 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019850 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019851 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019852 pHalMicFailureInd->info.keyId;
19853 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19854 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19855 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19856 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019857
19858 if ( pWDICtx->wdiLowLevelIndCB )
19859 {
19860 /*Notify UMAC*/
19861 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19862 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019863
19864 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019865}/*WDI_ProcessMicFailureInd*/
19866
19867
19868/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019869 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019870 an indication of this kind is being received over the
19871 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019872
19873 @param pWDICtx: pointer to the WLAN DAL context
19874 pEventData: pointer to the event information structure
19875
Jeff Johnson295189b2012-06-20 16:38:30 -070019876 @see
19877 @return Result of the function call
19878*/
19879WDI_Status
19880WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019881(
Jeff Johnson295189b2012-06-20 16:38:30 -070019882 WDI_ControlBlockType* pWDICtx,
19883 WDI_EventInfoType* pEventData
19884)
19885{
19886 WDI_Status wdiStatus;
19887 eHalStatus halStatus;
19888 WDI_LowLevelIndType wdiInd;
19889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19890
19891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019893 -------------------------------------------------------------------------*/
19894 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19895 ( NULL == pEventData->pEventData))
19896 {
19897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019901 }
19902
19903 /*-------------------------------------------------------------------------
19904 Extract indication and send it to UMAC
19905 -------------------------------------------------------------------------*/
19906
19907 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19908 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019909 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019910
19911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19912 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019913
Jeff Johnson295189b2012-06-20 16:38:30 -070019914 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019915 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19916 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019917
ltimariu034f7d62013-01-24 18:54:33 -080019918 if ( pWDICtx->wdiLowLevelIndCB )
19919 {
19920 /*Notify UMAC*/
19921 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19922 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019923
19924 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019925}/*WDI_ProcessFatalErrorInd*/
19926
19927/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019928 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019929 an indication of this kind is being received over the
19930 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019931
19932 @param pWDICtx: pointer to the WLAN DAL context
19933 pEventData: pointer to the event information structure
19934
Jeff Johnson295189b2012-06-20 16:38:30 -070019935 @see
19936 @return Result of the function call
19937*/
19938WDI_Status
19939WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019940(
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 WDI_ControlBlockType* pWDICtx,
19942 WDI_EventInfoType* pEventData
19943)
19944{
19945 tDeleteStaContextParams halDelSTACtx;
19946 WDI_LowLevelIndType wdiInd;
19947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19948
19949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 -------------------------------------------------------------------------*/
19952 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19953 ( NULL == pEventData->pEventData))
19954 {
19955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019959 }
19960
19961 /*-------------------------------------------------------------------------
19962 Extract indication and send it to UMAC
19963 -------------------------------------------------------------------------*/
19964
19965 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019966 wpalMemoryCopy( &halDelSTACtx,
19967 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019968 sizeof(halDelSTACtx));
19969
19970 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019971 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019972
19973 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19974 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19975 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19976 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19977
Jeff Johnsone7245742012-09-05 17:12:55 -070019978 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019979 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019980 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019981 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019982 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19983 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019984
ltimariu034f7d62013-01-24 18:54:33 -080019985 if ( pWDICtx->wdiLowLevelIndCB )
19986 {
19987 /*Notify UMAC*/
19988 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19989 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019990
19991 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019992}/*WDI_ProcessDelSTAInd*/
19993
19994/**
19995*@brief Process Coex Indication function (called when
19996 an indication of this kind is being received over the
19997 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019998
19999 @param pWDICtx: pointer to the WLAN DAL context
20000 pEventData: pointer to the event information structure
20001
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 @see
20003 @return Result of the function call
20004*/
20005WDI_Status
20006WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020007(
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 WDI_ControlBlockType* pWDICtx,
20009 WDI_EventInfoType* pEventData
20010)
20011{
20012 WDI_LowLevelIndType wdiInd;
20013 tCoexIndMsg halCoexIndMsg;
20014 wpt_uint32 index;
20015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20016
20017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020019 -------------------------------------------------------------------------*/
20020 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20021 ( NULL == pEventData->pEventData ))
20022 {
20023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020025 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070020026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020027 }
20028
20029 /*-------------------------------------------------------------------------
20030 Extract indication and send it to UMAC
20031 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020032 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
20033 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020034 sizeof(halCoexIndMsg.coexIndParams) );
20035
20036 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020037 wdiInd.wdiIndicationType = WDI_COEX_IND;
20038 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070020039 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
20040 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020041 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070020042 }
20043
20044 // DEBUG
20045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20046 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070020047 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
20048 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
20049 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
20050 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
20051 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070020052
ltimariu034f7d62013-01-24 18:54:33 -080020053 if ( pWDICtx->wdiLowLevelIndCB )
20054 {
20055 /*Notify UMAC*/
20056 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20057 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020058
20059 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020060}/*WDI_ProcessCoexInd*/
20061
20062/**
20063*@brief Process Tx Complete Indication function (called when
20064 an indication of this kind is being received over the
20065 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020066
20067 @param pWDICtx: pointer to the WLAN DAL context
20068 pEventData: pointer to the event information structure
20069
Jeff Johnson295189b2012-06-20 16:38:30 -070020070 @see
20071 @return Result of the function call
20072*/
20073WDI_Status
20074WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020075(
Jeff Johnson295189b2012-06-20 16:38:30 -070020076 WDI_ControlBlockType* pWDICtx,
20077 WDI_EventInfoType* pEventData
20078)
20079{
20080 WDI_LowLevelIndType wdiInd;
20081 tTxComplIndMsg halTxComplIndMsg;
20082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20083
20084 /*-------------------------------------------------------------------------
20085 Sanity check
20086 -------------------------------------------------------------------------*/
20087 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20088 ( NULL == pEventData->pEventData ))
20089 {
20090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 WDI_ASSERT( 0 );
20093 return WDI_STATUS_E_FAILURE;
20094 }
20095
20096 /*-------------------------------------------------------------------------
20097 Extract indication and send it to UMAC
20098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020099 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
20100 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020101 sizeof(halTxComplIndMsg.txComplParams) );
20102
20103 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020104 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
20105 wdiInd.wdiIndicationData.tx_complete_status
20106 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070020107
ltimariu034f7d62013-01-24 18:54:33 -080020108 if ( pWDICtx->wdiLowLevelIndCB )
20109 {
20110 /*Notify UMAC*/
20111 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20112 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020113
20114 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020115}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020116#ifdef FEATURE_WLAN_TDLS
20117/**
20118*@brief Process TDLS Indication function (called when
20119 an indication of this kind is being received over the
20120 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070020121
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053020122 @param pWDICtx: pointer to the WLAN DAL context
20123 pEventData: pointer to the event information structure
20124
20125 @see
20126 @return Result of the function call
20127*/
20128WDI_Status
20129WDI_ProcessTdlsInd
20130(
20131 WDI_ControlBlockType* pWDICtx,
20132 WDI_EventInfoType* pEventData
20133)
20134{
20135 WDI_LowLevelIndType wdiInd;
20136 tTdlsIndMsg halTdlsIndMsg;
20137 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20138
20139 /*-------------------------------------------------------------------------
20140 Sanity check
20141 -------------------------------------------------------------------------*/
20142 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20143 ( NULL == pEventData->pEventData ))
20144 {
20145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20146 "%s: Invalid parameters", __func__);
20147 WDI_ASSERT( 0 );
20148 return WDI_STATUS_E_FAILURE;
20149 }
20150
20151 /*-------------------------------------------------------------------------
20152 Extract indication and send it to UMAC
20153 -------------------------------------------------------------------------*/
20154 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
20155 pEventData->pEventData,
20156 sizeof(halTdlsIndMsg.tdlsIndParams) );
20157
20158 /*Fill in the indication parameters*/
20159 wdiInd.wdiIndicationType = WDI_TDLS_IND;
20160
20161 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
20162 = halTdlsIndMsg.tdlsIndParams.status;
20163
20164 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
20165 = halTdlsIndMsg.tdlsIndParams.staIdx;
20166
20167 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
20168 = halTdlsIndMsg.tdlsIndParams.reasonCode;
20169
20170 /*Notify UMAC*/
20171 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20172
20173 return WDI_STATUS_SUCCESS;
20174}/*WDI_ProcessTdlsInd*/
20175#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020176/**
Viral Modi9dc288a2012-12-10 13:09:21 -080020177*@brief Process Noa Start Indication function (called when
20178 an indication of this kind is being received over the
20179 bus from HAL)
20180
20181 @param pWDICtx: pointer to the WLAN DAL context
20182 pEventData: pointer to the event information structure
20183
20184 @see
20185 @return Result of the function call
20186*/
20187WDI_Status
20188WDI_ProcessP2pNoaStartInd
20189(
20190 WDI_ControlBlockType* pWDICtx,
20191 WDI_EventInfoType* pEventData
20192)
20193{
20194 WDI_LowLevelIndType wdiInd;
20195 tNoaStartIndMsg halNoaStartIndMsg;
20196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20197
20198 /*-------------------------------------------------------------------------
20199 Sanity check
20200 -------------------------------------------------------------------------*/
20201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20202 ( NULL == pEventData->pEventData ))
20203 {
20204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20205 "%s: Invalid parameters", __func__);
20206 WDI_ASSERT( 0 );
20207 return WDI_STATUS_E_FAILURE;
20208 }
20209
20210 /*-------------------------------------------------------------------------
20211 Extract indication and send it to UMAC
20212 -------------------------------------------------------------------------*/
20213 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
20214 pEventData->pEventData,
20215 sizeof(halNoaStartIndMsg.noaStartIndParams) );
20216
20217 /*Fill in the indication parameters*/
20218 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
20219
20220 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
20221 = halNoaStartIndMsg.noaStartIndParams.status;
20222
20223 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
20224 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
20225
20226 /*Notify UMAC*/
20227 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20228
20229 return WDI_STATUS_SUCCESS;
20230}/*WDI_ProcessNoaAttrInd*/
20231
20232/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020233*@brief Process Noa Attr Indication function (called when
20234 an indication of this kind is being received over the
20235 bus from HAL)
20236
20237 @param pWDICtx: pointer to the WLAN DAL context
20238 pEventData: pointer to the event information structure
20239
20240 @see
20241 @return Result of the function call
20242*/
20243WDI_Status
20244WDI_ProcessP2pNoaAttrInd
20245(
20246 WDI_ControlBlockType* pWDICtx,
20247 WDI_EventInfoType* pEventData
20248)
20249{
20250 WDI_LowLevelIndType wdiInd;
20251 tNoaAttrIndMsg halNoaAttrIndMsg;
20252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20253
20254 /*-------------------------------------------------------------------------
20255 Sanity check
20256 -------------------------------------------------------------------------*/
20257 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20258 ( NULL == pEventData->pEventData ))
20259 {
20260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020262 WDI_ASSERT( 0 );
20263 return WDI_STATUS_E_FAILURE;
20264 }
20265
20266 /*-------------------------------------------------------------------------
20267 Extract indication and send it to UMAC
20268 -------------------------------------------------------------------------*/
20269 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
20270 pEventData->pEventData,
20271 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
20272
20273 /*Fill in the indication parameters*/
20274 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070020275
Jeff Johnson295189b2012-06-20 16:38:30 -070020276 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
20277 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070020278
Jeff Johnson295189b2012-06-20 16:38:30 -070020279 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
20280 = halNoaAttrIndMsg.noaAttrIndParams.index;
20281 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
20282 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
20283 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
20284 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070020285
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
20287 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
20288 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
20289 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
20290 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
20291 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
20292 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
20293 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070020294
Jeff Johnson295189b2012-06-20 16:38:30 -070020295 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
20296 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
20297 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
20298 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
20299 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
20300 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
20301 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
20302 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
20303
ltimariu034f7d62013-01-24 18:54:33 -080020304 if ( pWDICtx->wdiLowLevelIndCB )
20305 {
20306 /*Notify UMAC*/
20307 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20308 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020309
20310 return WDI_STATUS_SUCCESS;
20311}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020312
20313/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020314 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070020315 an indication of this kind is being received over the
20316 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020317
20318 @param pWDICtx: pointer to the WLAN DAL context
20319 pEventData: pointer to the event information structure
20320
Jeff Johnson295189b2012-06-20 16:38:30 -070020321 @see
20322 @return Result of the function call
20323*/
20324WDI_Status
20325WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070020326(
Jeff Johnson295189b2012-06-20 16:38:30 -070020327 WDI_ControlBlockType* pWDICtx,
20328 WDI_EventInfoType* pEventData
20329)
20330{
20331 WDI_LowLevelIndType wdiInd;
20332 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020333
Jeff Johnson295189b2012-06-20 16:38:30 -070020334 /*-------------------------------------------------------------------------
20335 Extract indication and send it to UMAC
20336 -------------------------------------------------------------------------*/
20337 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020338 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
20339
ltimariu034f7d62013-01-24 18:54:33 -080020340 if ( pWDICtx->wdiLowLevelIndCB )
20341 {
20342 /*Notify UMAC*/
20343 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
20344 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020345
Jeff Johnsone7245742012-09-05 17:12:55 -070020346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020347}/*WDI_ProcessTxPerHitInd*/
20348
Jeff Johnson295189b2012-06-20 16:38:30 -070020349/**
Yue Ma365933a2013-08-14 15:59:08 -070020350 @brief Process Periodic Tx Pattern Fw Indication function
20351
20352 @param pWDICtx: pointer to the WLAN DAL context
20353 pEventData: pointer to the event information structure
20354
20355 @see
20356 @return Result of the function call
20357*/
20358WDI_Status
20359WDI_ProcessPeriodicTxPtrnFwInd
20360(
20361 WDI_ControlBlockType* pWDICtx,
20362 WDI_EventInfoType* pEventData
20363)
20364{
20365 WDI_LowLevelIndType wdiInd;
20366
20367 /*-------------------------------------------------------------------------
20368 Sanity check
20369 -------------------------------------------------------------------------*/
20370 if ((NULL == pWDICtx) || (NULL == pEventData) ||
20371 (NULL == pEventData->pEventData))
20372 {
20373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20374 "%s: Invalid parameters", __func__);
20375 WDI_ASSERT(0);
20376 return WDI_STATUS_E_FAILURE;
20377 }
20378
20379 /*-------------------------------------------------------------------------
20380 Extract indication and send it to UMAC
20381 -------------------------------------------------------------------------*/
20382 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
20383 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
20384 sizeof(tHalPeriodicTxPtrnFwInd));
20385
20386 if (pWDICtx->wdiLowLevelIndCB)
20387 {
20388 /*Notify UMAC*/
20389 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
20390 }
20391
20392 return WDI_STATUS_SUCCESS;
20393}
20394
20395/**
Jeff Johnson295189b2012-06-20 16:38:30 -070020396 @brief WDI_ProcessFTMCommandReq
20397 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020398
20399 @param pWDICtx: pointer to the WLAN DAL context
20400 pEventData: pointer to the event information structure
20401
Jeff Johnson295189b2012-06-20 16:38:30 -070020402 @see
20403 @return Result of the function call
20404*/
20405WDI_Status
20406WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020407(
Jeff Johnson295189b2012-06-20 16:38:30 -070020408 WDI_ControlBlockType* pWDICtx,
20409 WDI_EventInfoType* pEventData
20410)
20411{
20412 WDI_FTMCommandReqType *ftmCommandReq = NULL;
20413 wpt_uint8 *ftmCommandBuffer = NULL;
20414 wpt_uint16 dataOffset;
20415 wpt_uint16 bufferSize;
20416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020417 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020418 -------------------------------------------------------------------------*/
20419 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20420 ( NULL == pEventData->pEventData))
20421
20422 {
20423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020424 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020427 }
20428
20429 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
20430
20431 /* Get MSG Buffer */
20432 WDI_GetMessageBuffer(pWDICtx,
20433 WDI_FTM_CMD_REQ,
20434 ftmCommandReq->bodyLength,
20435 &ftmCommandBuffer,
20436 &dataOffset,
20437 &bufferSize);
20438
20439 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
20440 ftmCommandReq->FTMCommandBody,
20441 ftmCommandReq->bodyLength);
20442
20443 /* Send MSG */
20444 return WDI_SendMsg(pWDICtx,
20445 ftmCommandBuffer,
20446 bufferSize,
20447 pEventData->pCBfnc,
20448 pEventData->pUserData,
20449 WDI_FTM_CMD_RESP);
20450}
20451
20452/**
20453 @brief WDI_ProcessFTMCommandRsp
20454 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070020455
20456 @param pWDICtx: pointer to the WLAN DAL context
20457 pEventData: pointer to the event information structure
20458
Jeff Johnson295189b2012-06-20 16:38:30 -070020459 @see
20460 @return Result of the function call
20461*/
20462WDI_Status
20463WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020464(
Jeff Johnson295189b2012-06-20 16:38:30 -070020465 WDI_ControlBlockType* pWDICtx,
20466 WDI_EventInfoType* pEventData
20467)
20468{
20469 WDI_FTMCommandRspCb ftmCMDRspCb;
20470 tProcessPttRspParams *ftmCMDRspData = NULL;
20471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20472
20473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020475 -------------------------------------------------------------------------*/
20476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20477 ( NULL == pEventData->pEventData))
20478 {
20479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020483 }
20484
20485 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
20486
20487 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
20488
Jeff Johnsone7245742012-09-05 17:12:55 -070020489 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
20490 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020491 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
20492
20493 /*Notify UMAC*/
20494 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
20495
Jeff Johnsone7245742012-09-05 17:12:55 -070020496 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020497}
Jeff Johnson295189b2012-06-20 16:38:30 -070020498/**
20499 @brief WDI_ProcessHalDumpCmdReq
20500 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020501
20502 @param pWDICtx: pointer to the WLAN DAL context
20503 pEventData: pointer to the event information structure
20504
Jeff Johnson295189b2012-06-20 16:38:30 -070020505 @see
20506 @return Result of the function call
20507*/
20508WDI_Status
20509WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070020510(
Jeff Johnson295189b2012-06-20 16:38:30 -070020511 WDI_ControlBlockType* pWDICtx,
20512 WDI_EventInfoType* pEventData
20513)
20514{
20515 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
20516 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
20517 wpt_uint16 usDataOffset = 0;
20518 wpt_uint16 usSendSize = 0;
20519 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020520 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020521
20522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 -------------------------------------------------------------------------*/
20525 if (( NULL == pEventData ) ||
20526 ( NULL == pEventData->pEventData) ||
20527 ( NULL == pEventData->pCBfnc ))
20528 {
20529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020533 }
20534
20535 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
20536 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
20537
20538 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020539 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020540 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070020541 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020542 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020543 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070020545 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070020547 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070020548 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070020549
Jeff Johnson295189b2012-06-20 16:38:30 -070020550 /*-----------------------------------------------------------------------
20551 Get message buffer
20552 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020553 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070020554 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
20555 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070020556 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070020557 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
20558 {
20559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080020560 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020561 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
20562 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020564 }
20565
Jeff Johnsone7245742012-09-05 17:12:55 -070020566 wpalMemoryCopy( pSendBuffer+usDataOffset,
20567 &halDumpCmdReqMsg.dumpCmdReqParams,
20568 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020569
20570 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070020571 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020572
20573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020574 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020575 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020576 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
20577 wdiHALDumpCmdRspCb, pEventData->pUserData,
20578 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070020579}
20580
20581/**
20582 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020583 Process hal Dump Command Response from HAL, simply route to HDD
20584
20585 @param pWDICtx: pointer to the WLAN DAL context
20586 pEventData: pointer to the event information structure
20587
Jeff Johnson295189b2012-06-20 16:38:30 -070020588 @see
20589 @return Result of the function call
20590*/
20591WDI_Status
20592WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020593(
Jeff Johnson295189b2012-06-20 16:38:30 -070020594 WDI_ControlBlockType* pWDICtx,
20595 WDI_EventInfoType* pEventData
20596)
20597{
20598 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020599 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020600 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
20601
20602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020603 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020604 -------------------------------------------------------------------------*/
20605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20606 ( NULL == pEventData->pEventData))
20607 {
20608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020612 }
20613
Jeff Johnsone7245742012-09-05 17:12:55 -070020614 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020615
20616 /*Initialize the WDI Response structure */
20617 wdiHALDumpCmdRsp.usBufferLen = 0;
20618 wdiHALDumpCmdRsp.pBuffer = NULL;
20619
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020620 wpalMemoryCopy( &halDumpCmdRspParams,
20621 pEventData->pEventData,
20622 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070020623
20624 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020625 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070020626
20627 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020628 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 {
20630 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080020631 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
20632 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
20633
20634 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
20635 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkalaa57ad932013-04-04 15:40:10 +053020636 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070020637 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020638
Jeff Johnson295189b2012-06-20 16:38:30 -070020639 /*Notify UMAC*/
20640 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
20641
20642 if(wdiHALDumpCmdRsp.pBuffer != NULL)
20643 {
20644 /* Free the allocated buffer */
20645 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
20646 }
20647 return WDI_STATUS_SUCCESS;
20648}
20649
20650/*==========================================================================
20651 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070020652
Jeff Johnson295189b2012-06-20 16:38:30 -070020653 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070020654 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070020655==========================================================================*/
20656/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020657 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020658 when it wishes to send up a notification like the ones
20659 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070020660
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020662
20663 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020664 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070020665 wctsNotifyCBData: the callback data of the user
20666
Jeff Johnson295189b2012-06-20 16:38:30 -070020667 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020668
20669 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020670*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020671void
Jeff Johnson295189b2012-06-20 16:38:30 -070020672WDI_NotifyMsgCTSCB
20673(
Jeff Johnsone7245742012-09-05 17:12:55 -070020674 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020675 WCTS_NotifyEventType wctsEvent,
20676 void* wctsNotifyCBData
20677)
20678{
Jeff Johnsone7245742012-09-05 17:12:55 -070020679 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020680 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20681
20682 if (NULL == pWDICtx )
20683 {
20684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020685 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 }
20689
20690 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20691 {
20692 /* callback presumably occurred after close */
20693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020694 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 }
20697
20698 if ( WCTS_EVENT_OPEN == wctsEvent )
20699 {
20700 /*Flag must be set atomically as it is checked from incoming request
20701 functions*/
20702 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020703 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020704
20705 /*Nothing to do - so try to dequeue any pending request that may have
20706 occurred while we were trying to establish this*/
20707 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070020708 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070020709 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020710 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 {
20712 /*Flag must be set atomically as it is checked from incoming request
20713 functions*/
20714 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020715 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020716
20717 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020718 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 wpalMutexRelease(&pWDICtx->wptMutex);
20720
20721 /*Notify that the Control Channel is closed */
20722 wpalEventSet(&pWDICtx->wctsActionEvent);
20723 }
20724
20725}/*WDI_NotifyMsgCTSCB*/
20726
20727
20728/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 when it wishes to send up a packet received over the
20731 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070020732
Jeff Johnson295189b2012-06-20 16:38:30 -070020733 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070020734
20735 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 pMsg: the packet
20737 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070020738 wctsRxMsgCBData: the callback data of the user
20739
Jeff Johnson295189b2012-06-20 16:38:30 -070020740 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070020741
20742 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020743*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020744void
20745WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070020746(
Jeff Johnsone7245742012-09-05 17:12:55 -070020747 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020748 void* pMsg,
20749 wpt_uint32 uLen,
20750 void* wctsRxMsgCBData
20751)
20752{
Jeff Johnsone7245742012-09-05 17:12:55 -070020753 tHalMsgHeader *pHalMsgHeader;
20754 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020755 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
20756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20757
20758 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020760 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020761 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070020762 ( uLen < sizeof(tHalMsgHeader)))
20763 {
20764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020767 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020768 }
20769
20770 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
20771 {
20772 /* callback presumably occurred after close */
20773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020774 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020775 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 }
20777
Jeff Johnsone7245742012-09-05 17:12:55 -070020778 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 context - so no serialization is necessary here
20780 ! - revisit this assumption */
20781
20782 pHalMsgHeader = (tHalMsgHeader *)pMsg;
20783
20784 if ( uLen != pHalMsgHeader->msgLen )
20785 {
20786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20787 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
20789 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020790 }
20791
20792 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
20793
20794 /*The message itself starts after the header*/
20795 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
20796 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
20797 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
20798 wdiEventData.pUserData = gWDICb.pRspCBUserData;
20799
20800
20801 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
20802 {
20803 /*Stop the timer as the response was received */
20804 /*!UT - check for potential race conditions between stop and response */
20805 wpalTimerStop(&pWDICtx->wptResponseTimer);
20806 }
20807 /* Check if we receive a response message which is not expected */
20808 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
20809 {
20810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20811 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
20812 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070020813 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070020814 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20815 pWDICtx->wdiExpectedResponse);
20816 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
Srikant Kuppa17ef2a62013-08-29 15:27:56 -070020817 VOS_BUG(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 return;
20819 }
20820
20821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20822 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
20823
20824 /*Post response event to the state machine*/
20825 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
20826
20827}/*WDI_RXMsgCTSCB*/
20828
20829
20830/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020831 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070020832========================================================================*/
20833
20834/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020835 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070020836 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070020837
Jeff Johnson295189b2012-06-20 16:38:30 -070020838 @param pWDICtx - pointer to the control block
20839
20840 @return Result of the function call
20841*/
20842WPT_INLINE WDI_Status
20843WDI_CleanCB
20844(
20845 WDI_ControlBlockType* pWDICtx
20846)
20847{
20848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20849
20850 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020851 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020852
Jeff Johnsone7245742012-09-05 17:12:55 -070020853 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020854 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20855 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20856
20857 WDI_ResetAssocSessions( pWDICtx );
20858
20859 return WDI_STATUS_SUCCESS;
20860}/*WDI_CleanCB*/
20861
20862
20863/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020865
Jeff Johnsone7245742012-09-05 17:12:55 -070020866
20867 @param pWDICtx: pointer to the WLAN DAL context
20868 pEventData: pointer to the event information structure
20869
Jeff Johnson295189b2012-06-20 16:38:30 -070020870 @see
20871 @return Result of the function call
20872*/
20873WPT_INLINE WDI_Status
20874WDI_ProcessRequest
20875(
20876 WDI_ControlBlockType* pWDICtx,
20877 WDI_EventInfoType* pEventData
20878)
20879{
20880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20881
Jeff Johnsone7245742012-09-05 17:12:55 -070020882 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020883 already checked these pointers*/
20884
20885 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20886 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020887 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080020889 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 WDI_getReqMsgString(pEventData->wdiRequest),
20891 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20892 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20893 }
20894 else
20895 {
20896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020897 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020898 pEventData->wdiRequest);
20899 return WDI_STATUS_E_NOT_IMPLEMENT;
20900 }
20901}/*WDI_ProcessRequest*/
20902
20903
20904/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020905 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020907 prefixes it with a send message header
20908
20909 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020910 wdiReqType: type of the request being sent
20911 uBufferLen: message buffer len
20912 pMsgBuffer: resulting allocated buffer
20913 pusDataOffset: offset in the buffer where the caller
20914 can start copying its message data
20915 puBufferSize: the resulting buffer size (offset+buff
20916 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020917
Jeff Johnson295189b2012-06-20 16:38:30 -070020918 @see
20919 @return Result of the function call
20920*/
20921WDI_Status
20922WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020923(
20924 WDI_ControlBlockType* pWDICtx,
20925 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020926 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020927 wpt_uint8** pMsgBuffer,
20928 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 wpt_uint16* pusBufferSize
20930)
20931{
20932 tHalMsgHeader halMsgHeader;
20933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20934
Jeff Johnsone7245742012-09-05 17:12:55 -070020935 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020936 again*/
20937
20938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020939 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020941 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020942 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20943 if ( NULL == *pMsgBuffer )
20944 {
20945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20946 "Unable to allocate message buffer for req %s (%d)",
20947 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020948 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020949 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020950 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020951 }
20952
20953 /*-------------------------------------------------------------------------
20954 Fill in the message header
20955 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020956 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20957 /* Fill msgVersion */
20958#ifdef WLAN_FEATURE_11AC
20959 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020960 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020961 else
20962#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020963 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020964
Jeff Johnsone7245742012-09-05 17:12:55 -070020965 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20966 *pusDataOffset = sizeof(halMsgHeader);
20967 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20968
20969 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020970}/*WDI_GetMessageBuffer*/
20971
20972
20973/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020974 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020975 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020976 the CB
20977
20978 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020979 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020980
Jeff Johnson295189b2012-06-20 16:38:30 -070020981 usSendSize size of the buffer to be sent
20982 pRspCb: response callback - save in the WDI
20983 CB
20984 pUserData: user data associated with the
20985 callback
20986 wdiExpectedResponse: the code of the response that is
20987 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020988
Jeff Johnson295189b2012-06-20 16:38:30 -070020989 @see
20990 @return Result of the function call
20991*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020992WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020993WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020994(
20995 WDI_ControlBlockType* pWDICtx,
20996 wpt_uint8* pSendBuffer,
20997 wpt_uint32 usSendSize,
20998 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020999 void* pUserData,
21000 WDI_ResponseEnumType wdiExpectedResponse
21001)
21002{
Jeff Johnsond13512a2012-07-17 11:42:19 -070021003 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021004 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070021005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21006
21007 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021008 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070021009 ------------------------------------------------------------------------*/
21010 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021011 pWDICtx->pfncRspCB = pRspCb;
21012 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021013
21014 /*-----------------------------------------------------------------------
21015 Call the CTS to send this message over - free message afterwards
21016 - notify transport failure
21017 Note: CTS is reponsible for freeing the message buffer.
21018 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021019 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
21020 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
21021 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070021022 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 "Failed to send message over the bus - catastrophic failure");
21025
Jeff Johnsond13512a2012-07-17 11:42:19 -070021026 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021027 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021028 else
21029 {
21030 /* even when message was placed in CTS deferred Q, we will treat it
21031 success but log this info
21032 */
21033 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
21034 {
21035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21036 "WDI_SendMsg: message placed in CTS deferred Q, expected "
21037 "response %s (%d)",
21038 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
21039 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021040 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021041 }
21042 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021043
Jeff Johnsond13512a2012-07-17 11:42:19 -070021044 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 if ( NULL != pWDICtx->wdiReqStatusCB )
21046 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070021047 /*Inform originator whether request went through or not*/
21048 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
21049 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 pWDICtx->wdiReqStatusCB = NULL;
21051 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070021052 callback(wdiStatus, callbackContext);
21053
21054 /*For WDI requests which have registered a request callback,
21055 inform the WDA caller of the same via setting the return value
21056 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
21057 end up repeating the functonality in the req callback for the
21058 WDI_STATUS_E_FAILURE case*/
21059 if (wdiStatus == WDI_STATUS_E_FAILURE)
21060 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 }
21062
Jeff Johnsond13512a2012-07-17 11:42:19 -070021063 if ( wdiStatus == WDI_STATUS_SUCCESS )
21064 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021065 /*Start timer for the expected response */
21066 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021067
21068 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021069 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070021070 }
21071 else
21072 {
Jeff Johnson1920a722012-12-10 14:28:09 -080021073 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070021074 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21075 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021076
Jeff Johnsond13512a2012-07-17 11:42:19 -070021077 return wdiStatus;
21078
Jeff Johnson295189b2012-06-20 16:38:30 -070021079}/*WDI_SendMsg*/
21080
21081
21082
21083/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021084 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021085 the bus using the control transport and saves some info
21086 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021087
21088 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021089 pSendBuffer: buffer to be sent
21090 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070021091
Jeff Johnson295189b2012-06-20 16:38:30 -070021092 @see
21093 @return Result of the function call
21094*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021095WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070021096WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070021097(
21098 WDI_ControlBlockType* pWDICtx,
21099 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070021100 wpt_uint32 usSendSize
21101)
21102{
21103 wpt_uint32 uStatus ;
21104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21105
21106 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021107 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 Note: CTS is reponsible for freeing the message buffer.
21109 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021110 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070021111 (void*)pSendBuffer, usSendSize );
21112
21113 /*Inform Upper MAC about the outcome of the request*/
21114 if ( NULL != pWDICtx->wdiReqStatusCB )
21115 {
21116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21117 "Send indication status : %d", uStatus);
21118
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021119 /* even if CTS placed indication into its deferred Q, we treat it
21120 * as success and let CTS drain its queue as per smd interrupt to CTS
21121 */
21122 pWDICtx->wdiReqStatusCB( ((uStatus != eWLAN_PAL_STATUS_SUCCESS) && (uStatus != eWLAN_PAL_STATUS_E_RESOURCES)) ? WDI_STATUS_E_FAILURE: WDI_STATUS_SUCCESS,
Jeff Johnsone7245742012-09-05 17:12:55 -070021123 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021124 }
21125
21126 /*If sending of the message failed - it is considered catastrophic and
21127 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021128 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
21129 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
21130
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 {
21132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070021134
21135 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
21136 return WDI_STATUS_E_FAILURE;
21137 }
21138
Jeff Johnsone7245742012-09-05 17:12:55 -070021139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021140}/*WDI_SendIndication*/
21141
21142
21143/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021144 @brief WDI_DetectedDeviceError - called internally by DAL when
21145 it has detected a failure in the device
21146
21147 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021148 usErrorCode: error code detected by WDI or received
21149 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021150
Jeff Johnson295189b2012-06-20 16:38:30 -070021151 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021152 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021153*/
21154void
21155WDI_DetectedDeviceError
21156(
21157 WDI_ControlBlockType* pWDICtx,
21158 wpt_uint16 usErrorCode
21159)
21160{
21161 WDI_LowLevelIndType wdiInd;
21162 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21163
21164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21165 "Device Error detected code: %d - transitioning to stopped state",
21166 usErrorCode);
21167
21168 wpalMutexAcquire(&pWDICtx->wptMutex);
21169
21170 WDI_STATableStop(pWDICtx);
21171
21172 WDI_ResetAssocSessions(pWDICtx);
21173
21174 /*Set the expected state transition to stopped - because the device
21175 experienced a failure*/
21176 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
21177
21178 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021179 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070021180
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070021182
21183 /*TO DO: - there should be an attempt to reset the device here*/
21184
21185 wpalMutexRelease(&pWDICtx->wptMutex);
21186
21187 /*------------------------------------------------------------------------
21188 Notify UMAC if a handler is registered
21189 ------------------------------------------------------------------------*/
21190 if (pWDICtx->wdiLowLevelIndCB)
21191 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021192 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21193 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021194
21195 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
21196 }
21197}/*WDI_DetectedDeviceError*/
21198
21199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021200 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070021201 we started on send message has expire - this should
21202 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070021203 reply - trigger catastrophic failure
21204 @param
21205
Jeff Johnson295189b2012-06-20 16:38:30 -070021206 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070021207
21208 @see
21209 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070021210*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021211void
Jeff Johnson295189b2012-06-20 16:38:30 -070021212WDI_ResponseTimerCB
21213(
21214 void *pUserData
21215)
21216{
21217 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
21218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21219
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021220 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070021221 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021223 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021224 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021225 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021226 }
21227
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021228 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080021229 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021230
21231 /* If response timer is running at this time that means this timer
21232 * event is not for the last request but rather last-to-last request and
21233 * this timer event has come after we recevied respone for last-to-last
21234 * message
21235 */
21236 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
21237 {
21238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21239 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021240 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021241 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
21242 return;
21243 }
21244
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021245 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 {
21247
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070021249 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021250 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070021251 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021252 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21253 pWDICtx->uTimeStampRspTmrExp);
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021254
21255 /* WDI timeout means Riva is not responding or SMD communication to Riva
21256 * is not happening. The only possible way to recover from this error
21257 * is to initiate SSR from APPS.
21258 * There is also an option to re-enable wifi, which will eventually
21259 * trigger SSR
21260 */
21261 if (gWDICb.bEnableSSR == false)
21262 {
21263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
21264 "SSR is not enabled on WDI timeout");
21265 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21266 return;
21267 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021268#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021269 wpalWcnssResetIntr();
21270 /* if this timer fires, it means Riva did not receive the FIQ */
21271 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021272#else
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021273 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
21274 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070021275#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 }
21277 else
21278 {
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070021279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021280 "Timeout occurred but not waiting for any response %d "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021281 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080021282 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
21283 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070021284 }
21285
21286 return;
21287
21288}/*WDI_ResponseTimerCB*/
21289
21290
21291/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070021293
Jeff Johnsone7245742012-09-05 17:12:55 -070021294
21295 @param pWDICtx: pointer to the WLAN DAL context
21296 pEventData: pointer to the event information structure
21297
Jeff Johnson295189b2012-06-20 16:38:30 -070021298 @see
21299 @return Result of the function call
21300*/
21301WPT_INLINE WDI_Status
21302WDI_ProcessResponse
21303(
21304 WDI_ControlBlockType* pWDICtx,
21305 WDI_EventInfoType* pEventData
21306)
21307{
21308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21309
Jeff Johnsone7245742012-09-05 17:12:55 -070021310 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070021311 already checked these pointers
21312 ! - revisit this assumption */
21313 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
21314 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070021315 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080021317 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070021318 WDI_getRespMsgString(pEventData->wdiResponse),
21319 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
21320 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
21321 }
21322 else
21323 {
21324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021325 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070021326 pEventData->wdiResponse);
21327 return WDI_STATUS_E_NOT_IMPLEMENT;
21328 }
21329}/*WDI_ProcessResponse*/
21330
21331
21332/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070021334=========================================================================*/
21335
21336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 @brief Utility function used by the DAL Core to help queue a
21338 request that cannot be processed right away.
21339 @param
21340
Jeff Johnson295189b2012-06-20 16:38:30 -070021341 pWDICtx: - pointer to the WDI control block
21342 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021343 queued
21344
21345 @see
21346 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021347*/
21348WDI_Status
21349WDI_QueuePendingReq
21350(
21351 WDI_ControlBlockType* pWDICtx,
21352 WDI_EventInfoType* pEventData
21353)
21354{
Jeff Johnsone7245742012-09-05 17:12:55 -070021355 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021356 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070021357 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21359
21360 if ( NULL == pEventDataQueue )
21361 {
21362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021363 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070021364 WDI_ASSERT(0);
21365 return WDI_STATUS_MEM_FAILURE;
21366 }
21367
21368 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21369 pEventDataQueue->pUserData = pEventData->pUserData;
21370 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21371 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021372 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021373
21374 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
21375 {
21376 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070021377
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 if ( NULL == pEventInfo )
21379 {
21380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021381 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070021382 WDI_ASSERT(0);
21383 wpalMemoryFree(pEventDataQueue);
21384 return WDI_STATUS_MEM_FAILURE;
21385 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021386
Jeff Johnson295189b2012-06-20 16:38:30 -070021387 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21388
21389 }
21390 pEventDataQueue->pEventData = pEventInfo;
21391
21392 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021393 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021394
Jeff Johnsone7245742012-09-05 17:12:55 -070021395 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021396
21397 return WDI_STATUS_SUCCESS;
21398}/*WDI_QueuePendingReq*/
21399
21400/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021401 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070021402 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070021403 @param
21404
21405 pMsg - pointer to the message
21406
21407 @see
21408 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021409*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021410void
Jeff Johnson295189b2012-06-20 16:38:30 -070021411WDI_PALCtrlMsgCB
21412(
21413 wpt_msg *pMsg
21414)
21415{
21416 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021417 WDI_ControlBlockType* pWDICtx = NULL;
21418 WDI_Status wdiStatus;
21419 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021420 void* pUserData;
21421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21422
21423 if (( NULL == pMsg )||
21424 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
21425 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
21426 {
21427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021428 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021430 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021431 }
21432
21433 /*Transition back to the state that we had before serialization
21434 - serialization transitions us to BUSY to stop any incomming requests
21435 ! TO DO L: possible race condition here if a request comes in between the
21436 state transition and the post function*/
21437
Jeff Johnsone7245742012-09-05 17:12:55 -070021438 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070021439
21440 /*-----------------------------------------------------------------------
21441 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070021442 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070021443 -----------------------------------------------------------------------*/
21444 switch ( pEventData->wdiRequest )
21445 {
21446
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070021448 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
21449 break;
21450
Jeff Johnson295189b2012-06-20 16:38:30 -070021451 case WDI_NV_DOWNLOAD_REQ:
21452 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
21453 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
21454 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
21455 {
21456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021457 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021458 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21459 }
21460 else
21461 {
21462 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
21463 }
21464
21465 break;
21466
21467 default:
21468 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
21469 break;
21470 }/*switch ( pEventData->wdiRequest )*/
21471
21472 if ( WDI_STATUS_SUCCESS != wdiStatus )
21473 {
21474 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
21475
21476 if ( NULL != pfnReqStatusCB )
21477 {
21478 /*Fail the request*/
21479 pfnReqStatusCB( wdiStatus, pUserData);
21480 }
21481 }
21482
21483 /* Free data - that was allocated when queueing*/
21484 if( pEventData != NULL )
21485 {
21486 if( pEventData->pEventData != NULL )
21487 {
21488 wpalMemoryFree(pEventData->pEventData);
21489 }
21490 wpalMemoryFree(pEventData);
21491 }
21492
21493 if( pMsg != NULL )
21494 {
21495 wpalMemoryFree(pMsg);
21496 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021497
Jeff Johnson295189b2012-06-20 16:38:30 -070021498}/*WDI_PALCtrlMsgCB*/
21499
21500/**
21501 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070021502 and schedule for execution a pending request
21503 @param
21504
Jeff Johnson295189b2012-06-20 16:38:30 -070021505 pWDICtx: - pointer to the WDI control block
21506 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070021507 queued
21508
21509 @see
21510 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021511*/
21512WDI_Status
21513WDI_DequeuePendingReq
21514(
21515 WDI_ControlBlockType* pWDICtx
21516)
21517{
Jeff Johnsone7245742012-09-05 17:12:55 -070021518 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021519 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070021520 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070021521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21522
Jeff Johnsone7245742012-09-05 17:12:55 -070021523 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021524
21525 if ( NULL == pNode )
21526 {
21527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021528 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 return WDI_STATUS_SUCCESS;
21530 }
21531
21532 /*The node actually points to the 1st element inside the Event Data struct -
21533 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021534 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021535
21536 /*Serialize processing in the control thread
21537 !TO DO: - check to see if these are all the messages params that need
21538 to be filled in*/
21539 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
21540
21541 if ( NULL == palMsg )
21542 {
21543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070021544 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070021545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021546 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021547 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021548 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 palMsg->callback = WDI_PALCtrlMsgCB;
21550 palMsg->ptr = pEventData;
21551
21552 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021553 palMsg->val = pWDICtx->uGlobalState;
21554
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 /*Transition back to BUSY as we need to handle a queued request*/
21556 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070021557
Jeff Johnson295189b2012-06-20 16:38:30 -070021558 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
21559
21560 return WDI_STATUS_PENDING;
21561}/*WDI_DequeuePendingReq*/
21562
21563
21564/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021565 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021566 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021567 away.- The assoc requests will be queued by BSSID
21568 @param
21569
Jeff Johnson295189b2012-06-20 16:38:30 -070021570 pWDICtx: - pointer to the WDI control block
21571 pEventData: pointer to the evnt info that needs to be queued
21572 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070021573
21574 @see
21575 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021576*/
21577WDI_Status
21578WDI_QueueNewAssocRequest
21579(
21580 WDI_ControlBlockType* pWDICtx,
21581 WDI_EventInfoType* pEventData,
21582 wpt_macAddr macBSSID
21583)
21584{
Jeff Johnsone7245742012-09-05 17:12:55 -070021585 wpt_uint8 i;
21586 WDI_BSSSessionType* pSession = NULL;
21587 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021588 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021589 void* pEventInfo;
21590 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070021592
Jeff Johnsone7245742012-09-05 17:12:55 -070021593
21594 /*------------------------------------------------------------------------
21595 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021596 ------------------------------------------------------------------------*/
21597 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21598 {
21599 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
21600 {
21601 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021602 pSession = &pWDICtx->aBSSSessions[i];
21603 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021604 }
21605 }
21606
21607 if ( i >= WDI_MAX_BSS_SESSIONS )
21608 {
21609 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021611 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021612
Jeff Johnson295189b2012-06-20 16:38:30 -070021613 /*------------------------------------------------------------------------
21614 Fill in the BSSID for this session and set the usage flag
21615 ------------------------------------------------------------------------*/
21616 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021617 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021618
21619 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021620 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021621 ------------------------------------------------------------------------*/
21622 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21623 if ( NULL == pEventDataQueue )
21624 {
21625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021626 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021627 WDI_ASSERT(0);
21628 return WDI_STATUS_MEM_FAILURE;
21629 }
21630
21631 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
21632 if ( NULL == pSessionIdElement )
21633 {
21634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021635 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021636 WDI_ASSERT(0);
21637 wpalMemoryFree(pEventDataQueue);
21638 return WDI_STATUS_MEM_FAILURE;
21639 }
21640
21641 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21642 if ( NULL == pEventInfo )
21643 {
21644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021645 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021646 WDI_ASSERT(0);
21647 wpalMemoryFree(pSessionIdElement);
21648 wpalMemoryFree(pEventDataQueue);
21649 return WDI_STATUS_MEM_FAILURE;
21650 }
21651
21652 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21653 pEventDataQueue->pUserData = pEventData->pUserData;
21654 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21655 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021656 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021657
21658 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21659 pEventDataQueue->pEventData = pEventInfo;
21660
21661 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021662 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021663
21664 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021665 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021666
Jeff Johnsone7245742012-09-05 17:12:55 -070021667 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021668
21669 /*We need to maintain a separate list that keeps track of the order in which
21670 the new assoc requests are being queued such that we can start processing
21671 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021672 pSessionIdElement->ucIndex = i;
21673 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021674
21675 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21676 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070021677 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021678
21679 /*Return pending as this is what the status of the request is since it has
21680 been queued*/
21681 return WDI_STATUS_PENDING;
21682}/*WDI_QueueNewAssocRequest*/
21683
21684/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021685 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021686 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070021687 away.- The assoc requests will be queued by BSSID
21688 @param
21689
Jeff Johnson295189b2012-06-20 16:38:30 -070021690 pWDICtx: - pointer to the WDI control block
21691 pSession: - session in which to queue
21692 pEventData: pointer to the event info that needs to be
21693 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070021694
21695 @see
21696 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021697*/
21698WDI_Status
21699WDI_QueueAssocRequest
21700(
21701 WDI_ControlBlockType* pWDICtx,
21702 WDI_BSSSessionType* pSession,
21703 WDI_EventInfoType* pEventData
21704)
21705{
Jeff Johnsone7245742012-09-05 17:12:55 -070021706 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021707 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070021708 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070021709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021710
21711 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021712 Sanity check
21713 ------------------------------------------------------------------------*/
21714 if (( NULL == pSession ) || ( NULL == pWDICtx ))
21715 {
21716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021718
Jeff Johnsone7245742012-09-05 17:12:55 -070021719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021720 }
21721
21722 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021723 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070021724 ------------------------------------------------------------------------*/
21725 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
21726 if ( NULL == pEventDataQueue )
21727 {
21728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021729 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021730 WDI_ASSERT(0);
21731 return WDI_STATUS_MEM_FAILURE;
21732 }
21733
21734 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
21735 if ( NULL == pEventInfo )
21736 {
21737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21738 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021739 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021740 WDI_ASSERT(0);
21741 wpalMemoryFree(pEventDataQueue);
21742 return WDI_STATUS_MEM_FAILURE;
21743 }
21744
21745 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
21746 pEventDataQueue->pUserData = pEventData->pUserData;
21747 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
21748 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070021749 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 pEventDataQueue->pEventData = pEventInfo;
21751
21752 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
21753
21754 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021755 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070021756
21757 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021758 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021759
Jeff Johnsone7245742012-09-05 17:12:55 -070021760 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021761
21762 /*The result of this operation is pending because the request has been
21763 queued and it will be processed at a later moment in time */
21764 return WDI_STATUS_PENDING;
21765}/*WDI_QueueAssocRequest*/
21766
21767/**
21768 @brief Utility function used by the DAL Core to help dequeue
21769 an association request that was pending
21770 The request will be queued up in front of the main
21771 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070021772 @param
21773
Jeff Johnson295189b2012-06-20 16:38:30 -070021774 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021775
21776
21777 @see
21778 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021779*/
21780WDI_Status
21781WDI_DequeueAssocRequest
21782(
21783 WDI_ControlBlockType* pWDICtx
21784)
21785{
Jeff Johnsone7245742012-09-05 17:12:55 -070021786 wpt_list_node* pNode = NULL;
21787 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070021788 WDI_BSSSessionType* pSession;
21789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070021790
21791 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021792 Sanity check
21793 ------------------------------------------------------------------------*/
21794 if ( NULL == pWDICtx )
21795 {
21796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021797 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021798
Jeff Johnsone7245742012-09-05 17:12:55 -070021799 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021800 }
21801
21802 /*------------------------------------------------------------------------
21803 An association has been completed => a new association can occur
21804 Check to see if there are any pending associations ->
21805 If so , transfer all the pending requests into the busy queue for
21806 processing
21807 These requests have arrived prior to the requests in the busy queue
21808 (bc they needed to be processed in order to be placed in this queue)
21809 => they will be placed at the front of the busy queue
21810 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021811 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021812
21813 if ( NULL == pNode )
21814 {
21815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070021816 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070021817 return WDI_STATUS_SUCCESS;
21818 }
21819
21820 /*The node actually points to the 1st element inside the Session Id struct -
21821 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021822 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021823
21824 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21825 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
21826
21827 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
21828 {
21829 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070021830
Jeff Johnson295189b2012-06-20 16:38:30 -070021831 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070021832 the front of the main waiting queue for subsequent execution*/
21833 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021834 while ( NULL != pNode )
21835 {
21836 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021837 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
21838 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021839 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021840 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021841 }
21842 else
21843 {
21844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070021845 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070021846 WPAL_ASSERT(0);
21847 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070021848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021849 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021850
Jeff Johnson295189b2012-06-20 16:38:30 -070021851 /*Clean this up as it is no longer needed in order to prevent memory leak*/
21852 wpalMemoryFree(pSessionIdElement);
21853 return WDI_STATUS_SUCCESS;
21854}/*WDI_DequeueAssocRequest*/
21855
21856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021857 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070021858 pending requests - all req cb will be called with
21859 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021860 @param
21861
Jeff Johnson295189b2012-06-20 16:38:30 -070021862 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021863
21864 @see
21865 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021866*/
21867WDI_Status
21868WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021869(
Jeff Johnson295189b2012-06-20 16:38:30 -070021870 WDI_ControlBlockType* pWDICtx
21871)
21872{
Jeff Johnsone7245742012-09-05 17:12:55 -070021873 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021874 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021875 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021876 void* pUserData;
21877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21878
Jeff Johnsone7245742012-09-05 17:12:55 -070021879 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021880
21881 /*------------------------------------------------------------------------
21882 Go through all the requests and fail them - this will only be called
21883 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021884 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021885 ------------------------------------------------------------------------*/
21886 while( pNode )
21887 {
21888 /*The node actually points to the 1st element inside the Event Data struct -
21889 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021890 pEventDataQueue = (WDI_EventInfoType*)pNode;
21891
Jeff Johnson295189b2012-06-20 16:38:30 -070021892 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21893 if ( NULL != pfnReqStatusCB )
21894 {
21895 /*Fail the request*/
21896 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21897 }
21898 /* Free data - that was allocated when queueing */
21899 if ( pEventDataQueue->pEventData != NULL )
21900 {
21901 wpalMemoryFree(pEventDataQueue->pEventData);
21902 }
21903 wpalMemoryFree(pEventDataQueue);
21904
21905 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21906 {
21907 break;
21908 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021909 }
21910
Jeff Johnson295189b2012-06-20 16:38:30 -070021911 return WDI_STATUS_SUCCESS;
21912}/*WDI_ClearPendingRequests*/
21913
21914/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021915 @brief Helper routine used to init the BSS Sessions in the WDI control block
21916
21917
21918 @param pWDICtx: pointer to the WLAN DAL context
21919
Jeff Johnson295189b2012-06-20 16:38:30 -070021920 @see
21921*/
21922void
21923WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021924(
Jeff Johnson295189b2012-06-20 16:38:30 -070021925 WDI_ControlBlockType* pWDICtx
21926)
21927{
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21930
21931 /*-------------------------------------------------------------------------
21932 No Sanity check
21933 -------------------------------------------------------------------------*/
21934 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21935 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021936 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021937 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21938 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21939 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21940 }
21941}/*WDI_ResetAssocSessions*/
21942
21943/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 @brief Helper routine used to find a session based on the BSSID
21945
21946
21947 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021948 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021949 pSession: pointer to the session (if found)
21950
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021952 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021953*/
21954wpt_uint8
21955WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021956(
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 WDI_ControlBlockType* pWDICtx,
21958 wpt_macAddr macBSSID,
21959 WDI_BSSSessionType** ppSession
21960)
21961{
Jeff Johnsone7245742012-09-05 17:12:55 -070021962 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21964
21965 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021966 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021967 -------------------------------------------------------------------------*/
21968 if ( NULL == ppSession )
21969 {
21970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021971 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 }
21974
Jeff Johnsone7245742012-09-05 17:12:55 -070021975 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021976
Jeff Johnsone7245742012-09-05 17:12:55 -070021977 /*------------------------------------------------------------------------
21978 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021979 ------------------------------------------------------------------------*/
21980 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21981 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021982 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21983 (eWLAN_PAL_TRUE ==
21984 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21985 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021986 {
21987 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021988 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021989 return i;
21990 }
21991 }
21992
Jeff Johnsone7245742012-09-05 17:12:55 -070021993 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021994}/*WDI_FindAssocSession*/
21995
21996/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021997 @brief Helper routine used to find a session based on the BSSID
21998
21999
22000 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022001 ucBSSIdx: BSS Index of the session
22002 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022003
Jeff Johnson295189b2012-06-20 16:38:30 -070022004 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022005 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022006*/
22007wpt_uint8
22008WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022009(
Jeff Johnson295189b2012-06-20 16:38:30 -070022010 WDI_ControlBlockType* pWDICtx,
22011 wpt_uint16 ucBSSIdx,
22012 WDI_BSSSessionType** ppSession
22013)
22014{
Jeff Johnsone7245742012-09-05 17:12:55 -070022015 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22017
22018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022020 -------------------------------------------------------------------------*/
22021 if ( NULL == ppSession )
22022 {
22023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022024 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022025 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022026 }
22027
Jeff Johnsone7245742012-09-05 17:12:55 -070022028 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022029
Jeff Johnsone7245742012-09-05 17:12:55 -070022030 /*------------------------------------------------------------------------
22031 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022032 ------------------------------------------------------------------------*/
22033 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22034 {
22035 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
22036 {
22037 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022038 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022039 return i;
22040 }
22041 }
22042
Jeff Johnsone7245742012-09-05 17:12:55 -070022043 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022044}/*WDI_FindAssocSessionByBSSIdx*/
22045
22046/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022047 @brief Helper routine used to find a session based on the BSSID
22048
22049
22050 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022051 ucBSSIdx: BSS Index of the session
22052 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070022053
Jeff Johnson295189b2012-06-20 16:38:30 -070022054 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022055 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022056*/
22057wpt_uint8
22058WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070022059(
Jeff Johnson295189b2012-06-20 16:38:30 -070022060 WDI_ControlBlockType* pWDICtx,
22061 wpt_uint16 usIdx,
22062 WDI_BSSSessionType** ppSession
22063)
22064{
22065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22066
22067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022068 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022069 -------------------------------------------------------------------------*/
22070 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
22071 {
22072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022073 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022074 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022075 }
22076
22077 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022078 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070022079
22080 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022081
Jeff Johnson295189b2012-06-20 16:38:30 -070022082}/*WDI_FindAssocSessionByBSSIdx*/
22083
22084/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022085 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022086 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022087
22088
22089 @param pWDICtx: pointer to the WLAN DAL context
22090 pSession: pointer to the session (if found)
22091
Jeff Johnson295189b2012-06-20 16:38:30 -070022092 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022093 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022094*/
22095wpt_uint8
22096WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070022097(
Jeff Johnson295189b2012-06-20 16:38:30 -070022098 WDI_ControlBlockType* pWDICtx,
22099 WDI_BSSSessionType** ppSession
22100)
22101{
Jeff Johnsone7245742012-09-05 17:12:55 -070022102 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022106 -------------------------------------------------------------------------*/
22107 if ( NULL == ppSession )
22108 {
22109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022110 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022111 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022112 }
22113
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022115
Jeff Johnsone7245742012-09-05 17:12:55 -070022116 /*------------------------------------------------------------------------
22117 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070022118 ------------------------------------------------------------------------*/
22119 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22120 {
22121 if ( ! pWDICtx->aBSSSessions[i].bInUse )
22122 {
22123 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022124 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070022125 return i;
22126 }
22127 }
22128
Jeff Johnsone7245742012-09-05 17:12:55 -070022129 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022130}/*WDI_FindEmptySession*/
22131
22132
22133/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070022135 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070022136
22137
22138 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee26599972013-04-24 01:21:58 -070022139 macBSSID: pointer to BSSID. If NULL, get all the session.
22140 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
22141 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
22142 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070022143 @see
22144 @return Number of sessions in use
22145*/
22146wpt_uint8
22147WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070022148(
Hoonki Lee26599972013-04-24 01:21:58 -070022149 WDI_ControlBlockType* pWDICtx,
22150 wpt_macAddr macBSSID,
22151 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070022152)
22153{
Jeff Johnsone7245742012-09-05 17:12:55 -070022154 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022156
22157 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070022158 Count all sessions in use
22159 ------------------------------------------------------------------------*/
22160 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
22161 {
Hoonki Lee26599972013-04-24 01:21:58 -070022162 if ( macBSSID && skipBSSID &&
22163 (eWLAN_PAL_TRUE ==
22164 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
22165 WDI_MAC_ADDR_LEN)))
22166 {
22167 continue;
22168 }
22169 else if ( pWDICtx->aBSSSessions[i].bInUse )
22170 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022171 ucCount++;
Hoonki Lee26599972013-04-24 01:21:58 -070022172 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 }
22174
Jeff Johnsone7245742012-09-05 17:12:55 -070022175 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070022176}/*WDI_GetActiveSessionsCount*/
22177
22178/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022179 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070022180 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022181
22182
22183 @param pWDICtx: pointer to the WLAN DAL context
22184 pSession: pointer to the session (if found)
22185
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022187 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070022188*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022189void
Jeff Johnson295189b2012-06-20 16:38:30 -070022190WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070022191(
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 WDI_ControlBlockType* pWDICtx,
22193 WDI_BSSSessionType* ppSession
22194)
22195{
22196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022197 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022198 -------------------------------------------------------------------------*/
22199 if ( NULL == ppSession )
22200 {
22201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022202 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022203 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022204 }
22205
Jeff Johnsone7245742012-09-05 17:12:55 -070022206 /*------------------------------------------------------------------------
22207 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070022208 ------------------------------------------------------------------------*/
22209 wpal_list_destroy(&ppSession->wptPendingQueue);
22210 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070022211 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
22212 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022213 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
22214 wpal_list_init(&ppSession->wptPendingQueue);
22215
22216}/*WDI_DeleteSession*/
22217
22218/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022219 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070022220 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070022221 @param
22222
Jeff Johnson295189b2012-06-20 16:38:30 -070022223 WDI_AddStaParams: - pointer to the WDI Add STA params
22224 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022225
22226 @see
22227 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070022228*/
22229void
22230WDI_AddBcastSTAtoSTATable
22231(
22232 WDI_ControlBlockType* pWDICtx,
22233 WDI_AddStaParams * staParams,
22234 wpt_uint16 usBcastStaIdx
22235)
22236{
22237 WDI_AddStaParams wdiAddSTAParam = {0};
22238 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
22239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22240
22241 /*---------------------------------------------------------------------
22242 Sanity check
22243 ---------------------------------------------------------------------*/
22244 if ( NULL == staParams )
22245 {
22246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022248
Jeff Johnsone7245742012-09-05 17:12:55 -070022249 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022250 }
22251
22252 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
22253 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
22254 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
22255 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
22256 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
22257 wdiAddSTAParam.dpuSig = staParams->dpuSig;
22258 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
22259 WDI_MAC_ADDR_LEN );
22260 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
22261 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
22262 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
22263 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
22264 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
22265 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
22266 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070022267
Jeff Johnson295189b2012-06-20 16:38:30 -070022268 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
22269}
22270
22271/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022272 @brief NV blob will be divided into fragments of size 4kb and
22273 Sent to HAL
22274
22275 @param pWDICtx: pointer to the WLAN DAL context
22276 pEventData: pointer to the event information structure
22277
Jeff Johnson295189b2012-06-20 16:38:30 -070022278 @see
22279 @return Result of the function call
22280 */
22281
22282WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022283(
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 WDI_ControlBlockType* pWDICtx,
22285 WDI_EventInfoType* pEventData
22286)
22287{
22288
22289 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
22290 wpt_uint8* pSendBuffer = NULL;
22291 wpt_uint16 usDataOffset = 0;
22292 wpt_uint16 usSendSize = 0;
22293 wpt_uint16 usCurrentFragmentSize =0;
22294 wpt_uint8* pSrcBuffer = NULL;
22295 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
22296 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
22297
22298 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
22299 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
22300 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
22301
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070022303 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
22304
22305 /* Update the current Fragment Number */
22306 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
22307
22308 /*Update the HAL REQ structure */
22309 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
22310 halNvImgDownloadParam.nvImageReqParams.fragNumber =
22311 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
22312
22313 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070022314 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070022315 image will be sent to HAL*/
22316
Jeff Johnsone7245742012-09-05 17:12:55 -070022317 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070022318 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070022319 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022320 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070022321 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022322 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
22323 usCurrentFragmentSize = FRAGMENT_SIZE;
22324
22325 /*Update the HAL REQ structure */
22326 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
22327 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
22328
22329 }
22330 else
Jeff Johnsone7245742012-09-05 17:12:55 -070022331 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022332 usCurrentFragmentSize = FRAGMENT_SIZE;
22333
22334 /*Update the HAL REQ structure */
22335 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
22336 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
22337 }
22338
22339 /*-----------------------------------------------------------------------
22340 Get message buffer
22341 -----------------------------------------------------------------------*/
22342 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
22343 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
22344 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022345 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022346 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
22347 {
22348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080022349 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022350 pEventData, pwdiNvDownloadReqParams);
22351 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022352 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022353 }
22354
22355 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070022356 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022357 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
22358
22359 /* Appending the NV image fragment */
22360 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
22361 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
22362 usCurrentFragmentSize);
22363
22364 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022365 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022366
Jeff Johnsone7245742012-09-05 17:12:55 -070022367 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22368 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022369 WDI_NV_DOWNLOAD_RESP);
22370
22371}
Jeff Johnsone7245742012-09-05 17:12:55 -070022372/*============================================================================
22373 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 ============================================================================*/
22375/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022376 @brief Helper routine used to find a session based on the BSSID
22377 @param pContext: pointer to the WLAN DAL context
22378 @param pDPContext: pointer to the Datapath context
22379
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022381 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070022382*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022383WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022384WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
22385{
22386 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22387
22388 pCB->pDPContext = pDPContext;
22389 return;
22390}
22391
22392/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022393 @brief Helper routine used to find a session based on the BSSID
22394
22395
22396 @param pContext: pointer to the WLAN DAL context
22397
Jeff Johnson295189b2012-06-20 16:38:30 -070022398 @see
22399 @return pointer to Datapath context
22400*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022401WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022402WDI_DS_GetDatapathContext (void *pContext)
22403{
22404 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22405 return pCB->pDPContext;
22406}
22407/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022408 @brief Helper routine used to find a session based on the BSSID
22409
22410
22411 @param pContext: pointer to the WLAN DAL context
22412 @param pDTDriverContext: pointer to the Transport Driver context
22413
Jeff Johnson295189b2012-06-20 16:38:30 -070022414 @see
22415 @return void
22416*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022417WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022418WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
22419{
22420 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
22421
22422 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022423 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022424}
22425
22426/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022427 @brief Helper routine used to find a session based on the BSSID
22428
22429
22430 @param pWDICtx: pointer to the WLAN DAL context
22431
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022433 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070022434*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022435WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070022436WDT_GetTransportDriverContext (void *pContext)
22437{
22438 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070022439 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070022440}
22441
Jeff Johnsone7245742012-09-05 17:12:55 -070022442/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 Helper inline converters
22444 ============================================================================*/
22445/*Convert WDI driver type into HAL driver type*/
22446WPT_STATIC WPT_INLINE WDI_Status
22447WDI_HAL_2_WDI_STATUS
22448(
22449 eHalStatus halStatus
22450)
22451{
Jeff Johnsone7245742012-09-05 17:12:55 -070022452 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022453 the chances of getting inlined*/
22454 switch( halStatus )
22455 {
22456 case eHAL_STATUS_SUCCESS:
22457 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22458 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
22459 return WDI_STATUS_SUCCESS;
22460 case eHAL_STATUS_FAILURE:
22461 return WDI_STATUS_E_FAILURE;
22462 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070022463 return WDI_STATUS_MEM_FAILURE;
22464 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022466 default:
22467 return WDI_STATUS_DEV_INTERNAL_FAILURE;
22468 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022469
Jeff Johnsone7245742012-09-05 17:12:55 -070022470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022471}/*WDI_HAL_2_WDI_STATUS*/
22472
22473/*Convert WDI request type into HAL request type*/
22474WPT_STATIC WPT_INLINE tHalHostMsgType
22475WDI_2_HAL_REQ_TYPE
22476(
22477 WDI_RequestEnumType wdiReqType
22478)
22479{
Jeff Johnsone7245742012-09-05 17:12:55 -070022480 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022481 the chances of getting inlined*/
22482 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022486 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022487 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022488 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022489 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022490 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022491 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022492 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022493 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022495 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022496 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022497 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022498 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022499 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022500 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022501 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022503 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022504 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022505 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022507 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022508 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022509 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022510 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022511 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022512 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022513 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022514 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022515 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022516 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022517 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 return WLAN_HAL_RMV_STAKEY_REQ;
22519 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022520 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022521 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022522 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022523 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022524 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022525 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022526 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022527 case WDI_DEL_BA_REQ:
22528 return WLAN_HAL_DEL_BA_REQ;
22529#ifdef FEATURE_WLAN_CCX
22530 case WDI_TSM_STATS_REQ:
22531 return WLAN_HAL_TSM_STATS_REQ;
22532#endif
22533 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022534 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022535 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022536 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022538 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022539 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022540 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022541 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022542 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 case WDI_ADD_BA_SESSION_REQ:
22544 return WLAN_HAL_ADD_BA_SESSION_REQ;
22545 case WDI_TRIGGER_BA_REQ:
22546 return WLAN_HAL_TRIGGER_BA_REQ;
22547 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022548 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022549 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022550 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022551 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
22552 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
22553 case WDI_SET_MAX_TX_POWER_REQ:
22554 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070022555 case WDI_SET_TX_POWER_REQ:
22556 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022557 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
22558 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022559#ifdef FEATURE_WLAN_TDLS
22560 case WDI_TDLS_LINK_ESTABLISH_REQ:
22561 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
22562#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022563 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022564 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022565 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022566 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022568 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022569 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022570 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022571 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022572 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022573 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022574 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022575 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022576 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022577 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022578 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022579 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022580 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022581 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022582 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022583 case WDI_REM_BEACON_FILTER_REQ:
22584 return WLAN_HAL_REM_BCN_FILTER_REQ;
22585 case WDI_SET_RSSI_THRESHOLDS_REQ:
22586 return WLAN_HAL_SET_RSSI_THRESH_REQ;
22587 case WDI_HOST_OFFLOAD_REQ:
22588 return WLAN_HAL_HOST_OFFLOAD_REQ;
22589 case WDI_WOWL_ADD_BC_PTRN_REQ:
22590 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
22591 case WDI_WOWL_DEL_BC_PTRN_REQ:
22592 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
22593 case WDI_WOWL_ENTER_REQ:
22594 return WLAN_HAL_ENTER_WOWL_REQ;
22595 case WDI_WOWL_EXIT_REQ:
22596 return WLAN_HAL_EXIT_WOWL_REQ;
22597 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22598 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
22599 case WDI_NV_DOWNLOAD_REQ:
22600 return WLAN_HAL_DOWNLOAD_NV_REQ;
22601 case WDI_FLUSH_AC_REQ:
22602 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
22603 case WDI_BTAMP_EVENT_REQ:
22604 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
22605#ifdef WLAN_FEATURE_VOWIFI_11R
22606 case WDI_AGGR_ADD_TS_REQ:
22607 return WLAN_HAL_AGGR_ADD_TS_REQ;
22608#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 case WDI_FTM_CMD_REQ:
22610 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022611 case WDI_ADD_STA_SELF_REQ:
22612 return WLAN_HAL_ADD_STA_SELF_REQ;
22613 case WDI_DEL_STA_SELF_REQ:
22614 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022615#ifdef FEATURE_OEM_DATA_SUPPORT
22616 case WDI_START_OEM_DATA_REQ:
22617 return WLAN_HAL_START_OEM_DATA_REQ;
22618#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022619 case WDI_HOST_RESUME_REQ:
22620 return WLAN_HAL_HOST_RESUME_REQ;
22621 case WDI_HOST_SUSPEND_IND:
22622 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080022623 case WDI_TRAFFIC_STATS_IND:
22624 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070022625#ifdef WLAN_FEATURE_11W
22626 case WDI_EXCLUDE_UNENCRYPTED_IND:
22627 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
22628#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022629 case WDI_KEEP_ALIVE_REQ:
22630 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022631#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022632 case WDI_ROAM_SCAN_OFFLOAD_REQ:
22633 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022634#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022635#ifdef FEATURE_WLAN_SCAN_PNO
22636 case WDI_SET_PREF_NETWORK_REQ:
22637 return WLAN_HAL_SET_PREF_NETWORK_REQ;
22638 case WDI_SET_RSSI_FILTER_REQ:
22639 return WLAN_HAL_SET_RSSI_FILTER_REQ;
22640 case WDI_UPDATE_SCAN_PARAMS_REQ:
22641 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
22642#endif // FEATURE_WLAN_SCAN_PNO
22643 case WDI_SET_TX_PER_TRACKING_REQ:
22644 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
22645#ifdef WLAN_FEATURE_PACKET_FILTERING
22646 case WDI_8023_MULTICAST_LIST_REQ:
22647 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
22648 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070022649 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022650 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22651 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
22652 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22653 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
22654#endif // WLAN_FEATURE_PACKET_FILTERING
22655 case WDI_HAL_DUMP_CMD_REQ:
22656 return WLAN_HAL_DUMP_COMMAND_REQ;
22657#ifdef WLAN_FEATURE_GTK_OFFLOAD
22658 case WDI_GTK_OFFLOAD_REQ:
22659 return WLAN_HAL_GTK_OFFLOAD_REQ;
22660 case WDI_GTK_OFFLOAD_GETINFO_REQ:
22661 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
22662#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22663
22664 case WDI_INIT_SCAN_CON_REQ:
22665 return WLAN_HAL_INIT_SCAN_CON_REQ;
22666 case WDI_SET_POWER_PARAMS_REQ:
22667 return WLAN_HAL_SET_POWER_PARAMS_REQ;
22668 case WDI_SET_TM_LEVEL_REQ:
22669 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
22670 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
22671 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022672#ifdef WLAN_FEATURE_11AC
22673 case WDI_UPDATE_VHT_OP_MODE_REQ:
22674 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
22675#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022676 case WDI_GET_ROAM_RSSI_REQ:
22677 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053022678 case WDI_DHCP_START_IND:
22679 return WLAN_HAL_DHCP_START_IND;
22680 case WDI_DHCP_STOP_IND:
22681 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022682#ifdef FEATURE_WLAN_LPHB
22683 case WDI_LPHB_CFG_REQ:
22684 return WLAN_HAL_LPHB_CFG_REQ;
22685#endif /* FEATURE_WLAN_LPHB */
Yue Ma365933a2013-08-14 15:59:08 -070022686 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
22687 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
22688 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
22689 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
22690
Rajeev3db91f12013-10-05 11:03:42 +053022691#ifdef FEATURE_WLAN_BATCH_SCAN
22692 case WDI_SET_BATCH_SCAN_REQ:
22693 return WLAN_HAL_BATCHSCAN_SET_REQ;
22694 case WDI_STOP_BATCH_SCAN_IND:
22695 return WLAN_HAL_BATCHSCAN_STOP_IND;
22696 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
22697 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
22698#endif
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070022699 case WDI_RATE_UPDATE_IND:
22700 return WLAN_HAL_RATE_UPDATE_IND;
Rajeev3db91f12013-10-05 11:03:42 +053022701
Jeff Johnson295189b2012-06-20 16:38:30 -070022702 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022703 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022704 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022705
Jeff Johnson295189b2012-06-20 16:38:30 -070022706}/*WDI_2_HAL_REQ_TYPE*/
22707
22708/*Convert WDI response type into HAL response type*/
22709WPT_STATIC WPT_INLINE WDI_ResponseEnumType
22710HAL_2_WDI_RSP_TYPE
22711(
22712 tHalHostMsgType halMsg
22713)
22714{
Jeff Johnsone7245742012-09-05 17:12:55 -070022715 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022716 the chances of getting inlined*/
22717 switch( halMsg )
22718 {
22719 case WLAN_HAL_START_RSP:
22720 return WDI_START_RESP;
22721 case WLAN_HAL_STOP_RSP:
22722 return WDI_STOP_RESP;
22723 case WLAN_HAL_INIT_SCAN_RSP:
22724 return WDI_INIT_SCAN_RESP;
22725 case WLAN_HAL_START_SCAN_RSP:
22726 return WDI_START_SCAN_RESP;
22727 case WLAN_HAL_END_SCAN_RSP:
22728 return WDI_END_SCAN_RESP;
22729 case WLAN_HAL_FINISH_SCAN_RSP:
22730 return WDI_FINISH_SCAN_RESP;
22731 case WLAN_HAL_CONFIG_STA_RSP:
22732 return WDI_CONFIG_STA_RESP;
22733 case WLAN_HAL_DELETE_STA_RSP:
22734 return WDI_DEL_STA_RESP;
22735 case WLAN_HAL_CONFIG_BSS_RSP:
22736 return WDI_CONFIG_BSS_RESP;
22737 case WLAN_HAL_DELETE_BSS_RSP:
22738 return WDI_DEL_BSS_RESP;
22739 case WLAN_HAL_JOIN_RSP:
22740 return WDI_JOIN_RESP;
22741 case WLAN_HAL_POST_ASSOC_RSP:
22742 return WDI_POST_ASSOC_RESP;
22743 case WLAN_HAL_SET_BSSKEY_RSP:
22744 return WDI_SET_BSS_KEY_RESP;
22745 case WLAN_HAL_SET_STAKEY_RSP:
22746 return WDI_SET_STA_KEY_RESP;
22747 case WLAN_HAL_RMV_BSSKEY_RSP:
22748 return WDI_RMV_BSS_KEY_RESP;
22749 case WLAN_HAL_RMV_STAKEY_RSP:
22750 return WDI_RMV_STA_KEY_RESP;
22751 case WLAN_HAL_SET_BCASTKEY_RSP:
22752 return WDI_SET_STA_BCAST_KEY_RESP;
22753 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
22754 // return WDI_RMV_STA_BCAST_KEY_RESP;
22755 case WLAN_HAL_ADD_TS_RSP:
22756 return WDI_ADD_TS_RESP;
22757 case WLAN_HAL_DEL_TS_RSP:
22758 return WDI_DEL_TS_RESP;
22759 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
22760 return WDI_UPD_EDCA_PRMS_RESP;
22761 case WLAN_HAL_ADD_BA_RSP:
22762 return WDI_ADD_BA_RESP;
22763 case WLAN_HAL_DEL_BA_RSP:
22764 return WDI_DEL_BA_RESP;
22765#ifdef FEATURE_WLAN_CCX
22766 case WLAN_HAL_TSM_STATS_RSP:
22767 return WDI_TSM_STATS_RESP;
22768#endif
22769 case WLAN_HAL_CH_SWITCH_RSP:
22770 return WDI_CH_SWITCH_RESP;
22771 case WLAN_HAL_SET_LINK_ST_RSP:
22772 return WDI_SET_LINK_ST_RESP;
22773 case WLAN_HAL_GET_STATS_RSP:
22774 return WDI_GET_STATS_RESP;
22775 case WLAN_HAL_UPDATE_CFG_RSP:
22776 return WDI_UPDATE_CFG_RESP;
22777 case WLAN_HAL_ADD_BA_SESSION_RSP:
22778 return WDI_ADD_BA_SESSION_RESP;
22779 case WLAN_HAL_TRIGGER_BA_RSP:
22780 return WDI_TRIGGER_BA_RESP;
22781 case WLAN_HAL_UPDATE_BEACON_RSP:
22782 return WDI_UPD_BCON_PRMS_RESP;
22783 case WLAN_HAL_SEND_BEACON_RSP:
22784 return WDI_SND_BCON_RESP;
22785 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
22786 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
22787 /*Indications*/
22788 case WLAN_HAL_RSSI_NOTIFICATION_IND:
22789 return WDI_HAL_RSSI_NOTIFICATION_IND;
22790 case WLAN_HAL_MISSED_BEACON_IND:
22791 return WDI_HAL_MISSED_BEACON_IND;
22792 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
22793 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
22794 case WLAN_HAL_MIC_FAILURE_IND:
22795 return WDI_HAL_MIC_FAILURE_IND;
22796 case WLAN_HAL_FATAL_ERROR_IND:
22797 return WDI_HAL_FATAL_ERROR_IND;
22798 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
22799 return WDI_HAL_DEL_STA_IND;
22800 case WLAN_HAL_COEX_IND:
22801 return WDI_HAL_COEX_IND;
22802 case WLAN_HAL_OTA_TX_COMPL_IND:
22803 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022804 case WLAN_HAL_P2P_NOA_ATTR_IND:
22805 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080022806 case WLAN_HAL_P2P_NOA_START_IND:
22807 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022808 case WLAN_HAL_TX_PER_HIT_IND:
22809 return WDI_HAL_TX_PER_HIT_IND;
22810 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
22811 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070022812 case WLAN_HAL_SET_TX_POWER_RSP:
22813 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022814 case WLAN_HAL_SET_P2P_GONOA_RSP:
22815 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkalaefe3a232013-05-27 17:05:29 +053022816#ifdef FEATURE_WLAN_TDLS
22817 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
22818 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
22819 case WLAN_HAL_TDLS_IND:
22820 return WDI_HAL_TDLS_IND;
22821#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022823 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022824 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022825 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022826 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022827 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022828 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022829 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022830 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022831 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022832 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022833 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022834 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022835 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022836 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022837 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022838 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022839 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022840 case WLAN_HAL_ADD_BCN_FILTER_RSP:
22841 return WDI_SET_BEACON_FILTER_RESP;
22842 case WLAN_HAL_REM_BCN_FILTER_RSP:
22843 return WDI_REM_BEACON_FILTER_RESP;
22844 case WLAN_HAL_SET_RSSI_THRESH_RSP:
22845 return WDI_SET_RSSI_THRESHOLDS_RESP;
22846 case WLAN_HAL_HOST_OFFLOAD_RSP:
22847 return WDI_HOST_OFFLOAD_RESP;
22848 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
22849 return WDI_WOWL_ADD_BC_PTRN_RESP;
22850 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
22851 return WDI_WOWL_DEL_BC_PTRN_RESP;
22852 case WLAN_HAL_ENTER_WOWL_RSP:
22853 return WDI_WOWL_ENTER_RESP;
22854 case WLAN_HAL_EXIT_WOWL_RSP:
22855 return WDI_WOWL_EXIT_RESP;
22856 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
22857 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
22858 case WLAN_HAL_DOWNLOAD_NV_RSP:
22859 return WDI_NV_DOWNLOAD_RESP;
22860 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
22861 return WDI_FLUSH_AC_RESP;
22862 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
22863 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022864 case WLAN_HAL_PROCESS_PTT_RSP:
22865 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022866 case WLAN_HAL_ADD_STA_SELF_RSP:
22867 return WDI_ADD_STA_SELF_RESP;
22868case WLAN_HAL_DEL_STA_SELF_RSP:
22869 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070022870#ifdef FEATURE_OEM_DATA_SUPPORT
22871 case WLAN_HAL_START_OEM_DATA_RSP:
22872 return WDI_START_OEM_DATA_RESP;
22873#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070022874 case WLAN_HAL_HOST_RESUME_RSP:
22875 return WDI_HOST_RESUME_RESP;
22876 case WLAN_HAL_KEEP_ALIVE_RSP:
22877 return WDI_KEEP_ALIVE_RESP;
22878#ifdef FEATURE_WLAN_SCAN_PNO
22879 case WLAN_HAL_SET_PREF_NETWORK_RSP:
22880 return WDI_SET_PREF_NETWORK_RESP;
22881 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022882 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070022883 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
22884 return WDI_UPDATE_SCAN_PARAMS_RESP;
22885 case WLAN_HAL_PREF_NETW_FOUND_IND:
22886 return WDI_HAL_PREF_NETWORK_FOUND_IND;
22887#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022888#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070022889 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
22890 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070022891#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022892 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
22893 return WDI_SET_TX_PER_TRACKING_RESP;
22894#ifdef WLAN_FEATURE_PACKET_FILTERING
22895 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
22896 return WDI_8023_MULTICAST_LIST_RESP;
22897 case WLAN_HAL_SET_PACKET_FILTER_RSP:
22898 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
22899 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
22900 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
22901 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
22902 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
22903#endif // WLAN_FEATURE_PACKET_FILTERING
22904
22905 case WLAN_HAL_DUMP_COMMAND_RSP:
22906 return WDI_HAL_DUMP_CMD_RESP;
22907 case WLAN_HAL_SET_POWER_PARAMS_RSP:
22908 return WDI_SET_POWER_PARAMS_RESP;
22909#ifdef WLAN_FEATURE_VOWIFI_11R
22910 case WLAN_HAL_AGGR_ADD_TS_RSP:
22911 return WDI_AGGR_ADD_TS_RESP;
22912#endif
22913
22914#ifdef WLAN_FEATURE_GTK_OFFLOAD
22915 case WLAN_HAL_GTK_OFFLOAD_RSP:
22916 return WDI_GTK_OFFLOAD_RESP;
22917 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22918 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22919#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22920#ifdef WLAN_WAKEUP_EVENTS
22921 case WLAN_HAL_WAKE_REASON_IND:
22922 return WDI_HAL_WAKE_REASON_IND;
22923#endif // WLAN_WAKEUP_EVENTS
22924
22925 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22926 return WDI_SET_TM_LEVEL_RESP;
22927 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22928 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022929#ifdef WLAN_FEATURE_11AC
22930 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22931 return WDI_UPDATE_VHT_OP_MODE_RESP;
22932#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022933#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22934 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22935 return WDI_GET_ROAM_RSSI_RESP;
22936#endif
Ravi Joshi96d77342013-07-23 08:37:49 -070022937
Leo Chang00bc9132013-08-01 19:21:11 -070022938#ifdef FEATURE_WLAN_LPHB
22939 case WLAN_HAL_LPHB_IND:
Leo Chang8d19a5f2013-09-26 13:32:26 -070022940 return WDI_HAL_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070022941 case WLAN_HAL_LPHB_CFG_RSP:
22942 return WDI_LPHB_CFG_RESP;
22943#endif /* FEATURE_WLAN_LPHB */
Ravi Joshi96d77342013-07-23 08:37:49 -070022944
22945 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
22946 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Ma365933a2013-08-14 15:59:08 -070022947 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
22948 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshi96d77342013-07-23 08:37:49 -070022949
Rajeev3db91f12013-10-05 11:03:42 +053022950#ifdef FEATURE_WLAN_BATCH_SCAN
22951 case WLAN_HAL_BATCHSCAN_SET_RSP:
22952 return WDI_SET_BATCH_SCAN_RESP;
22953 case WLAN_HAL_BATCHSCAN_RESULT_IND:
22954 return WDI_BATCHSCAN_RESULT_IND;
22955#endif // FEATURE_WLAN_BATCH_SCAN
22956
Jeff Johnson295189b2012-06-20 16:38:30 -070022957 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022958 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022959 }
22960
22961}/*HAL_2_WDI_RSP_TYPE*/
22962
22963
22964/*Convert WDI driver type into HAL driver type*/
22965WPT_STATIC WPT_INLINE tDriverType
22966WDI_2_HAL_DRV_TYPE
22967(
22968 WDI_DriverType wdiDriverType
22969)
22970{
Jeff Johnsone7245742012-09-05 17:12:55 -070022971 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022972 the chances of getting inlined*/
22973 switch( wdiDriverType )
22974 {
22975 case WDI_DRIVER_TYPE_PRODUCTION:
22976 return eDRIVER_TYPE_PRODUCTION;
22977 case WDI_DRIVER_TYPE_MFG:
22978 return eDRIVER_TYPE_MFG;
22979 case WDI_DRIVER_TYPE_DVT:
22980 return eDRIVER_TYPE_DVT;
22981 }
22982
Jeff Johnsone7245742012-09-05 17:12:55 -070022983 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022984}/*WDI_2_HAL_DRV_TYPE*/
22985
22986
22987/*Convert WDI stop reason into HAL stop reason*/
22988WPT_STATIC WPT_INLINE tHalStopType
22989WDI_2_HAL_STOP_REASON
22990(
22991 WDI_StopType wdiDriverType
22992)
22993{
Jeff Johnsone7245742012-09-05 17:12:55 -070022994 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022995 the chances of getting inlined*/
22996 switch( wdiDriverType )
22997 {
22998 case WDI_STOP_TYPE_SYS_RESET:
22999 return HAL_STOP_TYPE_SYS_RESET;
Yue Ma70627492013-03-28 11:33:46 -070023000 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
23001 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070023002 case WDI_STOP_TYPE_RF_KILL:
23003 return HAL_STOP_TYPE_RF_KILL;
23004 }
23005
Jeff Johnsone7245742012-09-05 17:12:55 -070023006 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023007}/*WDI_2_HAL_STOP_REASON*/
23008
23009
23010/*Convert WDI scan mode type into HAL scan mode type*/
23011WPT_STATIC WPT_INLINE eHalSysMode
23012WDI_2_HAL_SCAN_MODE
23013(
23014 WDI_ScanMode wdiScanMode
23015)
23016{
Jeff Johnsone7245742012-09-05 17:12:55 -070023017 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023018 the chances of getting inlined*/
23019 switch( wdiScanMode )
23020 {
23021 case WDI_SCAN_MODE_NORMAL:
23022 return eHAL_SYS_MODE_NORMAL;
23023 case WDI_SCAN_MODE_LEARN:
23024 return eHAL_SYS_MODE_LEARN;
23025 case WDI_SCAN_MODE_SCAN:
23026 return eHAL_SYS_MODE_SCAN;
23027 case WDI_SCAN_MODE_PROMISC:
23028 return eHAL_SYS_MODE_PROMISC;
23029 case WDI_SCAN_MODE_SUSPEND_LINK:
23030 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070023031 case WDI_SCAN_MODE_ROAM_SCAN:
23032 return eHAL_SYS_MODE_ROAM_SCAN;
23033 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
23034 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070023035 }
23036
Jeff Johnsone7245742012-09-05 17:12:55 -070023037 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023038}/*WDI_2_HAL_SCAN_MODE*/
23039
23040/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023041WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070023042WDI_2_HAL_SEC_CH_OFFSET
23043(
23044 WDI_HTSecondaryChannelOffset wdiSecChOffset
23045)
23046{
Jeff Johnsone7245742012-09-05 17:12:55 -070023047 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023048 the chances of getting inlined*/
23049 switch( wdiSecChOffset )
23050 {
23051 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023052 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023053 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070023054 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070023055 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070023056 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
23057#ifdef WLAN_FEATURE_11AC
23058 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23059 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23060 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23061 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23062 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23063 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23064 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23065 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23066 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23067 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23068 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23069 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23070 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23071 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23072#endif
23073 default:
23074 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023075 }
23076
Jeff Johnsone7245742012-09-05 17:12:55 -070023077 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070023078}/*WDI_2_HAL_SEC_CH_OFFSET*/
23079
23080/*Convert WDI BSS type into HAL BSS type*/
23081WPT_STATIC WPT_INLINE tSirBssType
23082WDI_2_HAL_BSS_TYPE
23083(
23084 WDI_BssType wdiBSSType
23085)
23086{
Jeff Johnsone7245742012-09-05 17:12:55 -070023087 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023088 the chances of getting inlined*/
23089 switch( wdiBSSType )
23090 {
23091 case WDI_INFRASTRUCTURE_MODE:
23092 return eSIR_INFRASTRUCTURE_MODE;
23093 case WDI_INFRA_AP_MODE:
23094 return eSIR_INFRA_AP_MODE;
23095 case WDI_IBSS_MODE:
23096 return eSIR_IBSS_MODE;
23097 case WDI_BTAMP_STA_MODE:
23098 return eSIR_BTAMP_STA_MODE;
23099 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070023100 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023101 case WDI_BSS_AUTO_MODE:
23102 return eSIR_AUTO_MODE;
23103 }
23104
Jeff Johnsone7245742012-09-05 17:12:55 -070023105 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023106}/*WDI_2_HAL_BSS_TYPE*/
23107
23108/*Convert WDI NW type into HAL NW type*/
23109WPT_STATIC WPT_INLINE tSirNwType
23110WDI_2_HAL_NW_TYPE
23111(
23112 WDI_NwType wdiNWType
23113)
23114{
Jeff Johnsone7245742012-09-05 17:12:55 -070023115 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023116 the chances of getting inlined*/
23117 switch( wdiNWType )
23118 {
23119 case WDI_11A_NW_TYPE:
23120 return eSIR_11A_NW_TYPE;
23121 case WDI_11B_NW_TYPE:
23122 return eSIR_11B_NW_TYPE;
23123 case WDI_11G_NW_TYPE:
23124 return eSIR_11G_NW_TYPE;
23125 case WDI_11N_NW_TYPE:
23126 return eSIR_11N_NW_TYPE;
23127 }
23128
Jeff Johnsone7245742012-09-05 17:12:55 -070023129 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023130}/*WDI_2_HAL_NW_TYPE*/
23131
23132/*Convert WDI chanel bonding type into HAL cb type*/
23133WPT_STATIC WPT_INLINE ePhyChanBondState
23134WDI_2_HAL_CB_STATE
23135(
23136 WDI_PhyChanBondState wdiCbState
23137)
23138{
Jeff Johnsone7245742012-09-05 17:12:55 -070023139 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023140 the chances of getting inlined*/
23141 switch ( wdiCbState )
23142 {
23143 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
23144 return PHY_SINGLE_CHANNEL_CENTERED;
23145 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
23146 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
23147 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
23148 return PHY_DOUBLE_CHANNEL_CENTERED;
23149 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
23150 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070023151#ifdef WLAN_FEATURE_11AC
23152 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
23153 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
23154 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
23155 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
23156 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
23157 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
23158 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
23159 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
23160 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
23161 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
23162 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
23163 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
23164 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
23165 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
23166#endif
23167 case WDI_MAX_CB_STATE:
23168 default:
23169 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023170 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023171
Jeff Johnson295189b2012-06-20 16:38:30 -070023172 return PHY_CHANNEL_BONDING_STATE_MAX;
23173}/*WDI_2_HAL_CB_STATE*/
23174
23175/*Convert WDI chanel bonding type into HAL cb type*/
23176WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
23177WDI_2_HAL_HT_OPER_MODE
23178(
23179 WDI_HTOperatingMode wdiHTOperMode
23180)
23181{
Jeff Johnsone7245742012-09-05 17:12:55 -070023182 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023183 the chances of getting inlined*/
23184 switch ( wdiHTOperMode )
23185 {
23186 case WDI_HT_OP_MODE_PURE:
23187 return eSIR_HT_OP_MODE_PURE;
23188 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
23189 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
23190 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
23191 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
23192 case WDI_HT_OP_MODE_MIXED:
23193 return eSIR_HT_OP_MODE_MIXED;
23194 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023195
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 return eSIR_HT_OP_MODE_MAX;
23197}/*WDI_2_HAL_HT_OPER_MODE*/
23198
23199/*Convert WDI mimo PS type into HAL mimo PS type*/
23200WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
23201WDI_2_HAL_MIMO_PS
23202(
23203 WDI_HTMIMOPowerSaveState wdiHTOperMode
23204)
23205{
Jeff Johnsone7245742012-09-05 17:12:55 -070023206 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023207 the chances of getting inlined*/
23208 switch ( wdiHTOperMode )
23209 {
23210 case WDI_HT_MIMO_PS_STATIC:
23211 return eSIR_HT_MIMO_PS_STATIC;
23212 case WDI_HT_MIMO_PS_DYNAMIC:
23213 return eSIR_HT_MIMO_PS_DYNAMIC;
23214 case WDI_HT_MIMO_PS_NA:
23215 return eSIR_HT_MIMO_PS_NA;
23216 case WDI_HT_MIMO_PS_NO_LIMIT:
23217 return eSIR_HT_MIMO_PS_NO_LIMIT;
23218 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023219
Jeff Johnson295189b2012-06-20 16:38:30 -070023220 return eSIR_HT_MIMO_PS_MAX;
23221}/*WDI_2_HAL_MIMO_PS*/
23222
23223/*Convert WDI ENC type into HAL ENC type*/
23224WPT_STATIC WPT_INLINE tAniEdType
23225WDI_2_HAL_ENC_TYPE
23226(
23227 WDI_EncryptType wdiEncType
23228)
23229{
Jeff Johnsone7245742012-09-05 17:12:55 -070023230 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023231 the chances of getting inlined*/
23232 switch ( wdiEncType )
23233 {
23234 case WDI_ENCR_NONE:
23235 return eSIR_ED_NONE;
23236
23237 case WDI_ENCR_WEP40:
23238 return eSIR_ED_WEP40;
23239
23240 case WDI_ENCR_WEP104:
23241 return eSIR_ED_WEP104;
23242
23243 case WDI_ENCR_TKIP:
23244 return eSIR_ED_TKIP;
23245
23246 case WDI_ENCR_CCMP:
23247 return eSIR_ED_CCMP;
23248
23249 case WDI_ENCR_AES_128_CMAC:
23250 return eSIR_ED_AES_128_CMAC;
23251#if defined(FEATURE_WLAN_WAPI)
23252 case WDI_ENCR_WPI:
23253 return eSIR_ED_WPI;
23254#endif
23255 default:
23256 return eSIR_ED_NOT_IMPLEMENTED;
23257 }
23258
23259}/*WDI_2_HAL_ENC_TYPE*/
23260
23261/*Convert WDI WEP type into HAL WEP type*/
23262WPT_STATIC WPT_INLINE tAniWepType
23263WDI_2_HAL_WEP_TYPE
23264(
23265 WDI_WepType wdiWEPType
23266)
23267{
Jeff Johnsone7245742012-09-05 17:12:55 -070023268 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023269 the chances of getting inlined*/
23270 switch ( wdiWEPType )
23271 {
23272 case WDI_WEP_STATIC:
23273 return eSIR_WEP_STATIC;
23274
23275 case WDI_WEP_DYNAMIC:
23276 return eSIR_WEP_DYNAMIC;
23277 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023278
Jeff Johnson295189b2012-06-20 16:38:30 -070023279 return eSIR_WEP_MAX;
23280}/*WDI_2_HAL_WEP_TYPE*/
23281
23282WPT_STATIC WPT_INLINE tSirLinkState
23283WDI_2_HAL_LINK_STATE
23284(
23285 WDI_LinkStateType wdiLinkState
23286)
23287{
Jeff Johnsone7245742012-09-05 17:12:55 -070023288 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023289 the chances of getting inlined*/
23290 switch ( wdiLinkState )
23291 {
23292 case WDI_LINK_IDLE_STATE:
23293 return eSIR_LINK_IDLE_STATE;
23294
23295 case WDI_LINK_PREASSOC_STATE:
23296 return eSIR_LINK_PREASSOC_STATE;
23297
23298 case WDI_LINK_POSTASSOC_STATE:
23299 return eSIR_LINK_POSTASSOC_STATE;
23300
23301 case WDI_LINK_AP_STATE:
23302 return eSIR_LINK_AP_STATE;
23303
23304 case WDI_LINK_IBSS_STATE:
23305 return eSIR_LINK_IBSS_STATE;
23306
23307 case WDI_LINK_BTAMP_PREASSOC_STATE:
23308 return eSIR_LINK_BTAMP_PREASSOC_STATE;
23309
23310 case WDI_LINK_BTAMP_POSTASSOC_STATE:
23311 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
23312
23313 case WDI_LINK_BTAMP_AP_STATE:
23314 return eSIR_LINK_BTAMP_AP_STATE;
23315
23316 case WDI_LINK_BTAMP_STA_STATE:
23317 return eSIR_LINK_BTAMP_STA_STATE;
23318
23319 case WDI_LINK_LEARN_STATE:
23320 return eSIR_LINK_LEARN_STATE;
23321
23322 case WDI_LINK_SCAN_STATE:
23323 return eSIR_LINK_SCAN_STATE;
23324
23325 case WDI_LINK_FINISH_SCAN_STATE:
23326 return eSIR_LINK_FINISH_SCAN_STATE;
23327
23328 case WDI_LINK_INIT_CAL_STATE:
23329 return eSIR_LINK_INIT_CAL_STATE;
23330
23331 case WDI_LINK_FINISH_CAL_STATE:
23332 return eSIR_LINK_FINISH_CAL_STATE;
23333
Jeff Johnson295189b2012-06-20 16:38:30 -070023334 case WDI_LINK_LISTEN_STATE:
23335 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023336
Gopichand Nakkalad1a95af2013-05-08 19:18:14 +053023337 case WDI_LINK_SEND_ACTION_STATE:
23338 return eSIR_LINK_SEND_ACTION_STATE;
23339
Jeff Johnson295189b2012-06-20 16:38:30 -070023340 default:
23341 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070023342 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023343}
23344
Jeff Johnsone7245742012-09-05 17:12:55 -070023345/*Translate a STA Context from WDI into HAL*/
23346WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070023347void
23348WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070023349(
Jeff Johnson295189b2012-06-20 16:38:30 -070023350 tConfigStaParams* phalConfigSta,
23351 WDI_ConfigStaReqInfoType* pwdiConfigSta
23352)
23353{
23354 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023355#ifdef WLAN_FEATURE_11AC
23356 /* Get the Version 1 Handler */
23357 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
23358 if (WDI_getFwWlanFeatCaps(DOT11AC))
23359 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023360 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070023361 }
23362#endif
23363 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 the chances of getting inlined*/
23365
Jeff Johnsone7245742012-09-05 17:12:55 -070023366 wpalMemoryCopy(phalConfigSta->bssId,
23367 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
23368
23369 wpalMemoryCopy(phalConfigSta->staMac,
23370 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070023371
23372 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
23373 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
23374 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
23375 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
23376 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
23377 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
23378 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
23379 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
23380 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
23381 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
23382 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
23383 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
23384 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
23385 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
23386 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
23387 phalConfigSta->action = pwdiConfigSta->wdiAction;
23388 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
23389 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
23390 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
23391 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
23392 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
23393 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
23394 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070023395
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
23397
Jeff Johnsone7245742012-09-05 17:12:55 -070023398 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070023399 pwdiConfigSta->wdiSupportedRates.opRateMode;
23400 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
23401 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023402 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023403 pwdiConfigSta->wdiSupportedRates.llbRates[i];
23404 }
23405 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
23406 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023407 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023408 pwdiConfigSta->wdiSupportedRates.llaRates[i];
23409 }
23410 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
23411 {
23412 phalConfigSta->supportedRates.aniLegacyRates[i] =
23413 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
23414 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023415 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070023416 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
23417 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
23418 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023419 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070023420 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
23421 }
23422 phalConfigSta->supportedRates.rxHighestDataRate =
23423 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
23424
Jeff Johnsone7245742012-09-05 17:12:55 -070023425#ifdef WLAN_FEATURE_11AC
23426 if(phalConfigSta_V1 != NULL)
23427 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023428 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
23429 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
23430 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
23431 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070023432 }
23433#endif
23434
Jeff Johnson295189b2012-06-20 16:38:30 -070023435 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070023436
Jeff Johnsone7245742012-09-05 17:12:55 -070023437#ifdef WLAN_FEATURE_11AC
23438 if(phalConfigSta_V1 != NULL)
23439 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023440 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
23441 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080023442 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080023443 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
23444 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
23445
Jeff Johnsone7245742012-09-05 17:12:55 -070023446 }
23447#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023448}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070023449
23450/*Translate a Rate set info from WDI into HAL*/
23451WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070023452WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070023453(
Jeff Johnson295189b2012-06-20 16:38:30 -070023454 tSirMacRateSet* pHalRateSet,
23455 WDI_RateSet* pwdiRateSet
23456)
23457{
Jeff Johnsone7245742012-09-05 17:12:55 -070023458 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23460
23461 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
23462 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
23463
23464 for ( i = 0; i < pHalRateSet->numRates; i++ )
23465 {
23466 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
23467 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023468
Jeff Johnson295189b2012-06-20 16:38:30 -070023469}/*WDI_CopyWDIRateSetToHALRateSet*/
23470
23471
23472/*Translate an EDCA Parameter Record from WDI into HAL*/
23473WPT_STATIC WPT_INLINE void
23474WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070023475(
Jeff Johnson295189b2012-06-20 16:38:30 -070023476 tSirMacEdcaParamRecord* phalEdcaParam,
23477 WDI_EdcaParamRecord* pWDIEdcaParam
23478)
23479{
Jeff Johnsone7245742012-09-05 17:12:55 -070023480 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070023481 the chances of getting inlined*/
23482
23483 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
23484 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
23485 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
23486 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
23487
23488 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
23489 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
23490 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
23491}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
23492
23493
23494/*Copy a management frame header from WDI fmt into HAL fmt*/
23495WPT_STATIC WPT_INLINE void
23496WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
23497(
23498 tSirMacMgmtHdr* pmacMgmtHdr,
23499 WDI_MacMgmtHdr* pwdiMacMgmtHdr
23500)
23501{
23502 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
23503 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
23504 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
23505 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
23506 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
23507 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
23508 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
23509 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
23510 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
23511 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
23512 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
23513
23514 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
23515 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
23516
Jeff Johnsone7245742012-09-05 17:12:55 -070023517 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070023518 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023519 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070023520 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070023521 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023522 pwdiMacMgmtHdr->bssId, 6);
23523
23524 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
23525 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
23526 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
23527
23528}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
23529
23530
23531/*Copy config bss parameters from WDI fmt into HAL fmt*/
23532WPT_STATIC WPT_INLINE void
23533WDI_CopyWDIConfigBSSToHALConfigBSS
23534(
23535 tConfigBssParams* phalConfigBSS,
23536 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
23537)
23538{
23539
23540 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023541#ifdef WLAN_FEATURE_11AC
23542 /* Get the Version 1 Handler */
23543 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
23544 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023545 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070023546#endif
23547
Jeff Johnson295189b2012-06-20 16:38:30 -070023548 wpalMemoryCopy( phalConfigBSS->bssId,
23549 pwdiConfigBSS->macBSSID,
23550 WDI_MAC_ADDR_LEN);
23551
23552#ifdef HAL_SELF_STA_PER_BSS
23553 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
23554 pwdiConfigBSS->macSelfAddr,
23555 WDI_MAC_ADDR_LEN);
23556#endif
23557
23558 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
23559
23560 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
23561 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
23562
Jeff Johnsone7245742012-09-05 17:12:55 -070023563 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070023564 pwdiConfigBSS->ucShortSlotTimeSupported;
23565 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
23566 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
23567 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
23568 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
23569 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070023570 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070023571 pwdiConfigBSS->ucTXOPProtectionFullSupport;
23572 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
23573 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
23574 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
23575 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
23576 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
23577 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
23578 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
23579 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
23580 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
23581 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
23582
Jeff Johnsone7245742012-09-05 17:12:55 -070023583 phalConfigBSS->htOperMode =
23584 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070023585
23586 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
23587 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
23588 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
23589 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
23590
23591#ifdef WLAN_FEATURE_VOWIFI
23592 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
23593#endif
23594
23595 /*! Used 32 as magic number because that is how the ssid is declared inside the
23596 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070023597 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070023598 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
23599 pwdiConfigBSS->wdiSSID.ucLength : 32;
23600 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070023601 pwdiConfigBSS->wdiSSID.sSSID,
23602 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023603
23604 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
23605 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070023606
Jeff Johnson295189b2012-06-20 16:38:30 -070023607 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
23608 &pwdiConfigBSS->wdiRateSet);
23609
23610 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
23611
23612 if(phalConfigBSS->edcaParamsValid)
23613 {
23614 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
23615 &pwdiConfigBSS->wdiBEEDCAParams);
23616 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
23617 &pwdiConfigBSS->wdiBKEDCAParams);
23618 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
23619 &pwdiConfigBSS->wdiVIEDCAParams);
23620 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
23621 &pwdiConfigBSS->wdiVOEDCAParams);
23622 }
23623
Jeff Johnsone7245742012-09-05 17:12:55 -070023624 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070023625
23626 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
23627
23628#ifdef WLAN_FEATURE_VOWIFI_11R
23629
Jeff Johnsone7245742012-09-05 17:12:55 -070023630 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070023631 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070023632
Jeff Johnson295189b2012-06-20 16:38:30 -070023633 if( phalConfigBSS->extSetStaKeyParamValid )
23634 {
23635 /*-----------------------------------------------------------------------
23636 Copy the STA Key parameters into the HAL message
23637 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023638 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023639 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
23640
Jeff Johnsone7245742012-09-05 17:12:55 -070023641 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023642 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
23643
23644 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
23645
23646 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
23647
23648 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
23649
Jeff Johnson295189b2012-06-20 16:38:30 -070023650 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
23651 keyIndex++)
23652 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023653 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070023654 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
23655 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
23656 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
23657 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
23658 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
23659 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070023660 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070023661 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023662 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070023663 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070023664 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023665 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
23666 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070023667 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070023668 WDI_MAX_KEY_LENGTH);
23669 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023670 }
23671 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
23672 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023673 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070023674 sizeof(phalConfigBSS->extSetStaKeyParam) );
23675 }
23676
23677#endif /*WLAN_FEATURE_VOWIFI_11R*/
23678
Jeff Johnsone7245742012-09-05 17:12:55 -070023679#ifdef WLAN_FEATURE_11AC
23680 if(phalConfigBSS_V1 != NULL)
23681 {
23682 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
23683 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
23684 }
23685#endif
23686
Jeff Johnson295189b2012-06-20 16:38:30 -070023687}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
23688
23689
Jeff Johnsone7245742012-09-05 17:12:55 -070023690/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 pointed to by user data */
23692WPT_STATIC WPT_INLINE void
23693WDI_ExtractRequestCBFromEvent
23694(
23695 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070023696 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070023697 void** ppUserData
23698)
23699{
23700 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23701 switch ( pEvent->wdiRequest )
23702 {
23703 case WDI_START_REQ:
23704 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23705 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
23706 break;
23707 case WDI_STOP_REQ:
23708 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23709 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
23710 break;
23711 case WDI_INIT_SCAN_REQ:
23712 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23713 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
23714 break;
23715 case WDI_START_SCAN_REQ:
23716 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23717 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
23718 break;
23719 case WDI_END_SCAN_REQ:
23720 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23721 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
23722 break;
23723 case WDI_FINISH_SCAN_REQ:
23724 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23725 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
23726 break;
23727 case WDI_JOIN_REQ:
23728 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23729 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
23730 break;
23731 case WDI_CONFIG_BSS_REQ:
23732 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23733 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
23734 break;
23735 case WDI_DEL_BSS_REQ:
23736 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23737 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
23738 break;
23739 case WDI_POST_ASSOC_REQ:
23740 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23741 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
23742 break;
23743 case WDI_DEL_STA_REQ:
23744 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23745 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
23746 break;
23747 case WDI_DEL_STA_SELF_REQ:
23748 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23749 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
23750 break;
23751
23752 case WDI_SET_BSS_KEY_REQ:
23753 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23754 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23755 break;
23756 case WDI_RMV_BSS_KEY_REQ:
23757 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23758 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
23759 break;
23760 case WDI_SET_STA_KEY_REQ:
23761 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23762 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23763 break;
23764 case WDI_RMV_STA_KEY_REQ:
23765 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23766 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
23767 break;
23768 case WDI_ADD_TS_REQ:
23769 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23770 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
23771 break;
23772 case WDI_DEL_TS_REQ:
23773 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23774 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
23775 break;
23776 case WDI_UPD_EDCA_PRMS_REQ:
23777 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23778 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
23779 break;
23780 case WDI_ADD_BA_SESSION_REQ:
23781 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23782 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
23783 break;
23784 case WDI_DEL_BA_REQ:
23785 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23786 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
23787 break;
23788#ifdef FEATURE_WLAN_CCX
23789 case WDI_TSM_STATS_REQ:
23790 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23791 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
23792 break;
23793#endif
23794 case WDI_CH_SWITCH_REQ:
23795 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23796 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
23797 break;
23798 case WDI_CONFIG_STA_REQ:
23799 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23800 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
23801 break;
23802 case WDI_SET_LINK_ST_REQ:
23803 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23804 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
23805 break;
23806 case WDI_GET_STATS_REQ:
23807 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23808 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
23809 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080023810#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
23811 case WDI_GET_ROAM_RSSI_REQ:
23812 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23813 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
23814 break;
23815#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023816 case WDI_UPDATE_CFG_REQ:
23817 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23818 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
23819 break;
23820 case WDI_ADD_BA_REQ:
23821 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23822 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
23823 break;
23824 case WDI_TRIGGER_BA_REQ:
23825 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23826 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
23827 break;
23828 case WDI_UPD_BCON_PRMS_REQ:
23829 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23830 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
23831 break;
23832 case WDI_SND_BCON_REQ:
23833 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23834 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
23835 break;
23836 case WDI_ENTER_BMPS_REQ:
23837 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23838 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23839 break;
23840 case WDI_EXIT_BMPS_REQ:
23841 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23842 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
23843 break;
23844 case WDI_ENTER_UAPSD_REQ:
23845 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23846 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23847 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023848 case WDI_EXIT_UAPSD_REQ:
23849 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23850 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23851 break;
23852 case WDI_SET_UAPSD_PARAM_REQ:
23853 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23854 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
23855 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 case WDI_UPDATE_UAPSD_PARAM_REQ:
23857 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23858 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
23859 break;
23860 case WDI_CONFIGURE_RXP_FILTER_REQ:
23861 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23862 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
23863 break;
23864 case WDI_SET_BEACON_FILTER_REQ:
23865 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23866 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
23867 break;
23868 case WDI_REM_BEACON_FILTER_REQ:
23869 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23870 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023871 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023872 case WDI_SET_RSSI_THRESHOLDS_REQ:
23873 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23874 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
23875 break;
23876 case WDI_HOST_OFFLOAD_REQ:
23877 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23878 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
23879 break;
23880 case WDI_WOWL_ADD_BC_PTRN_REQ:
23881 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23882 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23883 break;
23884 case WDI_WOWL_DEL_BC_PTRN_REQ:
23885 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23886 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
23887 break;
23888 case WDI_WOWL_ENTER_REQ:
23889 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23890 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
23891 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023892 case WDI_WOWL_EXIT_REQ:
23893 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23894 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
23895 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023896 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
23897 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23898 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
23899 break;
23900 case WDI_FLUSH_AC_REQ:
23901 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23902 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
23903 break;
23904 case WDI_BTAMP_EVENT_REQ:
23905 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23906 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
23907 break;
23908 case WDI_KEEP_ALIVE_REQ:
23909 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23910 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
23911 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023912#if defined FEATURE_WLAN_SCAN_PNO
23913 case WDI_SET_PREF_NETWORK_REQ:
23914 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23915 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
23916 break;
23917 case WDI_SET_RSSI_FILTER_REQ:
23918 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23919 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
23920 break;
23921 case WDI_UPDATE_SCAN_PARAMS_REQ:
23922 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
23923 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
23924 break;
23925#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023926 case WDI_SET_TX_PER_TRACKING_REQ:
23927 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23928 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023929 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023930#if defined WLAN_FEATURE_PACKET_FILTERING
23931 case WDI_8023_MULTICAST_LIST_REQ:
23932 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23933 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
23934 break;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023935 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
23936 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23937 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
23938 break;
23939 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
23940 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23941 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
23942 break;
23943 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
23944 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23945 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
23946 break;
Yue Mac0bbc0d2013-04-12 11:47:39 -070023947#endif
23948 case WDI_SET_POWER_PARAMS_REQ:
23949 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
23950 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
23951 break;
23952#if defined WLAN_FEATURE_GTK_OFFLOAD
23953 case WDI_GTK_OFFLOAD_REQ:
23954 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23955 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
23956 break;
23957 case WDI_GTK_OFFLOAD_GETINFO_REQ:
23958 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
23959 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
23960 break;
23961#endif
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080023962
Jeff Johnson295189b2012-06-20 16:38:30 -070023963 default:
23964 *ppfnReqCB = NULL;
23965 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 }
23968}/*WDI_ExtractRequestCBFromEvent*/
23969
23970
23971/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023972 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070023973 frame xtl is enabled for a particular STA.
23974
23975 WDI_PostAssocReq must have been called.
23976
Jeff Johnsone7245742012-09-05 17:12:55 -070023977 @param uSTAIdx: STA index
23978
Jeff Johnson295189b2012-06-20 16:38:30 -070023979 @see WDI_PostAssocReq
23980 @return Result of the function call
23981*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023982wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023983WDI_IsHwFrameTxTranslationCapable
23984(
23985 wpt_uint8 uSTAIdx
23986)
23987{
Jeff Johnsone7245742012-09-05 17:12:55 -070023988 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023989 uma value*/
23990 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023991 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023992 ------------------------------------------------------------------------*/
23993 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23994 {
23995 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23996 "WDI API call before module is initialized - Fail request");
23997
Jeff Johnsone7245742012-09-05 17:12:55 -070023998 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023999 }
24000
Gopichand Nakkalaba261272013-01-03 15:45:56 -080024001#ifdef WLAN_SOFTAP_VSTA_FEATURE
24002 if (IS_VSTA_IDX(uSTAIdx))
24003 {
24004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24005 "STA %d is a Virtual STA, "
24006 "HW frame translation disabled", uSTAIdx);
24007 return eWLAN_PAL_FALSE;
24008 }
24009#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070024010
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 return gWDICb.bFrameTransEnabled;
24012}/*WDI_IsHwFrameTxTranslationCapable*/
24013
24014#ifdef FEATURE_WLAN_SCAN_PNO
24015/**
24016 @brief WDI_SetPreferredNetworkList
24017
Jeff Johnsone7245742012-09-05 17:12:55 -070024018 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024019 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024020
Jeff Johnson295189b2012-06-20 16:38:30 -070024021 wdiPNOScanCb: callback for passing back the response
24022 of the Set PNO operation received from the
24023 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024024
Jeff Johnson295189b2012-06-20 16:38:30 -070024025 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024026 callback
24027
Jeff Johnson295189b2012-06-20 16:38:30 -070024028 @return Result of the function call
24029*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024030WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024031WDI_SetPreferredNetworkReq
24032(
24033 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24034 WDI_PNOScanCb wdiPNOScanCb,
24035 void* pUserData
24036)
24037{
24038 WDI_EventInfoType wdiEventData = {{0}};
24039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24040
24041 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024042 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 ------------------------------------------------------------------------*/
24044 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24045 {
24046 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24047 "WDI API call before module is initialized - Fail request");
24048
Jeff Johnsone7245742012-09-05 17:12:55 -070024049 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024050 }
24051
24052 /*------------------------------------------------------------------------
24053 Fill in Event data and post to the Main FSM
24054 ------------------------------------------------------------------------*/
24055 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024056 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024057 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024058 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024059 wdiEventData.pUserData = pUserData;
24060
24061 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24062}
24063
24064
24065/**
24066 @brief WDI_SetRssiFilterReq
24067
Jeff Johnsone7245742012-09-05 17:12:55 -070024068 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070024069 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024070
Jeff Johnson295189b2012-06-20 16:38:30 -070024071 wdiRssiFilterCb: callback for passing back the response
24072 of the Set RSSI Filter operation received from the
24073 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024074
Jeff Johnson295189b2012-06-20 16:38:30 -070024075 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024076 callback
24077
Jeff Johnson295189b2012-06-20 16:38:30 -070024078 @return Result of the function call
24079*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024080WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024081WDI_SetRssiFilterReq
24082(
24083 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
24084 WDI_RssiFilterCb wdiRssiFilterCb,
24085 void* pUserData
24086)
24087{
24088 WDI_EventInfoType wdiEventData = {{0}};
24089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24090
24091 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024092 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024093 ------------------------------------------------------------------------*/
24094 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24095 {
24096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24097 "WDI API call before module is initialized - Fail request");
24098
Jeff Johnsone7245742012-09-05 17:12:55 -070024099 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024100 }
24101
24102 /*------------------------------------------------------------------------
24103 Fill in Event data and post to the Main FSM
24104 ------------------------------------------------------------------------*/
24105 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024106 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024108 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024109 wdiEventData.pUserData = pUserData;
24110
24111 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24112}/*WDI_SetRssiFilterReq*/
24113
24114/**
24115 @brief WDI_UpdateScanParamsReq
24116
Jeff Johnsone7245742012-09-05 17:12:55 -070024117 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070024118 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024119
Jeff Johnson295189b2012-06-20 16:38:30 -070024120 wdiUpdateScanParamsCb: callback for passing back the response
24121 of the Set PNO operation received from the
24122 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024123
Jeff Johnson295189b2012-06-20 16:38:30 -070024124 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024125 callback
24126
Jeff Johnson295189b2012-06-20 16:38:30 -070024127 @return Result of the function call
24128*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024129WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024130WDI_UpdateScanParamsReq
24131(
24132 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
24133 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
24134 void* pUserData
24135)
24136{
24137 WDI_EventInfoType wdiEventData = {{0}};
24138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24139
24140 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024141 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024142 ------------------------------------------------------------------------*/
24143 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24144 {
24145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24146 "WDI API call before module is initialized - Fail request");
24147
Jeff Johnsone7245742012-09-05 17:12:55 -070024148 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024149 }
24150
24151 /*------------------------------------------------------------------------
24152 Fill in Event data and post to the Main FSM
24153 ------------------------------------------------------------------------*/
24154 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024155 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024156 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024157 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024158 wdiEventData.pUserData = pUserData;
24159
24160 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24161}
24162
24163/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024164 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024165 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024166
24167 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024168 pwdiPNOScanReqParams: pointer to the info received
24169 from upper layers
24170 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024171 and its size
24172
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 @return Result of the function call
24174*/
24175
24176WDI_Status
24177WDI_PackPreferredNetworkList
24178(
24179 WDI_ControlBlockType* pWDICtx,
24180 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24181 wpt_uint8** ppSendBuffer,
24182 wpt_uint16* pSize
24183)
24184{
Jeff Johnsone7245742012-09-05 17:12:55 -070024185 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024186 wpt_uint16 usDataOffset = 0;
24187 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024188 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024189 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024190 /*-----------------------------------------------------------------------
24191 Get message buffer
24192 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024193 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024194 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024195 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024196 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024197 {
24198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024199 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024200 pwdiPNOScanReqParams);
24201 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024203 }
24204
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024205 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
24206
Jeff Johnson295189b2012-06-20 16:38:30 -070024207 /*-------------------------------------------------------------------------
24208 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24209 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024210 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024211 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024212 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024213 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24214
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024215 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024216 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024217 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024218 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024219 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24220
24221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024222 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024223 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24224 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24225 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24226
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024227 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024228 {
24229 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024230 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024231 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24232
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024233 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024234 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024235 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024236
24237 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024238 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024239 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024240
24241 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024242 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024243 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024244
Jeff Johnsone7245742012-09-05 17:12:55 -070024245 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024246 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024247 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070024248 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
24249 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24250 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
24251 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024252
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024253 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024254 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024255 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024256
24257 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024258 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024259 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24260
24261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024262 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024263 pPrefNetwListParams->aNetworks[i].ssId.length,
24264 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 }
24266
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024267 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024268 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024269 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24270 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24271 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24272
24273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024274 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024275 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024276 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24277 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24278
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024279 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024281 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024282 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024283 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024284 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24285 }
24286
24287 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024288 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24290 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24291 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024292 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024293
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024294 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024295 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024296 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024297
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024298 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024299 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24300 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24301 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024302 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024303
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024304 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024305 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024306 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024307
24308 /*Set the output values*/
24309 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024310 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024311
24312 return WDI_STATUS_SUCCESS;
24313}/*WDI_PackPreferredNetworkList*/
24314
24315/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024316 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070024317 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070024318
24319 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 pwdiPNOScanReqParams: pointer to the info received
24321 from upper layers
24322 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070024323 and its size
24324
Jeff Johnson295189b2012-06-20 16:38:30 -070024325 @return Result of the function call
24326*/
24327
24328WDI_Status
24329WDI_PackPreferredNetworkListNew
24330(
24331 WDI_ControlBlockType* pWDICtx,
24332 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
24333 wpt_uint8** ppSendBuffer,
24334 wpt_uint16* pSize
24335)
24336{
Jeff Johnsone7245742012-09-05 17:12:55 -070024337 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 wpt_uint16 usDataOffset = 0;
24339 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024340 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024341 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024342
24343 /*-----------------------------------------------------------------------
24344 Get message buffer
24345 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024346 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024347 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070024348 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024349 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070024350 {
24351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024352 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 pwdiPNOScanReqParams);
24354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024356 }
24357
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024358 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
24359
Jeff Johnson295189b2012-06-20 16:38:30 -070024360 /*-------------------------------------------------------------------------
24361 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
24362 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024363 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070024364 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024365 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070024366 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
24367
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024368 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024369 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024370 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070024371 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070024372 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
24373
24374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024375 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024376 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
24377 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
24378 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
24379
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024380 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 {
24382 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024383 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070024384 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
24385
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024386 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024387 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024388 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070024389
24390 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024391 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070024392 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070024393
24394 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024395 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070024396 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070024397
24398 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024399 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070024400 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024401
Jeff Johnsone7245742012-09-05 17:12:55 -070024402 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070024403 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024404 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
24406
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024407 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070024408 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024409 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070024410
24411 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024412 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070024413 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
24414
24415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024416 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024417 pPrefNetwListParams->aNetworks[i].ssId.length,
24418 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 }
24420
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024421 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070024422 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070024423 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
24424 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
24425 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
24426
24427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024428 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024429 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070024430 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
24431 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
24432
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024433 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024434 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024435 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070024436 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024437 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070024438 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
24439 }
24440
24441 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024442 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024443 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
24444 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24445 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024446 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024447
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024448 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024449 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024450 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024451
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024452 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024453 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
24454 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
24455 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070024456 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024457
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024458 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070024459 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024460 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024461
Jeff Johnson295189b2012-06-20 16:38:30 -070024462
24463 /*Set the output values*/
24464 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070024465 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024466
24467 return WDI_STATUS_SUCCESS;
24468}/*WDI_PackPreferredNetworkListNew*/
24469
24470/**
24471 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024472
24473 @param pWDICtx: pointer to the WLAN DAL context
24474 pEventData: pointer to the event information structure
24475
Jeff Johnson295189b2012-06-20 16:38:30 -070024476 @return Result of the function call
24477*/
24478WDI_Status
24479WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024480(
Jeff Johnson295189b2012-06-20 16:38:30 -070024481 WDI_ControlBlockType* pWDICtx,
24482 WDI_EventInfoType* pEventData
24483)
24484{
24485 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
24486 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024487 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024488 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024489 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024490
24491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024492 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024493 -------------------------------------------------------------------------*/
24494 if (( NULL == pEventData ) ||
24495 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
24496 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
24497 {
24498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024499 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024502 }
24503
24504 /*-------------------------------------------------------------------------
24505 Pack the PNO request structure based on version
24506 -------------------------------------------------------------------------*/
24507 if ( pWDICtx->wdiPNOVersion > 0 )
24508 {
24509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024510 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024511 pWDICtx->wdiPNOVersion);
24512
24513 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
24514 &pSendBuffer, &usSendSize);
24515 }
24516 else
24517 {
24518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024519 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070024520 pWDICtx->wdiPNOVersion);
24521
24522 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
24523 &pSendBuffer, &usSendSize);
24524 }
24525
24526 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24527 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24528 {
24529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024530 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024532 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024533 }
24534
24535 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024536 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024537
24538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024539 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024540 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024541 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24542 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024543}
24544
24545/**
24546 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024547
24548 @param pWDICtx: pointer to the WLAN DAL context
24549 pEventData: pointer to the event information structure
24550
Jeff Johnson295189b2012-06-20 16:38:30 -070024551 @see
24552 @return Result of the function call
24553*/
24554WDI_Status
24555WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024556(
Jeff Johnson295189b2012-06-20 16:38:30 -070024557 WDI_ControlBlockType* pWDICtx,
24558 WDI_EventInfoType* pEventData
24559)
24560{
24561 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
24562 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024563 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024564 wpt_uint16 usDataOffset = 0;
24565 wpt_uint16 usSendSize = 0;
24566 wpt_uint8 ucRssiThreshold;
24567
24568 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024569 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 -------------------------------------------------------------------------*/
24571 if (( NULL == pEventData ) ||
24572 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
24573 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
24574 {
24575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024579 }
24580
24581 /*-----------------------------------------------------------------------
24582 Get message buffer
24583 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024584 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024585 sizeof(ucRssiThreshold),
24586 &pSendBuffer, &usDataOffset, &usSendSize))||
24587 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
24588 {
24589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024590 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070024591 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
24592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024594 }
24595
24596 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
24597
Jeff Johnsone7245742012-09-05 17:12:55 -070024598 wpalMemoryCopy( pSendBuffer+usDataOffset,
24599 &ucRssiThreshold,
24600 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070024601
24602 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024603 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024604
24605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024606 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024607 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024608 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24609 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024610}
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024611#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24612/**
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024613 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070024614
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024615 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024616 by the Device Interface
24617
24618 wdiRoamOffloadScancb: callback for passing back the response
24619 of the Roam Candidate Lookup Req operation received from the
24620 device
24621
24622 pUserData: user data will be passed back with the
24623 callback
24624 @return Result of the function call
24625*/
24626WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024627WDI_RoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024628(
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024629 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024630 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
24631 void* pUserData
24632)
24633{
24634 WDI_EventInfoType wdiEventData = {{0}};
24635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24636
24637 /*------------------------------------------------------------------------
24638 Sanity Check
24639 ------------------------------------------------------------------------*/
24640 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24641 {
24642 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24643 "WDI API call before module is initialized - Fail request");
24644
24645 return WDI_STATUS_E_NOT_ALLOWED;
24646 }
24647
24648 /*------------------------------------------------------------------------
24649 Fill in Event data and post to the Main FSM
24650 ------------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024651 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
24652 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
24653 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024654 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
24655 wdiEventData.pUserData = pUserData;
24656
24657 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24658}
24659
24660void
24661WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
24662{
24663 switch (wdiEdType)
24664 {
24665 case WDI_ED_NONE:
24666 *EdType = eED_NONE;
24667 break;
24668 case WDI_ED_WEP40:
24669 case WDI_ED_WEP104:
24670 *EdType = eED_WEP;
24671 break;
24672 case WDI_ED_TKIP:
24673 *EdType = eED_TKIP;
24674 break;
24675 case WDI_ED_CCMP:
24676#ifdef WLAN_FEATURE_11W
24677 case WDI_ED_AES_128_CMAC:
24678#endif
24679 *EdType = eED_CCMP;
24680 break;
24681#ifdef FEATURE_WLAN_WAPI
24682 case WDI_ED_WPI:
24683 *EdType = eED_WPI;
24684 break;
24685#endif
24686 case WDI_ED_ANY:
24687 *EdType = eED_ANY;
24688 break;
24689
24690 default:
24691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24692 "%s: Unknown Encryption Type", __func__);
24693 break;
24694 }
24695}
24696
24697/**
24698 @brief Helper function to pack Start Roam Candidate Lookup
24699 Request parameters
24700
24701 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024702 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024703 from upper layers
24704 ppSendBuffer, pSize - out pointers of the packed buffer
24705 and its size
24706
24707 @return Result of the function call
24708*/
24709
24710WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024711WDI_PackRoamScanOffloadParams
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024712(
24713 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024714 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024715 wpt_uint8** ppSendBuffer,
24716 wpt_uint16* pSize
24717)
24718{
24719 wpt_uint8* pSendBuffer = NULL;
24720 wpt_uint16 usDataOffset = 0;
24721 wpt_uint16 usSendSize = 0;
24722 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
24723 wpt_uint8 i;
24724 /*-----------------------------------------------------------------------
24725 Get message buffer
24726 -----------------------------------------------------------------------*/
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024727 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024728 sizeof(tRoamCandidateListParams),
24729 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024730 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024731 {
24732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024733 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024734 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024735 WDI_ASSERT(0);
24736 return WDI_STATUS_E_FAILURE;
24737 }
24738 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu7cfcd612013-06-03 11:31:52 -070024739 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024740 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024741 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024742 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024743 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024744 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024745 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024746 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024747 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024748 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024749
24750 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024751 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024752 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024753 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024754 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
24755 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024756 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
24757 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
24758 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
24759 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
24760 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
24761 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil9c78f572013-11-05 14:17:35 -080024762 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024763 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
24764 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
24765 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
24766 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
24767 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
24768 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
24769 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
24770 pRoamCandidateListParams->IsCCXEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsCCXEnabled ;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024771 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024772 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
24773 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
24774 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024775
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
24777 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
24778 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
24779 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
24780 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
24781 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
24782 "HomeAwayTime=%d\n",
24783 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
24784 pRoamCandidateListParams->RoamScanOffloadEnabled,
24785 pRoamCandidateListParams->Command,
24786 pRoamCandidateListParams->StartScanReason,
24787 pRoamCandidateListParams->NeighborScanTimerPeriod,
24788 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
24789 pRoamCandidateListParams->NeighborScanChannelMinTime,
24790 pRoamCandidateListParams->NeighborScanChannelMaxTime,
24791 pRoamCandidateListParams->EmptyRefreshScanPeriod,
24792 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
24793 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
24794 pRoamCandidateListParams->ConnectedNetwork.authentication,
24795 pRoamCandidateListParams->ConnectedNetwork.encryption,
24796 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
24797 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
24798 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024799 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024800 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024801 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024802 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024803 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24804 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024805 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024806 pRoamCandidateListParams->us24GProbeSize);
24807 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024808 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024809 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024810 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024811 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
24812 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024813 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024814 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024815 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
24816 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
24817 pRoamCandidateListParams->nProbes =
24818 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
24819 pRoamCandidateListParams->HomeAwayTime =
24820 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
24821 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024822 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
24823 {
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024825 }
24826
24827
24828 /*Set the output values*/
24829 *ppSendBuffer = pSendBuffer;
24830 *pSize = usSendSize;
24831 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024832}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024833
24834/**
24835 @brief Process Start Roam Candidate Lookup Request function
24836
24837 @param pWDICtx: pointer to the WLAN DAL context
24838 pEventData: pointer to the event information structure
24839
24840 @return Result of the function call
24841*/
24842WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024843WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024844(
24845 WDI_ControlBlockType* pWDICtx,
24846 WDI_EventInfoType* pEventData
24847)
24848{
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024849 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024850 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24851 wpt_uint8* pSendBuffer = NULL;
24852 wpt_uint16 usSendSize = 0;
24853 WDI_Status wdiStatus;
24854 /*-------------------------------------------------------------------------
24855 Sanity check
24856 -------------------------------------------------------------------------*/
24857 if (( NULL == pEventData ) ||
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024858 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024859 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
24860 {
24861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24862 "%s: Invalid parameters", __func__);
24863 WDI_ASSERT(0);
24864 return WDI_STATUS_E_FAILURE;
24865 }
24866
24867 /*-------------------------------------------------------------------------
24868 Pack the Start Roam Candidate Lookup request structure based on version
24869 -------------------------------------------------------------------------*/
24870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24871 "%s: Packing Roam Candidate Lookup request ", __func__);
24872
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024873 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024874 &pSendBuffer, &usSendSize);
24875
24876 if (( WDI_STATUS_SUCCESS != wdiStatus )||
24877 ( NULL == pSendBuffer )||( 0 == usSendSize ))
24878 {
24879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24880 "%s: failed to pack request parameters", __func__);
24881 WDI_ASSERT(0);
24882 return wdiStatus;
24883 }
24884
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024885 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
24886 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024887
24888 /*-------------------------------------------------------------------------
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024889 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024890 -------------------------------------------------------------------------*/
24891 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024892 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024893}
24894
24895/**
24896 @brief Process Start Roam Candidate Lookup Rsp function (called when a
24897 response is being received over the bus from HAL)
24898
24899 @param pWDICtx: pointer to the WLAN DAL context
24900 pEventData: pointer to the event information structure
24901
24902 @see
24903 @return Result of the function call
24904*/
24905WDI_Status
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024906WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024907(
24908 WDI_ControlBlockType* pWDICtx,
24909 WDI_EventInfoType* pEventData
24910)
24911{
24912 WDI_Status wdiStatus;
24913 eHalStatus halStatus;
24914 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
24915
24916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24917
24918 /*-------------------------------------------------------------------------
24919 Sanity check
24920 -------------------------------------------------------------------------*/
24921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24922 ( NULL == pEventData->pEventData ))
24923 {
24924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24925 "%s: Invalid parameters", __func__);
24926 WDI_ASSERT(0);
24927 return WDI_STATUS_E_FAILURE;
24928 }
24929
24930 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
24931
24932 /*-------------------------------------------------------------------------
24933 Extract response and send it to UMAC
24934 -------------------------------------------------------------------------*/
24935 halStatus = *((eHalStatus*)pEventData->pEventData);
24936 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24937
24938 /*Notify UMAC*/
24939 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
24940
24941 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu2fa7f8e2013-05-22 08:07:23 -070024942}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturu08614702013-04-15 21:58:13 -070024943#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024944
24945/**
24946 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070024947
24948 @param pWDICtx: pointer to the WLAN DAL context
24949 pEventData: pointer to the event information structure
24950
Jeff Johnson295189b2012-06-20 16:38:30 -070024951 @see
24952 @return Result of the function call
24953*/
24954WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024955WDI_PackUpdateScanParamsReq
24956(
24957 WDI_ControlBlockType* pWDICtx,
24958 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
24959 wpt_uint8** ppSendBuffer,
24960 wpt_uint16* pSize
24961)
24962{
24963 wpt_uint8* pSendBuffer = NULL;
24964 wpt_uint16 usDataOffset = 0;
24965 wpt_uint16 usSendSize = 0;
24966 tUpdateScanParams updateScanParams = {0};
24967
24968
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080024969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024970 "Begin WDI Update Scan Parameters Old Style Params");
24971 /*-----------------------------------------------------------------------
24972 Get message buffer
24973 -----------------------------------------------------------------------*/
24974 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
24975 sizeof(updateScanParams),
24976 &pSendBuffer, &usDataOffset, &usSendSize))||
24977 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
24978 {
24979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080024980 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053024981 pwdiUpdateScanParams);
24982 WDI_ASSERT(0);
24983 return WDI_STATUS_E_FAILURE;
24984 }
24985
24986 //
24987 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
24988 //
24989
24990 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
24991 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
24992
24993 updateScanParams.ucChannelCount =
24994 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
24995 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
24996 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
24997 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
24998
24999 wpalMemoryCopy( updateScanParams.aChannels,
25000 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25001 updateScanParams.ucChannelCount);
25002
25003
25004 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25005 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25006 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25007 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25008 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25009
25010 wpalMemoryCopy( pSendBuffer+usDataOffset,
25011 &updateScanParams,
25012 sizeof(updateScanParams));
25013
25014 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25015 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25016
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080025017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025018 "End Update Scan Parameters Old Style");
25019
25020 /*Set the output values*/
25021 *ppSendBuffer = pSendBuffer;
25022 *pSize = usSendSize;
25023
25024 return WDI_STATUS_SUCCESS;
25025}
25026
25027/**
25028 @brief Process Update Scan Params function
25029
25030 @param pWDICtx: pointer to the WLAN DAL context
25031 pEventData: pointer to the event information structure
25032
25033 @see
25034 @return Result of the function call
25035*/
25036WDI_Status
25037WDI_PackUpdateScanParamsReqEx
25038(
25039 WDI_ControlBlockType* pWDICtx,
25040 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
25041 wpt_uint8** ppSendBuffer,
25042 wpt_uint16* pSize
25043)
25044{
25045 wpt_uint8* pSendBuffer = NULL;
25046 wpt_uint16 usDataOffset = 0;
25047 wpt_uint16 usSendSize = 0;
25048 tUpdateScanParamsEx updateScanParams = {0};
25049
25050
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025051 /*-----------------------------------------------------------------------
25052 Get message buffer
25053 -----------------------------------------------------------------------*/
25054 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
25055 sizeof(updateScanParams),
25056 &pSendBuffer, &usDataOffset, &usSendSize))||
25057 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
25058 {
25059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025060 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025061 pwdiUpdateScanParams);
25062 WDI_ASSERT(0);
25063 return WDI_STATUS_E_FAILURE;
25064 }
25065
25066 //
25067 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25068 //
25069
25070 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
25071 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
25072
25073 updateScanParams.ucChannelCount =
25074 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
25075 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
25076 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
25077 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
25078
25079 wpalMemoryCopy( updateScanParams.aChannels,
25080 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
25081 updateScanParams.ucChannelCount);
25082
25083
25084 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
25085 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
25086 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
25087 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
25088 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
25089
25090 wpalMemoryCopy( pSendBuffer+usDataOffset,
25091 &updateScanParams,
25092 sizeof(updateScanParams));
25093
25094 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
25095 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
25096
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025097 /*Set the output values*/
25098 *ppSendBuffer = pSendBuffer;
25099 *pSize = usSendSize;
25100
25101 return WDI_STATUS_SUCCESS;
25102}
25103
25104/**
25105 @brief Process Update Scan Params function
25106
25107 @param pWDICtx: pointer to the WLAN DAL context
25108 pEventData: pointer to the event information structure
25109
25110 @see
25111 @return Result of the function call
25112*/
25113WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025114WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025115(
Jeff Johnson295189b2012-06-20 16:38:30 -070025116 WDI_ControlBlockType* pWDICtx,
25117 WDI_EventInfoType* pEventData
25118)
25119{
25120 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
25121 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025122 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025123 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025124 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025125
25126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025127 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025128 -------------------------------------------------------------------------*/
25129 if (( NULL == pEventData ) ||
25130 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
25131 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
25132 {
25133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025134 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025137 }
25138
25139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25140 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070025141
25142 //
25143 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
25144 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025145 if ( pWDICtx->wlanVersion.revision < 1 )
25146 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025147 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025148 &pSendBuffer, &usSendSize);
25149 }
25150 else
25151 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080025152 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
25153 &pSendBuffer, &usSendSize);
25154 }
25155
25156 if(WDI_STATUS_SUCCESS != wdiStatus)
25157 {
25158 //memory allocation failed
25159 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025160 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025161
Jeff Johnson295189b2012-06-20 16:38:30 -070025162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025163 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025164 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025165 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053025166 wdiUpdateScanParamsCb, pEventData->pUserData,
25167 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025168}
25169
25170/**
25171 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070025172
25173 @param pWDICtx: pointer to the WLAN DAL context
25174 pEventData: pointer to the event information structure
25175
Jeff Johnson295189b2012-06-20 16:38:30 -070025176 @see
25177 @return Result of the function call
25178*/
25179WDI_Status
25180WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070025181(
Jeff Johnson295189b2012-06-20 16:38:30 -070025182 WDI_ControlBlockType* pWDICtx,
25183 WDI_EventInfoType* pEventData
25184)
25185{
Srikant Kuppa0f679052013-05-07 13:56:02 -070025186 WDI_LowLevelIndType wdiInd;
25187 tpPrefNetwFoundParams pNetwFoundParams;
25188 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025189
25190
25191 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025192 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025193 -------------------------------------------------------------------------*/
25194 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25195 ( NULL == pEventData->pEventData ))
25196 {
25197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025199 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070025200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025201 }
25202
25203 /*-------------------------------------------------------------------------
25204 Extract indication and send it to UMAC
25205 -------------------------------------------------------------------------*/
Srikant Kuppa0f679052013-05-07 13:56:02 -070025206 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
25207
25208 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
25209 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
25210 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
25211
25212 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
25213 {
25214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25215 "%s: fail to allocate memory", __func__);
25216 return WDI_STATUS_MEM_FAILURE;
25217 }
25218
25219 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
25220 (pNetwFoundParams->ssId.length < 32 )?
25221 pNetwFoundParams->ssId.length : 32;
25222 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
25223 pNetwFoundParams->ssId.ssId,
25224 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
25225 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
25226 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
25227 pNetwFoundParams->frameLength;
25228 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
25229 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
25230 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025231
25232 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025233 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025234
Jeff Johnson295189b2012-06-20 16:38:30 -070025235 // DEBUG
25236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Wilson Yang20c9d402013-08-28 17:55:56 -070025237 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070025238 wdiInd.wdiIndicationType,
Wilson Yang20c9d402013-08-28 17:55:56 -070025239 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025240 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang20c9d402013-08-28 17:55:56 -070025241 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070025242 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
25243
ltimariu034f7d62013-01-24 18:54:33 -080025244 if ( pWDICtx->wdiLowLevelIndCB )
25245 {
25246 /*Notify UMAC*/
25247 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
25248 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025249
25250 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025251}
25252
25253/**
25254 @brief Process PNO Rsp function (called when a
25255 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025256
25257 @param pWDICtx: pointer to the WLAN DAL context
25258 pEventData: pointer to the event information structure
25259
Jeff Johnson295189b2012-06-20 16:38:30 -070025260 @see
25261 @return Result of the function call
25262*/
25263WDI_Status
25264WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025265(
Jeff Johnson295189b2012-06-20 16:38:30 -070025266 WDI_ControlBlockType* pWDICtx,
25267 WDI_EventInfoType* pEventData
25268)
25269{
25270 WDI_Status wdiStatus;
25271 eHalStatus halStatus;
25272 WDI_PNOScanCb wdiPNOScanCb = NULL;
25273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25274
25275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025277 -------------------------------------------------------------------------*/
25278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25279 ( NULL == pEventData->pEventData ))
25280 {
25281 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025285 }
25286
25287
Jeff Johnsone7245742012-09-05 17:12:55 -070025288 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025289
25290 /*-------------------------------------------------------------------------
25291 Extract response and send it to UMAC
25292 -------------------------------------------------------------------------*/
25293 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025294 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025295
25296 /*Notify UMAC*/
25297 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
25298
Jeff Johnsone7245742012-09-05 17:12:55 -070025299 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025300}/*WDI_ProcessSetPreferredNetworkRsp*/
25301
25302/**
25303 @brief Process RSSI Filter Rsp function (called when a
25304 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025305
25306 @param pWDICtx: pointer to the WLAN DAL context
25307 pEventData: pointer to the event information structure
25308
Jeff Johnson295189b2012-06-20 16:38:30 -070025309 @see
25310 @return Result of the function call
25311*/
25312WDI_Status
25313WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025314(
Jeff Johnson295189b2012-06-20 16:38:30 -070025315 WDI_ControlBlockType* pWDICtx,
25316 WDI_EventInfoType* pEventData
25317)
25318{
25319 WDI_Status wdiStatus;
25320 eHalStatus halStatus;
25321 WDI_RssiFilterCb wdiRssiFilterCb;
25322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25323
25324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025325 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025326 -------------------------------------------------------------------------*/
25327 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25328 ( NULL == pEventData->pEventData ))
25329 {
25330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025331 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025332 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025333 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025334 }
25335
Jeff Johnsone7245742012-09-05 17:12:55 -070025336 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025337
25338 /*-------------------------------------------------------------------------
25339 Extract response and send it to UMAC
25340 -------------------------------------------------------------------------*/
25341 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025342 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025343
25344 /*Notify UMAC*/
25345 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
25346
Jeff Johnsone7245742012-09-05 17:12:55 -070025347 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025348}/*WDI_ProcessSetRssiFilterRsp*/
25349
25350/**
25351 @brief Process Update Scan Params Rsp function (called when a
25352 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025353
25354 @param pWDICtx: pointer to the WLAN DAL context
25355 pEventData: pointer to the event information structure
25356
Jeff Johnson295189b2012-06-20 16:38:30 -070025357 @see
25358 @return Result of the function call
25359*/
25360WDI_Status
25361WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025362(
Jeff Johnson295189b2012-06-20 16:38:30 -070025363 WDI_ControlBlockType* pWDICtx,
25364 WDI_EventInfoType* pEventData
25365)
25366{
25367 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070025368 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025369 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025370 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25372
25373 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025374 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025375 -------------------------------------------------------------------------*/
25376 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25377 ( NULL == pEventData->pEventData ))
25378 {
25379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025380 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025383 }
25384
25385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025386 "%s: Process UPD scan params ptr : %p",
25387 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025388
Jeff Johnsone7245742012-09-05 17:12:55 -070025389 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025390
25391 /*-------------------------------------------------------------------------
25392 Extract response and send it to UMAC
25393 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025394 wpalMemoryCopy( (void *)&halUpdScanParams.status,
25395 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025396 sizeof(halUpdScanParams.status));
25397
25398 uStatus = halUpdScanParams.status;
25399
25400 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070025401 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070025402
25403 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025404 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070025405
Jeff Johnsone7245742012-09-05 17:12:55 -070025406 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025407
25408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025409 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070025410 halUpdScanParams.status);
25411
25412 /*Notify UMAC*/
25413 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25414
Jeff Johnsone7245742012-09-05 17:12:55 -070025415 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025416}
25417#endif // FEATURE_WLAN_SCAN_PNO
25418
25419#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070025420WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025421WDI_8023MulticastListReq
25422(
25423 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
25424 WDI_8023MulticastListCb wdi8023MulticastListCallback,
25425 void* pUserData
25426)
25427{
25428 WDI_EventInfoType wdiEventData;
25429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25430
25431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025432 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025433
25434 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025435 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025436 ------------------------------------------------------------------------*/
25437 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25438 {
25439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25440 "WDI API call before module is initialized - Fail request");
25441
Jeff Johnsone7245742012-09-05 17:12:55 -070025442 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025443 }
25444
25445 /*------------------------------------------------------------------------
25446 Fill in Event data and post to the Main FSM
25447 ------------------------------------------------------------------------*/
25448 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025449 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025450 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025451 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025452 wdiEventData.pUserData = pUserData;
25453
25454 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25455}
25456
Jeff Johnsone7245742012-09-05 17:12:55 -070025457WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025458WDI_ReceiveFilterSetFilterReq
25459(
25460 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
25461 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
25462 void* pUserData
25463)
25464{
25465 WDI_EventInfoType wdiEventData;
25466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25467
25468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025469 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025470
25471 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025472 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025473 ------------------------------------------------------------------------*/
25474 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25475 {
25476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25477 "WDI API call before module is initialized - Fail request");
25478
Jeff Johnsone7245742012-09-05 17:12:55 -070025479 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025480 }
25481
25482 /*------------------------------------------------------------------------
25483 Fill in Event data and post to the Main FSM
25484 ------------------------------------------------------------------------*/
25485 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025486 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
25487 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070025488 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25489 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025490 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025491 wdiEventData.pUserData = pUserData;
25492
25493
25494 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25495}
25496
Jeff Johnsone7245742012-09-05 17:12:55 -070025497WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025498WDI_FilterMatchCountReq
25499(
25500 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
25501 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
25502 void* pUserData
25503)
25504{
25505 WDI_EventInfoType wdiEventData;
25506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25507
25508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025509 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025510
25511 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025512 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025513 ------------------------------------------------------------------------*/
25514 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25515 {
25516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25517 "WDI API call before module is initialized - Fail request");
25518
Jeff Johnsone7245742012-09-05 17:12:55 -070025519 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025520 }
25521
25522 /*------------------------------------------------------------------------
25523 Fill in Event data and post to the Main FSM
25524 ------------------------------------------------------------------------*/
25525 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025526 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025527 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025528 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025529 wdiEventData.pUserData = pUserData;
25530
25531
25532 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25533}
25534
Jeff Johnsone7245742012-09-05 17:12:55 -070025535WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025536WDI_ReceiveFilterClearFilterReq
25537(
25538 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
25539 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
25540 void* pUserData
25541)
25542{
25543 WDI_EventInfoType wdiEventData;
25544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25545
25546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025547 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025548
25549 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025550 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025551 ------------------------------------------------------------------------*/
25552 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25553 {
25554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25555 "WDI API call before module is initialized - Fail request");
25556
Jeff Johnsone7245742012-09-05 17:12:55 -070025557 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 }
25559
25560 /*------------------------------------------------------------------------
25561 Fill in Event data and post to the Main FSM
25562 ------------------------------------------------------------------------*/
25563 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025564 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070025565 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070025566 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070025567 wdiEventData.pUserData = pUserData;
25568
25569
25570 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25571}
25572
25573/**
25574 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025575
25576 @param pWDICtx: pointer to the WLAN DAL context
25577 pEventData: pointer to the event information structure
25578
Jeff Johnson295189b2012-06-20 16:38:30 -070025579 @see
25580 @return Result of the function call
25581*/
25582WDI_Status
25583WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025584(
Jeff Johnson295189b2012-06-20 16:38:30 -070025585 WDI_ControlBlockType* pWDICtx,
25586 WDI_EventInfoType* pEventData
25587)
25588{
25589 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
25590 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025591 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025592 wpt_uint16 usDataOffset = 0;
25593 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025594 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025595 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025596 wpt_uint8 ucCurrentBSSSesIdx = 0;
25597 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025598
25599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025600 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025601
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025602 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
25603 if( NULL == pRcvFltMcAddrListType )
25604 {
25605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25606 "Failed to alloc in WDI_Process8023MulticastListReq");
25607 return WDI_STATUS_E_FAILURE;
25608 }
25609
Jeff Johnson295189b2012-06-20 16:38:30 -070025610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025611 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025612 -------------------------------------------------------------------------*/
25613 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025614 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025615 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025616 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025617 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
25618 {
25619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025620 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025621 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025623 return WDI_STATUS_E_FAILURE;
25624 }
25625
25626 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25627 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
25628 &pBSSSes);
25629 if ( NULL == pBSSSes )
25630 {
25631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025632 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025633 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070025634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025635 }
25636
25637 /*-----------------------------------------------------------------------
25638 Get message buffer
25639 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025640 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25641 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025642 sizeof(tHalRcvFltMcAddrListType),
25643 &pSendBuffer, &usDataOffset, &usSendSize))||
25644 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
25645 {
25646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25647 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025648 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025649 pEventData, pwdiFltPktSetMcListReqParamsType,
25650 wdi8023MulticastListCb);
Yue Ma70627492013-03-28 11:33:46 -070025651 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025654 }
25655
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025656 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070025657 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025658 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070025659 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025660 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070025661 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
25662 sizeof(tSirMacAddr));
25663 }
25664
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025665 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025666 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025667 pRcvFltMcAddrListType,
25668 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070025669
25670 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025671 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025672
25673
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070025674 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070025675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025676 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025677 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025678 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025679 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025680 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025681}
25682
25683/**
25684 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025685
25686 @param pWDICtx: pointer to the WLAN DAL context
25687 pEventData: pointer to the event information structure
25688
Jeff Johnson295189b2012-06-20 16:38:30 -070025689 @see
25690 @return Result of the function call
25691*/
25692WDI_Status
25693WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025694(
Jeff Johnson295189b2012-06-20 16:38:30 -070025695 WDI_ControlBlockType* pWDICtx,
25696 WDI_EventInfoType* pEventData
25697)
25698{
25699 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
25700 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025701 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025702 wpt_uint16 usDataOffset = 0;
25703 wpt_uint16 usSendSize = 0;
25704 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025705 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025706 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025707 wpt_uint8 ucCurrentBSSSesIdx = 0;
25708 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025709 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
25710 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070025711
25712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025713 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025714
25715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025716 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025717 -------------------------------------------------------------------------*/
25718 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025719 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070025720 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070025721 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070025722 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
25723 {
25724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025727 return WDI_STATUS_E_FAILURE;
25728 }
25729
25730 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
25731 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
25732 &pBSSSes);
25733 if ( NULL == pBSSSes )
25734 {
25735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025736 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070025737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025738 }
25739
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025740 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
25741 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025742
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025743 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
25744 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25745 * sizeof(tHalSessionizedRcvPktFilterCfgType));
25746
25747 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
25748 usSessRcvPktFilterCfgSize);
25749
25750 if(NULL == pSessRcvPktFilterCfg)
25751 {
25752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25753 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025754 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025755 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025756 WDI_ASSERT(0);
25757 return WDI_STATUS_E_FAILURE;
25758 }
25759
25760 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
25761
25762 /*-----------------------------------------------------------------------
25763 Get message buffer
25764 -----------------------------------------------------------------------*/
25765
25766 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
25767 usSessRcvPktFilterCfgSize,
25768 &pSendBuffer, &usDataOffset, &usSendSize))||
25769 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
25770 {
25771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25772 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025773 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025774 pEventData, pwdiSetRcvPktFilterReqInfo,
25775 wdiReceiveFilterSetFilterCb);
25776 WDI_ASSERT(0);
25777 wpalMemoryFree(pSessRcvPktFilterCfg);
25778 return WDI_STATUS_E_FAILURE;
25779 }
25780
25781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025782 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025783 usSendSize,pSessRcvPktFilterCfg);
25784
25785 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25786 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25787 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25788 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
25789
25790 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
25791
25792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25793 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
25794 pSessRcvPktFilterCfg->filterType);
25795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25796 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
25797 pSessRcvPktFilterCfg->coleasceTime);
25798
25799 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
25800 {
25801 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
25802 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25803 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
25804 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25805 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
25806 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25807 pSessRcvPktFilterCfg->paramsData[i].dataLength =
25808 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
25809
25810 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
25811 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25812 8);
25813 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
25814 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25815 8);
25816
25817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25818 "Out:Proto %d Comp Flag %d \n",
25819 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
25820 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
25821
25822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25823 "Data Offset %d Data Len %d\n",
25824 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
25825 pSessRcvPktFilterCfg->paramsData[i].dataLength);
25826
25827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25828 "CData: %d:%d:%d:%d:%d:%d\n",
25829 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
25830 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
25831 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
25832 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
25833 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
25834 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
25835
25836 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25837 "MData: %d:%d:%d:%d:%d:%d\n",
25838 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
25839 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
25840 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
25841 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
25842 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
25843 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
25844 }
25845
25846 wpalMemoryCopy( pSendBuffer+usDataOffset,
25847 pSessRcvPktFilterCfg,
25848 usSessRcvPktFilterCfgSize);
25849
25850
25851 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25852 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
25853
25854 wpalMemoryFree(pSessRcvPktFilterCfg);
25855
25856 }
25857 /*If SLM_SESSIONIZATION is not supported then do this */
25858 else
25859 {
25860 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
25861 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
25862 * sizeof(tHalRcvPktFilterParams));
25863
25864 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070025865 usRcvPktFilterCfgSize);
25866
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025867 if(NULL == pRcvPktFilterCfg)
25868 {
25869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25870 "%s: Failed to allocate memory for "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025871 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025872 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025873 WDI_ASSERT(0);
25874 return WDI_STATUS_E_FAILURE;
25875 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025876
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025877 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025878
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025879 /*-----------------------------------------------------------------------
25880 Get message buffer
25881 -----------------------------------------------------------------------*/
25882 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025883 usRcvPktFilterCfgSize,
25884 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025885 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
25886 {
25887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080025889 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070025890 pEventData, pwdiSetRcvPktFilterReqInfo,
25891 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025892 WDI_ASSERT(0);
25893 wpalMemoryFree(pRcvPktFilterCfg);
25894 return WDI_STATUS_E_FAILURE;
25895 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025896
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025898 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070025899 usSendSize,usRcvPktFilterCfgSize);
25900
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025901 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
25902 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
25903 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
25904 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070025905
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025907 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025908 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025910 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070025911 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070025912
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025913 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
25914 {
25915 pRcvPktFilterCfg->paramsData[i].protocolLayer =
25916 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
25917 pRcvPktFilterCfg->paramsData[i].cmpFlag =
25918 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
25919 pRcvPktFilterCfg->paramsData[i].dataOffset =
25920 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
25921 pRcvPktFilterCfg->paramsData[i].dataLength =
25922 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070025923
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025924 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070025925 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
25926 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025927 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070025928 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
25929 8);
25930
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070025932 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070025933 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070025934 pRcvPktFilterCfg->paramsData[i].cmpFlag);
25935
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25937 "Data Offset %d Data Len %d\n",
25938 pRcvPktFilterCfg->paramsData[i].dataOffset,
25939 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070025940
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25942 "CData: %d:%d:%d:%d:%d:%d\n",
25943 pRcvPktFilterCfg->paramsData[i].compareData[0],
25944 pRcvPktFilterCfg->paramsData[i].compareData[1],
25945 pRcvPktFilterCfg->paramsData[i].compareData[2],
25946 pRcvPktFilterCfg->paramsData[i].compareData[3],
25947 pRcvPktFilterCfg->paramsData[i].compareData[4],
25948 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070025949
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25951 "MData: %d:%d:%d:%d:%d:%d\n",
25952 pRcvPktFilterCfg->paramsData[i].dataMask[0],
25953 pRcvPktFilterCfg->paramsData[i].dataMask[1],
25954 pRcvPktFilterCfg->paramsData[i].dataMask[2],
25955 pRcvPktFilterCfg->paramsData[i].dataMask[3],
25956 pRcvPktFilterCfg->paramsData[i].dataMask[4],
25957 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
25958 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025959
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025960 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070025961 pRcvPktFilterCfg,
25962 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070025963
25964
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025965 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
25966 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025967
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025969 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025970 wpalMemoryFree(pRcvPktFilterCfg);
25971 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025973 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025974 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025975 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070025976 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070025977 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025978}
25979
25980/**
25981 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025982
25983 @param pWDICtx: pointer to the WLAN DAL context
25984 pEventData: pointer to the event information structure
25985
Jeff Johnson295189b2012-06-20 16:38:30 -070025986 @see
25987 @return Result of the function call
25988*/
25989WDI_Status
25990WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025991(
Jeff Johnson295189b2012-06-20 16:38:30 -070025992 WDI_ControlBlockType* pWDICtx,
25993 WDI_EventInfoType* pEventData
25994)
25995{
25996 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
25997 NULL;
25998 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
25999 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026000 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026001 wpt_uint16 usDataOffset = 0;
26002 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026003 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
26004 wpt_uint8 ucCurrentBSSSesIdx = 0;
26005 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026006
26007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026008 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026009
26010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026012 -------------------------------------------------------------------------*/
26013 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026014 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026015 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026016 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026017 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
26018 {
26019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026020 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026023 }
26024
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026025 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
26026 pwdiRcvFltPktMatchCntReqParamsType->bssId,
26027 &pBSSSes);
26028 if ( NULL == pBSSSes )
26029 {
26030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026031 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026032 return WDI_STATUS_E_FAILURE;
26033 }
26034
Jeff Johnson295189b2012-06-20 16:38:30 -070026035 /*-----------------------------------------------------------------------
26036 Get message buffer
26037 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026038 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26039 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026040 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026041 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026042 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070026043 {
26044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26045 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026046 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026047 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
26048 wdiFilterMatchCountCb);
26049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026051 }
26052
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026053 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
26054 wpalMemoryCopy( pSendBuffer+usDataOffset,
26055 &rcvFltPktMatchCntReqParam,
26056 sizeof(rcvFltPktMatchCntReqParam));
26057
Jeff Johnson295189b2012-06-20 16:38:30 -070026058 //
26059 // Don't need to fill send buffer other than header
26060 //
26061 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026062 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026063
26064
26065 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026066 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026067 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026068 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26069 wdiFilterMatchCountCb,
26070 pEventData->pUserData,
26071 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026072}
26073
26074/**
26075 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026076
26077 @param pWDICtx: pointer to the WLAN DAL context
26078 pEventData: pointer to the event information structure
26079
Jeff Johnson295189b2012-06-20 16:38:30 -070026080 @see
26081 @return Result of the function call
26082*/
26083WDI_Status
26084WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026085(
Jeff Johnson295189b2012-06-20 16:38:30 -070026086 WDI_ControlBlockType* pWDICtx,
26087 WDI_EventInfoType* pEventData
26088)
Jeff Johnsone7245742012-09-05 17:12:55 -070026089{
Jeff Johnson295189b2012-06-20 16:38:30 -070026090 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
26091 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026092 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026093 wpt_uint16 usDataOffset = 0;
26094 wpt_uint16 usSendSize = 0;
26095 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026096 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026097 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026098
26099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026100 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026101
26102 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026103 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026104 -------------------------------------------------------------------------*/
26105 if (( NULL == pEventData ) ||
26106 ( NULL == (pwdiRcvFltPktClearReqParamsType =
26107 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070026108 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070026109 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
26110 {
26111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026112 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026113 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026114 return WDI_STATUS_E_FAILURE;
26115 }
26116
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026117 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026118 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
26119 &pBSSSes);
26120 if ( NULL == pBSSSes )
26121 {
26122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026123 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070026124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026125 }
26126
26127 /*-----------------------------------------------------------------------
26128 Get message buffer
26129 -----------------------------------------------------------------------*/
26130 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070026131 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026132 sizeof(tHalRcvFltPktClearParam),
26133 &pSendBuffer, &usDataOffset, &usSendSize))||
26134 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
26135 {
26136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26137 "Unable to get send buffer in "
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026138 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026139 pEventData, pwdiRcvFltPktClearReqParamsType,
26140 wdiRcvFltPktClearFilterCb);
26141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026143 }
26144
26145
26146 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026147 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070026148 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070026149 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070026150
Jeff Johnsone7245742012-09-05 17:12:55 -070026151 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
26152 wpalMemoryCopy( pSendBuffer+usDataOffset,
26153 &rcvFltPktClearParam,
26154 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070026155
26156 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026157 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026158
26159
26160 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026161 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026162 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026163 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070026164 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070026165 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026166}
26167
26168/**
26169 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026170
26171 @param pWDICtx: pointer to the WLAN DAL context
26172 pEventData: pointer to the event information structure
26173
Jeff Johnson295189b2012-06-20 16:38:30 -070026174 @see
26175 @return Result of the function call
26176*/
26177WDI_Status
26178WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026179(
Jeff Johnson295189b2012-06-20 16:38:30 -070026180 WDI_ControlBlockType* pWDICtx,
26181 WDI_EventInfoType* pEventData
26182)
26183{
Jeff Johnson295189b2012-06-20 16:38:30 -070026184 eHalStatus halStatus;
26185 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026186 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
26187 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26189
26190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026191 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026192
26193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026194 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026195 -------------------------------------------------------------------------*/
26196 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26197 ( NULL == pEventData->pEventData ))
26198 {
26199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026200 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026201 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026202 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026203 }
26204
Jeff Johnsone7245742012-09-05 17:12:55 -070026205 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026206
26207 /*-------------------------------------------------------------------------
26208 Extract response and send it to UMAC
26209 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026210 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26211 {
26212 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
26213 pEventData->pEventData,
26214 sizeof(halRcvFltPktSetMcListRsp));
26215
26216 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
26217 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
26218 wdiRcvFltPktSetMcListRspInfo.bssIdx =
26219 halRcvFltPktSetMcListRsp.bssIdx;
26220 }
26221 else
26222 {
26223 halStatus = *((eHalStatus*)pEventData->pEventData);
26224 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26225 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026226
26227 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026228 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026229
Jeff Johnsone7245742012-09-05 17:12:55 -070026230 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026231}
26232
26233/**
26234 @brief Process Set Rsp function (called when a
26235 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026236
26237 @param pWDICtx: pointer to the WLAN DAL context
26238 pEventData: pointer to the event information structure
26239
Jeff Johnson295189b2012-06-20 16:38:30 -070026240 @see
26241 @return Result of the function call
26242*/
26243WDI_Status
26244WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026245(
Jeff Johnson295189b2012-06-20 16:38:30 -070026246 WDI_ControlBlockType* pWDICtx,
26247 WDI_EventInfoType* pEventData
26248)
26249{
Jeff Johnson295189b2012-06-20 16:38:30 -070026250 eHalStatus halStatus;
26251 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026252 tHalSetPktFilterRspParams halSetPktFilterRspParams;
26253 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070026254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26255
26256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026257 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026258
26259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026260 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026261 -------------------------------------------------------------------------*/
26262 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26263 ( NULL == pEventData->pEventData ))
26264 {
26265 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026266 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026267 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026268 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026269 }
26270
26271 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026272 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026273
26274 /*-------------------------------------------------------------------------
26275 Extract response and send it to UMAC
26276 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026277 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26278 {
26279 wpalMemoryCopy( &halSetPktFilterRspParams,
26280 pEventData->pEventData,
26281 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026282
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026283 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
26284 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
26285 }
26286 else
26287 {
26288 halStatus = *((eHalStatus*)pEventData->pEventData);
26289 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26290 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026291 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026292 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026293
Jeff Johnsone7245742012-09-05 17:12:55 -070026294 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026295}
26296
26297/**
26298 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026299
26300 @param pWDICtx: pointer to the WLAN DAL context
26301 pEventData: pointer to the event information structure
26302
Jeff Johnson295189b2012-06-20 16:38:30 -070026303 @see
26304 @return Result of the function call
26305*/
26306WDI_Status
26307WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026308(
Jeff Johnson295189b2012-06-20 16:38:30 -070026309 WDI_ControlBlockType* pWDICtx,
26310 WDI_EventInfoType* pEventData
26311)
26312{
Jeff Johnson295189b2012-06-20 16:38:30 -070026313 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026314 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026315 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
26316 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026317
26318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26319
26320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026321 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026322
26323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026325 -------------------------------------------------------------------------*/
26326 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26327 ( NULL == pEventData->pEventData ))
26328 {
26329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026333 }
26334
Jeff Johnsone7245742012-09-05 17:12:55 -070026335 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026336
26337 /*-------------------------------------------------------------------------
26338 Extract response and send it to UMAC
26339 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026340 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26341 {
26342 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
26343 pEventData->pEventData,
26344 sizeof(halRcvFltrPktMatachRsp));
26345
26346 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
26347 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
26348 }
26349 else
26350 {
26351 halStatus = *((eHalStatus*)pEventData->pEventData);
26352 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26353 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026354
26355 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026356 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026357
Jeff Johnsone7245742012-09-05 17:12:55 -070026358 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026359}
26360
26361/**
26362 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070026363
26364 @param pWDICtx: pointer to the WLAN DAL context
26365 pEventData: pointer to the event information structure
26366
Jeff Johnson295189b2012-06-20 16:38:30 -070026367 @see
26368 @return Result of the function call
26369*/
26370WDI_Status
26371WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026372(
Jeff Johnson295189b2012-06-20 16:38:30 -070026373 WDI_ControlBlockType* pWDICtx,
26374 WDI_EventInfoType* pEventData
26375)
26376{
Jeff Johnson295189b2012-06-20 16:38:30 -070026377 eHalStatus halStatus;
26378 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026379 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
26380 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26382
26383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026384 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026385
26386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026388 -------------------------------------------------------------------------*/
26389 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26390 ( NULL == pEventData->pEventData ))
26391 {
26392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026396 }
26397
26398 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070026399 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026400
26401 /*-------------------------------------------------------------------------
26402 Extract response and send it to UMAC
26403 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026404 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
26405 {
26406 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
26407 pEventData->pEventData,
26408 sizeof(halRcvFltPktClearRspMsg));
26409
26410 wdiRcvFltPktClearRspParamsType.wdiStatus =
26411 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
26412 wdiRcvFltPktClearRspParamsType.bssIdx =
26413 halRcvFltPktClearRspMsg.bssIdx;
26414 }
26415 else
26416 {
26417 halStatus = *((eHalStatus*)pEventData->pEventData);
26418 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26419 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026420
26421 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070026422 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070026423
Jeff Johnsone7245742012-09-05 17:12:55 -070026424 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026425}
26426#endif // WLAN_FEATURE_PACKET_FILTERING
26427
26428/**
26429 @brief Process Shutdown Rsp function
26430 There is no shutdown response comming from HAL
26431 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070026432
Jeff Johnson295189b2012-06-20 16:38:30 -070026433 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070026434 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026435
26436 @see
26437 @return Result of the function call
26438*/
26439WDI_Status
26440WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026441(
Jeff Johnson295189b2012-06-20 16:38:30 -070026442 WDI_ControlBlockType* pWDICtx,
26443 WDI_EventInfoType* pEventData
26444)
26445{
26446 /*There is no shutdown response comming from HAL - function just kept for
26447 simmetry */
26448 WDI_ASSERT(0);
26449 return WDI_STATUS_SUCCESS;
26450}/*WDI_ProcessShutdownRsp*/
26451
26452/**
26453 @brief WDI_SetPowerParamsReq
26454
Jeff Johnsone7245742012-09-05 17:12:55 -070026455 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070026456 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026457
Jeff Johnson295189b2012-06-20 16:38:30 -070026458 wdiPowerParamsCb: callback for passing back the response
26459 of the Set Power Params operation received from the
26460 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026461
Jeff Johnson295189b2012-06-20 16:38:30 -070026462 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026463 callback
26464
Jeff Johnson295189b2012-06-20 16:38:30 -070026465 @return Result of the function call
26466*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026467WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026468WDI_SetPowerParamsReq
26469(
26470 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
26471 WDI_SetPowerParamsCb wdiPowerParamsCb,
26472 void* pUserData
26473)
26474{
26475 WDI_EventInfoType wdiEventData;
26476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26477
26478 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026479 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026480 ------------------------------------------------------------------------*/
26481 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26482 {
26483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26484 "WDI API call before module is initialized - Fail request");
26485
Jeff Johnsone7245742012-09-05 17:12:55 -070026486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026487 }
26488
26489 /*------------------------------------------------------------------------
26490 Fill in Event data and post to the Main FSM
26491 ------------------------------------------------------------------------*/
26492 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026493 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026494 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026495 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026496 wdiEventData.pUserData = pUserData;
26497
26498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26499}/*WDI_SetPowerParamsReq*/
26500
26501/**
26502 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026503
26504 @param pWDICtx: pointer to the WLAN DAL context
26505 pEventData: pointer to the event information structure
26506
Jeff Johnson295189b2012-06-20 16:38:30 -070026507 @see
26508 @return Result of the function call
26509*/
26510WDI_Status
26511WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026512(
Jeff Johnson295189b2012-06-20 16:38:30 -070026513 WDI_ControlBlockType* pWDICtx,
26514 WDI_EventInfoType* pEventData
26515)
26516{
26517 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
26518 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026519 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026520 wpt_uint16 usDataOffset = 0;
26521 wpt_uint16 usSendSize = 0;
26522 tSetPowerParamsType powerParams;
26523
26524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026526 -------------------------------------------------------------------------*/
26527 if (( NULL == pEventData ) ||
26528 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
26529 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
26530 {
26531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026535 }
26536
26537 /*-----------------------------------------------------------------------
26538 Get message buffer
26539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026541 sizeof(powerParams),
26542 &pSendBuffer, &usDataOffset, &usSendSize))||
26543 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
26544 {
26545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080026546 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026547 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
26548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026550 }
26551
26552 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070026553 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070026554 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
26555
26556 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026557 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070026558 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
26559
26560 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026561 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070026562 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
26563
26564 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070026565 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070026566 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
26567
26568 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070026569 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070026570 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
26571
26572 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070026573 powerParams.uBETInterval =
26574 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070026575
Yue Ma0da19492013-05-13 17:01:29 -070026576 /* MAX LI for modulated DTIM */
26577 powerParams.uMaxLIModulatedDTIM =
26578 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070026579
26580 wpalMemoryCopy( pSendBuffer+usDataOffset,
26581 &powerParams,
26582 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070026583
26584 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026585 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026586
26587 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026588 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026589 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026590 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26591 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026592}
26593
26594/**
26595 @brief Process Power Params Rsp function (called when a
26596 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070026597
26598 @param pWDICtx: pointer to the WLAN DAL context
26599 pEventData: pointer to the event information structure
26600
Jeff Johnson295189b2012-06-20 16:38:30 -070026601 @see
26602 @return Result of the function call
26603*/
26604WDI_Status
26605WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070026606(
Jeff Johnson295189b2012-06-20 16:38:30 -070026607 WDI_ControlBlockType* pWDICtx,
26608 WDI_EventInfoType* pEventData
26609)
26610{
26611 WDI_Status wdiStatus;
26612 eHalStatus halStatus;
26613 WDI_SetPowerParamsCb wdiPowerParamsCb;
26614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26615
26616 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026617 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026618 -------------------------------------------------------------------------*/
26619 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26620 ( NULL == pEventData->pEventData ))
26621 {
26622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026623 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026626 }
26627
Jeff Johnsone7245742012-09-05 17:12:55 -070026628 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070026629
26630 /*-------------------------------------------------------------------------
26631 Extract response and send it to UMAC
26632 -------------------------------------------------------------------------*/
26633 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070026634 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070026635
26636 /*Notify UMAC*/
26637 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
26638
Jeff Johnsone7245742012-09-05 17:12:55 -070026639 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026640}/*WDI_ProcessSetPowerParamsRsp*/
26641
Sundaresan Ramachandran811a2f92013-07-15 13:07:17 +053026642/**
26643 @brief WDI_dhcpStartInd
26644 Host will send an event to the FW when DHCP is initiated
26645
26646 @param
26647 WDI_DHCPInd: DHCP Indication
26648 @see
26649 @return Result of the function call
26650*/
26651WDI_Status
26652WDI_dhcpStartInd
26653(
26654 WDI_DHCPInd *wdiDHCPInd
26655)
26656{
26657 WDI_EventInfoType wdiEventData;
26658
26659 /*------------------------------------------------------------------------
26660 Sanity Check
26661 ------------------------------------------------------------------------*/
26662 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26663 {
26664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26665 "WDI API call before module is initialized - Fail request");
26666
26667 return WDI_STATUS_E_NOT_ALLOWED;
26668 }
26669
26670 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
26671 wdiEventData.pEventData = wdiDHCPInd;
26672 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26673 wdiEventData.pCBfnc = NULL;
26674 wdiEventData.pUserData = NULL;
26675
26676 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26677}
26678
26679
26680/**
26681 @brief WDI_dhcpStopInd
26682 Host will send an event to the FW when DHCP is completed
26683
26684 @param
26685 WDI_DHCPInd: DHCP Indication
26686 @see
26687 @return Result of the function call
26688*/
26689WDI_Status
26690WDI_dhcpStopInd
26691(
26692 WDI_DHCPInd *wdiDHCPInd
26693)
26694{
26695 WDI_EventInfoType wdiEventData;
26696
26697 /*------------------------------------------------------------------------
26698 Sanity Check
26699 ------------------------------------------------------------------------*/
26700 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26701 {
26702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26703 "WDI API call before module is initialized - Fail request");
26704
26705 return WDI_STATUS_E_NOT_ALLOWED;
26706 }
26707
26708 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
26709 wdiEventData.pEventData = wdiDHCPInd;
26710 wdiEventData.uEventDataSize = sizeof(wdiDHCPInd);
26711 wdiEventData.pCBfnc = NULL;
26712 wdiEventData.pUserData = NULL;
26713
26714 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26715}
26716
26717
26718/**
26719 @brief Process DHCP Start Indication message and post it to HAL
26720
26721 @param pWDICtx: pointer to the WLAN DAL context
26722 pEventData: pointer to the event information structure
26723
26724 @see
26725 @return Result of the function call
26726*/
26727WDI_Status
26728WDI_ProcessDHCPStartInd
26729(
26730 WDI_ControlBlockType* pWDICtx,
26731 WDI_EventInfoType* pEventData
26732)
26733{
26734 wpt_uint8* pSendBuffer = NULL;
26735 wpt_uint16 usDataOffset = 0;
26736 wpt_uint16 usSendSize = 0;
26737 wpt_uint16 usLen = 0;
26738 WDI_DHCPInd* pwdiDHCPInd = NULL;
26739 tDHCPInfo* pDHCPInfo;
26740
26741 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26742
26743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26744 "%s", __func__);
26745
26746 /*-------------------------------------------------------------------------
26747 Sanity check
26748 -------------------------------------------------------------------------*/
26749 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26750 {
26751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26752 "%s: Invalid parameters", __func__);
26753 WDI_ASSERT(0);
26754 return WDI_STATUS_E_FAILURE;
26755 }
26756 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26757 /*-----------------------------------------------------------------------
26758 Get message buffer
26759 -----------------------------------------------------------------------*/
26760
26761 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26762 WDI_DHCP_START_IND,
26763 sizeof(tDHCPInfo),
26764 &pSendBuffer, &usDataOffset, &usSendSize))||
26765 ( usSendSize < (usDataOffset + usLen )))
26766 {
26767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26768 "Unable to get send buffer in DHCP Start req %p ",
26769 pEventData);
26770 WDI_ASSERT(0);
26771 return WDI_STATUS_E_FAILURE;
26772 }
26773
26774 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26775 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26776 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26777 WDI_MAC_ADDR_LEN);
26778
26779 pWDICtx->pReqStatusUserData = NULL;
26780 pWDICtx->pfncRspCB = NULL;
26781
26782 /*-------------------------------------------------------------------------
26783 Send DHCP Start Indication to HAL
26784 -------------------------------------------------------------------------*/
26785 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26786
26787}/*WDI_ProcessDHCPStartInd*/
26788
26789/**
26790 @brief Process DHCP Stop indication message and post it to HAL
26791
26792 @param pWDICtx: pointer to the WLAN DAL context
26793 pEventData: pointer to the event information structure
26794
26795 @see
26796 @return Result of the function call
26797*/
26798WDI_Status
26799WDI_ProcessDHCPStopInd
26800(
26801 WDI_ControlBlockType* pWDICtx,
26802 WDI_EventInfoType* pEventData
26803)
26804{
26805 wpt_uint8* pSendBuffer = NULL;
26806 wpt_uint16 usDataOffset = 0;
26807 wpt_uint16 usSendSize = 0;
26808 wpt_uint16 usLen = 0;
26809 WDI_DHCPInd* pwdiDHCPInd = NULL;
26810 tDHCPInfo* pDHCPInfo;
26811
26812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26813
26814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26815 "%s", __func__);
26816
26817 /*-------------------------------------------------------------------------
26818 Sanity check
26819 -------------------------------------------------------------------------*/
26820
26821 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
26822 {
26823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26824 "%s: Invalid parameters", __func__);
26825 WDI_ASSERT(0);
26826 return WDI_STATUS_E_FAILURE;
26827 }
26828 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
26829 /*-----------------------------------------------------------------------
26830 Get message buffer
26831 -----------------------------------------------------------------------*/
26832
26833 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26834 WDI_DHCP_STOP_IND,
26835 sizeof(tDHCPInfo),
26836 &pSendBuffer, &usDataOffset, &usSendSize))||
26837 ( usSendSize < (usDataOffset + usLen )))
26838 {
26839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26840 "Unable to get send buffer in DHCP Start req %p ",
26841 pEventData);
26842 WDI_ASSERT(0);
26843 return WDI_STATUS_E_FAILURE;
26844 }
26845
26846 pDHCPInfo = (tDHCPInfo*)pSendBuffer+usDataOffset;
26847 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
26848 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
26849 WDI_MAC_ADDR_LEN);
26850
26851 pWDICtx->pReqStatusUserData = NULL;
26852 pWDICtx->pfncRspCB = NULL;
26853 /*-------------------------------------------------------------------------
26854 Send DHCP Stop indication to HAL
26855 -------------------------------------------------------------------------*/
26856 return WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
26857
26858}/*WDI_ProcessDHCPStopInd*/
26859
26860
Jeff Johnson295189b2012-06-20 16:38:30 -070026861#ifdef WLAN_FEATURE_GTK_OFFLOAD
26862/**
26863 @brief WDI_GTKOffloadReq will be called when the upper MAC
26864 wants to set GTK Rekey Counter while in power save. Upon
26865 the call of this API the WLAN DAL will pack and send a
26866 HAL GTK offload request message to the lower RIVA
26867 sub-system if DAL is in state STARTED.
26868
26869 In state BUSY this request will be queued. Request won't
26870 be allowed in any other state.
26871
26872 WDI_PostAssocReq must have been called.
26873
26874 @param pwdiGtkOffloadParams: the GTK offload as specified
26875 by the Device Interface
26876
26877 wdiGtkOffloadCb: callback for passing back the response
26878 of the GTK offload operation received from the device
26879
26880 pUserData: user data will be passed back with the
26881 callback
26882
26883 @see WDI_PostAssocReq
26884 @return Result of the function call
26885*/
26886WDI_Status
26887WDI_GTKOffloadReq
26888(
26889 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
26890 WDI_GtkOffloadCb wdiGtkOffloadCb,
26891 void* pUserData
26892)
26893{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026894 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26896
26897 /*------------------------------------------------------------------------
26898 Sanity Check
26899 ------------------------------------------------------------------------*/
26900 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26901 {
26902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26903 "WDI API call before module is initialized - Fail request");
26904
26905 return WDI_STATUS_E_NOT_ALLOWED;
26906 }
26907
26908 /*------------------------------------------------------------------------
26909 Fill in Event data and post to the Main FSM
26910 ------------------------------------------------------------------------*/
26911 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
26912 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070026913 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070026914 wdiEventData.pCBfnc = wdiGtkOffloadCb;
26915 wdiEventData.pUserData = pUserData;
26916
26917 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26918}
26919
26920
26921/**
26922 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
26923 MAC wants to get GTK Rekey Counter while in power save.
26924 Upon the call of this API the WLAN DAL will pack and
26925 send a HAL GTK offload request message to the lower RIVA
26926 sub-system if DAL is in state STARTED.
26927
26928 In state BUSY this request will be queued. Request won't
26929 be allowed in any other state.
26930
26931 WDI_PostAssocReq must have been called.
26932
26933 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
26934 Information Message as specified by the
26935 Device Interface
26936
26937 wdiGtkOffloadGetInfoCb: callback for passing back the
26938 response of the GTK offload operation received from the
26939 device
26940
26941 pUserData: user data will be passed back with the
26942 callback
26943
26944 @see WDI_PostAssocReq
26945 @return Result of the function call
26946*/
26947WDI_Status
26948WDI_GTKOffloadGetInfoReq
26949(
26950 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
26951 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
26952 void* pUserData
26953)
26954{
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053026955 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26957
26958 /*------------------------------------------------------------------------
26959 Sanity Check
26960 ------------------------------------------------------------------------*/
26961 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26962 {
26963 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26964 "WDI API call before module is initialized - Fail request");
26965
26966 return WDI_STATUS_E_NOT_ALLOWED;
26967 }
26968
26969 /*------------------------------------------------------------------------
26970 Fill in Event data and post to the Main FSM
26971 ------------------------------------------------------------------------*/
26972 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
26973 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
26974 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
26975 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
26976 wdiEventData.pUserData = pUserData;
26977
26978 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26979}
26980
26981
26982/**
26983 @brief Process set GTK Offload Request function
26984
26985 @param pWDICtx: pointer to the WLAN DAL context
26986 pEventData: pointer to the event information structure
26987
26988 @see
26989 @return Result of the function call
26990*/
26991WDI_Status
26992WDI_ProcessGTKOffloadReq
26993(
26994 WDI_ControlBlockType* pWDICtx,
26995 WDI_EventInfoType* pEventData
26996)
26997{
26998 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
26999 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
27000 wpt_uint8* pSendBuffer = NULL;
27001 wpt_uint16 usDataOffset = 0;
27002 wpt_uint16 usSendSize = 0;
27003 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027004 wpt_uint8 ucCurrentSessionId = 0;
27005 WDI_BSSSessionType* pBSSSes = NULL;
27006
Jeff Johnson295189b2012-06-20 16:38:30 -070027007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27008
27009 /*-------------------------------------------------------------------------
27010 Sanity check
27011 -------------------------------------------------------------------------*/
27012 if (( NULL == pEventData ) ||
27013 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
27014 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
27015 {
27016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027018 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027019 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027020 }
27021
27022 /*-----------------------------------------------------------------------
27023 Get message buffer
27024 -----------------------------------------------------------------------*/
27025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
27026 sizeof(gtkOffloadReqParams),
27027 &pSendBuffer, &usDataOffset, &usSendSize))||
27028 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
27029 {
27030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027031 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027032 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
27033 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027034 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027035 }
27036
27037 //
27038 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
27039 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027040 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27041 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
27042 &pBSSSes);
27043 if ( NULL == pBSSSes )
27044 {
27045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027046 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027047 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027048 }
27049
27050 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
27051
Jeff Johnson295189b2012-06-20 16:38:30 -070027052 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
27053 // Copy KCK
27054 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
27055 // Copy KEK
27056 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
27057 // Copy KeyReplayCounter
27058 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
27059
27060 wpalMemoryCopy( pSendBuffer+usDataOffset,
27061 &gtkOffloadReqParams,
27062 sizeof(gtkOffloadReqParams));
27063
27064 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
27065 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
27066
27067 /*-------------------------------------------------------------------------
27068 Send Get STA Request to HAL
27069 -------------------------------------------------------------------------*/
27070 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27071 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027072
27073fail:
27074 // Release the message buffer so we don't leak
27075 wpalMemoryFree(pSendBuffer);
27076
27077failRequest:
27078 //WDA should have failure check to avoid the memory leak
27079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027080}
27081
27082
27083/**
27084 @brief Process GTK Offload Get Information Request function
27085
27086 @param pWDICtx: pointer to the WLAN DAL context
27087 pEventData: pointer to the event information structure
27088
27089 @see
27090 @return Result of the function call
27091*/
27092WDI_Status
27093WDI_ProcessGTKOffloadGetInfoReq
27094(
27095 WDI_ControlBlockType* pWDICtx,
27096 WDI_EventInfoType* pEventData
27097)
27098{
27099 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
27100 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
27101 wpt_uint8* pSendBuffer = NULL;
27102 wpt_uint16 usDataOffset = 0;
27103 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027104 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
27105 wpt_uint8 ucCurrentSessionId = 0;
27106 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027107
27108 /*-------------------------------------------------------------------------
27109 Sanity check
27110 -------------------------------------------------------------------------*/
27111 if (( NULL == pEventData ) ||
27112 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
27113 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
27114 {
27115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027116 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027117 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027118 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027119 }
27120
27121 /*-----------------------------------------------------------------------
27122 Get message buffer
27123 -----------------------------------------------------------------------*/
27124 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027125 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027126 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027127 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070027128 {
27129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027130 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027131 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
27132 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027133 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070027134 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027135 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
27136 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
27137 &pBSSSes);
27138 if ( NULL == pBSSSes )
27139 {
27140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027141 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027142 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027143 }
27144 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027145
27146 //
27147 // Don't need to fill send buffer other than header
27148 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027149 wpalMemoryCopy( pSendBuffer+usDataOffset,
27150 &halGtkOffloadGetInfoReqParams,
27151 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027152
27153 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
27154 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
27155
27156 /*-------------------------------------------------------------------------
27157 Send Get STA Request to HAL
27158 -------------------------------------------------------------------------*/
27159 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27160 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080027161fail:
27162 // Release the message buffer so we don't leak
27163 wpalMemoryFree(pSendBuffer);
27164
27165failRequest:
27166 //WDA should have failure check to avoid the memory leak
27167 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027168}
27169
27170/**
27171 @brief Process host offload Rsp function (called when a
27172 response is being received over the bus from HAL)
27173
27174 @param pWDICtx: pointer to the WLAN DAL context
27175 pEventData: pointer to the event information structure
27176
27177 @see
27178 @return Result of the function call
27179*/
27180WDI_Status
27181WDI_ProcessGtkOffloadRsp
27182(
27183 WDI_ControlBlockType* pWDICtx,
27184 WDI_EventInfoType* pEventData
27185)
27186{
Jeff Johnson295189b2012-06-20 16:38:30 -070027187 eHalStatus halStatus;
27188 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027189 tHalGtkOffloadRspParams halGtkOffloadRspParams;
27190 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027191
27192 /*-------------------------------------------------------------------------
27193 Sanity check
27194 -------------------------------------------------------------------------*/
27195 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27196 ( NULL == pEventData->pEventData))
27197 {
27198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027199 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027200 WDI_ASSERT(0);
27201 return WDI_STATUS_E_FAILURE;
27202 }
27203
Wilson Yangcf2cf012013-10-10 23:13:38 -070027204 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
27205
Jeff Johnson295189b2012-06-20 16:38:30 -070027206 /*-------------------------------------------------------------------------
27207 Extract response and send it to UMAC
27208 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027209 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27210 {
27211 wpalMemoryCopy( &halGtkOffloadRspParams,
27212 pEventData->pEventData,
27213 sizeof(halGtkOffloadRspParams));
27214
27215 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027216 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027217 wdiGtkOffloadRsparams.bssIdx =
27218 halGtkOffloadRspParams.bssIdx;
27219 }
27220 else
27221 {
27222 halStatus = *((eHalStatus*)pEventData->pEventData);
27223 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27224 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027225
27226 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027227 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027228
27229 return WDI_STATUS_SUCCESS;
27230}
27231
27232/**
27233 @brief Process GTK Offload Get Information Response function
27234
27235 @param pWDICtx: pointer to the WLAN DAL context
27236 pEventData: pointer to the event information structure
27237
27238 @see
27239 @return Result of the function call
27240*/
27241WDI_Status
27242WDI_ProcessGTKOffloadGetInfoRsp
27243(
27244 WDI_ControlBlockType* pWDICtx,
27245 WDI_EventInfoType* pEventData
27246)
27247{
Jeff Johnson295189b2012-06-20 16:38:30 -070027248 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027249 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027250 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
27251 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027252 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027253
Jeff Johnson295189b2012-06-20 16:38:30 -070027254
27255 /*-------------------------------------------------------------------------
27256 Sanity check
27257 -------------------------------------------------------------------------*/
27258 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27259 ( NULL == pEventData->pEventData ))
27260 {
27261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027262 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027263 WDI_ASSERT(0);
27264 return WDI_STATUS_E_FAILURE;
27265 }
27266
Wilson Yangcf2cf012013-10-10 23:13:38 -070027267 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
27268
27269 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070027270 Extract response and send it to UMAC
27271 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027272 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
27273 {
27274 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
27275 pEventData->pEventData,
27276 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070027277
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027278 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027279 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027280 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
27281 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
27282 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
27283 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
27284 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
27285 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
27286 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
27287 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala11cc1a92013-03-15 21:16:09 +053027288
27289 wpalMutexAcquire(&pWDICtx->wptMutex);
27290 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
27291 &pBSSSes);
27292
27293 if ( NULL == pBSSSes )
27294 {
27295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27296 "Association sequence for this BSS does not exist or "
27297 "association no longer in progress - mysterious HAL response");
27298 wpalMutexRelease(&pWDICtx->wptMutex);
27299 return WDI_STATUS_E_NOT_ALLOWED;
27300 }
27301
27302 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
27303 sizeof (wpt_macAddr));
27304 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027305 }
27306 else
27307 {
27308 halStatus = *((eHalStatus*)pEventData->pEventData);
27309 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27310 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027311 /*Notify UMAC*/
27312 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27313 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027314 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027315
27316 return WDI_STATUS_SUCCESS;
27317}
27318#endif // WLAN_FEATURE_GTK_OFFLOAD
27319
27320#ifdef WLAN_WAKEUP_EVENTS
27321WDI_Status
27322WDI_ProcessWakeReasonInd
27323(
27324 WDI_ControlBlockType* pWDICtx,
27325 WDI_EventInfoType* pEventData
27326)
27327{
27328 WDI_LowLevelIndType *pWdiInd;
27329 tpWakeReasonParams pWakeReasonParams;
27330 wpt_uint32 allocSize = 0;
27331
27332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027333 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027334
27335 /*-------------------------------------------------------------------------
27336 Sanity check
27337 -------------------------------------------------------------------------*/
27338 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27339 ( NULL == pEventData->pEventData ))
27340 {
27341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027342 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027343 WDI_ASSERT( 0 );
27344 return WDI_STATUS_E_FAILURE;
27345 }
27346
27347 /*-------------------------------------------------------------------------
27348 Extract indication and send it to UMAC
27349 -------------------------------------------------------------------------*/
27350 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
27351
27352 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
27353
27354 //Allocate memory for WDI_WakeReasonIndType structure
27355 pWdiInd = wpalMemoryAllocate(allocSize) ;
27356
27357 if(NULL == pWdiInd)
27358 {
27359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027360 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027361 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027362 WDI_ASSERT(0);
27363 return WDI_STATUS_E_FAILURE;
27364 }
27365
27366 wpalMemoryZero(pWdiInd, allocSize);
27367
27368 /* Fill in the indication parameters*/
27369 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
27370 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
27371 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
27372 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
27373 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
27374 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
27375 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
27376 &(pWakeReasonParams->aDataStart[0]),
27377 pWakeReasonParams->ulStoredDataLen);
27378
ltimariu034f7d62013-01-24 18:54:33 -080027379
27380 if ( pWDICtx->wdiLowLevelIndCB )
27381 {
27382 /*Notify UMAC*/
27383 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
27384 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027385
27386 //Free memory allocated for WDI_WakeReasonIndType structure
27387 wpalMemoryFree(pWdiInd);
27388
27389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027390 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027391
27392 return WDI_STATUS_SUCCESS;
27393}
27394#endif // WLAN_WAKEUP_EVENTS
27395
27396void WDI_GetWcnssCompiledApiVersion
27397(
27398 WDI_WlanVersionType *pWcnssApiVersion
27399)
27400{
27401 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
27402 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
27403 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
27404 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
27405}
27406
27407/**
27408 @brief Process Set TM Level Rsp function (called when a
27409 response is being received over the bus from HAL)
27410
27411 @param pWDICtx: pointer to the WLAN DAL context
27412 pEventData: pointer to the event information structure
27413
27414 @see
27415 @return Result of the function call
27416*/
27417WDI_Status
27418WDI_ProcessSetTmLevelRsp
27419(
27420 WDI_ControlBlockType* pWDICtx,
27421 WDI_EventInfoType* pEventData
27422)
27423{
27424 WDI_Status wdiStatus;
27425 eHalStatus halStatus;
27426 WDI_SetTmLevelCb wdiSetTmLevelCb;
27427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27428
27429 /*-------------------------------------------------------------------------
27430 Sanity check
27431 -------------------------------------------------------------------------*/
27432 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27433 ( NULL == pEventData->pEventData ))
27434 {
27435 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027437 WDI_ASSERT(0);
27438 return WDI_STATUS_E_FAILURE;
27439 }
27440
27441 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
27442
27443 /*-------------------------------------------------------------------------
27444 Extract response and send it to UMAC
27445 -------------------------------------------------------------------------*/
27446 halStatus = *((eHalStatus*)pEventData->pEventData);
27447 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27448
27449 /*Notify UMAC*/
27450 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
27451
27452 return WDI_STATUS_SUCCESS;
27453}/*WDI_ProcessSetTmLevelRsp*/
27454
27455/**
27456 @brief Process Set Thermal Mitigation level Changed request
27457
27458 @param pWDICtx: pointer to the WLAN DAL context
27459 pEventData: pointer to the event information structure
27460
27461 @see
27462 @return Result of the function call
27463*/
27464WDI_Status
27465WDI_ProcessSetTmLevelReq
27466(
27467 WDI_ControlBlockType* pWDICtx,
27468 WDI_EventInfoType* pEventData
27469)
27470{
27471 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
27472 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
27473 wpt_uint8* pSendBuffer = NULL;
27474 wpt_uint16 usDataOffset = 0;
27475 wpt_uint16 usSendSize = 0;
27476 tSetThermalMitgationType halTmMsg;
27477
27478 /*-------------------------------------------------------------------------
27479 Sanity check
27480 -------------------------------------------------------------------------*/
27481 if (( NULL == pEventData ) ||
27482 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
27483 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
27484 {
27485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027486 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027487 WDI_ASSERT(0);
27488 return WDI_STATUS_E_FAILURE;
27489 }
27490
27491 /*-----------------------------------------------------------------------
27492 Get message buffer
27493 -----------------------------------------------------------------------*/
27494 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
27495 sizeof(halTmMsg),
27496 &pSendBuffer, &usDataOffset, &usSendSize))||
27497 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
27498 {
27499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027500 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027501 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
27502 WDI_ASSERT(0);
27503 return WDI_STATUS_E_FAILURE;
27504 }
27505
27506 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
27507 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
27508
27509 wpalMemoryCopy( pSendBuffer+usDataOffset,
27510 &halTmMsg,
27511 sizeof(halTmMsg));
27512
27513 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
27514 pWDICtx->pfncRspCB = NULL;
27515 /*-------------------------------------------------------------------------
27516 Send Get STA Request to HAL
27517 -------------------------------------------------------------------------*/
27518 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27519 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
27520}
27521
27522/* Fill the value from the global features enabled array to the global capabilities
27523 * bitmap struct
27524 */
27525static void
27526FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
27527{
27528 wpt_int8 i;
27529 for (i=0; i<len; i++)
27530 {
27531 setFeatCaps(fCaps, enabledFeat[i]);
27532 }
27533}
27534
27535/**
27536 @brief WDI_featureCapsExchangeReq
27537 Post feature capability bitmap exchange event.
27538 Host will send its own capability to FW in this req and
27539 expect FW to send its capability back as a bitmap in Response
27540
27541 @param
27542
27543 wdiFeatureCapsExchangeCb: callback called on getting the response.
27544 It is kept to mantain similarity between WDI reqs and if needed, can
27545 be used in future. Currently, It is set to NULL
27546
27547 pUserData: user data will be passed back with the
27548 callback
27549
27550 @see
27551 @return Result of the function call
27552*/
27553WDI_Status
27554WDI_featureCapsExchangeReq
27555(
27556 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
27557 void* pUserData
27558)
27559{
27560 WDI_EventInfoType wdiEventData;
27561 wpt_int32 fCapsStructSize;
27562
27563 /*------------------------------------------------------------------------
27564 Sanity Check
27565 ------------------------------------------------------------------------*/
27566 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27567 {
27568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27569 "WDI API call before module is initialized - Fail request");
27570
27571 return WDI_STATUS_E_NOT_ALLOWED;
27572 }
27573
27574 /* Allocate memory separately for global variable carrying FW caps */
27575 fCapsStructSize = sizeof(tWlanFeatCaps);
27576 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27577 if ( NULL == gpHostWlanFeatCaps )
27578 {
27579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27580 "Cannot allocate memory for host capability info\n");
27581 WDI_ASSERT(0);
27582 return WDI_STATUS_MEM_FAILURE;
27583 }
27584
27585 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
27586
27587 /*------------------------------------------------------------------------
27588 Fill in Event data and post to the Main FSM
27589 ------------------------------------------------------------------------*/
27590 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
27591 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027593 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027594 gpHostWlanFeatCaps->featCaps[0],
27595 gpHostWlanFeatCaps->featCaps[1],
27596 gpHostWlanFeatCaps->featCaps[2],
27597 gpHostWlanFeatCaps->featCaps[3]
27598 );
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Host Capability");
27600 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027601 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
27602 wdiEventData.pEventData = gpHostWlanFeatCaps;
27603 wdiEventData.uEventDataSize = fCapsStructSize;
27604 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
27605 wdiEventData.pUserData = pUserData;
27606
27607 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27608}
27609
27610/**
Yathishd8713192012-12-10 14:21:35 -080027611 @brief Disable Active mode offload in Host
27612
27613 @param void
27614 @see
27615 @return void
27616*/
27617void
27618WDI_disableCapablityFeature(wpt_uint8 feature_index)
27619{
27620 supportEnabledFeatures[feature_index] = 0;
27621 return;
27622}
27623
27624/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027625 @brief Process Host-FW Capability Exchange Request function
27626
27627 @param pWDICtx: pointer to the WLAN DAL context
27628 pEventData: pointer to the event information structure
27629
27630 @see
27631 @return Result of the function call
27632*/
27633WDI_Status
27634WDI_ProcessFeatureCapsExchangeReq
27635(
27636 WDI_ControlBlockType* pWDICtx,
27637 WDI_EventInfoType* pEventData
27638)
27639{
27640 wpt_uint8* pSendBuffer = NULL;
27641 wpt_uint16 usDataOffset = 0;
27642 wpt_uint16 usSendSize = 0;
27643 wpt_uint16 usLen = 0;
27644
27645 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27646
27647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027648 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027649
27650 /*-------------------------------------------------------------------------
27651 Sanity check
27652 -------------------------------------------------------------------------*/
27653 /* Call back function is NULL since not required for cap exchange req */
27654 if (( NULL == pEventData ) ||
27655 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
27656 {
27657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027659 WDI_ASSERT(0);
27660 return WDI_STATUS_E_FAILURE;
27661 }
27662
27663 /*-----------------------------------------------------------------------
27664 Get message buffer
27665 -----------------------------------------------------------------------*/
27666 usLen = sizeof(tWlanFeatCaps);
27667
27668 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27669 WDI_FEATURE_CAPS_EXCHANGE_REQ,
27670 usLen,
27671 &pSendBuffer, &usDataOffset, &usSendSize))||
27672 ( usSendSize < (usDataOffset + usLen )))
27673 {
27674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080027675 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027676 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
27677 WDI_ASSERT(0);
27678 return WDI_STATUS_E_FAILURE;
27679 }
27680
27681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027682 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027683 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
27684 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
27685 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
27686 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
27687 );
27688
27689 /* Copy host caps after the offset in the send buffer */
27690 wpalMemoryCopy( pSendBuffer+usDataOffset,
27691 (tWlanFeatCaps *)pEventData->pEventData,
27692 usLen);
27693
27694 /*-------------------------------------------------------------------------
27695 Send Start Request to HAL
27696 -------------------------------------------------------------------------*/
27697 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27698 (WDI_StartRspCb)pEventData->pCBfnc,
27699 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
27700
27701}/*WDI_ProcessFeatureCapsExchangeReq*/
27702
27703/**
27704 @brief Process Host-FW Capability Exchange Response function
27705
27706 @param pWDICtx: pointer to the WLAN DAL context
27707 pEventData: pointer to the event information structure
27708
27709 @see
27710 @return Result of the function call
27711*/
27712WDI_Status
27713WDI_ProcessFeatureCapsExchangeRsp
27714(
27715 WDI_ControlBlockType* pWDICtx,
27716 WDI_EventInfoType* pEventData
27717)
27718{
27719 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
27720 wpt_int32 fCapsStructSize;
27721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27722
27723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027724 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027725
27726 /*-------------------------------------------------------------------------
27727 Sanity check
27728 -------------------------------------------------------------------------*/
27729 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27730 ( NULL == pEventData->pEventData ))
27731 {
27732 /* It will go here when riva is old (doesn't understand this msg) and host is new */
27733 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027735 WDI_ASSERT(0);
27736 return WDI_STATUS_E_FAILURE;
27737 }
27738
27739 /* Allocate memory separately for global variable carrying FW caps */
27740 fCapsStructSize = sizeof(tWlanFeatCaps);
27741 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
27742 if ( NULL == gpFwWlanFeatCaps )
27743 {
27744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27745 "Cannot allocate memory for host capability info\n");
27746 WDI_ASSERT(0);
27747 return WDI_STATUS_MEM_FAILURE;
27748 }
27749
27750 /*-------------------------------------------------------------------------
27751 Unpack HAL Response Message - the header was already extracted by the
27752 main Response Handling procedure
27753 -------------------------------------------------------------------------*/
27754 /*-------------------------------------------------------------------------
27755 Extract response and send it to UMAC
27756 -------------------------------------------------------------------------*/
27757
27758 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
27759 fCapsStructSize);
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027761 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070027762 gpFwWlanFeatCaps->featCaps[0],
27763 gpFwWlanFeatCaps->featCaps[1],
27764 gpFwWlanFeatCaps->featCaps[2],
27765 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudic95d2e82013-07-30 19:10:54 +053027766 );
27767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR, "Firmware Capability");
27768 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070027769 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
27770
27771 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
27772 if (wdiFeatureCapsExchangeCb != NULL)
27773 wdiFeatureCapsExchangeCb(NULL, NULL);
27774
27775 return WDI_STATUS_SUCCESS;
27776}
27777
Mohit Khanna4a70d262012-09-11 16:30:12 -070027778#ifdef WLAN_FEATURE_11AC
27779WDI_Status
27780WDI_ProcessUpdateVHTOpModeRsp
27781(
27782 WDI_ControlBlockType* pWDICtx,
27783 WDI_EventInfoType* pEventData
27784)
27785{
27786 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27787 WDI_Status wdiStatus;
27788 eHalStatus halStatus;
27789
27790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27791
27792 /*-------------------------------------------------------------------------
27793 Sanity check
27794 -------------------------------------------------------------------------*/
27795 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27796 ( NULL == pEventData->pEventData))
27797 {
27798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027799 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027800 WDI_ASSERT(0);
27801 return WDI_STATUS_E_FAILURE;
27802 }
27803 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
27804
27805 /*-------------------------------------------------------------------------
27806 Extract response and send it to UMAC
27807 -------------------------------------------------------------------------*/
27808 halStatus = *((eHalStatus*)pEventData->pEventData);
27809 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27810
27811 /*Notify UMAC*/
27812 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
27813
27814 return WDI_STATUS_SUCCESS;
27815}
27816#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027817/**
27818 @brief WDI_getHostWlanFeatCaps
27819 WDI API that returns whether the feature passed to it as enum value in
27820 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
27821 variable storing host capability bitmap to find this. This can be used by
27822 other moduels to decide certain things like call different APIs based on
27823 whether a particular feature is supported.
27824
27825 @param
27826
27827 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
27828
27829 @see
27830 @return
27831 0 - if the feature is NOT supported in host
27832 any non-zero value - if the feature is SUPPORTED in host.
27833*/
27834wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
27835{
27836 wpt_uint8 featSupported = 0;
27837 if (gpHostWlanFeatCaps != NULL)
27838 {
27839 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
27840 }
27841 else
27842 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027844 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027845 }
27846 return featSupported;
27847}
27848
27849/**
27850 @brief WDI_getFwWlanFeatCaps
27851 WDI API that returns whether the feature passed to it as enum value in
27852 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
27853 variable storing host capability bitmap to find this. This can be used by
27854 other moduels to decide certain things like call different APIs based on
27855 whether a particular feature is supported.
27856
27857 @param
27858
27859 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
27860 in wlan_hal_msg.h.
27861
27862 @see
27863 @return
27864 0 - if the feature is NOT supported in FW
27865 any non-zero value - if the feature is SUPPORTED in FW.
27866*/
27867wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
27868{
27869 wpt_uint8 featSupported = 0;
27870 if (gpFwWlanFeatCaps != NULL)
27871 {
27872 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
27873 }
27874 else
27875 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070027877 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070027878 }
27879 return featSupported;
27880}
Mohit Khanna4a70d262012-09-11 16:30:12 -070027881
27882#ifdef WLAN_FEATURE_11AC
27883WDI_Status
27884WDI_ProcessUpdateVHTOpModeReq
27885(
27886 WDI_ControlBlockType* pWDICtx,
27887 WDI_EventInfoType* pEventData
27888)
27889{
27890 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
27891 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
27892 wpt_uint8* pSendBuffer = NULL;
27893 wpt_uint16 usDataOffset = 0;
27894 wpt_uint16 usSendSize = 0;
27895
27896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27897
27898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027899 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027900
27901 /*-------------------------------------------------------------------------
27902 Sanity check
27903 -------------------------------------------------------------------------*/
27904 if (( NULL == pEventData ) ||
27905 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
27906 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
27907 {
27908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027909 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070027910 WDI_ASSERT(0);
27911 return WDI_STATUS_E_FAILURE;
27912 }
27913
27914 /*-----------------------------------------------------------------------
27915 Get message buffer
27916 -----------------------------------------------------------------------*/
27917 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
27918 sizeof(WDI_UpdateVHTOpMode),
27919 &pSendBuffer, &usDataOffset, &usSendSize))||
27920 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
27921 {
27922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27923 "Unable to get send buffer in update vht opMode req");
27924 WDI_ASSERT(0);
27925 return WDI_STATUS_E_FAILURE;
27926 }
27927
27928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27929 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
27930
27931 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
27932 sizeof(WDI_UpdateVHTOpMode));
27933
27934 /*-------------------------------------------------------------------------
27935 Send Start Request to HAL
27936 -------------------------------------------------------------------------*/
27937 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27938 wdiVHTOpModeCb,
27939 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
27940
27941}
27942
27943WDI_Status
27944WDI_UpdateVHTOpModeReq
27945(
27946 WDI_UpdateVHTOpMode *pData,
27947 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
27948 void* pUserData
27949)
27950{
27951 WDI_EventInfoType wdiEventData;
27952
27953 /*------------------------------------------------------------------------
27954 Sanity Check
27955 ------------------------------------------------------------------------*/
27956 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27957 {
27958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27959 "WDI API call before module is initialized - Fail request");
27960
27961 return WDI_STATUS_E_NOT_ALLOWED;
27962 }
27963
27964 /*------------------------------------------------------------------------
27965 Fill in Event data and post to the Main FSM
27966 ------------------------------------------------------------------------*/
27967 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
27968 wdiEventData.pEventData = pData;
27969 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
27970 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
27971 wdiEventData.pUserData = pUserData;
27972
27973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27974 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
27975
27976 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27977
27978}
27979#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027980
27981/**
27982 @brief WDI_TransportChannelDebug -
27983 Display DXE Channel debugging information
27984 User may request to display DXE channel snapshot
27985 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070027986
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080027987 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027988 @param enableStallDetect : Enable stall detect feature
27989 This feature will take effect to data performance
27990 Not integrate till fully verification
27991 @see
27992 @return none
27993*/
27994void WDI_TransportChannelDebug
27995(
27996 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070027997 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070027998)
27999{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070028000 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070028001 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070028002}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028003/**
28004 @brief WDI_SsrTimerCB
28005 Callback function for SSR timer, if this is called then the graceful
28006 shutdown for Riva did not happen.
28007
28008 @param pUserData : user data to timer
28009
28010 @see
28011 @return none
28012*/
28013void
28014WDI_SsrTimerCB
28015(
28016 void *pUserData
28017)
28018{
28019 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
28020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28021
28022 if (NULL == pWDICtx )
28023 {
28024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028025 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070028026 WDI_ASSERT(0);
28027 return;
28028 }
28029 wpalRivaSubystemRestart();
28030
28031 return;
28032
28033}/*WDI_SsrTimerCB*/
Gopichand Nakkalac8ccb562013-04-26 05:45:57 -070028034
28035/**
28036 @brief WDI_SetEnableSSR -
28037 This API is called to enable/disable SSR on WDI timeout.
28038
28039 @param enableSSR : enable/disable SSR
28040
28041 @see
28042 @return none
28043*/
28044void WDI_SetEnableSSR(wpt_boolean enableSSR)
28045{
28046 gWDICb.bEnableSSR = enableSSR;
28047}
Leo Chang00bc9132013-08-01 19:21:11 -070028048
28049
28050#ifdef FEATURE_WLAN_LPHB
28051/**
Leo Chang8d19a5f2013-09-26 13:32:26 -070028052 @brief WDI_ProcessLphbInd -
Leo Chang00bc9132013-08-01 19:21:11 -070028053 This function will be invoked when FW detects low power
28054 heart beat failure
28055
28056 @param pWDICtx : wdi context
28057 pEventData : indication data
Leo Chang00bc9132013-08-01 19:21:11 -070028058 @see
28059 @return Result of the function call
28060*/
28061WDI_Status
Leo Chang8d19a5f2013-09-26 13:32:26 -070028062WDI_ProcessLphbInd
Leo Chang00bc9132013-08-01 19:21:11 -070028063(
28064 WDI_ControlBlockType* pWDICtx,
28065 WDI_EventInfoType* pEventData
28066)
28067{
28068 WDI_LowLevelIndType wdiInd;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028069 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang00bc9132013-08-01 19:21:11 -070028070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28071
28072 /*-------------------------------------------------------------------------
28073 Sanity check
28074 -------------------------------------------------------------------------*/
28075 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28076 (NULL == pEventData->pEventData))
28077 {
28078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28079 "%s: Invalid parameters", __func__);
28080 WDI_ASSERT(0);
28081 return WDI_STATUS_E_FAILURE;
28082 }
28083
28084 /*-------------------------------------------------------------------------
28085 Extract indication and send it to UMAC
28086 -------------------------------------------------------------------------*/
Leo Chang8d19a5f2013-09-26 13:32:26 -070028087 wpalMemoryCopy(&lphbIndicationParam,
28088 pEventData->pEventData,
28089 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang00bc9132013-08-01 19:21:11 -070028090
Leo Chang8d19a5f2013-09-26 13:32:26 -070028091 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang00bc9132013-08-01 19:21:11 -070028092 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028093 lphbIndicationParam.bssIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028094 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028095 lphbIndicationParam.sessionIdx;
Leo Chang00bc9132013-08-01 19:21:11 -070028096 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028097 lphbIndicationParam.protocolType;
Leo Chang00bc9132013-08-01 19:21:11 -070028098 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Chang8d19a5f2013-09-26 13:32:26 -070028099 lphbIndicationParam.eventReason;
Leo Chang00bc9132013-08-01 19:21:11 -070028100 /*Notify UMAC*/
28101 if (pWDICtx->wdiLowLevelIndCB)
28102 {
28103 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
28104 }
28105
28106 return WDI_STATUS_SUCCESS;
28107}
28108
28109/**
28110 @brief WDI_ProcessLphbCfgRsp -
28111 LPHB configuration response from FW
28112
28113 @param pWDICtx : wdi context
28114 pEventData : indication data
28115
28116 @see
28117 @return Result of the function call
28118*/
28119WDI_Status WDI_ProcessLphbCfgRsp
28120(
28121 WDI_ControlBlockType* pWDICtx,
28122 WDI_EventInfoType* pEventData
28123)
28124{
28125 WDI_Status wdiStatus;
28126 eHalStatus halStatus;
28127 WDI_LphbCfgCb wdiLphbCfgCb;
28128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28129
28130 /*-------------------------------------------------------------------------
28131 Sanity check
28132 -------------------------------------------------------------------------*/
28133 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28134 (NULL == pEventData->pEventData))
28135 {
28136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28137 "%s: Invalid parameters", __func__);
28138 WDI_ASSERT(0);
28139 return WDI_STATUS_E_FAILURE;
28140 }
28141
28142 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
28143
28144 /*-------------------------------------------------------------------------
28145 Extract response and send it to UMAC
28146 -------------------------------------------------------------------------*/
28147 halStatus = *((eHalStatus*)pEventData->pEventData);
28148 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28149
28150 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28151 "LPHB Cfg Rsp Return status %d", wdiStatus);
28152 /*Notify UMAC*/
28153 if (NULL != wdiLphbCfgCb)
28154 {
28155 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
28156 }
28157
28158 return WDI_STATUS_SUCCESS;
28159}
28160
28161/**
28162 @brief WDI_ProcessLPHBConfReq -
28163 LPHB configuration request to FW
28164
28165 @param pWDICtx : wdi context
28166 pEventData : indication data
28167
28168 @see
28169 @return none
28170*/
28171WDI_Status WDI_ProcessLPHBConfReq
28172(
28173 WDI_ControlBlockType* pWDICtx,
28174 WDI_EventInfoType* pEventData
28175)
28176{
28177 WDI_LPHBReq *pLphbReqParams;
28178 WDI_Status wdiStatus;
28179 wpt_uint8* pSendBuffer = NULL;
28180 wpt_uint16 usDataOffset = 0;
28181 wpt_uint16 usSendSize = 0;
28182 tHalLowPowerHeartBeatReq *halLphbReqRarams;
28183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28184
28185 /*-------------------------------------------------------------------------
28186 Sanity check
28187 -------------------------------------------------------------------------*/
28188 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28189 {
28190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28191 "%s: Invalid parameters in Suspend ind",__func__);
28192 WDI_ASSERT(0);
28193 return WDI_STATUS_E_FAILURE;
28194 }
28195
28196 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
28197
28198 /*-----------------------------------------------------------------------
28199 Get message buffer
28200 -----------------------------------------------------------------------*/
28201 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28202 WDI_LPHB_CFG_REQ,
28203 sizeof(tHalLowPowerHeartBeatReqMsg),
28204 &pSendBuffer, &usDataOffset, &usSendSize))||
28205 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
28206 {
28207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28208 "Unable to get send buffer in LPHB Ind ");
28209 WDI_ASSERT(0);
28210 return WDI_STATUS_E_FAILURE;
28211 }
28212
28213 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
28214 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
28215
28216 halLphbReqRarams->lowPowerHeartBeatCmdType =
28217 (tANI_U16)(++pLphbReqParams->cmd);
28218 switch ((tANI_U16)pLphbReqParams->cmd)
28219 {
28220 case WDI_LPHB_SET_EN_PARAMS_INDID:
28221 halLphbReqRarams->sessionIdx =
28222 pLphbReqParams->params.lphbEnableReq.session;
28223 halLphbReqRarams->options.control.heartBeatEnable =
28224 pLphbReqParams->params.lphbEnableReq.enable;
28225 halLphbReqRarams->options.control.heartBeatType =
28226 pLphbReqParams->params.lphbEnableReq.item;
28227 break;
28228
28229 case WDI_LPHB_SET_TCP_PARAMS_INDID:
28230 halLphbReqRarams->sessionIdx =
28231 pLphbReqParams->params.lphbTcpParamReq.session;
28232 halLphbReqRarams->options.tcpParams.timeOutSec =
28233 pLphbReqParams->params.lphbTcpParamReq.timeout;
28234 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
28235 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
28236 sizeof(v_U32_t));
28237 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
28238 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
28239 sizeof(v_U32_t));
28240
28241 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
28242 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
28243 WDI_MAC_ADDR_LEN);
28244
28245 halLphbReqRarams->options.tcpParams.hostPort =
28246 pLphbReqParams->params.lphbTcpParamReq.src_port;
28247 halLphbReqRarams->options.tcpParams.destPort =
28248 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Chang8d19a5f2013-09-26 13:32:26 -070028249 halLphbReqRarams->options.tcpParams.timePeriodSec =
28250 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
28251 halLphbReqRarams->options.tcpParams.tcpSn =
28252 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang00bc9132013-08-01 19:21:11 -070028253 break;
28254
28255 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
28256 halLphbReqRarams->sessionIdx =
28257 pLphbReqParams->params.lphbTcpFilterReq.session;
28258 halLphbReqRarams->options.tcpUdpFilter.offset =
28259 pLphbReqParams->params.lphbTcpFilterReq.offset;
28260 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28261 pLphbReqParams->params.lphbTcpFilterReq.length;
28262 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28263 pLphbReqParams->params.lphbTcpFilterReq.filter,
28264 WDI_LPHB_FILTER_LEN);
28265 break;
28266
28267 case WDI_LPHB_SET_UDP_PARAMS_INDID:
28268 halLphbReqRarams->sessionIdx =
28269 pLphbReqParams->params.lphbUdpParamReq.session;
28270 halLphbReqRarams->options.udpParams.timeOutSec =
28271 pLphbReqParams->params.lphbUdpParamReq.timeout;
28272 halLphbReqRarams->options.udpParams.timePeriodSec =
28273 pLphbReqParams->params.lphbUdpParamReq.interval;
28274 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
28275 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
28276 sizeof(v_U32_t));
28277 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
28278 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
28279 sizeof(v_U32_t));
28280
28281 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
28282 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
28283 WDI_MAC_ADDR_LEN);
28284
28285 halLphbReqRarams->options.udpParams.hostPort =
28286 pLphbReqParams->params.lphbUdpParamReq.src_port;
28287 halLphbReqRarams->options.udpParams.destPort =
28288 pLphbReqParams->params.lphbUdpParamReq.dst_port;
28289 break;
28290
28291 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
28292 halLphbReqRarams->sessionIdx =
28293 pLphbReqParams->params.lphbUdpFilterReq.session;
28294 halLphbReqRarams->options.tcpUdpFilter.offset =
28295 pLphbReqParams->params.lphbUdpFilterReq.offset;
28296 halLphbReqRarams->options.tcpUdpFilter.filterLength =
28297 pLphbReqParams->params.lphbUdpFilterReq.length;
28298 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
28299 pLphbReqParams->params.lphbUdpFilterReq.filter,
28300 WDI_LPHB_FILTER_LEN);
28301 break;
28302
28303 case WDI_LPHB_SET_NETWORK_INFO_INDID:
28304 /* NA */
28305 break;
28306
28307 default:
28308 break;
28309 }
28310
28311 /*-------------------------------------------------------------------------
28312 Send Suspend Request to HAL
28313 -------------------------------------------------------------------------*/
28314 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28315 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28316
28317 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28318 usSendSize, pWDICtx->pfncRspCB,
28319 pWDICtx->pReqStatusUserData,
28320 WDI_LPHB_CFG_RESP);
28321
28322 return wdiStatus;
28323}
28324
28325/**
28326 @brief WDI_LPHBConfReq -
28327 LPHB configuration request API
28328
28329 @param lphbconfParam : configuration parameter
28330 usrData : client context
28331 lphbCfgCb : callback function pointer
28332
28333 @see
28334 @return Success or fail status code
28335*/
28336WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
28337 void *usrData, WDI_LphbCfgCb lphbCfgCb)
28338{
28339 WDI_EventInfoType wdiEventData;
28340
28341 /*------------------------------------------------------------------------
28342 Sanity Check
28343 ------------------------------------------------------------------------*/
28344 if (eWLAN_PAL_FALSE == gWDIInitialized)
28345 {
28346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28347 "WDI API call before module is initialized - Fail request");
28348
28349 return WDI_STATUS_E_NOT_ALLOWED;
28350 }
28351
28352 /*------------------------------------------------------------------------
28353 Fill in Event data and post to the Main FSM
28354 ------------------------------------------------------------------------*/
28355 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
28356 wdiEventData.pEventData = lphbconfParam;
28357 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
28358 wdiEventData.pCBfnc = lphbCfgCb;
28359 wdiEventData.pUserData = usrData;
28360
28361 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28362}
28363#endif /* FEATURE_WLAN_LPHB */
28364
Ravi Joshi96d77342013-07-23 08:37:49 -070028365/**
28366 @brief WDI_ProcessIbssPeerInactivityInd
28367 Process peer inactivity indication coming from HAL
28368
28369 @param pWDICtx: pointer to the WLAN DAL context
28370 pEventData: pointer to the event information structure
28371 @see
28372 @return Result of the function call
28373*/
28374WDI_Status
28375WDI_ProcessIbssPeerInactivityInd
28376(
28377 WDI_ControlBlockType* pWDICtx,
28378 WDI_EventInfoType* pEventData
28379)
28380{
28381 WDI_LowLevelIndType wdiInd;
28382 tIbssPeerInactivityIndMsg halIbssIndMsg;
28383
28384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28385
28386 /*-------------------------------------------------------------------------
28387 Sanity check
28388 -------------------------------------------------------------------------*/
28389 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28390 ( NULL == pEventData->pEventData ))
28391 {
28392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28393 "%s: Invalid parameters", __func__);
28394 WDI_ASSERT( 0 );
28395 return WDI_STATUS_E_FAILURE;
28396 }
28397
28398 /*-------------------------------------------------------------------------
28399 Extract indication and send it to UMAC
28400 -------------------------------------------------------------------------*/
28401 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
28402 pEventData->pEventData,
28403 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
28404
28405 /*Fill in the indication parameters*/
28406 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
28407
28408 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
28409 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
28410
28411 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
28412 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
28413
28414 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
28415 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
28416 sizeof(tSirMacAddr));
28417
28418 /*Notify UMAC*/
28419 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28420
28421 return WDI_STATUS_SUCCESS;
28422
28423} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev3db91f12013-10-05 11:03:42 +053028424
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028425/**
28426*@brief WDI_RateUpdateInd will be called when the upper MAC
28427 requests the device to set rates.
Rajeev3db91f12013-10-05 11:03:42 +053028428
Chittajit Mitraa4eb6b42013-10-18 14:20:08 -070028429
28430 @param wdiRateUpdateIndParams:
28431
28432
28433 @see
28434 @return Result of the function call
28435*/
28436WDI_Status
28437WDI_RateUpdateInd
28438(
28439 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
28440)
28441{
28442 WDI_EventInfoType wdiEventData;
28443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28444
28445 /*------------------------------------------------------------------------
28446 Sanity Check
28447 ------------------------------------------------------------------------*/
28448 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28449 {
28450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28451 "WDI API call before module is initialized - Fail request");
28452
28453 return WDI_STATUS_E_NOT_ALLOWED;
28454 }
28455
28456 /*------------------------------------------------------------------------
28457 Fill in Event data and post to the Main FSM
28458 ------------------------------------------------------------------------*/
28459 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
28460 wdiEventData.pEventData = wdiRateUpdateIndParams;
28461 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
28462 wdiEventData.pCBfnc = NULL;
28463 wdiEventData.pUserData = NULL;
28464
28465 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28466
28467}/* WDI_RateUpdateInd */
28468
28469/**
28470 @brief Process Rate Update Indication and post it to HAL
28471
28472 @param pWDICtx: pointer to the WLAN DAL context
28473 pEventData: pointer to the event information structure
28474
28475 @see
28476 @return Result of the function call
28477*/
28478WDI_Status
28479WDI_ProcessRateUpdateInd
28480(
28481 WDI_ControlBlockType* pWDICtx,
28482 WDI_EventInfoType* pEventData
28483)
28484{
28485 wpt_uint8* pSendBuffer = NULL;
28486 wpt_uint16 usDataOffset = 0;
28487 wpt_uint16 usSendSize = 0;
28488 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
28489 tHalRateUpdateInd *pRateUpdateInd;
28490 WDI_Status wdiStatus;
28491
28492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28493
28494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28495 "%s", __func__);
28496
28497 /*-------------------------------------------------------------------------
28498 Sanity check
28499 -------------------------------------------------------------------------*/
28500 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28501 {
28502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28503 "%s: Invalid parameters", __func__);
28504 WDI_ASSERT(0);
28505 return WDI_STATUS_E_FAILURE;
28506 }
28507 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
28508 /*-----------------------------------------------------------------------
28509 Get message buffer
28510 -----------------------------------------------------------------------*/
28511
28512 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28513 WDI_RATE_UPDATE_IND,
28514 sizeof(tHalRateUpdateParams),
28515 &pSendBuffer, &usDataOffset, &usSendSize))||
28516 ( usSendSize < (usDataOffset +
28517 sizeof(tHalRateUpdateParams) )))
28518 {
28519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28520 "Unable to get send buffer in Rate Update Indication %p ",
28521 pEventData);
28522 WDI_ASSERT(0);
28523 return WDI_STATUS_E_FAILURE;
28524 }
28525
28526 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
28527
28528 /* Copy the bssid */
28529 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
28530 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
28531
28532 /* Copy the tx flags */
28533 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
28534 pwdiRateUpdateInd->ucastDataRateTxFlag;
28535 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
28536 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
28537 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
28538 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
28539 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
28540 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
28541
28542 /* Copy the tx rates */
28543 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
28544 pwdiRateUpdateInd->ucastDataRate;
28545 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
28546 pwdiRateUpdateInd->reliableMcastDataRate;
28547 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
28548 pwdiRateUpdateInd->mcastDataRate24GHz;
28549 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
28550 pwdiRateUpdateInd->mcastDataRate5GHz;
28551
28552 /*-------------------------------------------------------------------------
28553 Send Rate Update Indication to HAL
28554 -------------------------------------------------------------------------*/
28555 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
28556 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
28557
28558 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
28559
28560 return (wdiStatus != WDI_STATUS_SUCCESS) ?
28561 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
28562
28563} /* WDI_ProcessRateUpdateInd */
28564
28565#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev3db91f12013-10-05 11:03:42 +053028566/**
28567 @brief Process stop batch indication from WDA
28568
28569 @param pWDICtx: pointer to the WLAN DAL context
28570 pEventData: pointer to the event information structure
28571
28572 @see
28573 @return Result of the function call
28574*/
28575WDI_Status
28576WDI_ProcessStopBatchScanInd
28577(
28578 WDI_ControlBlockType* pWDICtx,
28579 WDI_EventInfoType* pEventData
28580)
28581{
28582 wpt_uint8* pSendBuffer = NULL;
28583 wpt_uint16 usDataOffset = 0;
28584 wpt_uint16 usSendSize = 0;
28585 WDI_Status wdiStatus;
28586 tHalBatchScanStopIndParam *pHalInd = NULL;
28587 WDI_StopBatchScanIndType *pWdiInd = NULL;
28588
28589
28590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28591
28592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28593 "%s", __func__);
28594
28595 /*-------------------------------------------------------------------------
28596 Sanity check
28597 -------------------------------------------------------------------------*/
28598
28599 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28600 {
28601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28602 "%s: Invalid parameters", __func__);
28603 WDI_ASSERT(0);
28604 return WDI_STATUS_E_FAILURE;
28605 }
28606 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
28607 /*-----------------------------------------------------------------------
28608 Get message buffer
28609 -----------------------------------------------------------------------*/
28610
28611 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28612 WDI_STOP_BATCH_SCAN_IND,
28613 sizeof(tHalBatchScanStopIndParam),
28614 &pSendBuffer, &usDataOffset, &usSendSize))||
28615 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
28616 {
28617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28618 "Unable to get send buffer in stop batch scan ind %p ",
28619 pEventData);
28620 WDI_ASSERT(0);
28621 return WDI_STATUS_E_FAILURE;
28622 }
28623
28624 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
28625 pHalInd->param = pWdiInd->param;
28626
28627 pWDICtx->pReqStatusUserData = NULL;
28628 pWDICtx->pfncRspCB = NULL;
28629 /*-------------------------------------------------------------------------
28630 Send Stop batch scan indication to HAL
28631 -------------------------------------------------------------------------*/
28632 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28633 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28634}
28635
28636/**
28637 @brief This API is called to trigger batch scan results from FW
28638
28639 @param pWDICtx: pointer to the WLAN DAL context
28640 pEventData: pointer to the event information structure
28641
28642 @see
28643 @return Result of the function call
28644*/
28645WDI_Status
28646WDI_ProcessTriggerBatchScanResultInd
28647(
28648 WDI_ControlBlockType* pWDICtx,
28649 WDI_EventInfoType* pEventData
28650)
28651{
28652 WDI_Status wdiStatus;
28653 wpt_uint8* pSendBuffer = NULL;
28654 wpt_uint16 usDataOffset = 0;
28655 wpt_uint16 usSendSize = 0;
28656 tHalBatchScanTriggerResultParam *pHalInd = NULL;
28657 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
28658
28659
28660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28661
28662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28663 "%s", __func__);
28664
28665 /*-------------------------------------------------------------------------
28666 Sanity check
28667 -------------------------------------------------------------------------*/
28668
28669 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28670 {
28671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28672 "%s: Invalid parameters", __func__);
28673 WDI_ASSERT(0);
28674 return WDI_STATUS_E_FAILURE;
28675 }
28676 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
28677 /*-----------------------------------------------------------------------
28678 Get message buffer
28679 -----------------------------------------------------------------------*/
28680
28681 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28682 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
28683 sizeof(tHalBatchScanTriggerResultParam),
28684 &pSendBuffer, &usDataOffset, &usSendSize))||
28685 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
28686 {
28687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28688 "Unable to get send buffer in stop batch scan ind %p ",
28689 pEventData);
28690 WDI_ASSERT(0);
28691 return WDI_STATUS_E_FAILURE;
28692 }
28693
28694 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
28695 pHalInd->param = pWdiInd->param;
28696
28697 pWDICtx->pReqStatusUserData = NULL;
28698 pWDICtx->pfncRspCB = NULL;
28699 /*-------------------------------------------------------------------------
28700 Send trigger batch scan result indication to HAL
28701 -------------------------------------------------------------------------*/
28702 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28703 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
28704}
28705
28706
28707/**
28708 @brief Process set batch scan response from FW
28709
28710 @param pWDICtx: pointer to the WLAN DAL context
28711 pEventData: pointer to the event information structure
28712
28713 @see
28714 @return Result of the function call
28715*/
28716WDI_Status
28717WDI_ProcessSetBatchScanRsp
28718(
28719 WDI_ControlBlockType* pWDICtx,
28720 WDI_EventInfoType* pEventData
28721)
28722{
28723 WDI_SetBatchScanCb wdiSetBatchScanCb;
28724 WDI_SetBatchScanRspType *pSetBatchScanRsp;
28725
28726 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
28727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28728
28729 /*sanity check*/
28730 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28731 ( NULL == pEventData->pEventData))
28732 {
28733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28734 "%s: Invalid parameters", __func__);
28735 WDI_ASSERT(0);
28736 return WDI_STATUS_E_FAILURE;
28737 }
28738
28739 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
28740 if ( NULL == wdiSetBatchScanCb)
28741 {
28742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28743 "%s: call back function is NULL", __func__);
28744 WDI_ASSERT(0);
28745 return WDI_STATUS_E_FAILURE;
28746 }
28747
28748 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
28749
28750 if (NULL == pSetBatchScanRsp)
28751 {
28752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson4a5f0872013-11-03 19:27:59 -080028753 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev3db91f12013-10-05 11:03:42 +053028754 pWDICtx, pEventData, pEventData->pEventData);
28755 WDI_ASSERT(0);
28756 return WDI_STATUS_E_FAILURE;
28757 }
28758
28759 /*extract response and send it to UMAC*/
28760 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
28761
28762 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
28763
28764 /*Notify UMAC*/
28765 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
28766
28767 wpalMemoryFree(pSetBatchScanRsp);
28768
28769 return WDI_STATUS_SUCCESS;
28770}/*WDI_ProcessSetBatchScanRsp*/
28771
28772/**
28773 @brief Process batch scan result indication from FW
28774
28775 @param pWDICtx: pointer to the WLAN DAL context
28776 pEventData: pointer to the event information structure
28777
28778 @see
28779 @return Result of the function call
28780*/
28781WDI_Status
28782WDI_ProcessBatchScanResultInd
28783(
28784 WDI_ControlBlockType* pWDICtx,
28785 WDI_EventInfoType* pEventData
28786)
28787{
28788 void *pBatchScanResultInd;
28789 WDI_LowLevelIndType wdiInd;
28790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28791
28792 /*sanity check*/
28793 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28794 ( NULL == pEventData->pEventData))
28795 {
28796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28797 "%s: Invalid parameters", __func__);
28798 WDI_ASSERT(0);
28799 return WDI_STATUS_E_FAILURE;
28800 }
28801
28802 /*extract response and send it to UMAC*/
28803 pBatchScanResultInd = (void *)pEventData->pEventData;
28804
28805 /*Fill in the indication parameters*/
28806 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
28807
28808 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
28809
28810 /*Notify UMAC*/
28811 if (pWDICtx->wdiLowLevelIndCB)
28812 {
28813 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28814 }
28815 else
28816 {
28817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28818 "%s: WDILowLevelIndCb is null", __func__);
28819 WDI_ASSERT(0);
28820 return WDI_STATUS_E_FAILURE;
28821 }
28822
28823 return WDI_STATUS_SUCCESS;
28824} /*End of WDI_ProcessBatchScanResultInd*/
28825
28826/**
28827 @brief WDI_ProcessSetBatchScanReq -
28828 Set batch scan request to FW
28829
28830 @param pWDICtx : wdi context
28831 pEventData : indication data
28832
28833 @see
28834 @return none
28835*/
28836WDI_Status WDI_ProcessSetBatchScanReq
28837(
28838 WDI_ControlBlockType* pWDICtx,
28839 WDI_EventInfoType* pEventData
28840)
28841{
28842 WDI_SetBatchScanReqType *pWdiReq;
28843 WDI_Status wdiStatus;
28844 wpt_uint8* pSendBuffer = NULL;
28845 wpt_uint16 usDataOffset = 0;
28846 wpt_uint16 usSendSize = 0;
28847 tHalBatchScanSetParams *pHalReq;
28848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28849
28850 /*sanity check*/
28851 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
28852 {
28853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28854 "%s: Invalid parameters in set batch scan request", __func__);
28855 WDI_ASSERT(0);
28856 return WDI_STATUS_E_FAILURE;
28857 }
28858
28859
28860 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
28861
28862
28863 /*get message buffer*/
28864 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
28865 WDI_SET_BATCH_SCAN_REQ,
28866 sizeof(tHalBatchScanSetParams),
28867 &pSendBuffer, &usDataOffset, &usSendSize))||
28868 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
28869 {
28870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28871 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
28872 WDI_ASSERT(0);
28873 return WDI_STATUS_E_FAILURE;
28874 }
28875
28876 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
28877
28878 pHalReq->rtt = pWdiReq->rtt;
28879 pHalReq->rfBand = pWdiReq->rfBand;
28880 pHalReq->bestNetworks = pWdiReq->bestNetwork;
28881 pHalReq->scanInterval = pWdiReq->scanFrequency;
28882 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
28883
28884 /*send set batch scan request to fw*/
28885 pWDICtx->pfncRspCB = pEventData->pCBfnc;
28886 pWDICtx->pReqStatusUserData = pEventData->pUserData;
28887
28888 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
28889 usSendSize, pWDICtx->pfncRspCB,
28890 pWDICtx->pReqStatusUserData,
28891 WDI_SET_BATCH_SCAN_RESP);
28892
28893 return wdiStatus;
28894}
28895
28896/**
28897 @brief WDI_SetBatchScanReq
28898 This API is called to set batch scan request in FW
28899
28900 @param pBatchScanReqParam : pointer to set batch scan re param
28901 usrData : Client context
28902 setBatchScanRspCb : set batch scan resp callback
28903 @see
28904 @return SUCCESS or FAIL
28905*/
28906WDI_Status WDI_SetBatchScanReq
28907(
28908 void *pBatchScanReqParam,
28909 void *usrData,
28910 WDI_SetBatchScanCb setBatchScanRspCb
28911)
28912{
28913 WDI_EventInfoType wdiEventData;
28914
28915 /*sanity check*/
28916 if (eWLAN_PAL_FALSE == gWDIInitialized)
28917 {
28918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28919 "WDI API call before module is initialized - Fail request");
28920
28921 return WDI_STATUS_E_NOT_ALLOWED;
28922 }
28923
28924 /* fill in event data and post to the main FSM */
28925 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
28926 wdiEventData.pEventData = pBatchScanReqParam;
28927 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
28928 wdiEventData.pCBfnc = setBatchScanRspCb;
28929 wdiEventData.pUserData = usrData;
28930
28931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28932}
28933
28934/**
28935 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
28936
28937 @param None
28938
28939 @see
28940
28941 @return Status of the request
28942*/
28943WDI_Status
28944WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
28945{
28946 WDI_EventInfoType wdiEventData;
28947
28948 /*-------------------------------------------------------------------------
28949 Sanity Check
28950 ------------------------------------------------------------------------*/
28951 if (eWLAN_PAL_FALSE == gWDIInitialized)
28952 {
28953 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28954 "WDI API call before module is initialized - Fail request!");
28955
28956 return WDI_STATUS_E_NOT_ALLOWED;
28957 }
28958
28959 /*-------------------------------------------------------------------------
28960 Fill in Event data and post to the Main FSM
28961 ------------------------------------------------------------------------*/
28962 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
28963 wdiEventData.pEventData = pWdiReq;
28964 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
28965 wdiEventData.pCBfnc = NULL;
28966 wdiEventData.pUserData = NULL;
28967
28968 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28969}
28970
28971/**
28972 @brief WDI_TriggerBatchScanResultInd
28973 This API is called to pull batch scan result from FW
28974
28975 @param pWdiReq : pointer to get batch scan ind param
28976 @see
28977 @return SUCCESS or FAIL
28978*/
28979WDI_Status WDI_TriggerBatchScanResultInd
28980(
28981 WDI_TriggerBatchScanResultIndType *pWdiReq
28982)
28983{
28984 WDI_EventInfoType wdiEventData;
28985 /*-------------------------------------------------------------------------
28986 Sanity Check
28987 ------------------------------------------------------------------------*/
28988 if (eWLAN_PAL_FALSE == gWDIInitialized)
28989 {
28990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28991 "WDI API call before module is initialized - Fail request!");
28992
28993 return WDI_STATUS_E_NOT_ALLOWED;
28994 }
28995
28996 /*-------------------------------------------------------------------------
28997 Fill in Event data and post to the Main FSM
28998 ------------------------------------------------------------------------*/
28999 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
29000 wdiEventData.pEventData = pWdiReq;
29001 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
29002 wdiEventData.pCBfnc = NULL;
29003 wdiEventData.pUserData = NULL;
29004
29005 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29006}
29007
29008#endif /*FEATURE_WLAN_BATCH_SCAN*/