blob: 738d9f065b730e2cef76d8afa60fb42c7ab71bcc [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"
Jeff Johnson295189b2012-06-20 16:38:30 -0700106
107/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700108 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700109 ===========================================================================*/
110#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
111
Jeff Johnsone7245742012-09-05 17:12:55 -0700112#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
113#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
114
Yathishd8713192012-12-10 14:21:35 -0800115#define FEATURE_NOT_SUPPORTED 128
Jeff Johnson295189b2012-06-20 16:38:30 -0700116
117#ifdef FEATURE_WLAN_SCAN_PNO
118#define WDI_PNO_VERSION_MASK 0x8000
119#endif
120
121/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* array of features supported. Need to add a new feature
126 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
127 */
128static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800129 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800130#ifdef WLAN_SOFTAP_VSTA_FEATURE
131 ,SAP32STA
132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800135#ifdef FEATURE_WLAN_TDLS
Yathishd8713192012-12-10 14:21:35 -0800136 ,TDLS
137#else
138 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800139#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800140 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathishd8713192012-12-10 14:21:35 -0800141#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
142 ,WLANACTIVE_OFFLOAD
143#else
144 ,FEATURE_NOT_SUPPORTED
145#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800146 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700147
148/*--------------------------------------------------------------------------
149 WLAN DAL State Machine
150 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700151WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700152{
153 /*WDI_INIT_ST*/
154 {{
155 WDI_MainStart, /*WDI_START_EVENT*/
156 NULL, /*WDI_STOP_EVENT*/
157 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
158 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
159 WDI_MainClose, /*WDI_CLOSE_EVENT*/
160 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
161 }},
162
163 /*WDI_STARTED_ST*/
164 {{
165 WDI_MainStartStarted, /*WDI_START_EVENT*/
166 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
167 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
168 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
169 NULL, /*WDI_CLOSE_EVENT*/
170 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
171 }},
172
173 /*WDI_STOPPED_ST*/
174 {{
175 WDI_MainStart, /*WDI_START_EVENT*/
176 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
177 NULL, /*WDI_REQUEST_EVENT*/
178 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
179 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700180 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700181 }},
182
183 /*WDI_BUSY_ST*/
184 {{
185 WDI_MainStartBusy, /*WDI_START_EVENT*/
186 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
187 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
188 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
189 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
190 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
191 }}
192};
193
Jeff Johnsone7245742012-09-05 17:12:55 -0700194/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700195 DAL Request Processing Array - the functions in this table will only be
196 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700197 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700198 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700199WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700200{
201 /*INIT*/
202 WDI_ProcessStartReq, /* WDI_START_REQ */
203 WDI_ProcessStopReq, /* WDI_STOP_REQ */
204 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
205
206 /*SCAN*/
207 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
208 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
209 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
210 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
211
212 /*ASSOCIATION*/
213 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
214 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
215 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
216 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
217 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
218
219 /* Security */
220 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
221 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
222 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
223 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
224
225 /* QoS and BA APIs */
226 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
227 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
228 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
229 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
230 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
231
232 /* Miscellaneous Control APIs */
233 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
234 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
235 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
236 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
237 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
238
239 /*BA APIs*/
240 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
241 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
242
243 /*Beacon processing APIs*/
244 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
245 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
246
247 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
248 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
249 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
250 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700251 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700252 /* PowerSave APIs */
253 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
254 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
255 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
256 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
257 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
258 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
259 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
260 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
261 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
262 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
263 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
264 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
265 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
266 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
267 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
268 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
269 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
270 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
271 /*NV Download APIs*/
272 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
273 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
274 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
275#ifdef WLAN_FEATURE_VOWIFI_11R
276 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
277#else
278 NULL,
279#endif /* WLAN_FEATURE_VOWIFI_11R */
280 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
281 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700282 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700283
284#ifdef FEATURE_OEM_DATA_SUPPORT
285 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
286#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700287 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700288#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700289 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700290
291 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700292
293#ifdef FEATURE_WLAN_SCAN_PNO
294 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
295 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
296 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
297#else
298 NULL,
299 NULL,
300 NULL,
301#endif /* FEATURE_WLAN_SCAN_PNO */
302
303 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700304
Jeff Johnson295189b2012-06-20 16:38:30 -0700305#ifdef WLAN_FEATURE_PACKET_FILTERING
306 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700307 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700308 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700309 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700310 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700311 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700313 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700314#else
315 NULL,
316 NULL,
317 NULL,
318 NULL,
319#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700320 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700321 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
322 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
323
324 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
325#ifdef FEATURE_WLAN_CCX
326 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
327#else
328 NULL,
329#endif
330
331#ifdef WLAN_FEATURE_GTK_OFFLOAD
332 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
333 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
334#else
335 NULL,
336 NULL,
337#endif // WLAN_FEATURE_GTK_OFFLOAD
338
339 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
340 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700341#ifdef WLAN_FEATURE_11AC
342 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800343#else
344 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700345#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800346#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
347 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
348#else
schangd82195a2013-03-13 18:41:24 -0700349 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800350#endif
schangd82195a2013-03-13 18:41:24 -0700351 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
352 /*-------------------------------------------------------------------------
353 Indications
354 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700355 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800356 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700357};
358
359
Jeff Johnsone7245742012-09-05 17:12:55 -0700360/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700361 DAL Request Processing Array - the functions in this table will only be
362 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700363 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700364 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700365WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700366{
367 /*INIT*/
368 WDI_ProcessStartRsp, /* WDI_START_RESP */
369 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
370 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
371
372 /*SCAN*/
373 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
374 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
375 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
376 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
377
378 /* ASSOCIATION*/
379 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
380 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
381 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
382 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
383 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
384
385 /* Security */
386 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
387 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
388 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
389 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
390
391 /* QoS and BA APIs */
392 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
393 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
394 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
395 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
396 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
397
398 /* Miscellaneous Control APIs */
399 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
400 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
401 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
402 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
403 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
404
405 /* BA APIs*/
406 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
407 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700408
Jeff Johnson295189b2012-06-20 16:38:30 -0700409 /* IBSS APIs*/
410 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
411 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
412
413 /*Soft AP APIs*/
414 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
415 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
416 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
417 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
418
419 /* PowerSave APIs */
420 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
421 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
422 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
423 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
424 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
425 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
426 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
427 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
428 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
429 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
430 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
431 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
432 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
433 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
434 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
435 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
436 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
437 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700438
Jeff Johnson295189b2012-06-20 16:38:30 -0700439
440 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
441
442 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
443 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
444#ifdef WLAN_FEATURE_VOWIFI_11R
445 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
446#else
447 NULL,
448#endif /* WLAN_FEATURE_VOWIFI_11R */
449 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
450 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700451#ifdef FEATURE_OEM_DATA_SUPPORT
452 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
453#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700454 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700455#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700456 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
457
Jeff Johnson295189b2012-06-20 16:38:30 -0700458 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700459
Jeff Johnson295189b2012-06-20 16:38:30 -0700460 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700461
Jeff Johnsone7245742012-09-05 17:12:55 -0700462 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
463
Jeff Johnson295189b2012-06-20 16:38:30 -0700464#ifdef FEATURE_WLAN_SCAN_PNO
465 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
466 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
467 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
468#else
469 NULL,
470 NULL,
471 NULL,
472#endif // FEATURE_WLAN_SCAN_PNO
473
474 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
475
476 /*---------------------------------------------------------------------
477 Indications
478 ---------------------------------------------------------------------*/
479#ifdef WLAN_FEATURE_PACKET_FILTERING
480 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700481 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700482 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700483 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700484 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700485 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700486 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700487 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700488#else
489 NULL,
490 NULL,
491 NULL,
492 NULL,
493#endif // WLAN_FEATURE_PACKET_FILTERING
494
495 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
496 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
497
498 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
499#ifdef FEATURE_WLAN_CCX
500 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
501#else
502 NULL,
503#endif
504
505#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700506 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
507 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700508#else
509 NULL,
510 NULL,
511#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700512 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
513 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700514#ifdef WLAN_FEATURE_11AC
515 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700516#else
517 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700518#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800519#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
520 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
521#else
522 NULL,
523#endif
schangd82195a2013-03-13 18:41:24 -0700524 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700525
526 /*---------------------------------------------------------------------
527 Indications
528 ---------------------------------------------------------------------*/
529 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
530 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
531 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
532 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
533 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
534 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
535
536 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
537
538 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
539
Jeff Johnson295189b2012-06-20 16:38:30 -0700540 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700541
542#ifdef FEATURE_WLAN_SCAN_PNO
543 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
544#else
545 NULL,
546#endif // FEATURE_WLAN_SCAN_PNO
547
548#ifdef WLAN_WAKEUP_EVENTS
549 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
550#else // WLAN_WAKEUP_EVENTS
551 NULL,
552#endif // WLAN_WAKEUP_EVENTS
553
554 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800555
Viral Modi9dc288a2012-12-10 13:09:21 -0800556 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700557};
558
559
Jeff Johnsone7245742012-09-05 17:12:55 -0700560/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700561 WLAN DAL Global Control Block
562 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700563WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700564static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
565
Jeff Johnsone7245742012-09-05 17:12:55 -0700566const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700567
568/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700569WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700570void* WDI_GET_PAL_CTX( void )
571{
Jeff Johnsone7245742012-09-05 17:12:55 -0700572 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700573}/*WDI_GET_PAL_CTX*/
574
Jeff Johnsone7245742012-09-05 17:12:55 -0700575/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700576 Helper inline converters
577 ============================================================================*/
578/*Convert WDI driver type into HAL driver type*/
579WPT_STATIC WPT_INLINE WDI_Status
580WDI_HAL_2_WDI_STATUS
581(
582 eHalStatus halStatus
583);
584
585/*Convert WDI request type into HAL request type*/
586WPT_STATIC WPT_INLINE tHalHostMsgType
587WDI_2_HAL_REQ_TYPE
588(
589 WDI_RequestEnumType wdiReqType
590);
591
592/*Convert WDI response type into HAL response type*/
593WPT_STATIC WPT_INLINE WDI_ResponseEnumType
594HAL_2_WDI_RSP_TYPE
595(
596 tHalHostMsgType halMsg
597);
598
599/*Convert WDI driver type into HAL driver type*/
600WPT_STATIC WPT_INLINE tDriverType
601WDI_2_HAL_DRV_TYPE
602(
603 WDI_DriverType wdiDriverType
604);
605
606/*Convert WDI stop reason into HAL stop reason*/
607WPT_STATIC WPT_INLINE tHalStopType
608WDI_2_HAL_STOP_REASON
609(
610 WDI_StopType wdiStopType
611);
612
613/*Convert WDI scan mode type into HAL scan mode type*/
614WPT_STATIC WPT_INLINE eHalSysMode
615WDI_2_HAL_SCAN_MODE
616(
617 WDI_ScanMode wdiScanMode
618);
619
620/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700621WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700622WDI_2_HAL_SEC_CH_OFFSET
623(
624 WDI_HTSecondaryChannelOffset wdiSecChOffset
625);
626
627/*Convert WDI BSS type into HAL BSS type*/
628WPT_STATIC WPT_INLINE tSirBssType
629WDI_2_HAL_BSS_TYPE
630(
631 WDI_BssType wdiBSSType
632);
633
634/*Convert WDI NW type into HAL NW type*/
635WPT_STATIC WPT_INLINE tSirNwType
636WDI_2_HAL_NW_TYPE
637(
638 WDI_NwType wdiNWType
639);
640
641/*Convert WDI chanel bonding type into HAL cb type*/
642WPT_STATIC WPT_INLINE ePhyChanBondState
643WDI_2_HAL_CB_STATE
644(
645 WDI_PhyChanBondState wdiCbState
646);
647
648/*Convert WDI chanel bonding type into HAL cb type*/
649WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
650WDI_2_HAL_HT_OPER_MODE
651(
652 WDI_HTOperatingMode wdiHTOperMode
653);
654
655/*Convert WDI mimo PS type into HAL mimo PS type*/
656WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
657WDI_2_HAL_MIMO_PS
658(
659 WDI_HTMIMOPowerSaveState wdiHTOperMode
660);
661
662/*Convert WDI ENC type into HAL ENC type*/
663WPT_STATIC WPT_INLINE tAniEdType
664WDI_2_HAL_ENC_TYPE
665(
666 WDI_EncryptType wdiEncType
667);
668
669/*Convert WDI WEP type into HAL WEP type*/
670WPT_STATIC WPT_INLINE tAniWepType
671WDI_2_HAL_WEP_TYPE
672(
673 WDI_WepType wdiWEPType
674);
675
676/*Convert WDI Link State into HAL Link State*/
677WPT_STATIC WPT_INLINE tSirLinkState
678WDI_2_HAL_LINK_STATE
679(
680 WDI_LinkStateType wdiLinkState
681);
682
Jeff Johnsone7245742012-09-05 17:12:55 -0700683/*Translate a STA Context from WDI into HAL*/
684WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700685void
686WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700687(
Jeff Johnson295189b2012-06-20 16:38:30 -0700688 tConfigStaParams* phalConfigSta,
689 WDI_ConfigStaReqInfoType* pwdiConfigSta
690);
Jeff Johnsone7245742012-09-05 17:12:55 -0700691
692/*Translate a Rate set info from WDI into HAL*/
693WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700694WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700695(
Jeff Johnson295189b2012-06-20 16:38:30 -0700696 tSirMacRateSet* pHalRateSet,
697 WDI_RateSet* pwdiRateSet
698);
699
700/*Translate an EDCA Parameter Record from WDI into HAL*/
701WPT_STATIC WPT_INLINE void
702WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700703(
Jeff Johnson295189b2012-06-20 16:38:30 -0700704 tSirMacEdcaParamRecord* phalEdcaParam,
705 WDI_EdcaParamRecord* pWDIEdcaParam
706);
707
708/*Copy a management frame header from WDI fmt into HAL fmt*/
709WPT_STATIC WPT_INLINE void
710WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
711(
712 tSirMacMgmtHdr* pmacMgmtHdr,
713 WDI_MacMgmtHdr* pwdiMacMgmtHdr
714);
715
716/*Copy config bss parameters from WDI fmt into HAL fmt*/
717WPT_STATIC WPT_INLINE void
718WDI_CopyWDIConfigBSSToHALConfigBSS
719(
720 tConfigBssParams* phalConfigBSS,
721 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
722);
723
Jeff Johnsone7245742012-09-05 17:12:55 -0700724/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700725 pointed to by user data */
726WPT_STATIC WPT_INLINE void
727WDI_ExtractRequestCBFromEvent
728(
729 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700730 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700731 void** ppUserData
732);
733
734wpt_uint8
735WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700736(
Jeff Johnson295189b2012-06-20 16:38:30 -0700737 WDI_ControlBlockType* pWDICtx,
738 WDI_BSSSessionType** ppSession
739);
740
741void
742WDI_AddBcastSTAtoSTATable
743(
744 WDI_ControlBlockType* pWDICtx,
745 WDI_AddStaParams * staParams,
746 wpt_uint16 usBcastStaIdx
747);
748
749WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700750(
Jeff Johnson295189b2012-06-20 16:38:30 -0700751 WDI_ControlBlockType* pWDICtx,
752 WDI_EventInfoType* pEventData
753);
754
755void
756WDI_SetPowerStateCb
757(
758 wpt_status status,
759 unsigned int dxePhyAddr,
760 void *pContext
761);
762
763#define CASE_RETURN_STRING( str ) \
764 case ( ( str ) ): return( #str ); break \
765
766/**
767 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700768
769 @param wdiReqMsgId: WDI Message request Id
770
771 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700772 @return Result of the function call
773*/
774static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
775{
776 switch (wdiReqMsgId)
777 {
778 CASE_RETURN_STRING( WDI_START_REQ );
779 CASE_RETURN_STRING( WDI_STOP_REQ );
780 CASE_RETURN_STRING( WDI_CLOSE_REQ );
781 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
782 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
783 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
784 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
785 CASE_RETURN_STRING( WDI_JOIN_REQ );
786 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
787 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
788 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
789 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
790 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
791 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
792 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
793 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
794 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
795 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
796 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
797 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
798 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
799 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
800 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
801 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
802 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
803 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
804 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
805 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
806 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
807 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
808 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
809 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
810 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
811 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
812 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
813 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
814 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
815 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
816 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
817 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
818 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
819 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
820 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
821 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
822 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
823 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
824 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
825 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
826 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
827 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
828 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
829 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
830 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
831 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
832 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
833 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
834 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
835 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
836 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
837 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700838 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700839 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
840 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
841 #ifdef FEATURE_WLAN_SCAN_PNO
842 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
843 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
844 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
845 #endif
846 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
847 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
848 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
849 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
850 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
851 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
852 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
853 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
854 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800855 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800856 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700857 default:
858 return "Unknown WDI MessageId";
859 }
860}
861
862
863
864/**
865 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700866
867 @param wdiRespMsgId: WDI Message response Id
868
869 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700870 @return Result of the function call
871*/
872static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
873{
874 switch (wdiRespMsgId)
875 {
876 CASE_RETURN_STRING( WDI_START_RESP );
877 CASE_RETURN_STRING( WDI_STOP_RESP );
878 CASE_RETURN_STRING( WDI_CLOSE_RESP );
879 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
880 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
881 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
882 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
883 CASE_RETURN_STRING( WDI_JOIN_RESP );
884 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
885 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
886 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
887 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
888 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
889 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
890 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
891 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
892 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
893 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
894 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
895 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
896 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
897 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
898 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
899 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
900 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
901 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
902 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
903 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
904 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
905 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
906 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
907 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
908 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
909 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
910 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
911 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
912 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
913 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
914 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
915 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
916 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
917 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
918 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
919 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
920 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
921 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
922 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
923 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
924 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
925 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
926 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
927 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
928 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
929 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
930 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
931 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
932 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
933 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
934 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
935 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700936 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700937 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
938 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
939 #ifdef FEATURE_WLAN_SCAN_PNO
940 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
941 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
942 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
943 #endif
944 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
945 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
946 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
947 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
948 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
949 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
950 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
951 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800952 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700953 default:
954 return "Unknown WDI MessageId";
955 }
956}
957
958/**
959 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700960
961 @param halStatusId: HAL status Id
962
963 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700964 @return Result of the function call
965*/
966static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
967{
968 switch (halStatusId)
969 {
970 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
971 CASE_RETURN_STRING( PAL_STATUS_INVAL );
972 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
973 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
974 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
975 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
976 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
977 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
978 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
979 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
980 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
981 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
982 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
983 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
984 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
985 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
986 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
987 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
988 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
989 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
990 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
991 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
992 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
993 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
994 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
995 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
996 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
997 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
998 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
999 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1000 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1001 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1002 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1003 default:
1004 return "Unknown HAL status";
1005 }
1006}
1007
Jeff Johnsone7245742012-09-05 17:12:55 -07001008/*========================================================================
1009
Jeff Johnson295189b2012-06-20 16:38:30 -07001010 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001011
Jeff Johnson295189b2012-06-20 16:38:30 -07001012==========================================================================*/
1013
1014/**
1015 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001016
Jeff Johnson295189b2012-06-20 16:38:30 -07001017 DAL will allocate all the resources it needs. It will open PAL, it will also
1018 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001019 DXE/SMD or any other drivers that they need.
1020
Jeff Johnson295189b2012-06-20 16:38:30 -07001021 @param pOSContext: pointer to the OS context provided by the UMAC
1022 will be passed on to PAL on Open
1023 ppWDIGlobalCtx: output pointer of Global Context
1024 pWdiDevCapability: output pointer of device capability
1025
1026 @return Result of the function call
1027*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001028WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001029WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001030(
Jeff Johnson295189b2012-06-20 16:38:30 -07001031 void* pOSContext,
1032 void** ppWDIGlobalCtx,
1033 WDI_DeviceCapabilityType* pWdiDevCapability,
1034 unsigned int driverType
1035)
1036{
1037 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001038 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001039 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001040 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1042
1043 /*---------------------------------------------------------------------
1044 Sanity check
1045 ---------------------------------------------------------------------*/
1046 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1047 {
1048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1049 "Invalid input parameters in WDI_Init");
1050
Jeff Johnsone7245742012-09-05 17:12:55 -07001051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001052 }
1053
1054 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001055 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001056 ---------------------------------------------------------------------*/
1057 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1058 {
1059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1060 "WDI module already initialized - return");
1061
Jeff Johnsone7245742012-09-05 17:12:55 -07001062 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001063 }
1064
1065 /*Module is now initialized - this flag is to ensure the fact that multiple
1066 init will not happen on WDI
1067 !! - potential race does exist because read and set are not atomic,
1068 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001069 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001070
1071 /*Setup the control block */
1072 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001073 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001074
1075 /*Setup the STA Table*/
1076 wdiStatus = WDI_STATableInit(&gWDICb);
1077 if ( WDI_STATUS_SUCCESS != wdiStatus )
1078 {
1079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1080 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001081 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001082 goto fail_STATableInit;
1083 }
1084
1085 /*------------------------------------------------------------------------
1086 Open the PAL
1087 ------------------------------------------------------------------------*/
1088 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1089 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1090 {
1091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1092 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001093 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001094 goto fail_wpalOpen;
1095 }
1096
1097 /*Initialize main synchro mutex - it will be used to ensure integrity of
1098 the main WDI Control Block*/
1099 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1100 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1101 {
1102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1103 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001104 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001105 goto fail_mutex;
1106 }
1107
1108 /*Initialize the response timer - it will be used to time all messages
1109 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001110 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1111 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001112 &gWDICb);
1113 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1114 {
1115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1116 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001117 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001118 goto fail_timer;
1119 }
1120
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001121 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1122 WDI_SsrTimerCB,
1123 &gWDICb);
1124 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1125 {
1126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1127 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001128 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001129 goto fail_timer2;
1130 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001131 /* Initialize the WDI Pending Request Queue*/
1132 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1133 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1134 {
1135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1136 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001137 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001138 goto fail_pend_queue;
1139 }
1140
1141 /*Init WDI Pending Assoc Id Queue */
1142 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1143 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1144 {
1145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1146 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001147 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001148 goto fail_assoc_queue;
1149 }
1150
1151 /*Initialize the BSS sessions pending Queue */
1152 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1153 {
1154 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1155 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1156 {
1157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1158 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001159 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001160 goto fail_bss_queue;
1161 }
1162 }
1163
1164 /*Indicate the control block is sufficiently initialized for callbacks*/
1165 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1166
1167 /*------------------------------------------------------------------------
1168 Initialize the Data Path Utility Module
1169 ------------------------------------------------------------------------*/
1170 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1171 if ( WDI_STATUS_SUCCESS != wdiStatus )
1172 {
1173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1174 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001175 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001176 goto fail_dp_util_init;
1177 }
1178
1179 /* Init Set power state event */
1180 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001181 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001182 {
1183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1184 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001185 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001186 goto fail_power_event;
1187 }
1188
1189 /* Init WCTS action event */
1190 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001191 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001192 {
1193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1194 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001195 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001196 goto fail_wcts_event;
1197 }
1198
1199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001200 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001201 ------------------------------------------------------------------------*/
1202 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1203 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001204 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001205 wctsCBs.wctsRxMsgCBData = &gWDICb;
1206
Jeff Johnsone7245742012-09-05 17:12:55 -07001207 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001208 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001209 WDI_CT_CHANNEL_SIZE,
1210 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001211
1212 if ( NULL == gWDICb.wctsHandle )
1213 {
1214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001215 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001216 goto fail_wcts_open;
1217 }
1218
1219 gWDICb.driverMode = (tDriverType)driverType;
1220 /* FTM mode not need to open Transport Driver */
1221 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001222 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001223 /*------------------------------------------------------------------------
1224 Open the Data Transport
1225 ------------------------------------------------------------------------*/
1226 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1227 {
1228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001229 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001230 goto fail_wdts_open;
1231 }
1232 }
1233
1234 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001235 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001236
1237 /*Send the context as a ptr to the global WDI Control Block*/
1238 *ppWDIGlobalCtx = &gWDICb;
1239
1240 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001241 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001242 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1243 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1244 return WDI_STATUS_SUCCESS;
1245
1246 /* ERROR handlers
1247 Undo everything that completed successfully */
1248
1249 fail_wdts_open:
1250 {
1251 wpt_status eventStatus;
1252
1253 /* Closing WCTS in this scenario is tricky since it has to close
1254 the SMD channel and then we get notified asynchronously when
1255 the channel has been closed. So we take some of the logic from
1256 the "normal" close procedure in WDI_Close()
1257 */
1258
1259 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001260 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001261 {
1262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001263 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001264 }
1265
1266 WCTS_CloseTransport(gWDICb.wctsHandle);
1267
1268 /* Wait for WCTS to close the control transport. If we were able
1269 to reset the event flag, then we'll wait for the event,
1270 otherwise we'll wait for a maximum amount of time required for
1271 the channel to be closed */
1272 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1273 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001274 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001275 WDI_WCTS_ACTION_TIMEOUT);
1276 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1277 {
1278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001279 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001280 }
1281 }
1282 else
1283 {
1284 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1285 }
1286 }
1287 fail_wcts_open:
1288 wpalEventDelete(&gWDICb.wctsActionEvent);
1289 fail_wcts_event:
1290 wpalEventDelete(&gWDICb.setPowerStateEvent);
1291 fail_power_event:
1292 WDI_DP_UtilsExit(&gWDICb);
1293 fail_dp_util_init:
1294 gWDICb.magic = 0;
1295 fail_bss_queue:
1296 /* entries 0 thru i-1 were successfully initialized */
1297 while (0 < i)
1298 {
1299 i--;
1300 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1301 }
1302 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1303 fail_assoc_queue:
1304 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1305 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001306 wpalTimerDelete(&gWDICb.ssrTimer);
1307 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001308 wpalTimerDelete(&gWDICb.wptResponseTimer);
1309 fail_timer:
1310 wpalMutexDelete(&gWDICb.wptMutex);
1311 fail_mutex:
1312 wpalClose(gWDICb.pPALContext);
1313 fail_wpalOpen:
1314 WDI_STATableClose(&gWDICb);
1315 fail_STATableInit:
1316 gWDIInitialized = eWLAN_PAL_FALSE;
1317
1318 return WDI_STATUS_E_FAILURE;
1319
1320}/*WDI_Init*/;
1321
1322/**
1323 @brief WDI_Start will be called when the upper MAC is ready to
1324 commence operation with the WLAN Device. Upon the call
1325 of this API the WLAN DAL will pack and send a HAL Start
1326 message to the lower RIVA sub-system if the SMD channel
1327 has been fully opened and the RIVA subsystem is up.
1328
1329 If the RIVA sub-system is not yet up and running DAL
1330 will queue the request for Open and will wait for the
1331 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001332 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001333
1334 WDI_Init must have been called.
1335
Jeff Johnsone7245742012-09-05 17:12:55 -07001336 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001337 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001338
Jeff Johnson295189b2012-06-20 16:38:30 -07001339 wdiStartRspCb: callback for passing back the response of
1340 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001341
Jeff Johnson295189b2012-06-20 16:38:30 -07001342 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001343 callback
1344
Jeff Johnson295189b2012-06-20 16:38:30 -07001345 @see WDI_Start
1346 @return Result of the function call
1347*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001348WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001349WDI_Start
1350(
1351 WDI_StartReqParamsType* pwdiStartParams,
1352 WDI_StartRspCb wdiStartRspCb,
1353 void* pUserData
1354)
1355{
1356 WDI_EventInfoType wdiEventData;
1357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1358
1359 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001360 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001361 ------------------------------------------------------------------------*/
1362 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1363 {
1364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1365 "WDI API call before module is initialized - Fail request");
1366
Jeff Johnsone7245742012-09-05 17:12:55 -07001367 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001368 }
1369
1370 /*------------------------------------------------------------------------
1371 Fill in Event data and post to the Main FSM
1372 ------------------------------------------------------------------------*/
1373 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001374 wdiEventData.pEventData = pwdiStartParams;
1375 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1376 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001377 wdiEventData.pUserData = pUserData;
1378
1379 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1380
1381}/*WDI_Start*/
1382
1383/**
1384 @brief WDI_Stop will be called when the upper MAC is ready to
1385 stop any operation with the WLAN Device. Upon the call
1386 of this API the WLAN DAL will pack and send a HAL Stop
1387 message to the lower RIVA sub-system if the DAL Core is
1388 in started state.
1389
1390 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001391
1392 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001393
1394 WDI_Start must have been called.
1395
Jeff Johnsone7245742012-09-05 17:12:55 -07001396 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001397 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001398
Jeff Johnson295189b2012-06-20 16:38:30 -07001399 wdiStopRspCb: callback for passing back the response of
1400 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001401
Jeff Johnson295189b2012-06-20 16:38:30 -07001402 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001403 callback
1404
Jeff Johnson295189b2012-06-20 16:38:30 -07001405 @see WDI_Start
1406 @return Result of the function call
1407*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001409WDI_Stop
1410(
1411 WDI_StopReqParamsType* pwdiStopParams,
1412 WDI_StopRspCb wdiStopRspCb,
1413 void* pUserData
1414)
1415{
1416 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001417 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1419
1420 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001421 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001422 ------------------------------------------------------------------------*/
1423 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1424 {
1425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1426 "WDI API call before module is initialized - Fail request");
1427
Jeff Johnsone7245742012-09-05 17:12:55 -07001428 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001429 }
1430
Jeff Johnson43971f52012-07-17 12:26:56 -07001431 /*Access to the global state must be locked before cleaning */
1432 wpalMutexAcquire(&pWDICtx->wptMutex);
1433
1434 /*Clear all pending request*/
1435 WDI_ClearPendingRequests(pWDICtx);
1436
1437 /*We have completed cleaning unlock now*/
1438 wpalMutexRelease(&pWDICtx->wptMutex);
1439
Jeff Johnson295189b2012-06-20 16:38:30 -07001440 /* Free the global variables */
1441 wpalMemoryFree(gpHostWlanFeatCaps);
1442 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001443 gpHostWlanFeatCaps = NULL;
1444 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001445
1446 /*------------------------------------------------------------------------
1447 Fill in Event data and post to the Main FSM
1448 ------------------------------------------------------------------------*/
1449 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001450 wdiEventData.pEventData = pwdiStopParams;
1451 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1452 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001453 wdiEventData.pUserData = pUserData;
1454
1455 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1456
1457}/*WDI_Stop*/
1458
1459
1460
1461/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001462 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001463 needs to interact with DAL. DAL will free its control
1464 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001465
1466 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001467
1468 WDI_Stop must have been called.
1469
1470 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001471
Jeff Johnson295189b2012-06-20 16:38:30 -07001472 @see WDI_Stop
1473 @return Result of the function call
1474*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001475WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001476WDI_Close
1477(
1478 void
1479)
1480{
1481 wpt_uint8 i;
1482 WDI_EventInfoType wdiEventData;
1483 wpt_status wptStatus;
1484 wpt_status eventStatus;
1485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1486
1487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001489 ------------------------------------------------------------------------*/
1490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1491 {
1492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1493 "WDI API call before module is initialized - Fail request");
1494
Jeff Johnsone7245742012-09-05 17:12:55 -07001495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001496 }
1497
1498 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1499 (the control transport will be closed by the FSM and we'll want
1500 to wait until that completes)*/
1501 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001502 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001503 {
1504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001505 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001506 /* fall through and try to finish closing via the FSM */
1507 }
1508
1509 /*------------------------------------------------------------------------
1510 Fill in Event data and post to the Main FSM
1511 ------------------------------------------------------------------------*/
1512 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001513 wdiEventData.pEventData = NULL;
1514 wdiEventData.uEventDataSize = 0;
1515 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001516 wdiEventData.pUserData = NULL;
1517
1518 gWDIInitialized = eWLAN_PAL_FALSE;
1519
1520 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1521
1522 /*Wait for WCTS to close the control transport
1523 (but only if we were able to reset the event flag*/
1524 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1525 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001526 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001527 WDI_WCTS_ACTION_TIMEOUT);
1528 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1529 {
1530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001531 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001532 }
1533 }
1534
1535 /* Destroy the WCTS action event */
1536 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1537 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1538 {
1539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1540 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001541 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001542 }
1543
1544 /* Destroy the Set Power State event */
1545 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1546 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1547 {
1548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1549 "WDI Close failed to destroy an event");
1550
Jeff Johnsone7245742012-09-05 17:12:55 -07001551 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001552 }
1553
1554 /*------------------------------------------------------------------------
1555 Closes the Data Path Utility Module
1556 ------------------------------------------------------------------------*/
1557 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1558 {
1559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1560 "WDI Init failed to close the DP Util Module");
1561
Jeff Johnsone7245742012-09-05 17:12:55 -07001562 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001563 }
1564
1565 /*destroy the BSS sessions pending Queue */
1566 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1567 {
1568 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1569 }
1570
1571 /* destroy the WDI Pending Assoc Id Request Queue*/
1572 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1573
1574 /* destroy the WDI Pending Request Queue*/
1575 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001576
Jeff Johnson295189b2012-06-20 16:38:30 -07001577 /*destroy the response timer */
1578 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1579
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001580 /*destroy the SSR timer */
1581 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1582
Jeff Johnson295189b2012-06-20 16:38:30 -07001583 /*invalidate the main synchro mutex */
1584 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1585 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1586 {
1587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1588 "Failed to delete mutex %d", wptStatus);
1589 WDI_ASSERT(0);
1590 }
1591
1592 /*Clear control block. note that this will clear the "magic"
1593 which will inhibit all asynchronous callbacks*/
1594 WDI_CleanCB(&gWDICb);
1595
1596 return wptStatus;
1597
1598}/*WDI_Close*/
1599
1600/**
1601 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1602 This will do most of the WDI stop & close
1603 operations without doing any handshake with Riva
1604
1605 This will also make sure that the control transport
1606 will NOT be closed.
1607
1608 This request will not be queued.
1609
1610
1611 WDI_Start must have been called.
1612
1613 @param closeTransport: Close control channel if this is set
1614
1615 @return Result of the function call
1616*/
1617WDI_Status
1618WDI_Shutdown
1619(
1620 wpt_boolean closeTransport
1621)
1622{
1623 WDI_EventInfoType wdiEventData;
1624 wpt_status wptStatus;
1625 int i = 0;
1626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1627
1628 /*------------------------------------------------------------------------
1629 Sanity Check
1630 ------------------------------------------------------------------------*/
1631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1632 {
1633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1634 "WDI API call before module is initialized - Fail request");
1635
1636 return WDI_STATUS_E_NOT_ALLOWED;
1637 }
1638
1639 /*------------------------------------------------------------------------
1640 Fill in Event data and post to the Main FSM
1641 ------------------------------------------------------------------------*/
1642 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1643 wdiEventData.pEventData = NULL;
1644 wdiEventData.uEventDataSize = 0;
1645
1646 /* Shutdown will not be queued, if the state is busy timer will be
1647 * stopped & this message will be processed.*/
1648 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1649 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1650 {
1651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001652 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001653 }
1654 /* Destroy the Set Power State event */
1655 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1656 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1657 {
1658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1659 "WDI Close failed to destroy an event");
1660
1661 WDI_ASSERT(0);
1662 }
1663 /*------------------------------------------------------------------------
1664 Closes the Data Path Utility Module
1665 ------------------------------------------------------------------------*/
1666 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1667 {
1668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1669 "WDI Init failed to close the DP Util Module");
1670
1671 WDI_ASSERT(0);
1672 }
1673 if ( closeTransport )
1674 {
1675 /* Close control transport, called from module unload */
1676 WCTS_CloseTransport(gWDICb.wctsHandle);
1677 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001678 else
1679 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001680 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001681 the pending messages in the transport queue */
1682 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1683 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 /*destroy the BSS sessions pending Queue */
1685 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1686 {
1687 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1688 }
1689
1690 /* destroy the WDI Pending Assoc Id Request Queue*/
1691 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1692 /* destroy the WDI Pending Request Queue*/
1693 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1694 /*destroy the response timer */
1695 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001696 /*destroy the SSR timer */
1697 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001698
1699 /*invalidate the main synchro mutex */
1700 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1701 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1702 {
1703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001704 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001705 WDI_ASSERT(0);
1706 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001707 /* Free the global variables */
1708 wpalMemoryFree(gpHostWlanFeatCaps);
1709 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001710 gpHostWlanFeatCaps = NULL;
1711 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001712 /*Clear control block. note that this will clear the "magic"
1713 which will inhibit all asynchronous callbacks*/
1714 WDI_CleanCB(&gWDICb);
1715 return wptStatus;
1716
1717}/*WDI_Shutdown*/
1718
1719
Jeff Johnsone7245742012-09-05 17:12:55 -07001720/*========================================================================
1721
Jeff Johnson295189b2012-06-20 16:38:30 -07001722 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001723
Jeff Johnson295189b2012-06-20 16:38:30 -07001724==========================================================================*/
1725
1726/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001727 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 the WLAN Device to get ready for a scan procedure. Upon
1729 the call of this API the WLAN DAL will pack and send a
1730 HAL Init Scan request message to the lower RIVA
1731 sub-system if DAL is in state STARTED.
1732
1733 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001734 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001735
1736 WDI_Start must have been called.
1737
1738 @param wdiInitScanParams: the init scan parameters as specified
1739 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001740
Jeff Johnson295189b2012-06-20 16:38:30 -07001741 wdiInitScanRspCb: callback for passing back the response
1742 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001743
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001745 callback
1746
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 @see WDI_Start
1748 @return Result of the function call
1749*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001750WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001751WDI_InitScanReq
1752(
1753 WDI_InitScanReqParamsType* pwdiInitScanParams,
1754 WDI_InitScanRspCb wdiInitScanRspCb,
1755 void* pUserData
1756)
1757{
1758 WDI_EventInfoType wdiEventData;
1759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1760
1761 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001762 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001763 ------------------------------------------------------------------------*/
1764 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1765 {
1766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1767 "WDI API call before module is initialized - Fail request");
1768
Jeff Johnsone7245742012-09-05 17:12:55 -07001769 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001770 }
1771
1772 /*------------------------------------------------------------------------
1773 Fill in Event data and post to the Main FSM
1774 ------------------------------------------------------------------------*/
1775 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001776 wdiEventData.pEventData = pwdiInitScanParams;
1777 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1778 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001779 wdiEventData.pUserData = pUserData;
1780
1781 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1782
1783}/*WDI_InitScanReq*/
1784
1785/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001786 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001787 wishes to change the Scan channel on the WLAN Device.
1788 Upon the call of this API the WLAN DAL will pack and
1789 send a HAL Start Scan request message to the lower RIVA
1790 sub-system if DAL is in state STARTED.
1791
1792 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001793 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001794
1795 WDI_InitScanReq must have been called.
1796
Jeff Johnsone7245742012-09-05 17:12:55 -07001797 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001798 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001799
Jeff Johnson295189b2012-06-20 16:38:30 -07001800 wdiStartScanRspCb: callback for passing back the
1801 response of the start scan operation received from the
1802 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001803
Jeff Johnson295189b2012-06-20 16:38:30 -07001804 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001805 callback
1806
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 @see WDI_InitScanReq
1808 @return Result of the function call
1809*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001810WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001811WDI_StartScanReq
1812(
1813 WDI_StartScanReqParamsType* pwdiStartScanParams,
1814 WDI_StartScanRspCb wdiStartScanRspCb,
1815 void* pUserData
1816)
1817{
1818 WDI_EventInfoType wdiEventData;
1819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1820
1821 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001822 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001823 ------------------------------------------------------------------------*/
1824 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1825 {
1826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1827 "WDI API call before module is initialized - Fail request");
1828
Jeff Johnsone7245742012-09-05 17:12:55 -07001829 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001830 }
1831
1832 /*------------------------------------------------------------------------
1833 Fill in Event data and post to the Main FSM
1834 ------------------------------------------------------------------------*/
1835 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001836 wdiEventData.pEventData = pwdiStartScanParams;
1837 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1838 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001839 wdiEventData.pUserData = pUserData;
1840
1841 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1842
1843}/*WDI_StartScanReq*/
1844
1845
1846/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001847 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001848 wants to end scanning for a particular channel that it
1849 had set before by calling Scan Start on the WLAN Device.
1850 Upon the call of this API the WLAN DAL will pack and
1851 send a HAL End Scan request message to the lower RIVA
1852 sub-system if DAL is in state STARTED.
1853
1854 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001855 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001856
1857 WDI_StartScanReq must have been called.
1858
Jeff Johnsone7245742012-09-05 17:12:55 -07001859 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001860 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001861
Jeff Johnson295189b2012-06-20 16:38:30 -07001862 wdiEndScanRspCb: callback for passing back the response
1863 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001864
Jeff Johnson295189b2012-06-20 16:38:30 -07001865 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001866 callback
1867
Jeff Johnson295189b2012-06-20 16:38:30 -07001868 @see WDI_StartScanReq
1869 @return Result of the function call
1870*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001871WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001872WDI_EndScanReq
1873(
1874 WDI_EndScanReqParamsType* pwdiEndScanParams,
1875 WDI_EndScanRspCb wdiEndScanRspCb,
1876 void* pUserData
1877)
1878{
1879 WDI_EventInfoType wdiEventData;
1880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1881
1882 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001883 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001884 ------------------------------------------------------------------------*/
1885 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1886 {
1887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1888 "WDI API call before module is initialized - Fail request");
1889
Jeff Johnsone7245742012-09-05 17:12:55 -07001890 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001891 }
1892
1893 /*------------------------------------------------------------------------
1894 Fill in Event data and post to the Main FSM
1895 ------------------------------------------------------------------------*/
1896 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001897 wdiEventData.pEventData = pwdiEndScanParams;
1898 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1899 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001900 wdiEventData.pUserData = pUserData;
1901
1902 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1903
1904}/*WDI_EndScanReq*/
1905
1906
1907/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001908 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001909 completed the scan process on the WLAN Device. Upon the
1910 call of this API the WLAN DAL will pack and send a HAL
1911 Finish Scan Request request message to the lower RIVA
1912 sub-system if DAL is in state STARTED.
1913
1914 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001915 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001916
1917 WDI_InitScanReq must have been called.
1918
Jeff Johnsone7245742012-09-05 17:12:55 -07001919 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001920 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001921
Jeff Johnson295189b2012-06-20 16:38:30 -07001922 wdiFinishScanRspCb: callback for passing back the
1923 response of the finish scan operation received from the
1924 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001925
Jeff Johnson295189b2012-06-20 16:38:30 -07001926 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001927 callback
1928
Jeff Johnson295189b2012-06-20 16:38:30 -07001929 @see WDI_InitScanReq
1930 @return Result of the function call
1931*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001932WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001933WDI_FinishScanReq
1934(
1935 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1936 WDI_FinishScanRspCb wdiFinishScanRspCb,
1937 void* pUserData
1938)
1939{
1940 WDI_EventInfoType wdiEventData;
1941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1942
1943 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001944 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001945 ------------------------------------------------------------------------*/
1946 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1947 {
1948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1949 "WDI API call before module is initialized - Fail request");
1950
Jeff Johnsone7245742012-09-05 17:12:55 -07001951 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001952 }
1953
1954 /*------------------------------------------------------------------------
1955 Fill in Event data and post to the Main FSM
1956 ------------------------------------------------------------------------*/
1957 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001958 wdiEventData.pEventData = pwdiFinishScanParams;
1959 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1960 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 wdiEventData.pUserData = pUserData;
1962
1963 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1964
1965}/*WDI_FinishScanReq*/
1966
Jeff Johnsone7245742012-09-05 17:12:55 -07001967/*========================================================================
1968
Jeff Johnson295189b2012-06-20 16:38:30 -07001969 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001970
Jeff Johnson295189b2012-06-20 16:38:30 -07001971==========================================================================*/
1972
1973/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001974 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07001975 to start an association procedure to a BSS. Upon the
1976 call of this API the WLAN DAL will pack and send a HAL
1977 Join request message to the lower RIVA sub-system if
1978 DAL is in state STARTED.
1979
1980 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001981 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001982
1983 WDI_Start must have been called.
1984
Jeff Johnsone7245742012-09-05 17:12:55 -07001985 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001986 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001987
Jeff Johnson295189b2012-06-20 16:38:30 -07001988 wdiJoinRspCb: callback for passing back the response of
1989 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001990
Jeff Johnson295189b2012-06-20 16:38:30 -07001991 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001992 callback
1993
Jeff Johnson295189b2012-06-20 16:38:30 -07001994 @see WDI_Start
1995 @return Result of the function call
1996*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001997WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001998WDI_JoinReq
1999(
2000 WDI_JoinReqParamsType* pwdiJoinParams,
2001 WDI_JoinRspCb wdiJoinRspCb,
2002 void* pUserData
2003)
2004{
2005 WDI_EventInfoType wdiEventData;
2006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007
2008 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002010 ------------------------------------------------------------------------*/
2011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2012 {
2013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2014 "WDI API call before module is initialized - Fail request");
2015
Jeff Johnsone7245742012-09-05 17:12:55 -07002016 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002017 }
2018
2019 /*------------------------------------------------------------------------
2020 Fill in Event data and post to the Main FSM
2021 ------------------------------------------------------------------------*/
2022 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002023 wdiEventData.pEventData = pwdiJoinParams;
2024 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2025 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002026 wdiEventData.pUserData = pUserData;
2027
2028 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2029
2030}/*WDI_JoinReq*/
2031
2032/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002033 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002034 wishes to configure the newly acquired or in process of
2035 being acquired BSS to the HW . Upon the call of this API
2036 the WLAN DAL will pack and send a HAL Config BSS request
2037 message to the lower RIVA sub-system if DAL is in state
2038 STARTED.
2039
2040 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002042
2043 WDI_JoinReq must have been called.
2044
Jeff Johnsone7245742012-09-05 17:12:55 -07002045 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002046 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002047
Jeff Johnson295189b2012-06-20 16:38:30 -07002048 wdiConfigBSSRspCb: callback for passing back the
2049 response of the config BSS operation received from the
2050 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002051
Jeff Johnson295189b2012-06-20 16:38:30 -07002052 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 callback
2054
Jeff Johnson295189b2012-06-20 16:38:30 -07002055 @see WDI_JoinReq
2056 @return Result of the function call
2057*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002058WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002059WDI_ConfigBSSReq
2060(
2061 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2062 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2063 void* pUserData
2064)
2065{
2066 WDI_EventInfoType wdiEventData;
2067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2068
2069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002070 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 ------------------------------------------------------------------------*/
2072 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2073 {
2074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2075 "WDI API call before module is initialized - Fail request");
2076
Jeff Johnsone7245742012-09-05 17:12:55 -07002077 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002078 }
2079
2080 /*------------------------------------------------------------------------
2081 Fill in Event data and post to the Main FSM
2082 ------------------------------------------------------------------------*/
2083 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002084 wdiEventData.pEventData = pwdiConfigBSSParams;
2085 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2086 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002087 wdiEventData.pUserData = pUserData;
2088
2089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2090
2091}/*WDI_ConfigBSSReq*/
2092
2093/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002094 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 disassociating from the BSS and wishes to notify HW.
2096 Upon the call of this API the WLAN DAL will pack and
2097 send a HAL Del BSS request message to the lower RIVA
2098 sub-system if DAL is in state STARTED.
2099
2100 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002102
2103 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2104
Jeff Johnsone7245742012-09-05 17:12:55 -07002105 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002107
Jeff Johnson295189b2012-06-20 16:38:30 -07002108 wdiDelBSSRspCb: callback for passing back the response
2109 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002110
Jeff Johnson295189b2012-06-20 16:38:30 -07002111 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002112 callback
2113
2114 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002115 @return Result of the function call
2116*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002117WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002118WDI_DelBSSReq
2119(
2120 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2121 WDI_DelBSSRspCb wdiDelBSSRspCb,
2122 void* pUserData
2123)
2124{
2125 WDI_EventInfoType wdiEventData;
2126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2127
2128 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002129 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002130 ------------------------------------------------------------------------*/
2131 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2132 {
2133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2134 "WDI API call before module is initialized - Fail request");
2135
Jeff Johnsone7245742012-09-05 17:12:55 -07002136 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002137 }
2138
2139 /*------------------------------------------------------------------------
2140 Fill in Event data and post to the Main FSM
2141 ------------------------------------------------------------------------*/
2142 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002143 wdiEventData.pEventData = pwdiDelBSSParams;
2144 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2145 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002146 wdiEventData.pUserData = pUserData;
2147
2148 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2149
2150}/*WDI_DelBSSReq*/
2151
2152/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002153 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002154 associated to a BSS and wishes to configure HW for
2155 associated state. Upon the call of this API the WLAN DAL
2156 will pack and send a HAL Post Assoc request message to
2157 the lower RIVA sub-system if DAL is in state STARTED.
2158
2159 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002160 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002161
2162 WDI_JoinReq must have been called.
2163
2164 @param wdiPostAssocReqParams: the assoc parameters as specified
2165 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002166
Jeff Johnson295189b2012-06-20 16:38:30 -07002167 wdiPostAssocRspCb: callback for passing back the
2168 response of the post assoc operation received from the
2169 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002170
Jeff Johnson295189b2012-06-20 16:38:30 -07002171 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002172 callback
2173
Jeff Johnson295189b2012-06-20 16:38:30 -07002174 @see WDI_JoinReq
2175 @return Result of the function call
2176*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002177WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002178WDI_PostAssocReq
2179(
2180 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2181 WDI_PostAssocRspCb wdiPostAssocRspCb,
2182 void* pUserData
2183)
2184{
2185 WDI_EventInfoType wdiEventData;
2186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2187
2188 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002189 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002190 ------------------------------------------------------------------------*/
2191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2192 {
2193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2194 "WDI API call before module is initialized - Fail request");
2195
Jeff Johnsone7245742012-09-05 17:12:55 -07002196 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002197 }
2198
2199 /*------------------------------------------------------------------------
2200 Fill in Event data and post to the Main FSM
2201 ------------------------------------------------------------------------*/
2202 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002203 wdiEventData.pEventData = pwdiPostAssocReqParams;
2204 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2205 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002206 wdiEventData.pUserData = pUserData;
2207
2208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2209
2210}/*WDI_PostAssocReq*/
2211
2212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002213 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002214 association with another STA has ended and the station
2215 must be deleted from HW. Upon the call of this API the
2216 WLAN DAL will pack and send a HAL Del STA request
2217 message to the lower RIVA sub-system if DAL is in state
2218 STARTED.
2219
2220 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002221 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002222
2223 WDI_PostAssocReq must have been called.
2224
Jeff Johnsone7245742012-09-05 17:12:55 -07002225 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002226 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002227
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 wdiDelSTARspCb: callback for passing back the response
2229 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002230
Jeff Johnson295189b2012-06-20 16:38:30 -07002231 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002232 callback
2233
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 @see WDI_PostAssocReq
2235 @return Result of the function call
2236*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002237WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002238WDI_DelSTAReq
2239(
2240 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2241 WDI_DelSTARspCb wdiDelSTARspCb,
2242 void* pUserData
2243)
2244{
2245 WDI_EventInfoType wdiEventData;
2246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2247
2248 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002250 ------------------------------------------------------------------------*/
2251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2252 {
2253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2254 "WDI API call before module is initialized - Fail request");
2255
Jeff Johnsone7245742012-09-05 17:12:55 -07002256 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002257 }
2258
2259 /*------------------------------------------------------------------------
2260 Fill in Event data and post to the Main FSM
2261 ------------------------------------------------------------------------*/
2262 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002263 wdiEventData.pEventData = pwdiDelSTAParams;
2264 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2265 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002266 wdiEventData.pUserData = pUserData;
2267
2268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2269
2270}/*WDI_DelSTAReq*/
2271
Jeff Johnsone7245742012-09-05 17:12:55 -07002272/*========================================================================
2273
Jeff Johnson295189b2012-06-20 16:38:30 -07002274 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002275
Jeff Johnson295189b2012-06-20 16:38:30 -07002276==========================================================================*/
2277
2278/**
2279 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2280 install a BSS encryption key on the HW. Upon the call of this
2281 API the WLAN DAL will pack and send a Set BSS Key request
2282 message to the lower RIVA sub-system if DAL is in state
2283 STARTED.
2284
2285 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002286 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002287
2288 WDI_PostAssocReq must have been called.
2289
Jeff Johnsone7245742012-09-05 17:12:55 -07002290 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002292
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 wdiSetBSSKeyRspCb: callback for passing back the
2294 response of the set BSS Key operation received from the
2295 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002296
Jeff Johnson295189b2012-06-20 16:38:30 -07002297 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002298 callback
2299
Jeff Johnson295189b2012-06-20 16:38:30 -07002300 @see WDI_PostAssocReq
2301 @return Result of the function call
2302*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002303WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002304WDI_SetBSSKeyReq
2305(
2306 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2307 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2308 void* pUserData
2309)
2310{
2311 WDI_EventInfoType wdiEventData;
2312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2313
2314 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 ------------------------------------------------------------------------*/
2317 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2318 {
2319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2320 "WDI API call before module is initialized - Fail request");
2321
Jeff Johnsone7245742012-09-05 17:12:55 -07002322 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002323 }
2324
2325 /*------------------------------------------------------------------------
2326 Fill in Event data and post to the Main FSM
2327 ------------------------------------------------------------------------*/
2328 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002329 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2330 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2331 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002332 wdiEventData.pUserData = pUserData;
2333
2334 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2335
2336}/*WDI_SetBSSKeyReq*/
2337
2338/**
2339 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2340 uninstall a BSS key from HW. Upon the call of this API the
2341 WLAN DAL will pack and send a HAL Remove BSS Key request
2342 message to the lower RIVA sub-system if DAL is in state
2343 STARTED.
2344
2345 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002346 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002347
2348 WDI_SetBSSKeyReq must have been called.
2349
Jeff Johnsone7245742012-09-05 17:12:55 -07002350 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002352
Jeff Johnson295189b2012-06-20 16:38:30 -07002353 wdiRemoveBSSKeyRspCb: callback for passing back the
2354 response of the remove BSS key operation received from
2355 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002356
Jeff Johnson295189b2012-06-20 16:38:30 -07002357 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002358 callback
2359
Jeff Johnson295189b2012-06-20 16:38:30 -07002360 @see WDI_SetBSSKeyReq
2361 @return Result of the function call
2362*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002363WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002364WDI_RemoveBSSKeyReq
2365(
2366 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2367 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2368 void* pUserData
2369)
2370{
2371 WDI_EventInfoType wdiEventData;
2372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2373
2374 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002375 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002376 ------------------------------------------------------------------------*/
2377 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2378 {
2379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2380 "WDI API call before module is initialized - Fail request");
2381
Jeff Johnsone7245742012-09-05 17:12:55 -07002382 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002383 }
2384
2385 /*------------------------------------------------------------------------
2386 Fill in Event data and post to the Main FSM
2387 ------------------------------------------------------------------------*/
2388 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002389 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2390 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2391 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002392 wdiEventData.pUserData = pUserData;
2393
2394 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2395
2396}/*WDI_RemoveBSSKeyReq*/
2397
2398
2399/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002400 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002401 ready to install a STA(ast) encryption key in HW. Upon
2402 the call of this API the WLAN DAL will pack and send a
2403 HAL Set STA Key request message to the lower RIVA
2404 sub-system if DAL is in state STARTED.
2405
2406 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002407 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002408
2409 WDI_PostAssocReq must have been called.
2410
Jeff Johnsone7245742012-09-05 17:12:55 -07002411 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002413
Jeff Johnson295189b2012-06-20 16:38:30 -07002414 wdiSetSTAKeyRspCb: callback for passing back the
2415 response of the set STA key operation received from the
2416 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002417
Jeff Johnson295189b2012-06-20 16:38:30 -07002418 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002419 callback
2420
Jeff Johnson295189b2012-06-20 16:38:30 -07002421 @see WDI_PostAssocReq
2422 @return Result of the function call
2423*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002424WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002425WDI_SetSTAKeyReq
2426(
2427 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2428 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2429 void* pUserData
2430)
2431{
2432 WDI_EventInfoType wdiEventData;
2433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2434
2435 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 ------------------------------------------------------------------------*/
2438 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2439 {
2440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2441 "WDI API call before module is initialized - Fail request");
2442
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002444 }
2445
2446 /*------------------------------------------------------------------------
2447 Fill in Event data and post to the Main FSM
2448 ------------------------------------------------------------------------*/
2449 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002450 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2451 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2452 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002453 wdiEventData.pUserData = pUserData;
2454
2455 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2456
2457}/*WDI_SetSTAKeyReq*/
2458
2459
2460/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002461 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002462 wants to uninstall a previously set STA key in HW. Upon
2463 the call of this API the WLAN DAL will pack and send a
2464 HAL Remove STA Key request message to the lower RIVA
2465 sub-system if DAL is in state STARTED.
2466
2467 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002468 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002469
2470 WDI_SetSTAKeyReq must have been called.
2471
Jeff Johnsone7245742012-09-05 17:12:55 -07002472 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002473 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002474
Jeff Johnson295189b2012-06-20 16:38:30 -07002475 wdiRemoveSTAKeyRspCb: callback for passing back the
2476 response of the remove STA key operation received from
2477 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002478
Jeff Johnson295189b2012-06-20 16:38:30 -07002479 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 callback
2481
Jeff Johnson295189b2012-06-20 16:38:30 -07002482 @see WDI_SetSTAKeyReq
2483 @return Result of the function call
2484*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002485WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002486WDI_RemoveSTAKeyReq
2487(
2488 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2489 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2490 void* pUserData
2491)
2492{
2493 WDI_EventInfoType wdiEventData;
2494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2495
2496 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002498 ------------------------------------------------------------------------*/
2499 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2500 {
2501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2502 "WDI API call before module is initialized - Fail request");
2503
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002505 }
2506
2507 /*------------------------------------------------------------------------
2508 Fill in Event data and post to the Main FSM
2509 ------------------------------------------------------------------------*/
2510 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002511 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2512 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2513 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002514 wdiEventData.pUserData = pUserData;
2515
2516 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2517
2518}/*WDI_RemoveSTAKeyReq*/
2519
2520
2521/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002522 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002523 wants to install a STA Bcast encryption key on the HW.
2524 Upon the call of this API the WLAN DAL will pack and
2525 send a HAL Start request message to the lower RIVA
2526 sub-system if DAL is in state STARTED.
2527
2528 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002529 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002530
2531 WDI_PostAssocReq must have been called.
2532
Jeff Johnsone7245742012-09-05 17:12:55 -07002533 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002534 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002535
Jeff Johnson295189b2012-06-20 16:38:30 -07002536 wdiSetSTABcastKeyRspCb: callback for passing back the
2537 response of the set BSS Key operation received from the
2538 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002539
Jeff Johnson295189b2012-06-20 16:38:30 -07002540 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002541 callback
2542
Jeff Johnson295189b2012-06-20 16:38:30 -07002543 @see WDI_PostAssocReq
2544 @return Result of the function call
2545*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002546WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002547WDI_SetSTABcastKeyReq
2548(
2549 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2550 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2551 void* pUserData
2552)
2553
2554{
2555 WDI_EventInfoType wdiEventData;
2556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2557
2558 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002559 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002560 ------------------------------------------------------------------------*/
2561 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2562 {
2563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2564 "WDI API call before module is initialized - Fail request");
2565
Jeff Johnsone7245742012-09-05 17:12:55 -07002566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002567 }
2568
2569 /*------------------------------------------------------------------------
2570 Fill in Event data and post to the Main FSM
2571 ------------------------------------------------------------------------*/
2572 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002573 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2574 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2575 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002576 wdiEventData.pUserData = pUserData;
2577
2578 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2579
2580}/*WDI_SetSTABcastKeyReq*/
2581
2582/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002583 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 MAC wants to uninstall a STA Bcast key from HW. Upon the
2585 call of this API the WLAN DAL will pack and send a HAL
2586 Remove STA Bcast Key request message to the lower RIVA
2587 sub-system if DAL is in state STARTED.
2588
2589 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002590 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002591
2592 WDI_SetSTABcastKeyReq must have been called.
2593
Jeff Johnsone7245742012-09-05 17:12:55 -07002594 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002595 parameters as specified by the Device
2596 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002597
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2599 response of the remove STA Bcast key operation received
2600 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002601
Jeff Johnson295189b2012-06-20 16:38:30 -07002602 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002603 callback
2604
Jeff Johnson295189b2012-06-20 16:38:30 -07002605 @see WDI_SetSTABcastKeyReq
2606 @return Result of the function call
2607*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002608WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002609WDI_RemoveSTABcastKeyReq
2610(
2611 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2612 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2613 void* pUserData
2614)
2615{
2616 WDI_EventInfoType wdiEventData;
2617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2618
2619 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002620 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002621 ------------------------------------------------------------------------*/
2622 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2623 {
2624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2625 "WDI API call before module is initialized - Fail request");
2626
Jeff Johnsone7245742012-09-05 17:12:55 -07002627 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002628 }
2629
2630 /*------------------------------------------------------------------------
2631 Fill in Event data and post to the Main FSM
2632 ------------------------------------------------------------------------*/
2633 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002634 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2635 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2636 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002637 wdiEventData.pUserData = pUserData;
2638
2639 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2640
2641}/*WDI_RemoveSTABcastKeyReq*/
2642
2643/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 MAC wants to set Max Tx Power to HW. Upon the
2646 call of this API the WLAN DAL will pack and send a HAL
2647 Remove STA Bcast Key request message to the lower RIVA
2648 sub-system if DAL is in state STARTED.
2649
2650 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002651 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002652
2653 WDI_SetSTABcastKeyReq must have been called.
2654
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002656 parameters as specified by the Device
2657 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002658
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2660 response of the remove STA Bcast key operation received
2661 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002662
Jeff Johnson295189b2012-06-20 16:38:30 -07002663 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002664 callback
2665
Jeff Johnson295189b2012-06-20 16:38:30 -07002666 @see WDI_SetMaxTxPowerReq
2667 @return Result of the function call
2668*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002669WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002670WDI_SetMaxTxPowerReq
2671(
2672 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2673 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2674 void* pUserData
2675)
2676{
2677 WDI_EventInfoType wdiEventData;
2678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2679
2680 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002681 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002682 ------------------------------------------------------------------------*/
2683 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2684 {
2685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2686 "WDI API call before module is initialized - Fail request");
2687
Jeff Johnsone7245742012-09-05 17:12:55 -07002688 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002689 }
2690
2691 /*------------------------------------------------------------------------
2692 Fill in Event data and post to the Main FSM
2693 ------------------------------------------------------------------------*/
2694 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002695 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2696 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2697 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002698 wdiEventData.pUserData = pUserData;
2699
2700 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2701}
2702
schangd82195a2013-03-13 18:41:24 -07002703/**
2704 @brief WDI_SetTxPowerReq will be called when the upper
2705 MAC wants to set Tx Power to HW.
2706 In state BUSY this request will be queued. Request won't
2707 be allowed in any other state.
2708
2709
2710 @param pwdiSetTxPowerParams: set TS Power parameters
2711 BSSID and target TX Power with dbm included
2712
2713 wdiReqStatusCb: callback for passing back the response
2714
2715 pUserData: user data will be passed back with the
2716 callback
2717
2718 @return Result of the function call
2719*/
2720WDI_Status
2721WDI_SetTxPowerReq
2722(
2723 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2724 WDA_SetTxPowerRspCb wdiReqStatusCb,
2725 void* pUserData
2726)
2727{
2728 WDI_EventInfoType wdiEventData;
2729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2730
2731 /*------------------------------------------------------------------------
2732 Sanity Check
2733 ------------------------------------------------------------------------*/
2734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2735 {
2736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2737 "WDI API call before module is initialized - Fail request");
2738
2739 return WDI_STATUS_E_NOT_ALLOWED;
2740 }
2741
2742 /*------------------------------------------------------------------------
2743 Fill in Event data and post to the Main FSM
2744 ------------------------------------------------------------------------*/
2745 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2746 wdiEventData.pEventData = pwdiSetTxPowerParams;
2747 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2748 wdiEventData.pCBfnc = wdiReqStatusCb;
2749 wdiEventData.pUserData = pUserData;
2750
2751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2752}
2753
Jeff Johnson295189b2012-06-20 16:38:30 -07002754#ifdef FEATURE_WLAN_CCX
2755WDI_Status
2756WDI_TSMStatsReq
2757(
2758 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2759 WDI_TsmRspCb wdiReqStatusCb,
2760 void* pUserData
2761)
2762{
2763 WDI_EventInfoType wdiEventData;
2764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002765 /*------------------------------------------------------------------------
2766 Sanity Check
2767 ------------------------------------------------------------------------*/
2768 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2769 {
2770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2771 "WDI API call before module is initialized - Fail request");
2772
2773 return WDI_STATUS_E_NOT_ALLOWED;
2774 }
2775
2776 /*------------------------------------------------------------------------
2777 Fill in Event data and post to the Main FSM
2778 ------------------------------------------------------------------------*/
2779 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2780 wdiEventData.pEventData = pwdiTsmReqParams;
2781 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2782 wdiEventData.pCBfnc = wdiReqStatusCb;
2783 wdiEventData.pUserData = pUserData;
2784
2785 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2786
2787}
2788#endif
2789
2790/*========================================================================
2791
2792 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002793
Jeff Johnson295189b2012-06-20 16:38:30 -07002794==========================================================================*/
2795
2796/**
2797 @brief WDI_AddTSReq will be called when the upper MAC to inform
2798 the device of a successful add TSpec negotiation. HW
2799 needs to receive the TSpec Info from the UMAC in order
2800 to configure properly the QoS data traffic. Upon the
2801 call of this API the WLAN DAL will pack and send a HAL
2802 Add TS request message to the lower RIVA sub-system if
2803 DAL is in state STARTED.
2804
2805 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002806 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002807
2808 WDI_PostAssocReq must have been called.
2809
2810 @param wdiAddTsReqParams: the add TS parameters as specified by
2811 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002812
Jeff Johnson295189b2012-06-20 16:38:30 -07002813 wdiAddTsRspCb: callback for passing back the response of
2814 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002815
Jeff Johnson295189b2012-06-20 16:38:30 -07002816 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002817 callback
2818
Jeff Johnson295189b2012-06-20 16:38:30 -07002819 @see WDI_PostAssocReq
2820 @return Result of the function call
2821*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002822WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002823WDI_AddTSReq
2824(
2825 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2826 WDI_AddTsRspCb wdiAddTsRspCb,
2827 void* pUserData
2828)
2829{
2830 WDI_EventInfoType wdiEventData;
2831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2832
2833 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 ------------------------------------------------------------------------*/
2836 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2837 {
2838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2839 "WDI API call before module is initialized - Fail request");
2840
Jeff Johnsone7245742012-09-05 17:12:55 -07002841 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002842 }
2843
2844 /*------------------------------------------------------------------------
2845 Fill in Event data and post to the Main FSM
2846 ------------------------------------------------------------------------*/
2847 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002848 wdiEventData.pEventData = pwdiAddTsReqParams;
2849 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2850 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002851 wdiEventData.pUserData = pUserData;
2852
2853 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2854
2855}/*WDI_AddTSReq*/
2856
2857
2858
2859/**
2860 @brief WDI_DelTSReq will be called when the upper MAC has ended
2861 admission on a specific AC. This is to inform HW that
2862 QoS traffic parameters must be rest. Upon the call of
2863 this API the WLAN DAL will pack and send a HAL Del TS
2864 request message to the lower RIVA sub-system if DAL is
2865 in state STARTED.
2866
2867 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002869
2870 WDI_AddTSReq must have been called.
2871
2872 @param wdiDelTsReqParams: the del TS parameters as specified by
2873 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002874
Jeff Johnson295189b2012-06-20 16:38:30 -07002875 wdiDelTsRspCb: callback for passing back the response of
2876 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002877
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002879 callback
2880
Jeff Johnson295189b2012-06-20 16:38:30 -07002881 @see WDI_AddTSReq
2882 @return Result of the function call
2883*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002884WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002885WDI_DelTSReq
2886(
2887 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2888 WDI_DelTsRspCb wdiDelTsRspCb,
2889 void* pUserData
2890)
2891{
2892 WDI_EventInfoType wdiEventData;
2893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2894
2895 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002896 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 ------------------------------------------------------------------------*/
2898 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2899 {
2900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2901 "WDI API call before module is initialized - Fail request");
2902
Jeff Johnsone7245742012-09-05 17:12:55 -07002903 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 }
2905
2906 /*------------------------------------------------------------------------
2907 Fill in Event data and post to the Main FSM
2908 ------------------------------------------------------------------------*/
2909 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002910 wdiEventData.pEventData = pwdiDelTsReqParams;
2911 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2912 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002913 wdiEventData.pUserData = pUserData;
2914
2915 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2916
2917}/*WDI_DelTSReq*/
2918
2919
2920
2921/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002922 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002923 wishes to update the EDCA parameters used by HW for QoS
2924 data traffic. Upon the call of this API the WLAN DAL
2925 will pack and send a HAL Update EDCA Params request
2926 message to the lower RIVA sub-system if DAL is in state
2927 STARTED.
2928
2929 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002930 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002931
2932 WDI_PostAssocReq must have been called.
2933
Jeff Johnsone7245742012-09-05 17:12:55 -07002934 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002935 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002936
Jeff Johnson295189b2012-06-20 16:38:30 -07002937 wdiUpdateEDCAParamsRspCb: callback for passing back the
2938 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002939
Jeff Johnson295189b2012-06-20 16:38:30 -07002940 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002941 callback
2942
Jeff Johnson295189b2012-06-20 16:38:30 -07002943 @see WDI_PostAssocReq
2944 @return Result of the function call
2945*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002946WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002947WDI_UpdateEDCAParams
2948(
2949 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2950 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2951 void* pUserData
2952)
2953{
2954 WDI_EventInfoType wdiEventData;
2955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2956
2957 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002958 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002959 ------------------------------------------------------------------------*/
2960 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2961 {
2962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2963 "WDI API call before module is initialized - Fail request");
2964
Jeff Johnsone7245742012-09-05 17:12:55 -07002965 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002966 }
2967
2968 /*------------------------------------------------------------------------
2969 Fill in Event data and post to the Main FSM
2970 ------------------------------------------------------------------------*/
2971 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002972 wdiEventData.pEventData = pwdiUpdateEDCAParams;
2973 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
2974 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002975 wdiEventData.pUserData = pUserData;
2976
2977 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2978
2979}/*WDI_UpdateEDCAParams*/
2980
2981
2982/**
2983 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
2984 successfully a BA session and needs to notify the HW for
2985 the appropriate settings to take place. Upon the call of
2986 this API the WLAN DAL will pack and send a HAL Add BA
2987 request message to the lower RIVA sub-system if DAL is
2988 in state STARTED.
2989
2990 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002991 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002992
2993 WDI_PostAssocReq must have been called.
2994
2995 @param wdiAddBAReqParams: the add BA parameters as specified by
2996 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002997
Jeff Johnson295189b2012-06-20 16:38:30 -07002998 wdiAddBARspCb: callback for passing back the response of
2999 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003000
Jeff Johnson295189b2012-06-20 16:38:30 -07003001 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003002 callback
3003
Jeff Johnson295189b2012-06-20 16:38:30 -07003004 @see WDI_PostAssocReq
3005 @return Result of the function call
3006*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003007WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003008WDI_AddBASessionReq
3009(
3010 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3011 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3012 void* pUserData
3013)
3014{
3015 WDI_EventInfoType wdiEventData;
3016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3017
3018 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003019 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003020 ------------------------------------------------------------------------*/
3021 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3022 {
3023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3024 "WDI API call before module is initialized - Fail request");
3025
Jeff Johnsone7245742012-09-05 17:12:55 -07003026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003027 }
3028
3029 /*------------------------------------------------------------------------
3030 Fill in Event data and post to the Main FSM
3031 ------------------------------------------------------------------------*/
3032 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003033 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3034 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3035 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003036 wdiEventData.pUserData = pUserData;
3037
3038 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3039
3040}/*WDI_AddBASessionReq*/
3041
3042/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003043 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 inform HW that it has deleted a previously created BA
3045 session. Upon the call of this API the WLAN DAL will
3046 pack and send a HAL Del BA request message to the lower
3047 RIVA sub-system if DAL is in state STARTED.
3048
3049 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003050 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003051
3052 WDI_AddBAReq must have been called.
3053
3054 @param wdiDelBAReqParams: the del BA parameters as specified by
3055 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003056
Jeff Johnson295189b2012-06-20 16:38:30 -07003057 wdiDelBARspCb: callback for passing back the response of
3058 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003059
Jeff Johnson295189b2012-06-20 16:38:30 -07003060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003061 callback
3062
Jeff Johnson295189b2012-06-20 16:38:30 -07003063 @see WDI_AddBAReq
3064 @return Result of the function call
3065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003067WDI_DelBAReq
3068(
3069 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3070 WDI_DelBARspCb wdiDelBARspCb,
3071 void* pUserData
3072)
3073{
3074 WDI_EventInfoType wdiEventData;
3075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3076
3077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 ------------------------------------------------------------------------*/
3080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3081 {
3082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3083 "WDI API call before module is initialized - Fail request");
3084
Jeff Johnsone7245742012-09-05 17:12:55 -07003085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 }
3087
3088 /*------------------------------------------------------------------------
3089 Fill in Event data and post to the Main FSM
3090 ------------------------------------------------------------------------*/
3091 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003092 wdiEventData.pEventData = pwdiDelBAReqParams;
3093 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3094 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003095 wdiEventData.pUserData = pUserData;
3096
3097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3098
3099}/*WDI_DelBAReq*/
3100
Jeff Johnsone7245742012-09-05 17:12:55 -07003101/*========================================================================
3102
Jeff Johnson295189b2012-06-20 16:38:30 -07003103 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003104
Jeff Johnson295189b2012-06-20 16:38:30 -07003105==========================================================================*/
3106
3107/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003108 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003109 wants to set the power save related configurations of
3110 the WLAN Device. Upon the call of this API the WLAN DAL
3111 will pack and send a HAL Update CFG request message to
3112 the lower RIVA sub-system if DAL is in state STARTED.
3113
3114 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003115 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003116
3117 WDI_Start must have been called.
3118
Jeff Johnsone7245742012-09-05 17:12:55 -07003119 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003120 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003121
Jeff Johnson295189b2012-06-20 16:38:30 -07003122 wdiSetPwrSaveCfgCb: callback for passing back the
3123 response of the set power save cfg operation received
3124 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003125
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003127 callback
3128
Jeff Johnson295189b2012-06-20 16:38:30 -07003129 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003130 @return Result of the function call
3131*/
3132WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003133WDI_SetPwrSaveCfgReq
3134(
3135 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3136 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3137 void* pUserData
3138)
3139{
3140 WDI_EventInfoType wdiEventData;
3141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3142
3143 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003144 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003145 ------------------------------------------------------------------------*/
3146 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3147 {
3148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3149 "WDI API call before module is initialized - Fail request");
3150
Jeff Johnsone7245742012-09-05 17:12:55 -07003151 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003152 }
3153
3154 /*------------------------------------------------------------------------
3155 Fill in Event data and post to the Main FSM
3156 ------------------------------------------------------------------------*/
3157 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003158 wdiEventData.pEventData = pwdiPowerSaveCfg;
3159 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3160 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003161 wdiEventData.pUserData = pUserData;
3162
3163 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3164
3165}/*WDI_SetPwrSaveCfgReq*/
3166
3167/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003168 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003169 request the device to get into IMPS power state. Upon
3170 the call of this API the WLAN DAL will send a HAL Enter
3171 IMPS request message to the lower RIVA sub-system if DAL
3172 is in state STARTED.
3173
3174 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003175 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003176
Jeff Johnsone7245742012-09-05 17:12:55 -07003177
3178 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003179 response of the Enter IMPS operation received from the
3180 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003181
Jeff Johnson295189b2012-06-20 16:38:30 -07003182 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003183 callback
3184
Jeff Johnson295189b2012-06-20 16:38:30 -07003185 @see WDI_Start
3186 @return Result of the function call
3187*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003188WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003189WDI_EnterImpsReq
3190(
3191 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3192 void* pUserData
3193)
3194{
3195 WDI_EventInfoType wdiEventData;
3196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3197
3198 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003199 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003200 ------------------------------------------------------------------------*/
3201 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3202 {
3203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3204 "WDI API call before module is initialized - Fail request");
3205
Jeff Johnsone7245742012-09-05 17:12:55 -07003206 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003207 }
3208
3209 /*------------------------------------------------------------------------
3210 Fill in Event data and post to the Main FSM
3211 ------------------------------------------------------------------------*/
3212 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003213 wdiEventData.pEventData = NULL;
3214 wdiEventData.uEventDataSize = 0;
3215 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003216 wdiEventData.pUserData = pUserData;
3217
3218 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3219
3220}/*WDI_EnterImpsReq*/
3221
3222/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003223 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003224 request the device to get out of IMPS power state. Upon
3225 the call of this API the WLAN DAL will send a HAL Exit
3226 IMPS request message to the lower RIVA sub-system if DAL
3227 is in state STARTED.
3228
3229 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003230 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003231
Jeff Johnson295189b2012-06-20 16:38:30 -07003232
Jeff Johnsone7245742012-09-05 17:12:55 -07003233
3234 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003236
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003238 callback
3239
Jeff Johnson295189b2012-06-20 16:38:30 -07003240 @see WDI_Start
3241 @return Result of the function call
3242*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003243WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003244WDI_ExitImpsReq
3245(
3246 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3247 void* pUserData
3248)
3249{
3250 WDI_EventInfoType wdiEventData;
3251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3252
3253 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003254 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003255 ------------------------------------------------------------------------*/
3256 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3257 {
3258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3259 "WDI API call before module is initialized - Fail request");
3260
Jeff Johnsone7245742012-09-05 17:12:55 -07003261 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003262 }
3263
3264 /*------------------------------------------------------------------------
3265 Fill in Event data and post to the Main FSM
3266 ------------------------------------------------------------------------*/
3267 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003268 wdiEventData.pEventData = NULL;
3269 wdiEventData.uEventDataSize = 0;
3270 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003271 wdiEventData.pUserData = pUserData;
3272
3273 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3274
3275}/*WDI_ExitImpsReq*/
3276
3277/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003278 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003279 request the device to get into BMPS power state. Upon
3280 the call of this API the WLAN DAL will pack and send a
3281 HAL Enter BMPS request message to the lower RIVA
3282 sub-system if DAL is in state STARTED.
3283
3284 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003285 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003286
3287 WDI_PostAssocReq must have been called.
3288
Jeff Johnsone7245742012-09-05 17:12:55 -07003289 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003290 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003291
Jeff Johnson295189b2012-06-20 16:38:30 -07003292 wdiEnterBmpsRspCb: callback for passing back the
3293 response of the Enter BMPS operation received from the
3294 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003295
Jeff Johnson295189b2012-06-20 16:38:30 -07003296 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003297 callback
3298
Jeff Johnson295189b2012-06-20 16:38:30 -07003299 @see WDI_PostAssocReq
3300 @return Result of the function call
3301*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003302WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003303WDI_EnterBmpsReq
3304(
3305 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3306 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3307 void* pUserData
3308)
3309{
3310 WDI_EventInfoType wdiEventData;
3311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3312
3313 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003314 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003315 ------------------------------------------------------------------------*/
3316 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3317 {
3318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3319 "WDI API call before module is initialized - Fail request");
3320
Jeff Johnsone7245742012-09-05 17:12:55 -07003321 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003322 }
3323
3324 /*------------------------------------------------------------------------
3325 Fill in Event data and post to the Main FSM
3326 ------------------------------------------------------------------------*/
3327 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003328 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3329 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3330 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003331 wdiEventData.pUserData = pUserData;
3332
3333 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3334
3335}/*WDI_EnterBmpsReq*/
3336
3337/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003338 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003339 request the device to get out of BMPS power state. Upon
3340 the call of this API the WLAN DAL will pack and send a
3341 HAL Exit BMPS request message to the lower RIVA
3342 sub-system if DAL is in state STARTED.
3343
3344 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003345 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003346
3347 WDI_PostAssocReq must have been called.
3348
Jeff Johnsone7245742012-09-05 17:12:55 -07003349 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003350 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003351
Jeff Johnson295189b2012-06-20 16:38:30 -07003352 wdiExitBmpsRspCb: callback for passing back the response
3353 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003354
Jeff Johnson295189b2012-06-20 16:38:30 -07003355 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003356 callback
3357
Jeff Johnson295189b2012-06-20 16:38:30 -07003358 @see WDI_PostAssocReq
3359 @return Result of the function call
3360*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003361WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003362WDI_ExitBmpsReq
3363(
3364 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3365 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3366 void* pUserData
3367)
3368{
3369 WDI_EventInfoType wdiEventData;
3370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3371
3372 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003373 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003374 ------------------------------------------------------------------------*/
3375 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3376 {
3377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3378 "WDI API call before module is initialized - Fail request");
3379
Jeff Johnsone7245742012-09-05 17:12:55 -07003380 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003381 }
3382
3383 /*------------------------------------------------------------------------
3384 Fill in Event data and post to the Main FSM
3385 ------------------------------------------------------------------------*/
3386 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003387 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3388 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3389 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003390 wdiEventData.pUserData = pUserData;
3391
3392 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3393
3394}/*WDI_ExitBmpsReq*/
3395
3396/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003397 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003398 request the device to get into UAPSD power state. Upon
3399 the call of this API the WLAN DAL will pack and send a
3400 HAL Enter UAPSD request message to the lower RIVA
3401 sub-system if DAL is in state STARTED.
3402
3403 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003404 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003405
3406 WDI_PostAssocReq must have been called.
3407 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003408
3409 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003411
Jeff Johnson295189b2012-06-20 16:38:30 -07003412 wdiEnterUapsdRspCb: callback for passing back the
3413 response of the Enter UAPSD operation received from the
3414 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003415
Jeff Johnson295189b2012-06-20 16:38:30 -07003416 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003417 callback
3418
Jeff Johnson295189b2012-06-20 16:38:30 -07003419 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3420 @return Result of the function call
3421*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003422WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003423WDI_EnterUapsdReq
3424(
3425 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3426 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3427 void* pUserData
3428)
3429{
3430 WDI_EventInfoType wdiEventData;
3431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3432
3433 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003434 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003435 ------------------------------------------------------------------------*/
3436 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3437 {
3438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3439 "WDI API call before module is initialized - Fail request");
3440
Jeff Johnsone7245742012-09-05 17:12:55 -07003441 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003442 }
3443
3444 /*------------------------------------------------------------------------
3445 Fill in Event data and post to the Main FSM
3446 ------------------------------------------------------------------------*/
3447 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003448 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3449 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3450 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003451 wdiEventData.pUserData = pUserData;
3452
3453 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3454
3455}/*WDI_EnterUapsdReq*/
3456
3457/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003458 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003459 request the device to get out of UAPSD power state. Upon
3460 the call of this API the WLAN DAL will send a HAL Exit
3461 UAPSD request message to the lower RIVA sub-system if
3462 DAL is in state STARTED.
3463
3464 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003465 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003466
3467 WDI_PostAssocReq must have been called.
3468
Jeff Johnsone7245742012-09-05 17:12:55 -07003469 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 response of the Exit UAPSD operation received from the
3471 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003472
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003474 callback
3475
Jeff Johnson295189b2012-06-20 16:38:30 -07003476 @see WDI_PostAssocReq
3477 @return Result of the function call
3478*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003479WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003480WDI_ExitUapsdReq
3481(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003482 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003483 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3484 void* pUserData
3485)
3486{
3487 WDI_EventInfoType wdiEventData;
3488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3489
3490 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 ------------------------------------------------------------------------*/
3493 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3494 {
3495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3496 "WDI API call before module is initialized - Fail request");
3497
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003499 }
3500
3501 /*------------------------------------------------------------------------
3502 Fill in Event data and post to the Main FSM
3503 ------------------------------------------------------------------------*/
3504 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003505 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3506 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003507 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003508 wdiEventData.pUserData = pUserData;
3509
3510 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3511
3512}/*WDI_ExitUapsdReq*/
3513
3514/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 MAC wants to set the UAPSD related configurations
3517 of an associated STA (while acting as an AP) to the WLAN
3518 Device. Upon the call of this API the WLAN DAL will pack
3519 and send a HAL Update UAPSD params request message to
3520 the lower RIVA sub-system if DAL is in state STARTED.
3521
3522 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003523 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003524
3525 WDI_ConfigBSSReq must have been called.
3526
Jeff Johnsone7245742012-09-05 17:12:55 -07003527 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003528 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003529
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 wdiUpdateUapsdParamsCb: callback for passing back the
3531 response of the update UAPSD params operation received
3532 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003533
Jeff Johnson295189b2012-06-20 16:38:30 -07003534 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003535 callback
3536
Jeff Johnson295189b2012-06-20 16:38:30 -07003537 @see WDI_ConfigBSSReq
3538 @return Result of the function call
3539*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003540WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003541WDI_UpdateUapsdParamsReq
3542(
3543 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3544 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3545 void* pUserData
3546)
3547{
3548 WDI_EventInfoType wdiEventData;
3549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3550
3551 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003552 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003553 ------------------------------------------------------------------------*/
3554 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3555 {
3556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3557 "WDI API call before module is initialized - Fail request");
3558
Jeff Johnsone7245742012-09-05 17:12:55 -07003559 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003560 }
3561
3562 /*------------------------------------------------------------------------
3563 Fill in Event data and post to the Main FSM
3564 ------------------------------------------------------------------------*/
3565 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003566 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003567 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003568 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003569 wdiEventData.pUserData = pUserData;
3570
3571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3572
3573}/*WDI_UpdateUapsdParamsReq*/
3574
3575/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003576 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003577 MAC wants to set the UAPSD related configurations before
3578 requesting for enter UAPSD power state to the WLAN
3579 Device. Upon the call of this API the WLAN DAL will pack
3580 and send a HAL Set UAPSD params request message to
3581 the lower RIVA sub-system if DAL is in state STARTED.
3582
3583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003585
3586 WDI_PostAssocReq must have been called.
3587
3588 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3589 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003590
Jeff Johnson295189b2012-06-20 16:38:30 -07003591 wdiSetUapsdAcParamsCb: callback for passing back the
3592 response of the set UAPSD params operation received from
3593 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003594
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003596 callback
3597
Jeff Johnson295189b2012-06-20 16:38:30 -07003598 @see WDI_PostAssocReq
3599 @return Result of the function call
3600*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003601WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003602WDI_SetUapsdAcParamsReq
3603(
3604 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3605 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3606 void* pUserData
3607)
3608{
3609 WDI_EventInfoType wdiEventData;
3610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3611
3612 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003613 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003614 ------------------------------------------------------------------------*/
3615 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3616 {
3617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3618 "WDI API call before module is initialized - Fail request");
3619
Jeff Johnsone7245742012-09-05 17:12:55 -07003620 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 }
3622
3623 /*------------------------------------------------------------------------
3624 Fill in Event data and post to the Main FSM
3625 ------------------------------------------------------------------------*/
3626 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003627 wdiEventData.pEventData = pwdiUapsdInfo;
3628 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3629 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 wdiEventData.pUserData = pUserData;
3631
3632 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3633
3634}/*WDI_SetUapsdAcParamsReq*/
3635
3636/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003637 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003638 MAC wants to set/reset the RXP filters for received pkts
3639 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3640 and send a HAL configure RXP filter request message to
3641 the lower RIVA sub-system.
3642
3643 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003645
Jeff Johnsone7245742012-09-05 17:12:55 -07003646
3647 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 filter as specified by the Device
3649 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003650
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 wdiConfigureRxpFilterCb: callback for passing back the
3652 response of the configure RXP filter operation received
3653 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003654
Jeff Johnson295189b2012-06-20 16:38:30 -07003655 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003656 callback
3657
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 @return Result of the function call
3659*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003660WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003661WDI_ConfigureRxpFilterReq
3662(
3663 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3664 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3665 void* pUserData
3666)
3667{
3668 WDI_EventInfoType wdiEventData;
3669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3670
3671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 ------------------------------------------------------------------------*/
3674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3675 {
3676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3677 "WDI API call before module is initialized - Fail request");
3678
Jeff Johnsone7245742012-09-05 17:12:55 -07003679 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003680 }
3681
3682 /*------------------------------------------------------------------------
3683 Fill in Event data and post to the Main FSM
3684 ------------------------------------------------------------------------*/
3685 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003686 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3687 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3688 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 wdiEventData.pUserData = pUserData;
3690
3691 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3692}/*WDI_ConfigureRxpFilterReq*/
3693
3694/**
3695 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3696 wants to set the beacon filters while in power save.
3697 Upon the call of this API the WLAN DAL will pack and
3698 send a Beacon filter request message to the
3699 lower RIVA sub-system.
3700
3701 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003702 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003703
Jeff Johnsone7245742012-09-05 17:12:55 -07003704
3705 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003706 filter as specified by the Device
3707 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003708
Jeff Johnson295189b2012-06-20 16:38:30 -07003709 wdiBeaconFilterCb: callback for passing back the
3710 response of the set beacon filter operation received
3711 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003712
Jeff Johnson295189b2012-06-20 16:38:30 -07003713 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003714 callback
3715
Jeff Johnson295189b2012-06-20 16:38:30 -07003716 @return Result of the function call
3717*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003718WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003719WDI_SetBeaconFilterReq
3720(
3721 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3722 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3723 void* pUserData
3724)
3725{
3726 WDI_EventInfoType wdiEventData;
3727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3728
3729 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003730 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003731 ------------------------------------------------------------------------*/
3732 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3733 {
3734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3735 "WDI API call before module is initialized - Fail request");
3736
Jeff Johnsone7245742012-09-05 17:12:55 -07003737 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003738 }
3739
3740 /*------------------------------------------------------------------------
3741 Fill in Event data and post to the Main FSM
3742 ------------------------------------------------------------------------*/
3743 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003744 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003745 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003747 wdiEventData.pUserData = pUserData;
3748
3749 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3750}/*WDI_SetBeaconFilterReq*/
3751
3752/**
3753 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3754 wants to remove the beacon filter for particular IE
3755 while in power save. Upon the call of this API the WLAN
3756 DAL will pack and send a remove Beacon filter request
3757 message to the lower RIVA sub-system.
3758
3759 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003760 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003761
Jeff Johnsone7245742012-09-05 17:12:55 -07003762
3763 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003764 filter as specified by the Device
3765 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003766
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 wdiBeaconFilterCb: callback for passing back the
3768 response of the remove beacon filter operation received
3769 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003770
Jeff Johnson295189b2012-06-20 16:38:30 -07003771 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003772 callback
3773
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 @return Result of the function call
3775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003777WDI_RemBeaconFilterReq
3778(
3779 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3780 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3781 void* pUserData
3782)
3783{
3784 WDI_EventInfoType wdiEventData;
3785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3786
3787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003789 ------------------------------------------------------------------------*/
3790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3791 {
3792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3793 "WDI API call before module is initialized - Fail request");
3794
Jeff Johnsone7245742012-09-05 17:12:55 -07003795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 }
3797
3798 /*------------------------------------------------------------------------
3799 Fill in Event data and post to the Main FSM
3800 ------------------------------------------------------------------------*/
3801 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003802 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003803 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003804 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003805 wdiEventData.pUserData = pUserData;
3806
3807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3808}/*WDI_RemBeaconFilterReq*/
3809
3810/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003811 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003812 MAC wants to set the RSSI thresholds related
3813 configurations while in power save. Upon the call of
3814 this API the WLAN DAL will pack and send a HAL Set RSSI
3815 thresholds request message to the lower RIVA
3816 sub-system if DAL is in state STARTED.
3817
3818 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003820
3821 WDI_PostAssocReq must have been called.
3822
3823 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3824 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826 wdiSetUapsdAcParamsCb: callback for passing back the
3827 response of the set UAPSD params operation received from
3828 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003829
Jeff Johnson295189b2012-06-20 16:38:30 -07003830 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003831 callback
3832
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 @see WDI_PostAssocReq
3834 @return Result of the function call
3835*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003836WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003837WDI_SetRSSIThresholdsReq
3838(
3839 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3840 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3841 void* pUserData
3842)
3843{
3844 WDI_EventInfoType wdiEventData;
3845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3846
3847 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003848 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003849 ------------------------------------------------------------------------*/
3850 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3851 {
3852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3853 "WDI API call before module is initialized - Fail request");
3854
Jeff Johnsone7245742012-09-05 17:12:55 -07003855 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003856 }
3857
3858 /*------------------------------------------------------------------------
3859 Fill in Event data and post to the Main FSM
3860 ------------------------------------------------------------------------*/
3861 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003862 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003863 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003864 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003865 wdiEventData.pUserData = pUserData;
3866
3867 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3868}/* WDI_SetRSSIThresholdsReq*/
3869
3870/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003871 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003872 wants to set the filter to minimize unnecessary host
3873 wakeup due to broadcast traffic while in power save.
3874 Upon the call of this API the WLAN DAL will pack and
3875 send a HAL host offload request message to the
3876 lower RIVA sub-system if DAL is in state STARTED.
3877
3878 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003880
3881 WDI_PostAssocReq must have been called.
3882
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 wdiHostOffloadCb: callback for passing back the response
3887 of the host offload operation received from the
3888 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003889
Jeff Johnson295189b2012-06-20 16:38:30 -07003890 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 callback
3892
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 @see WDI_PostAssocReq
3894 @return Result of the function call
3895*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003896WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003897WDI_HostOffloadReq
3898(
3899 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3900 WDI_HostOffloadCb wdiHostOffloadCb,
3901 void* pUserData
3902)
3903{
3904 WDI_EventInfoType wdiEventData;
3905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3906
3907 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003908 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003909 ------------------------------------------------------------------------*/
3910 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3911 {
3912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3913 "WDI API call before module is initialized - Fail request");
3914
Jeff Johnsone7245742012-09-05 17:12:55 -07003915 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003916 }
3917
3918 /*------------------------------------------------------------------------
3919 Fill in Event data and post to the Main FSM
3920 ------------------------------------------------------------------------*/
3921 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003922 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003923 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 wdiEventData.pUserData = pUserData;
3926
3927 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3928}/*WDI_HostOffloadReq*/
3929
3930/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003931 @brief WDI_KeepAliveReq will be called when the upper MAC
3932 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003933 and minimize unnecessary host wakeups due to while in power save.
3934 Upon the call of this API the WLAN DAL will pack and
3935 send a HAL Keep Alive request message to the
3936 lower RIVA sub-system if DAL is in state STARTED.
3937
3938 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003940
3941 WDI_PostAssocReq must have been called.
3942
Jeff Johnsone7245742012-09-05 17:12:55 -07003943 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003945
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 wdiKeepAliveCb: callback for passing back the response
3947 of the Keep Alive operation received from the
3948 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003949
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003951 callback
3952
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 @see WDI_PostAssocReq
3954 @return Result of the function call
3955*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003956WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003957WDI_KeepAliveReq
3958(
3959 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3960 WDI_KeepAliveCb wdiKeepAliveCb,
3961 void* pUserData
3962)
3963{
3964 WDI_EventInfoType wdiEventData;
3965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3966
3967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 ------------------------------------------------------------------------*/
3970 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3971 {
3972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3973 "WDI_KeepAliveReq: WDI API call before module "
3974 "is initialized - Fail request");
3975
Jeff Johnsone7245742012-09-05 17:12:55 -07003976 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003977 }
3978
3979 /*------------------------------------------------------------------------
3980 Fill in Event data and post to the Main FSM
3981 ------------------------------------------------------------------------*/
3982 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003983 wdiEventData.pEventData = pwdiKeepAliveParams;
3984 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
3985 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003986 wdiEventData.pUserData = pUserData;
3987
3988 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3989}/*WDI_KeepAliveReq*/
3990
3991/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003993 wants to set the Wowl Bcast ptrn to minimize unnecessary
3994 host wakeup due to broadcast traffic while in power
3995 save. Upon the call of this API the WLAN DAL will pack
3996 and send a HAL Wowl Bcast ptrn request message to the
3997 lower RIVA sub-system if DAL is in state STARTED.
3998
3999 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004000 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004001
4002 WDI_PostAssocReq must have been called.
4003
Jeff Johnsone7245742012-09-05 17:12:55 -07004004 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004006
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 wdiWowlAddBcPtrnCb: callback for passing back the
4008 response of the add Wowl bcast ptrn operation received
4009 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004010
Jeff Johnson295189b2012-06-20 16:38:30 -07004011 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004012 callback
4013
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 @see WDI_PostAssocReq
4015 @return Result of the function call
4016*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004017WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004018WDI_WowlAddBcPtrnReq
4019(
4020 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4021 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4022 void* pUserData
4023)
4024{
4025 WDI_EventInfoType wdiEventData;
4026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4027
4028 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004029 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004030 ------------------------------------------------------------------------*/
4031 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4032 {
4033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4034 "WDI API call before module is initialized - Fail request");
4035
Jeff Johnsone7245742012-09-05 17:12:55 -07004036 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004037 }
4038
4039 /*------------------------------------------------------------------------
4040 Fill in Event data and post to the Main FSM
4041 ------------------------------------------------------------------------*/
4042 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004043 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004044 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004045 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 wdiEventData.pUserData = pUserData;
4047
4048 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4049}/*WDI_WowlAddBcPtrnReq*/
4050
4051/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004053 wants to clear the Wowl Bcast ptrn. Upon the call of
4054 this API the WLAN DAL will pack and send a HAL delete
4055 Wowl Bcast ptrn request message to the lower RIVA
4056 sub-system if DAL is in state STARTED.
4057
4058 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004060
4061 WDI_WowlAddBcPtrnReq must have been called.
4062
Jeff Johnsone7245742012-09-05 17:12:55 -07004063 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004065
Jeff Johnson295189b2012-06-20 16:38:30 -07004066 wdiWowlDelBcPtrnCb: callback for passing back the
4067 response of the del Wowl bcast ptrn operation received
4068 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004069
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 callback
4072
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 @see WDI_WowlAddBcPtrnReq
4074 @return Result of the function call
4075*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004076WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004077WDI_WowlDelBcPtrnReq
4078(
4079 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4080 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4081 void* pUserData
4082)
4083{
4084 WDI_EventInfoType wdiEventData;
4085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4086
4087 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 ------------------------------------------------------------------------*/
4090 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4091 {
4092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4093 "WDI API call before module is initialized - Fail request");
4094
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 }
4097
4098 /*------------------------------------------------------------------------
4099 Fill in Event data and post to the Main FSM
4100 ------------------------------------------------------------------------*/
4101 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004103 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004104 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 wdiEventData.pUserData = pUserData;
4106
4107 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4108}/*WDI_WowlDelBcPtrnReq*/
4109
4110/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004111 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004112 wants to enter the Wowl state to minimize unnecessary
4113 host wakeup while in power save. Upon the call of this
4114 API the WLAN DAL will pack and send a HAL Wowl enter
4115 request message to the lower RIVA sub-system if DAL is
4116 in state STARTED.
4117
4118 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004120
4121 WDI_PostAssocReq must have been called.
4122
Jeff Johnsone7245742012-09-05 17:12:55 -07004123 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004125
Jeff Johnson295189b2012-06-20 16:38:30 -07004126 wdiWowlEnterReqCb: callback for passing back the
4127 response of the enter Wowl operation received from the
4128 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004129
Jeff Johnson295189b2012-06-20 16:38:30 -07004130 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004131 callback
4132
Jeff Johnson295189b2012-06-20 16:38:30 -07004133 @see WDI_PostAssocReq
4134 @return Result of the function call
4135*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004136WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004137WDI_WowlEnterReq
4138(
4139 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4140 WDI_WowlEnterReqCb wdiWowlEnterCb,
4141 void* pUserData
4142)
4143{
4144 WDI_EventInfoType wdiEventData;
4145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4146
4147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004148 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004149 ------------------------------------------------------------------------*/
4150 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4151 {
4152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4153 "WDI API call before module is initialized - Fail request");
4154
Jeff Johnsone7245742012-09-05 17:12:55 -07004155 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004156 }
4157
4158 /*------------------------------------------------------------------------
4159 Fill in Event data and post to the Main FSM
4160 ------------------------------------------------------------------------*/
4161 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004163 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004164 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004165 wdiEventData.pUserData = pUserData;
4166
4167 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4168}/*WDI_WowlEnterReq*/
4169
4170/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004171 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004172 wants to exit the Wowl state. Upon the call of this API
4173 the WLAN DAL will pack and send a HAL Wowl exit request
4174 message to the lower RIVA sub-system if DAL is in state
4175 STARTED.
4176
4177 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004178 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004179
4180 WDI_WowlEnterReq must have been called.
4181
Jeff Johnsone7245742012-09-05 17:12:55 -07004182 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004183 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004184
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 wdiWowlExitReqCb: callback for passing back the response
4186 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004187
Jeff Johnson295189b2012-06-20 16:38:30 -07004188 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004189 callback
4190
Jeff Johnson295189b2012-06-20 16:38:30 -07004191 @see WDI_WowlEnterReq
4192 @return Result of the function call
4193*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004194WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004195WDI_WowlExitReq
4196(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004197 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 WDI_WowlExitReqCb wdiWowlExitCb,
4199 void* pUserData
4200)
4201{
4202 WDI_EventInfoType wdiEventData;
4203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4204
4205 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 ------------------------------------------------------------------------*/
4208 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4209 {
4210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4211 "WDI API call before module is initialized - Fail request");
4212
Jeff Johnsone7245742012-09-05 17:12:55 -07004213 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004214 }
4215
4216 /*------------------------------------------------------------------------
4217 Fill in Event data and post to the Main FSM
4218 ------------------------------------------------------------------------*/
4219 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004220 wdiEventData.pEventData = pwdiWowlExitParams;
4221 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004222 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 wdiEventData.pUserData = pUserData;
4224
4225 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4226}/*WDI_WowlExitReq*/
4227
4228/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004229 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004230 the upper MAC wants to dynamically adjusts the listen
4231 interval based on the WLAN/MSM activity. Upon the call
4232 of this API the WLAN DAL will pack and send a HAL
4233 configure Apps Cpu Wakeup State request message to the
4234 lower RIVA sub-system.
4235
4236 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004237 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004238
Jeff Johnsone7245742012-09-05 17:12:55 -07004239
4240 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 Apps Cpu Wakeup State as specified by the
4242 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004243
Jeff Johnson295189b2012-06-20 16:38:30 -07004244 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4245 back the response of the configure Apps Cpu Wakeup State
4246 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004247
Jeff Johnson295189b2012-06-20 16:38:30 -07004248 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004249 callback
4250
Jeff Johnson295189b2012-06-20 16:38:30 -07004251 @return Result of the function call
4252*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004253WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004254WDI_ConfigureAppsCpuWakeupStateReq
4255(
4256 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4257 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4258 void* pUserData
4259)
4260{
4261 WDI_EventInfoType wdiEventData;
4262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4263
4264 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004265 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004266 ------------------------------------------------------------------------*/
4267 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4268 {
4269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4270 "WDI API call before module is initialized - Fail request");
4271
Jeff Johnsone7245742012-09-05 17:12:55 -07004272 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004273 }
4274
4275 /*------------------------------------------------------------------------
4276 Fill in Event data and post to the Main FSM
4277 ------------------------------------------------------------------------*/
4278 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004279 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4280 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4281 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004282 wdiEventData.pUserData = pUserData;
4283
4284 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4285}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4286/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004287 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004288 to to perform a flush operation on a given AC. Upon the
4289 call of this API the WLAN DAL will pack and send a HAL
4290 Flush AC request message to the lower RIVA sub-system if
4291 DAL is in state STARTED.
4292
4293 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004294 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004295
4296 WDI_AddBAReq must have been called.
4297
Jeff Johnsone7245742012-09-05 17:12:55 -07004298 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004299 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004300
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 wdiFlushAcRspCb: callback for passing back the response
4302 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004303
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004305 callback
4306
Jeff Johnson295189b2012-06-20 16:38:30 -07004307 @see WDI_AddBAReq
4308 @return Result of the function call
4309*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004311WDI_FlushAcReq
4312(
4313 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4314 WDI_FlushAcRspCb wdiFlushAcRspCb,
4315 void* pUserData
4316)
4317{
4318 WDI_EventInfoType wdiEventData;
4319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4320
4321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 ------------------------------------------------------------------------*/
4324 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4325 {
4326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4327 "WDI API call before module is initialized - Fail request");
4328
Jeff Johnsone7245742012-09-05 17:12:55 -07004329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004330 }
4331
4332 /*------------------------------------------------------------------------
4333 Fill in Event data and post to the Main FSM
4334 ------------------------------------------------------------------------*/
4335 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004336 wdiEventData.pEventData = pwdiFlushAcReqParams;
4337 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4338 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004339 wdiEventData.pUserData = pUserData;
4340
4341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4342
4343}/*WDI_FlushAcReq*/
4344
4345/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004346 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004347 wants to notify the lower mac on a BT AMP event. This is
4348 to inform BTC-SLM that some BT AMP event occurred. Upon
4349 the call of this API the WLAN DAL will pack and send a
4350 HAL BT AMP event request message to the lower RIVA
4351 sub-system if DAL is in state STARTED.
4352
4353 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004354 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004355
Jeff Johnsone7245742012-09-05 17:12:55 -07004356
4357 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004358 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004359
Jeff Johnson295189b2012-06-20 16:38:30 -07004360 wdiBtAmpEventRspCb: callback for passing back the
4361 response of the BT AMP event operation received from the
4362 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004363
Jeff Johnson295189b2012-06-20 16:38:30 -07004364 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004365 callback
4366
Jeff Johnson295189b2012-06-20 16:38:30 -07004367 @return Result of the function call
4368*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004369WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004370WDI_BtAmpEventReq
4371(
4372 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4373 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4374 void* pUserData
4375)
4376{
4377 WDI_EventInfoType wdiEventData;
4378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4379
4380 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004381 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004382 ------------------------------------------------------------------------*/
4383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4384 {
4385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4386 "WDI API call before module is initialized - Fail request");
4387
Jeff Johnsone7245742012-09-05 17:12:55 -07004388 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004389 }
4390
4391 /*------------------------------------------------------------------------
4392 Fill in Event data and post to the Main FSM
4393 ------------------------------------------------------------------------*/
4394 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004395 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4396 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4397 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004398 wdiEventData.pUserData = pUserData;
4399
4400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4401
4402}/*WDI_BtAmpEventReq*/
4403
Jeff Johnsone7245742012-09-05 17:12:55 -07004404#ifdef FEATURE_OEM_DATA_SUPPORT
4405/**
4406 @brief WDI_Start Oem Data Req will be called when the upper MAC
4407 wants to notify the lower mac on a oem data Req event.Upon
4408 the call of this API the WLAN DAL will pack and send a
4409 HAL OEM Data Req event request message to the lower RIVA
4410 sub-system if DAL is in state STARTED.
4411
4412 In state BUSY this request will be queued. Request won't
4413 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004414
4415
Jeff Johnsone7245742012-09-05 17:12:55 -07004416
4417 @param pwdiOemDataReqParams: the Oem Data Req as
4418 specified by the Device Interface
4419
4420 wdiStartOemDataRspCb: callback for passing back the
4421 response of the Oem Data Req received from the
4422 device
4423
4424 pUserData: user data will be passed back with the
4425 callback
4426
4427 @return Result of the function call
4428*/
4429WDI_Status
4430WDI_StartOemDataReq
4431(
4432 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4433 WDI_oemDataRspCb wdiOemDataRspCb,
4434 void* pUserData
4435)
4436{
4437 WDI_EventInfoType wdiEventData;
4438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4439
4440 /*------------------------------------------------------------------------
4441 Sanity Check
4442 ------------------------------------------------------------------------*/
4443 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4444 {
4445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4446 "WDI API call before module is initialized - Fail request");
4447
4448 return WDI_STATUS_E_NOT_ALLOWED;
4449 }
4450
4451 /*------------------------------------------------------------------------
4452 Fill in Event data and post to the Main FSM
4453 ------------------------------------------------------------------------*/
4454 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4455 wdiEventData.pEventData = pwdiOemDataReqParams;
4456 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4457 wdiEventData.pCBfnc = wdiOemDataRspCb;
4458 wdiEventData.pUserData = pUserData;
4459
4460 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4461
4462
4463}
4464
4465#endif
4466
4467
4468/*========================================================================
4469
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004471
Jeff Johnson295189b2012-06-20 16:38:30 -07004472==========================================================================*/
4473/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004474 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004475 the WLAN HW to change the current channel of operation.
4476 Upon the call of this API the WLAN DAL will pack and
4477 send a HAL Start request message to the lower RIVA
4478 sub-system if DAL is in state STARTED.
4479
4480 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004481 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004482
4483 WDI_Start must have been called.
4484
Jeff Johnsone7245742012-09-05 17:12:55 -07004485 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004486 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004487
Jeff Johnson295189b2012-06-20 16:38:30 -07004488 wdiSwitchChRspCb: callback for passing back the response
4489 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004490
Jeff Johnson295189b2012-06-20 16:38:30 -07004491 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004492 callback
4493
Jeff Johnson295189b2012-06-20 16:38:30 -07004494 @see WDI_Start
4495 @return Result of the function call
4496*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004497WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004498WDI_SwitchChReq
4499(
4500 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4501 WDI_SwitchChRspCb wdiSwitchChRspCb,
4502 void* pUserData
4503)
4504{
4505 WDI_EventInfoType wdiEventData;
4506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4507
4508 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004509 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004510 ------------------------------------------------------------------------*/
4511 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4512 {
4513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4514 "WDI API call before module is initialized - Fail request");
4515
Jeff Johnsone7245742012-09-05 17:12:55 -07004516 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004517 }
4518
4519 /*------------------------------------------------------------------------
4520 Fill in Event data and post to the Main FSM
4521 ------------------------------------------------------------------------*/
4522 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004523 wdiEventData.pEventData = pwdiSwitchChReqParams;
4524 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4525 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004526 wdiEventData.pUserData = pUserData;
4527
4528 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4529
4530}/*WDI_SwitchChReq*/
4531
4532
4533/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004534 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004535 wishes to add or update a STA in HW. Upon the call of
4536 this API the WLAN DAL will pack and send a HAL Start
4537 message request message to the lower RIVA sub-system if
4538 DAL is in state STARTED.
4539
4540 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004541 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004542
4543 WDI_Start must have been called.
4544
Jeff Johnsone7245742012-09-05 17:12:55 -07004545 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004546 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004547
Jeff Johnson295189b2012-06-20 16:38:30 -07004548 wdiConfigSTARspCb: callback for passing back the
4549 response of the config STA operation received from the
4550 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004551
Jeff Johnson295189b2012-06-20 16:38:30 -07004552 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004553 callback
4554
Jeff Johnson295189b2012-06-20 16:38:30 -07004555 @see WDI_Start
4556 @return Result of the function call
4557*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004558WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004559WDI_ConfigSTAReq
4560(
4561 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4562 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4563 void* pUserData
4564)
4565{
4566 WDI_EventInfoType wdiEventData;
4567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4568
4569 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004570 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004571 ------------------------------------------------------------------------*/
4572 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4573 {
4574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4575 "WDI API call before module is initialized - Fail request");
4576
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 }
4579
4580 /*------------------------------------------------------------------------
4581 Fill in Event data and post to the Main FSM
4582 ------------------------------------------------------------------------*/
4583 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4585 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4586 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004587 wdiEventData.pUserData = pUserData;
4588
4589 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4590
4591}/*WDI_ConfigSTAReq*/
4592
4593/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004594 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004595 wants to change the state of an ongoing link. Upon the
4596 call of this API the WLAN DAL will pack and send a HAL
4597 Start message request message to the lower RIVA
4598 sub-system if DAL is in state STARTED.
4599
4600 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004601 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004602
4603 WDI_JoinStartReq must have been called.
4604
Jeff Johnsone7245742012-09-05 17:12:55 -07004605 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004606 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004607
Jeff Johnson295189b2012-06-20 16:38:30 -07004608 wdiSetLinkStateRspCb: callback for passing back the
4609 response of the set link state operation received from
4610 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004611
Jeff Johnson295189b2012-06-20 16:38:30 -07004612 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004613 callback
4614
Jeff Johnson295189b2012-06-20 16:38:30 -07004615 @see WDI_JoinStartReq
4616 @return Result of the function call
4617*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004618WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004619WDI_SetLinkStateReq
4620(
4621 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4622 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4623 void* pUserData
4624)
4625{
4626 WDI_EventInfoType wdiEventData;
4627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4628
4629 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004630 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004631 ------------------------------------------------------------------------*/
4632 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4633 {
4634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4635 "WDI API call before module is initialized - Fail request");
4636
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 }
4639
4640 /*------------------------------------------------------------------------
4641 Fill in Event data and post to the Main FSM
4642 ------------------------------------------------------------------------*/
4643 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4645 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4646 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004647 wdiEventData.pUserData = pUserData;
4648
4649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4650
4651}/*WDI_SetLinkStateReq*/
4652
4653
4654/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004655 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004656 to get statistics (MIB counters) from the device. Upon
4657 the call of this API the WLAN DAL will pack and send a
4658 HAL Start request message to the lower RIVA sub-system
4659 if DAL is in state STARTED.
4660
4661 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004662 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004663
4664 WDI_Start must have been called.
4665
Jeff Johnsone7245742012-09-05 17:12:55 -07004666 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004667 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004668
Jeff Johnson295189b2012-06-20 16:38:30 -07004669 wdiGetStatsRspCb: callback for passing back the response
4670 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004671
Jeff Johnson295189b2012-06-20 16:38:30 -07004672 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004673 callback
4674
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 @see WDI_Start
4676 @return Result of the function call
4677*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004678WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004679WDI_GetStatsReq
4680(
4681 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4682 WDI_GetStatsRspCb wdiGetStatsRspCb,
4683 void* pUserData
4684)
4685{
4686 WDI_EventInfoType wdiEventData;
4687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4688
4689 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004690 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004691 ------------------------------------------------------------------------*/
4692 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4693 {
4694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4695 "WDI API call before module is initialized - Fail request");
4696
Jeff Johnsone7245742012-09-05 17:12:55 -07004697 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004698 }
4699
4700 /*------------------------------------------------------------------------
4701 Fill in Event data and post to the Main FSM
4702 ------------------------------------------------------------------------*/
4703 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004704 wdiEventData.pEventData = pwdiGetStatsReqParams;
4705 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4706 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004707 wdiEventData.pUserData = pUserData;
4708
4709 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4710
4711}/*WDI_GetStatsReq*/
4712
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004713#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4714/**
4715 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4716 to get roam rssi from the device. Upon
4717 the call of this API the WLAN DAL will pack and send a
4718 HAL Start request message to the lower RIVA sub-system
4719 if DAL is in state STARTED.
4720
4721 In state BUSY this request will be queued. Request won't
4722 be allowed in any other state.
4723
4724 WDI_Start must have been called.
4725
4726 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4727 specified by the Device Interface
4728
4729 wdiGetRoamRssiRspCb: callback for passing back the response
4730 of the get stats operation received from the device
4731
4732 pUserData: user data will be passed back with the
4733 callback
4734
4735 @see WDI_Start
4736 @return Result of the function call
4737*/
4738WDI_Status
4739WDI_GetRoamRssiReq
4740(
4741 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4742 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4743 void* pUserData
4744)
4745{
4746 WDI_EventInfoType wdiEventData;
4747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4748
4749 /*------------------------------------------------------------------------
4750 Sanity Check
4751 ------------------------------------------------------------------------*/
4752 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4753 {
4754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4755 "WDI API call before module is initialized - Fail request");
4756
4757 return WDI_STATUS_E_NOT_ALLOWED;
4758 }
4759 /*------------------------------------------------------------------------
4760 Fill in Event data and post to the Main FSM
4761 ------------------------------------------------------------------------*/
4762 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4763 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4764 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4765 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4766 wdiEventData.pUserData = pUserData;
4767
4768 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4769
4770}/*WDI_GetRoamRssiReq*/
4771#endif
4772
Jeff Johnson295189b2012-06-20 16:38:30 -07004773
4774/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004775 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004776 it wishes to change the configuration of the WLAN
4777 Device. Upon the call of this API the WLAN DAL will pack
4778 and send a HAL Update CFG request message to the lower
4779 RIVA sub-system if DAL is in state STARTED.
4780
4781 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004782 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004783
4784 WDI_Start must have been called.
4785
Jeff Johnsone7245742012-09-05 17:12:55 -07004786 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004787 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004788
Jeff Johnson295189b2012-06-20 16:38:30 -07004789 wdiUpdateCfgsRspCb: callback for passing back the
4790 response of the update cfg operation received from the
4791 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004792
Jeff Johnson295189b2012-06-20 16:38:30 -07004793 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004794 callback
4795
Jeff Johnson295189b2012-06-20 16:38:30 -07004796 @see WDI_Start
4797 @return Result of the function call
4798*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004799WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004800WDI_UpdateCfgReq
4801(
4802 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4803 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4804 void* pUserData
4805)
4806{
4807 WDI_EventInfoType wdiEventData;
4808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4809
4810 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004811 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004812 ------------------------------------------------------------------------*/
4813 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4814 {
4815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4816 "WDI API call before module is initialized - Fail request");
4817
Jeff Johnsone7245742012-09-05 17:12:55 -07004818 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004819 }
4820
4821 /*------------------------------------------------------------------------
4822 Fill in Event data and post to the Main FSM
4823 ------------------------------------------------------------------------*/
4824 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004825 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4826 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4827 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004828 wdiEventData.pUserData = pUserData;
4829
4830 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4831
4832}/*WDI_UpdateCfgReq*/
4833
4834
4835
4836/**
4837 @brief WDI_AddBAReq will be called when the upper MAC has setup
4838 successfully a BA session and needs to notify the HW for
4839 the appropriate settings to take place. Upon the call of
4840 this API the WLAN DAL will pack and send a HAL Add BA
4841 request message to the lower RIVA sub-system if DAL is
4842 in state STARTED.
4843
4844 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004845 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004846
4847 WDI_PostAssocReq must have been called.
4848
4849 @param wdiAddBAReqParams: the add BA parameters as specified by
4850 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004851
Jeff Johnson295189b2012-06-20 16:38:30 -07004852 wdiAddBARspCb: callback for passing back the response of
4853 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004854
Jeff Johnson295189b2012-06-20 16:38:30 -07004855 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004856 callback
4857
Jeff Johnson295189b2012-06-20 16:38:30 -07004858 @see WDI_PostAssocReq
4859 @return Result of the function call
4860*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004861WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004862WDI_AddBAReq
4863(
4864 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4865 WDI_AddBARspCb wdiAddBARspCb,
4866 void* pUserData
4867)
4868{
4869 WDI_EventInfoType wdiEventData;
4870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4871
4872 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004873 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004874 ------------------------------------------------------------------------*/
4875 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4876 {
4877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4878 "WDI API call before module is initialized - Fail request");
4879
Jeff Johnsone7245742012-09-05 17:12:55 -07004880 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004881 }
4882
4883 /*------------------------------------------------------------------------
4884 Fill in Event data and post to the Main FSM
4885 ------------------------------------------------------------------------*/
4886 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004887 wdiEventData.pEventData = pwdiAddBAReqParams;
4888 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4889 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004890 wdiEventData.pUserData = pUserData;
4891
4892 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4893
4894}/*WDI_AddBAReq*/
4895
4896
4897/**
4898 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4899 successfully a BA session and needs to notify the HW for
4900 the appropriate settings to take place. Upon the call of
4901 this API the WLAN DAL will pack and send a HAL Add BA
4902 request message to the lower RIVA sub-system if DAL is
4903 in state STARTED.
4904
4905 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004906 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004907
4908 WDI_PostAssocReq must have been called.
4909
4910 @param wdiAddBAReqParams: the add BA parameters as specified by
4911 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004912
Jeff Johnson295189b2012-06-20 16:38:30 -07004913 wdiAddBARspCb: callback for passing back the response of
4914 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004915
Jeff Johnson295189b2012-06-20 16:38:30 -07004916 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004917 callback
4918
Jeff Johnson295189b2012-06-20 16:38:30 -07004919 @see WDI_PostAssocReq
4920 @return Result of the function call
4921*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004922WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004923WDI_TriggerBAReq
4924(
4925 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4926 WDI_TriggerBARspCb wdiTriggerBARspCb,
4927 void* pUserData
4928)
4929{
4930 WDI_EventInfoType wdiEventData;
4931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4932
4933 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004934 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004935 ------------------------------------------------------------------------*/
4936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4937 {
4938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4939 "WDI API call before module is initialized - Fail request");
4940
Jeff Johnsone7245742012-09-05 17:12:55 -07004941 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004942 }
4943
4944 /*------------------------------------------------------------------------
4945 Fill in Event data and post to the Main FSM
4946 ------------------------------------------------------------------------*/
4947 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004948 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4949 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4950 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004951 wdiEventData.pUserData = pUserData;
4952
4953 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4954
4955}/*WDI_AddBAReq*/
4956
4957/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004958 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004959 wishes to update any of the Beacon parameters used by HW.
4960 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4961 message to the lower RIVA sub-system if DAL is in state
4962 STARTED.
4963
4964 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004965 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004966
4967 WDI_PostAssocReq must have been called.
4968
Jeff Johnsone7245742012-09-05 17:12:55 -07004969 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004970 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004971
Jeff Johnson295189b2012-06-20 16:38:30 -07004972 wdiUpdateBeaconParamsRspCb: callback for passing back the
4973 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004974
Jeff Johnson295189b2012-06-20 16:38:30 -07004975 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004976 callback
4977
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 @see WDI_PostAssocReq
4979 @return Result of the function call
4980*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004981WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004982WDI_UpdateBeaconParamsReq
4983(
4984 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
4985 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
4986 void* pUserData
4987)
4988{
4989 WDI_EventInfoType wdiEventData;
4990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4991
4992 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004993 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004994 ------------------------------------------------------------------------*/
4995 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4996 {
4997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4998 "WDI API call before module is initialized - Fail request");
4999
Jeff Johnsone7245742012-09-05 17:12:55 -07005000 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005001 }
5002
5003 /*------------------------------------------------------------------------
5004 Fill in Event data and post to the Main FSM
5005 ------------------------------------------------------------------------*/
5006 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005007 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5008 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5009 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005010 wdiEventData.pUserData = pUserData;
5011
5012 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5013
5014}/*WDI_UpdateBeaconParamsReq*/
5015
5016/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005017 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005018 wishes to update the Beacon template used by HW.
5019 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5020 message to the lower RIVA sub-system if DAL is in state
5021 STARTED.
5022
5023 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005024 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005025
5026 WDI_PostAssocReq must have been called.
5027
Jeff Johnsone7245742012-09-05 17:12:55 -07005028 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005029 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005030
Jeff Johnson295189b2012-06-20 16:38:30 -07005031 wdiSendBeaconParamsRspCb: callback for passing back the
5032 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005033
Jeff Johnson295189b2012-06-20 16:38:30 -07005034 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005035 callback
5036
Jeff Johnson295189b2012-06-20 16:38:30 -07005037 @see WDI_PostAssocReq
5038 @return Result of the function call
5039*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005040WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005041WDI_SendBeaconParamsReq
5042(
5043 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5044 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5045 void* pUserData
5046)
5047{
5048 WDI_EventInfoType wdiEventData;
5049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5050
5051 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005052 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005053 ------------------------------------------------------------------------*/
5054 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5055 {
5056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5057 "WDI API call before module is initialized - Fail request");
5058
Jeff Johnsone7245742012-09-05 17:12:55 -07005059 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005060 }
5061
5062 /*------------------------------------------------------------------------
5063 Fill in Event data and post to the Main FSM
5064 ------------------------------------------------------------------------*/
5065 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005066 wdiEventData.pEventData = pwdiSendBeaconParams;
5067 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5068 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005069 wdiEventData.pUserData = pUserData;
5070
5071 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5072
5073}/*WDI_SendBeaconParamsReq*/
5074
5075/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005076 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005077 upper MAC wants to update the probe response template to
5078 be transmitted as Soft AP
5079 Upon the call of this API the WLAN DAL will
5080 pack and send the probe rsp template message to the
5081 lower RIVA sub-system if DAL is in state STARTED.
5082
5083 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005085
5086
Jeff Johnsone7245742012-09-05 17:12:55 -07005087 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005088 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005089
Jeff Johnson295189b2012-06-20 16:38:30 -07005090 wdiSendBeaconParamsRspCb: callback for passing back the
5091 response of the Send Beacon Params operation received
5092 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005093
Jeff Johnson295189b2012-06-20 16:38:30 -07005094 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005095 callback
5096
Jeff Johnson295189b2012-06-20 16:38:30 -07005097 @see WDI_AddBAReq
5098 @return Result of the function call
5099*/
5100
Jeff Johnsone7245742012-09-05 17:12:55 -07005101WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005102WDI_UpdateProbeRspTemplateReq
5103(
5104 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5105 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5106 void* pUserData
5107)
5108{
5109 WDI_EventInfoType wdiEventData;
5110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5111
5112 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005113 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005114 ------------------------------------------------------------------------*/
5115 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5116 {
5117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5118 "WDI API call before module is initialized - Fail request");
5119
Jeff Johnsone7245742012-09-05 17:12:55 -07005120 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005121 }
5122
5123 /*------------------------------------------------------------------------
5124 Fill in Event data and post to the Main FSM
5125 ------------------------------------------------------------------------*/
5126 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005127 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5128 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5129 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005130 wdiEventData.pUserData = pUserData;
5131
5132 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5133
5134}/*WDI_UpdateProbeRspTemplateReq*/
5135
5136/**
5137 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5138 to the NV memory.
5139
5140
5141 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5142 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005143
Jeff Johnson295189b2012-06-20 16:38:30 -07005144 wdiNvDownloadRspCb: callback for passing back the response of
5145 the NV Download 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_NvDownloadReq
5155(
5156 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5157 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5158 void* pUserData
5159)
5160{
5161 WDI_EventInfoType wdiEventData;
5162
5163 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005164 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005165 ------------------------------------------------------------------------*/
5166 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5167 {
5168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5169 "WDI API call before module is initialized - Fail request");
5170
Jeff Johnsone7245742012-09-05 17:12:55 -07005171 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 }
5173
5174 /*------------------------------------------------------------------------
5175 Fill in Event data and post to the Main FSM
5176 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005177 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5178 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5179 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5180 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005181 wdiEventData.pUserData = pUserData;
5182
5183 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5184
5185}/*WDI_NVDownloadReq*/
5186
Jeff Johnson295189b2012-06-20 16:38:30 -07005187/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005188 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005189 upper MAC wants to send Notice of Absence
5190 Upon the call of this API the WLAN DAL will
5191 pack and send the probe rsp template message to the
5192 lower RIVA sub-system if DAL is in state STARTED.
5193
5194 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005195 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005196
5197
Jeff Johnsone7245742012-09-05 17:12:55 -07005198 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005199 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005200
Jeff Johnson295189b2012-06-20 16:38:30 -07005201 wdiSendBeaconParamsRspCb: callback for passing back the
5202 response of the Send Beacon Params operation received
5203 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005204
Jeff Johnson295189b2012-06-20 16:38:30 -07005205 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005206 callback
5207
Jeff Johnson295189b2012-06-20 16:38:30 -07005208 @see WDI_AddBAReq
5209 @return Result of the function call
5210*/
5211WDI_Status
5212WDI_SetP2PGONOAReq
5213(
5214 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5215 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5216 void* pUserData
5217)
5218{
5219 WDI_EventInfoType wdiEventData;
5220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5221
5222 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005223 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 ------------------------------------------------------------------------*/
5225 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5226 {
5227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5228 "WDI API call before module is initialized - Fail request");
5229
Jeff Johnsone7245742012-09-05 17:12:55 -07005230 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005231 }
5232
5233 /*------------------------------------------------------------------------
5234 Fill in Event data and post to the Main FSM
5235 ------------------------------------------------------------------------*/
5236 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005237 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5238 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5239 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005240 wdiEventData.pUserData = pUserData;
5241
5242 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5243
5244}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005245
5246/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005247 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005248 UMAC wanted to add STA self while opening any new session
5249 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005250 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005251
5252
Jeff Johnsone7245742012-09-05 17:12:55 -07005253 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005254 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005255
Jeff Johnson295189b2012-06-20 16:38:30 -07005256 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005257 callback
5258
5259 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005260 @return Result of the function call
5261*/
5262WDI_Status
5263WDI_AddSTASelfReq
5264(
5265 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5266 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5267 void* pUserData
5268)
5269{
5270 WDI_EventInfoType wdiEventData;
5271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5272
5273 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005274 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005275 ------------------------------------------------------------------------*/
5276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5277 {
5278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5279 "WDI API call before module is initialized - Fail request");
5280
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 }
5283
5284 /*------------------------------------------------------------------------
5285 Fill in Event data and post to the Main FSM
5286 ------------------------------------------------------------------------*/
5287 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005288 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5289 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5290 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005291 wdiEventData.pUserData = pUserData;
5292
5293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5294
5295}/*WDI_AddSTASelfReq*/
5296
5297
Jeff Johnsone7245742012-09-05 17:12:55 -07005298#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005299/**
5300 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5301 the device of a successful add TSpec negotiation. HW
5302 needs to receive the TSpec Info from the UMAC in order
5303 to configure properly the QoS data traffic. Upon the
5304 call of this API the WLAN DAL will pack and send a HAL
5305 Add TS request message to the lower RIVA sub-system if
5306 DAL is in state STARTED.
5307
5308 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005309 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005310
5311 WDI_PostAssocReq must have been called.
5312
5313 @param wdiAddTsReqParams: the add TS parameters as specified by
5314 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005315
Jeff Johnson295189b2012-06-20 16:38:30 -07005316 wdiAddTsRspCb: callback for passing back the response of
5317 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005318
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005320 callback
5321
Jeff Johnson295189b2012-06-20 16:38:30 -07005322 @see WDI_PostAssocReq
5323 @return Result of the function call
5324*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005325WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005326WDI_AggrAddTSReq
5327(
5328 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5329 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5330 void* pUserData
5331)
5332{
5333 WDI_EventInfoType wdiEventData;
5334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5335
5336 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005337 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005338 ------------------------------------------------------------------------*/
5339 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5340 {
5341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5342 "WDI API call before module is initialized - Fail request");
5343
Jeff Johnsone7245742012-09-05 17:12:55 -07005344 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 }
5346
5347 /*------------------------------------------------------------------------
5348 Fill in Event data and post to the Main FSM
5349 ------------------------------------------------------------------------*/
5350 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5352 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5353 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005354 wdiEventData.pUserData = pUserData;
5355
5356 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5357
5358}/*WDI_AggrAddTSReq*/
5359
5360#endif /* WLAN_FEATURE_VOWIFI_11R */
5361
Jeff Johnson295189b2012-06-20 16:38:30 -07005362/**
5363 @brief WDI_FTMCommandReq
5364 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005365
5366 @param ftmCommandReq: FTM Command Body
5367 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005368 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005369
Jeff Johnson295189b2012-06-20 16:38:30 -07005370 @see
5371 @return Result of the function call
5372*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005373WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005374WDI_FTMCommandReq
5375(
5376 WDI_FTMCommandReqType *ftmCommandReq,
5377 WDI_FTMCommandRspCb ftmCommandRspCb,
5378 void *pUserData
5379)
5380{
5381 WDI_EventInfoType wdiEventData;
5382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5383
5384 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005385 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005386 ------------------------------------------------------------------------*/
5387 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5388 {
5389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5390 "WDI API call before module is initialized - Fail request");
5391
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 }
5394
5395 /*------------------------------------------------------------------------
5396 Fill in Event data and post to the Main FSM
5397 ------------------------------------------------------------------------*/
5398 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5399 wdiEventData.pEventData = (void *)ftmCommandReq;
5400 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5401 wdiEventData.pCBfnc = ftmCommandRspCb;
5402 wdiEventData.pUserData = pUserData;
5403
5404 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5405}
Jeff Johnson295189b2012-06-20 16:38:30 -07005406/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005407 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005408
5409 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005410 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005411
5412
5413 @param pwdiResumeReqParams: as specified by
5414 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005415
Jeff Johnson295189b2012-06-20 16:38:30 -07005416 wdiResumeReqRspCb: callback for passing back the response of
5417 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005418
Jeff Johnson295189b2012-06-20 16:38:30 -07005419 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005420 callback
5421
5422 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005423 @return Result of the function call
5424*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005425WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005426WDI_HostResumeReq
5427(
5428 WDI_ResumeParamsType* pwdiResumeReqParams,
5429 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5430 void* pUserData
5431)
5432{
5433 WDI_EventInfoType wdiEventData;
5434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5435
5436 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005437 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005438 ------------------------------------------------------------------------*/
5439 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5440 {
5441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5442 "WDI API call before module is initialized - Fail request");
5443
Jeff Johnsone7245742012-09-05 17:12:55 -07005444 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005445 }
5446
5447 /*------------------------------------------------------------------------
5448 Fill in Event data and post to the Main FSM
5449 ------------------------------------------------------------------------*/
5450 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005451 wdiEventData.pEventData = pwdiResumeReqParams;
5452 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5453 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005454 wdiEventData.pUserData = pUserData;
5455
5456 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5457
5458}/*WDI_HostResumeReq*/
5459
5460/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005462
5463 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005464 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005465
5466
5467 @param pwdiDelStaSelfReqParams: as specified by
5468 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005469
Jeff Johnson295189b2012-06-20 16:38:30 -07005470 wdiDelStaSelfRspCb: callback for passing back the response of
5471 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005472
Jeff Johnson295189b2012-06-20 16:38:30 -07005473 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005474 callback
5475
Jeff Johnson295189b2012-06-20 16:38:30 -07005476 @see WDI_PostAssocReq
5477 @return Result of the function call
5478*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005479WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005480WDI_DelSTASelfReq
5481(
5482 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5483 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5484 void* pUserData
5485)
5486{
5487 WDI_EventInfoType wdiEventData;
5488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5489
5490 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005491 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005492 ------------------------------------------------------------------------*/
5493 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5494 {
5495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5496 "WDI API call before module is initialized - Fail request");
5497
Jeff Johnsone7245742012-09-05 17:12:55 -07005498 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005499 }
5500
5501 /*------------------------------------------------------------------------
5502 Fill in Event data and post to the Main FSM
5503 ------------------------------------------------------------------------*/
5504 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005505 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5506 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5507 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005508 wdiEventData.pUserData = pUserData;
5509
5510 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5511
5512}/*WDI_AggrAddTSReq*/
5513
5514/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005515 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5516 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005517 Upon the call of this API the WLAN DAL will pack
5518 and send a HAL Set Tx Per Tracking request message to the
5519 lower RIVA sub-system if DAL is in state STARTED.
5520
5521 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005522 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005523
Jeff Johnsone7245742012-09-05 17:12:55 -07005524 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005525 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005526
Jeff Johnson295189b2012-06-20 16:38:30 -07005527 pwdiSetTxPerTrackingRspCb: callback for passing back the
5528 response of the set Tx PER Tracking configurations operation received
5529 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005530
Jeff Johnson295189b2012-06-20 16:38:30 -07005531 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005532 callback
5533
Jeff Johnson295189b2012-06-20 16:38:30 -07005534 @return Result of the function call
5535*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005537WDI_SetTxPerTrackingReq
5538(
5539 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5540 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5541 void* pUserData
5542)
5543{
5544 WDI_EventInfoType wdiEventData;
5545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5546
5547 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005548 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005549 ------------------------------------------------------------------------*/
5550 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5551 {
5552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5553 "WDI API call before module is initialized - Fail request");
5554
Jeff Johnsone7245742012-09-05 17:12:55 -07005555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005556 }
5557
5558 /*------------------------------------------------------------------------
5559 Fill in Event data and post to the Main FSM
5560 ------------------------------------------------------------------------*/
5561 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005562 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005563 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005564 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005565 wdiEventData.pUserData = pUserData;
5566
5567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5568
5569}/*WDI_SetTxPerTrackingReq*/
5570
5571/**
5572 @brief WDI_SetTmLevelReq
5573 If HW Thermal condition changed, driver should react based on new
5574 HW thermal condition.
5575
5576 @param pwdiSetTmLevelReq: New thermal condition information
5577
5578 pwdiSetTmLevelRspCb: callback
5579
5580 usrData: user data will be passed back with the
5581 callback
5582
5583 @return Result of the function call
5584*/
5585WDI_Status
5586WDI_SetTmLevelReq
5587(
5588 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5589 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5590 void *usrData
5591)
5592{
5593 WDI_EventInfoType wdiEventData;
5594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5595
5596 /*------------------------------------------------------------------------
5597 Sanity Check
5598 ------------------------------------------------------------------------*/
5599 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5600 {
5601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5602 "WDI API call before module is initialized - Fail request");
5603
5604 return WDI_STATUS_E_NOT_ALLOWED;
5605 }
5606
5607 /*------------------------------------------------------------------------
5608 Fill in Event data and post to the Main FSM
5609 ------------------------------------------------------------------------*/
5610 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5611 wdiEventData.pEventData = pwdiSetTmLevelReq;
5612 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5613 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5614 wdiEventData.pUserData = usrData;
5615
5616 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5617}
5618
5619/**
5620 @brief WDI_HostSuspendInd
5621
5622 Suspend Indication from the upper layer will be sent
5623 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005624
Jeff Johnson295189b2012-06-20 16:38:30 -07005625 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005626
5627 @see
5628
Jeff Johnson295189b2012-06-20 16:38:30 -07005629 @return Status of the request
5630*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005631WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005632WDI_HostSuspendInd
5633(
5634 WDI_SuspendParamsType* pwdiSuspendIndParams
5635)
5636{
5637
5638 WDI_EventInfoType wdiEventData;
5639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5640
5641 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005642 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005643 ------------------------------------------------------------------------*/
5644 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5645 {
5646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5647 "WDI API call before module is initialized - Fail request");
5648
Jeff Johnsone7245742012-09-05 17:12:55 -07005649 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005650 }
5651
5652 /*------------------------------------------------------------------------
5653 Fill in Event data and post to the Main FSM
5654 ------------------------------------------------------------------------*/
5655 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005656 wdiEventData.pEventData = pwdiSuspendIndParams;
5657 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5658 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 wdiEventData.pUserData = NULL;
5660
5661 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5662
5663}/*WDI_HostSuspendInd*/
5664
5665/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005666 @brief WDI_TrafficStatsInd
5667 Traffic Stats from the upper layer will be sent
5668 down to HAL
5669
5670 @param WDI_TrafficStatsIndType
5671
5672 @see
5673
5674 @return Status of the request
5675*/
5676WDI_Status
5677WDI_TrafficStatsInd
5678(
5679 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5680)
5681{
5682
5683 WDI_EventInfoType wdiEventData;
5684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5685
5686 /*------------------------------------------------------------------------
5687 Sanity Check
5688 ------------------------------------------------------------------------*/
5689 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5690 {
5691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5692 "WDI API call before module is initialized - Fail request");
5693
5694 return WDI_STATUS_E_NOT_ALLOWED;
5695 }
5696
5697 /*------------------------------------------------------------------------
5698 Fill in Event data and post to the Main FSM
5699 ------------------------------------------------------------------------*/
5700 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5701 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5702 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5703 wdiEventData.pCBfnc = NULL;
5704 wdiEventData.pUserData = NULL;
5705
5706 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5707
5708}/*WDI_TrafficStatsInd*/
5709
5710/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 @brief WDI_HALDumpCmdReq
5712 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005713
5714 @param halDumpCmdReqParams: Hal Dump Command Body
5715 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005716 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005717
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 @see
5719 @return Result of the function call
5720*/
5721WDI_Status WDI_HALDumpCmdReq
5722(
5723 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5724 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5725 void *pUserData
5726)
5727{
5728 WDI_EventInfoType wdiEventData;
5729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5730
5731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005733 ------------------------------------------------------------------------*/
5734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5735 {
5736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5737 "WDI API call before module is initialized - Fail request");
5738
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 }
5741
5742 /*------------------------------------------------------------------------
5743 Fill in Event data and post to the Main FSM
5744 ------------------------------------------------------------------------*/
5745 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5746 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5747 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5748 wdiEventData.pCBfnc = halDumpCmdRspCb;
5749 wdiEventData.pUserData = pUserData;
5750
5751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5752}
5753
Jeff Johnsone7245742012-09-05 17:12:55 -07005754/*============================================================================
5755
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005757
Jeff Johnson295189b2012-06-20 16:38:30 -07005758 ============================================================================*/
5759
5760/**
5761 @brief Main FSM Start function for all states except BUSY
5762
Jeff Johnsone7245742012-09-05 17:12:55 -07005763
5764 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 wdiEV: event posted to the main DAL FSM
5766 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005767 structure
5768
Jeff Johnson295189b2012-06-20 16:38:30 -07005769 @see
5770 @return Result of the function call
5771*/
5772WDI_Status
5773WDI_PostMainEvent
5774(
Jeff Johnsone7245742012-09-05 17:12:55 -07005775 WDI_ControlBlockType* pWDICtx,
5776 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005777 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005778
Jeff Johnson295189b2012-06-20 16:38:30 -07005779)
5780{
Jeff Johnsone7245742012-09-05 17:12:55 -07005781 WDI_Status wdiStatus;
5782 WDI_MainFuncType pfnWDIMainEvHdlr;
5783 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5785
5786 /*-------------------------------------------------------------------------
5787 Sanity check
5788 -------------------------------------------------------------------------*/
5789 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5790 ( wdiEV >= WDI_MAX_EVENT ))
5791 {
5792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5793 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5794 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005796 }
5797
5798 /*Access to the global state must be locked */
5799 wpalMutexAcquire(&pWDICtx->wptMutex);
5800
5801 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005802 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005803
5804 wdiOldState = pWDICtx->uGlobalState;
5805
5806 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005807 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5808 response comes from CCPU for the request sent by host:
5809 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 -07005810 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 -07005811 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005812 CCPU:
5813 don't change the state */
5814 if ( WDI_RESPONSE_EVENT != wdiEV)
5815 {
5816 /*Transition to BUSY State - the request is now being processed by the FSM,
5817 if the request fails we shall transition back to the old state, if not
5818 the request will manage its own state transition*/
5819 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5820 }
5821 /* If the state function associated with the EV is NULL it means that this
5822 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005823 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 {
5825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005826 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005828 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005829 }
5830 else
5831 {
5832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005833 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005834 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005835 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005836 }
5837
5838 /* If a request handles itself well it will end up in a success or in a
5839 pending
5840 Success - means that the request was processed and the proper state
5841 transition already occurred or will occur when the resp is received
5842 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005843
Jeff Johnson295189b2012-06-20 16:38:30 -07005844 Pending - means the request could not be processed at this moment in time
5845 because the FSM was already busy so no state transition or dequeueing
5846 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005847
Jeff Johnson295189b2012-06-20 16:38:30 -07005848 Success for synchronous case means that the transition may occur and
5849 processing of pending requests may continue - so it should go through
5850 and restores the state and continue processing queued requests*/
5851 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5852 ( WDI_STATUS_PENDING != wdiStatus ))
5853 {
5854 if ( WDI_RESPONSE_EVENT != wdiEV)
5855 {
5856 /*The request has failed or could not be processed - transition back to
5857 the old state - check to see if anything was queued and try to execute
5858 The dequeue logic should post a message to a thread and return - no
5859 actual processing can occur */
5860 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5861 }
5862 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005863
Jeff Johnson295189b2012-06-20 16:38:30 -07005864 }
5865
5866 /* we have completed processing the event */
5867 wpalMutexRelease(&pWDICtx->wptMutex);
5868
Jeff Johnsone7245742012-09-05 17:12:55 -07005869 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005870
5871}/*WDI_PostMainEvent*/
5872
5873
5874/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005875 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005876--------------------------------------------------------------------------*/
5877/**
5878 @brief Main FSM Start function for all states except BUSY
5879
Jeff Johnsone7245742012-09-05 17:12:55 -07005880
5881 @param pWDICtx: pointer to the WLAN DAL context
5882 pEventData: pointer to the event information structure
5883
Jeff Johnson295189b2012-06-20 16:38:30 -07005884 @see
5885 @return Result of the function call
5886*/
5887WDI_Status
5888WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005889(
Jeff Johnson295189b2012-06-20 16:38:30 -07005890 WDI_ControlBlockType* pWDICtx,
5891 WDI_EventInfoType* pEventData
5892)
5893{
5894
5895 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005896 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005897 ----------------------------------------------------------------------*/
5898 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5899 {
5900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005901 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005902 pWDICtx, pEventData);
5903 return WDI_STATUS_E_FAILURE;
5904 }
5905
5906 wpalMutexAcquire(&pWDICtx->wptMutex);
5907
5908 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005909 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005910 ----------------------------------------------------------------------*/
5911 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5912 {
5913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5914 "Control Transport not yet Open - queueing the request");
5915
5916 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005917 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005918
5919 wpalMutexRelease(&pWDICtx->wptMutex);
5920 return WDI_STATUS_PENDING;
5921 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005922
Jeff Johnson295189b2012-06-20 16:38:30 -07005923 wpalMutexRelease(&pWDICtx->wptMutex);
5924
5925 /*Return Success*/
5926 return WDI_ProcessRequest( pWDICtx, pEventData );
5927
5928}/*WDI_MainStart*/
5929
5930/**
5931 @brief Main FSM Response function for state INIT
5932
Jeff Johnsone7245742012-09-05 17:12:55 -07005933
5934 @param pWDICtx: pointer to the WLAN DAL context
5935 pEventData: pointer to the event information structure
5936
Jeff Johnson295189b2012-06-20 16:38:30 -07005937 @see
5938 @return Result of the function call
5939*/
5940WDI_Status
5941WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005942(
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 WDI_ControlBlockType* pWDICtx,
5944 WDI_EventInfoType* pEventData
5945)
5946{
5947 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005948 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07005949 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005950 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07005951
5952 /*Return Success*/
5953 return WDI_STATUS_E_NOT_ALLOWED;
5954}/* WDI_MainRspInit */
5955
5956/**
5957 @brief Main FSM Close function for all states except BUSY
5958
Jeff Johnsone7245742012-09-05 17:12:55 -07005959
5960 @param pWDICtx: pointer to the WLAN DAL context
5961 pEventData: pointer to the event information structure
5962
Jeff Johnson295189b2012-06-20 16:38:30 -07005963 @see
5964 @return Result of the function call
5965*/
5966WDI_Status
5967WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07005968(
Jeff Johnson295189b2012-06-20 16:38:30 -07005969 WDI_ControlBlockType* pWDICtx,
5970 WDI_EventInfoType* pEventData
5971)
5972{
5973
5974 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005975 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 ----------------------------------------------------------------------*/
5977 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5978 {
5979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005980 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005981 pWDICtx, pEventData);
5982 return WDI_STATUS_E_FAILURE;
5983 }
5984
5985 /*Return Success*/
5986 return WDI_ProcessRequest( pWDICtx, pEventData );
5987
5988}/*WDI_MainClose*/
5989/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005990 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005991--------------------------------------------------------------------------*/
5992/**
5993 @brief Main FSM Start function for state STARTED
5994
Jeff Johnsone7245742012-09-05 17:12:55 -07005995
5996 @param pWDICtx: pointer to the WLAN DAL context
5997 pEventData: pointer to the event information structure
5998
Jeff Johnson295189b2012-06-20 16:38:30 -07005999 @see
6000 @return Result of the function call
6001*/
6002WDI_Status
6003WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006004(
Jeff Johnson295189b2012-06-20 16:38:30 -07006005 WDI_ControlBlockType* pWDICtx,
6006 WDI_EventInfoType* pEventData
6007)
6008{
6009 WDI_StartRspCb wdiStartRspCb = NULL;
6010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6011
6012 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006013 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006014 ----------------------------------------------------------------------*/
6015 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6016 {
6017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006018 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006019 pWDICtx, pEventData);
6020 return WDI_STATUS_E_FAILURE;
6021 }
6022
6023 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006024 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006025 ----------------------------------------------------------------------*/
6026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006027 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006028
6029 wpalMutexAcquire(&pWDICtx->wptMutex);
6030
6031 /*Transition back to started because the post function transitioned us to
6032 busy*/
6033 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6034
6035 /*Check to see if any request is pending*/
6036 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006037
Jeff Johnson295189b2012-06-20 16:38:30 -07006038 wpalMutexRelease(&pWDICtx->wptMutex);
6039
6040 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006041 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6042
Jeff Johnson295189b2012-06-20 16:38:30 -07006043 /*Notify UMAC*/
6044 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6045
6046 /*Return Success*/
6047 return WDI_STATUS_SUCCESS;
6048
6049}/*WDI_MainStartStarted*/
6050
6051/**
6052 @brief Main FSM Stop function for state STARTED
6053
Jeff Johnsone7245742012-09-05 17:12:55 -07006054
6055 @param pWDICtx: pointer to the WLAN DAL context
6056 pEventData: pointer to the event information structure
6057
Jeff Johnson295189b2012-06-20 16:38:30 -07006058 @see
6059 @return Result of the function call
6060*/
6061WDI_Status
6062WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006063(
Jeff Johnson295189b2012-06-20 16:38:30 -07006064 WDI_ControlBlockType* pWDICtx,
6065 WDI_EventInfoType* pEventData
6066)
6067{
6068 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006069 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006070 ----------------------------------------------------------------------*/
6071 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6072 {
6073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006074 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006075 pWDICtx, pEventData);
6076 return WDI_STATUS_E_FAILURE;
6077 }
6078
6079 /*State at this point is BUSY - because we enter this state before posting
6080 an event to the FSM in order to prevent potential race conditions*/
6081
6082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6083 "Processing stop request in FSM");
6084
6085 /*Return Success*/
6086 return WDI_ProcessRequest( pWDICtx, pEventData );
6087
6088}/*WDI_MainStopStarted*/
6089/**
6090 @brief Main FSM Request function for state started
6091
Jeff Johnsone7245742012-09-05 17:12:55 -07006092
6093 @param pWDICtx: pointer to the WLAN DAL context
6094 pEventData: pointer to the event information structure
6095
Jeff Johnson295189b2012-06-20 16:38:30 -07006096 @see
6097 @return Result of the function call
6098*/
6099WDI_Status
6100WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006101(
Jeff Johnson295189b2012-06-20 16:38:30 -07006102 WDI_ControlBlockType* pWDICtx,
6103 WDI_EventInfoType* pEventData
6104)
6105{
6106
6107 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006108 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006109 ----------------------------------------------------------------------*/
6110 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6111 {
6112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006113 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006114 pWDICtx, pEventData);
6115 return WDI_STATUS_E_FAILURE;
6116 }
6117
6118 /*State at this point is BUSY - because we enter this state before posting
6119 an event to the FSM in order to prevent potential race conditions*/
6120
6121 /*Return Success*/
6122 return WDI_ProcessRequest( pWDICtx, pEventData );
6123
6124}/*WDI_MainReqStarted*/
6125
6126/**
6127 @brief Main FSM Response function for all states except INIT
6128
Jeff Johnsone7245742012-09-05 17:12:55 -07006129
6130 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006131 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006132
Jeff Johnson295189b2012-06-20 16:38:30 -07006133 @see
6134 @return Result of the function call
6135*/
6136WDI_Status
6137WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006138(
Jeff Johnson295189b2012-06-20 16:38:30 -07006139 WDI_ControlBlockType* pWDICtx,
6140 WDI_EventInfoType* pEventData
6141)
6142{
Jeff Johnsone7245742012-09-05 17:12:55 -07006143 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006144 wpt_boolean expectedResponse;
6145
6146 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006147 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006148 ----------------------------------------------------------------------*/
6149 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6150 {
6151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006152 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006153 pWDICtx, pEventData);
6154 return WDI_STATUS_E_FAILURE;
6155 }
6156
6157 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6158 {
6159 /* we received an expected response */
6160 expectedResponse = eWLAN_PAL_TRUE;
6161
6162 /*We expect that we will transition to started after this processing*/
6163 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6164
6165 /* we are no longer expecting a response */
6166 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6167 }
6168 else
6169 {
6170 /* we received an indication or unexpected response */
6171 expectedResponse = eWLAN_PAL_FALSE;
6172 /* for indications no need to update state from what it is right
6173 now, unless it explicitly does it in the indication handler (say
6174 for device failure ind) */
6175 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6176 }
6177
6178 /*Process the response and indication */
6179 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6180
6181 /*Lock the CB as we are about to do a state transition*/
6182 wpalMutexAcquire(&pWDICtx->wptMutex);
6183
6184 /*Transition to the expected state after the response processing
6185 - this should always be started state with the following exceptions:
6186 1. processing of a failed start response
6187 2. device failure detected while processing response
6188 3. stop response received*/
6189 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006190
Jeff Johnson295189b2012-06-20 16:38:30 -07006191 /*Dequeue request that may have been queued while we were waiting for the
6192 response */
6193 if ( expectedResponse )
6194 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006195 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006196 }
6197
6198 wpalMutexRelease(&pWDICtx->wptMutex);
6199
6200 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006201 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006202
6203}/*WDI_MainRsp*/
6204
6205/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006206 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006207--------------------------------------------------------------------------*/
6208/**
6209 @brief Main FSM Stop function for state STOPPED
6210
Jeff Johnsone7245742012-09-05 17:12:55 -07006211
6212 @param pWDICtx: pointer to the WLAN DAL context
6213 pEventData: pointer to the event information structure
6214
Jeff Johnson295189b2012-06-20 16:38:30 -07006215 @see
6216 @return Result of the function call
6217*/
6218WDI_Status
6219WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006220(
Jeff Johnson295189b2012-06-20 16:38:30 -07006221 WDI_ControlBlockType* pWDICtx,
6222 WDI_EventInfoType* pEventData
6223)
6224{
6225 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006226 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 ----------------------------------------------------------------------*/
6228 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6229 {
6230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006231 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006232 pWDICtx, pEventData);
6233 return WDI_STATUS_E_FAILURE;
6234 }
6235
6236 /*We should normally not get a STOP request if we are already stopped
6237 since we should normally be stopped by the UMAC. However in some
6238 error situations we put ourselves in the stopped state without the
6239 UMAC knowing, so when we get a STOP request in this state we still
6240 process it since we need to clean up the underlying state */
6241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6242 "Processing stop request while stopped in FSM");
6243
6244 /*Return Success*/
6245 return WDI_ProcessRequest( pWDICtx, pEventData );
6246
6247}/*WDI_MainStopStopped*/
6248
6249/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006250 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006251--------------------------------------------------------------------------*/
6252/**
6253 @brief Main FSM Start function for state BUSY
6254
Jeff Johnsone7245742012-09-05 17:12:55 -07006255
6256 @param pWDICtx: pointer to the WLAN DAL context
6257 pEventData: pointer to the event information structure
6258
Jeff Johnson295189b2012-06-20 16:38:30 -07006259 @see
6260 @return Result of the function call
6261*/
6262WDI_Status
6263WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006264(
Jeff Johnson295189b2012-06-20 16:38:30 -07006265 WDI_ControlBlockType* pWDICtx,
6266 WDI_EventInfoType* pEventData
6267)
6268{
6269 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006270 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006271 ----------------------------------------------------------------------*/
6272 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6273 {
6274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006275 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006276 pWDICtx, pEventData);
6277 return WDI_STATUS_E_FAILURE;
6278 }
6279
6280 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006281 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006282 ----------------------------------------------------------------------*/
6283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6284 "WDI Busy state - queue start request");
6285
6286 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006287 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006288
6289 /*Return Success*/
6290 return WDI_STATUS_PENDING;
6291}/*WDI_MainStartBusy*/
6292
6293/**
6294 @brief Main FSM Stop function for state BUSY
6295
Jeff Johnsone7245742012-09-05 17:12:55 -07006296
6297 @param pWDICtx: pointer to the WLAN DAL context
6298 pEventData: pointer to the event information structure
6299
Jeff Johnson295189b2012-06-20 16:38:30 -07006300 @see
6301 @return Result of the function call
6302*/
6303WDI_Status
6304WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006305(
Jeff Johnson295189b2012-06-20 16:38:30 -07006306 WDI_ControlBlockType* pWDICtx,
6307 WDI_EventInfoType* pEventData
6308)
6309{
6310 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006311 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006312 ----------------------------------------------------------------------*/
6313 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6314 {
6315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006316 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006317 pWDICtx, pEventData);
6318 return WDI_STATUS_E_FAILURE;
6319 }
6320
6321 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006322 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006323 ----------------------------------------------------------------------*/
6324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6325 "WDI Busy state - queue stop request");
6326
Jeff Johnsone7245742012-09-05 17:12:55 -07006327 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006328 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006329
Jeff Johnson295189b2012-06-20 16:38:30 -07006330}/*WDI_MainStopBusy*/
6331
6332/**
6333 @brief Main FSM Request function for state BUSY
6334
Jeff Johnsone7245742012-09-05 17:12:55 -07006335
6336 @param pWDICtx: pointer to the WLAN DAL context
6337 pEventData: pointer to the event information structure
6338
Jeff Johnson295189b2012-06-20 16:38:30 -07006339 @see
6340 @return Result of the function call
6341*/
6342WDI_Status
6343WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006344(
Jeff Johnson295189b2012-06-20 16:38:30 -07006345 WDI_ControlBlockType* pWDICtx,
6346 WDI_EventInfoType* pEventData
6347)
6348{
6349 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006350 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006351 ----------------------------------------------------------------------*/
6352 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6353 {
6354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006355 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 pWDICtx, pEventData);
6357 return WDI_STATUS_E_FAILURE;
6358 }
6359
6360 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006361 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006362 ----------------------------------------------------------------------*/
6363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6364 "WDI Busy state - queue request %d because waiting for response %d",
6365 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6366
Jeff Johnsone7245742012-09-05 17:12:55 -07006367 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006368 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006369
Jeff Johnson295189b2012-06-20 16:38:30 -07006370}/*WDI_MainReqBusy*/
6371/**
6372 @brief Main FSM Close function for state BUSY
6373
Jeff Johnsone7245742012-09-05 17:12:55 -07006374
6375 @param pWDICtx: pointer to the WLAN DAL context
6376 pEventData: pointer to the event information structure
6377
Jeff Johnson295189b2012-06-20 16:38:30 -07006378 @see
6379 @return Result of the function call
6380*/
6381WDI_Status
6382WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006383(
Jeff Johnson295189b2012-06-20 16:38:30 -07006384 WDI_ControlBlockType* pWDICtx,
6385 WDI_EventInfoType* pEventData
6386)
6387{
6388 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006389 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006390 ----------------------------------------------------------------------*/
6391 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6392 {
6393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006394 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006395 pWDICtx, pEventData);
6396 return WDI_STATUS_E_FAILURE;
6397 }
6398
6399 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006400 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006401 ----------------------------------------------------------------------*/
6402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6403 "WDI Busy state - queue close request");
6404
Jeff Johnsone7245742012-09-05 17:12:55 -07006405 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006406 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006407
Jeff Johnson295189b2012-06-20 16:38:30 -07006408}/*WDI_MainCloseBusy*/
6409
6410/**
6411 @brief Main FSM Shutdown function for INIT & STARTED states
6412
6413
6414 @param pWDICtx: pointer to the WLAN DAL context
6415 pEventData: pointer to the event information structure
6416
6417 @see
6418 @return Result of the function call
6419*/
6420WDI_Status
6421WDI_MainShutdown
6422(
6423 WDI_ControlBlockType* pWDICtx,
6424 WDI_EventInfoType* pEventData
6425)
6426{
6427 /*--------------------------------------------------------------------
6428 Sanity Check
6429 ----------------------------------------------------------------------*/
6430 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6431 {
6432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6433 "Invalid parameters on Main Start %x %x",
6434 pWDICtx, pEventData);
6435 return WDI_STATUS_E_FAILURE;
6436 }
6437
6438 /*State at this point is BUSY - because we enter this state before posting
6439 an event to the FSM in order to prevent potential race conditions*/
6440
6441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6442 "Processing shutdown request in FSM");
6443
6444 /*Return Success*/
6445 return WDI_ProcessRequest( pWDICtx, pEventData );
6446
6447}/*WDI_MainShutdown*/
6448
6449/**
6450 @brief Main FSM Shutdown function for BUSY state
6451
6452
6453 @param pWDICtx: pointer to the WLAN DAL context
6454 pEventData: pointer to the event information structure
6455
6456 @see
6457 @return Result of the function call
6458*/
6459WDI_Status
6460WDI_MainShutdownBusy
6461(
6462 WDI_ControlBlockType* pWDICtx,
6463 WDI_EventInfoType* pEventData
6464)
6465{
6466 /*--------------------------------------------------------------------
6467 Sanity Check
6468 ----------------------------------------------------------------------*/
6469 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6470 {
6471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6472 "Invalid parameters on Main Start %x %x",
6473 pWDICtx, pEventData);
6474 return WDI_STATUS_E_FAILURE;
6475 }
6476
6477 /* If you are waiting for a HAL response at this stage, you are not
6478 * going to get it. Riva is already shutdown/crashed.
6479 */
6480 wpalTimerStop(&gWDICb.wptResponseTimer);
6481
6482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6483 "Processing shutdown request in FSM: Busy state ");
6484
6485 return WDI_ProcessRequest( pWDICtx, pEventData );
6486
6487}/*WDI_MainShutdownBusy*/
6488
6489
Jeff Johnsone7245742012-09-05 17:12:55 -07006490/*=======================================================================
6491
Jeff Johnson295189b2012-06-20 16:38:30 -07006492 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006493
Jeff Johnson295189b2012-06-20 16:38:30 -07006494*=======================================================================*/
6495
6496/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006497 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006498========================================================================*/
6499/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006500 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006501 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006502
6503 @param pWDICtx: pointer to the WLAN DAL context
6504 pEventData: pointer to the event information structure
6505
Jeff Johnson295189b2012-06-20 16:38:30 -07006506 @see
6507 @return Result of the function call
6508*/
6509WDI_Status
6510WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006511(
Jeff Johnson295189b2012-06-20 16:38:30 -07006512 WDI_ControlBlockType* pWDICtx,
6513 WDI_EventInfoType* pEventData
6514)
6515{
6516 WDI_StartReqParamsType* pwdiStartParams = NULL;
6517 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006518 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006519 wpt_uint16 usDataOffset = 0;
6520 wpt_uint16 usSendSize = 0;
6521
Jeff Johnsone7245742012-09-05 17:12:55 -07006522 tHalMacStartReqMsg halStartReq;
6523 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6525
6526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 -------------------------------------------------------------------------*/
6529 if (( NULL == pEventData ) ||
6530 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6531 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6532 {
6533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006537 }
6538
6539 /*-----------------------------------------------------------------------
6540 Get message buffer
6541 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006542 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006543 pwdiStartParams->usConfigBufferLen;
6544
Jeff Johnsone7245742012-09-05 17:12:55 -07006545 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006546 usLen,
6547 &pSendBuffer, &usDataOffset, &usSendSize))||
6548 ( usSendSize < (usDataOffset + usLen )))
6549 {
6550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6551 "Unable to get send buffer in start req %x %x %x",
6552 pEventData, pwdiStartParams, wdiStartRspCb);
6553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006555 }
6556
6557 /*-----------------------------------------------------------------------
6558 Fill in the message
6559 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006560 halStartReq.startReqParams.driverType =
6561 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006562
Jeff Johnsone7245742012-09-05 17:12:55 -07006563 halStartReq.startReqParams.uConfigBufferLen =
6564 pwdiStartParams->usConfigBufferLen;
6565 wpalMemoryCopy( pSendBuffer+usDataOffset,
6566 &halStartReq.startReqParams,
6567 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006568
Jeff Johnsone7245742012-09-05 17:12:55 -07006569 usDataOffset += sizeof(halStartReq.startReqParams);
6570 wpalMemoryCopy( pSendBuffer+usDataOffset,
6571 pwdiStartParams->pConfigBuffer,
6572 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006573
6574 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006575 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006576
6577 /*Save Low Level Ind CB and associated user data - it will be used further
6578 on when an indication is coming from the lower MAC*/
6579 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006580 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006581
Jeff Johnsone7245742012-09-05 17:12:55 -07006582 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006584 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006585 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006586 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006587 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6588
Jeff Johnsone7245742012-09-05 17:12:55 -07006589
Jeff Johnson295189b2012-06-20 16:38:30 -07006590}/*WDI_ProcessStartReq*/
6591
6592/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006593 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006594 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006595
6596 @param pWDICtx: pointer to the WLAN DAL context
6597 pEventData: pointer to the event information structure
6598
Jeff Johnson295189b2012-06-20 16:38:30 -07006599 @see
6600 @return Result of the function call
6601*/
6602WDI_Status
6603WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006604(
Jeff Johnson295189b2012-06-20 16:38:30 -07006605 WDI_ControlBlockType* pWDICtx,
6606 WDI_EventInfoType* pEventData
6607)
6608{
6609 WDI_StopReqParamsType* pwdiStopParams = NULL;
6610 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006611 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006612 wpt_uint16 usDataOffset = 0;
6613 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006614 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006615 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6617
6618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006620 -------------------------------------------------------------------------*/
6621 if (( NULL == pEventData ) ||
6622 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6623 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6624 {
6625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006627 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006628 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006629 }
6630
6631 /*-----------------------------------------------------------------------
6632 Get message buffer
6633 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006634 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006635 sizeof(halStopReq.stopReqParams),
6636 &pSendBuffer, &usDataOffset, &usSendSize))||
6637 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6638 {
6639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6640 "Unable to get send buffer in stop req %x %x %x",
6641 pEventData, pwdiStopParams, wdiStopRspCb);
6642 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006643 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006644 }
6645
6646 /*-----------------------------------------------------------------------
6647 Fill in the message
6648 -----------------------------------------------------------------------*/
6649 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6650 pwdiStopParams->wdiStopReason);
6651
Jeff Johnsone7245742012-09-05 17:12:55 -07006652 wpalMemoryCopy( pSendBuffer+usDataOffset,
6653 &halStopReq.stopReqParams,
6654 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006655
6656 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006657 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006658
6659 /*! TO DO: stop the data services */
6660 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6661 {
6662 /*Stop the STA Table !UT- check this logic again
6663 It is safer to do it here than on the response - because a stop is imminent*/
6664 WDI_STATableStop(pWDICtx);
6665
6666 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006667 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6668 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006669 {
6670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6671 "WDI Init failed to reset power state event");
6672
Jeff Johnsone7245742012-09-05 17:12:55 -07006673 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006674 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006675 }
6676 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006677 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6678 if( eWLAN_PAL_STATUS_SUCCESS != status )
6679 {
6680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6681 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6682 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006683 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006684 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006685 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006686 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006687 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006688 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6689 WDI_SET_POWER_STATE_TIMEOUT);
6690 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006691 {
6692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6693 "WDI Init failed to wait on an event");
6694
Jeff Johnsone7245742012-09-05 17:12:55 -07006695 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006696 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006697 }
6698 }
6699
6700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006701 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006702 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006703 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006704 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6705
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006706fail:
6707 // Release the message buffer so we don't leak
6708 wpalMemoryFree(pSendBuffer);
6709
6710failRequest:
6711 //WDA should have failure check to avoid the memory leak
6712 return WDI_STATUS_E_FAILURE;
6713
Jeff Johnson295189b2012-06-20 16:38:30 -07006714}/*WDI_ProcessStopReq*/
6715
6716/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006717 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006718 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006719
6720 @param pWDICtx: pointer to the WLAN DAL context
6721 pEventData: pointer to the event information structure
6722
Jeff Johnson295189b2012-06-20 16:38:30 -07006723 @see
6724 @return Result of the function call
6725*/
6726WDI_Status
6727WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006728(
Jeff Johnson295189b2012-06-20 16:38:30 -07006729 WDI_ControlBlockType* pWDICtx,
6730 WDI_EventInfoType* pEventData
6731)
6732{
Jeff Johnsone7245742012-09-05 17:12:55 -07006733 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6735
6736 /*Lock control block for cleanup*/
6737 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006738
Jeff Johnson295189b2012-06-20 16:38:30 -07006739 /*Clear all pending request*/
6740 WDI_ClearPendingRequests(pWDICtx);
6741
6742 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006743 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006744
6745 /* Close Data transport*/
6746 /* FTM mode does not open Data Path */
6747 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6748 {
6749 WDTS_Close(pWDICtx);
6750 }
6751
6752 /*Close the STA Table !UT- check this logic again*/
6753 WDI_STATableClose(pWDICtx);
6754
6755 /*close the PAL */
6756 wptStatus = wpalClose(pWDICtx->pPALContext);
6757 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6758 {
6759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6760 "Failed to wpal Close %d", wptStatus);
6761 WDI_ASSERT(0);
6762 }
6763
6764 /*Transition back to init state*/
6765 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6766
6767 wpalMutexRelease(&pWDICtx->wptMutex);
6768
6769 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006770 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006771
Jeff Johnsone7245742012-09-05 17:12:55 -07006772 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006773}/*WDI_ProcessCloseReq*/
6774
6775
6776/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006778===========================================================================*/
6779
6780/**
6781 @brief Process Init Scan Request function (called when Main FSM
6782 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006783
6784 @param pWDICtx: pointer to the WLAN DAL context
6785 pEventData: pointer to the event information structure
6786
Jeff Johnson295189b2012-06-20 16:38:30 -07006787 @see
6788 @return Result of the function call
6789*/
6790WDI_Status
6791WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006792(
Jeff Johnson295189b2012-06-20 16:38:30 -07006793 WDI_ControlBlockType* pWDICtx,
6794 WDI_EventInfoType* pEventData
6795)
6796{
6797 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6798 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006799 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006800 wpt_uint16 usDataOffset = 0;
6801 wpt_uint16 usSendSize = 0;
6802 wpt_uint8 i = 0;
6803
6804 tHalInitScanReqMsg halInitScanReqMsg;
6805
Jeff Johnsone7245742012-09-05 17:12:55 -07006806 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006807 * It shold be removed once host and riva changes are in sync*/
6808 tHalInitScanConReqMsg halInitScanConReqMsg;
6809
6810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6811
6812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006814 -------------------------------------------------------------------------*/
6815 if (( NULL == pEventData ) ||
6816 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6817 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6818 {
6819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006820 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006823 }
6824
6825#if 0
6826 wpalMutexAcquire(&pWDICtx->wptMutex);
6827 /*-----------------------------------------------------------------------
6828 Check to see if SCAN is already in progress - if so reject the req
6829 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006830 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006831 -----------------------------------------------------------------------*/
6832 if ( pWDICtx->bScanInProgress )
6833 {
6834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6835 "Scan is already in progress - subsequent scan is not allowed"
6836 " until the first scan completes");
6837
6838 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006839 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006840 }
6841
Jeff Johnsone7245742012-09-05 17:12:55 -07006842 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6843 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006844
6845 wpalMutexRelease(&pWDICtx->wptMutex);
6846#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08006847 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006848 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006849 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006850 * It shold be removed once host and riva changes are in sync*/
6851 /*-----------------------------------------------------------------------
6852 Get message buffer
6853 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006854 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006855 sizeof(halInitScanConReqMsg.initScanParams),
6856 &pSendBuffer, &usDataOffset, &usSendSize))||
6857 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6858 {
6859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6860 "Unable to get send buffer in init scan req %x %x %x",
6861 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 }
6865
6866
6867 /*-----------------------------------------------------------------------
6868 Fill in the message
6869 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006870 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006871 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6872
6873 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6874 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6875
Jeff Johnsone7245742012-09-05 17:12:55 -07006876 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006877 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006878 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006880 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6882
6883 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6884 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6885
Jeff Johnson295189b2012-06-20 16:38:30 -07006886 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6887 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07006888
Jeff Johnsone7245742012-09-05 17:12:55 -07006889 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006890 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6891
6892 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6893 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006894 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006895 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6896 }
6897
Jeff Johnsone7245742012-09-05 17:12:55 -07006898 wpalMemoryCopy( pSendBuffer+usDataOffset,
6899 &halInitScanConReqMsg.initScanParams,
6900 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006901 }
6902 else
6903 {
6904 /*-----------------------------------------------------------------------
6905 Get message buffer
6906 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006907 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006908 sizeof(halInitScanReqMsg.initScanParams),
6909 &pSendBuffer, &usDataOffset, &usSendSize))||
6910 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6911 {
6912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6913 "Unable to get send buffer in init scan req %x %x %x",
6914 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006917 }
6918
6919
6920 /*-----------------------------------------------------------------------
6921 Fill in the message
6922 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006923 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6925
6926 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6927 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6928
Jeff Johnsone7245742012-09-05 17:12:55 -07006929 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006930 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006931 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006932 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006933 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006934 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6935
6936 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6937 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6938
Jeff Johnsone7245742012-09-05 17:12:55 -07006939 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006940 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6941
6942 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6943 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006944 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006945 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6946 }
6947
Jeff Johnsone7245742012-09-05 17:12:55 -07006948 wpalMemoryCopy( pSendBuffer+usDataOffset,
6949 &halInitScanReqMsg.initScanParams,
6950 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006951 }
6952
6953 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006954 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006955
6956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006957 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006958 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006959 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006960 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
6961
6962}/*WDI_ProcessInitScanReq*/
6963
6964/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006965 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006966 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006967
6968 @param pWDICtx: pointer to the WLAN DAL context
6969 pEventData: pointer to the event information structure
6970
Jeff Johnson295189b2012-06-20 16:38:30 -07006971 @see
6972 @return Result of the function call
6973*/
6974WDI_Status
6975WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006976(
Jeff Johnson295189b2012-06-20 16:38:30 -07006977 WDI_ControlBlockType* pWDICtx,
6978 WDI_EventInfoType* pEventData
6979)
6980{
6981 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
6982 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006983 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006984 wpt_uint16 usDataOffset = 0;
6985 wpt_uint16 usSendSize = 0;
6986
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6989
6990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006991 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006992 -------------------------------------------------------------------------*/
6993 if (( NULL == pEventData ) ||
6994 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
6995 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
6996 {
6997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006998 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006999 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 }
7002
7003#if 0
7004 wpalMutexAcquire(&pWDICtx->wptMutex);
7005 /*-----------------------------------------------------------------------
7006 Check to see if SCAN is already in progress - start scan is only
7007 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007008 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007009 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007010 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007011 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7012 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7013 {
7014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7015 "Scan start not allowed in this state %d %d",
7016 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007017
Jeff Johnson295189b2012-06-20 16:38:30 -07007018 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007020 }
7021
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007023
7024 wpalMutexRelease(&pWDICtx->wptMutex);
7025#endif
7026
7027 /*-----------------------------------------------------------------------
7028 Get message buffer
7029 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007031 sizeof(halStartScanReqMsg.startScanParams),
7032 &pSendBuffer, &usDataOffset, &usSendSize))||
7033 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7034 {
7035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7036 "Unable to get send buffer in start scan req %x %x %x",
7037 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007040 }
7041
Jeff Johnsone7245742012-09-05 17:12:55 -07007042 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007043 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007044 wpalMemoryCopy( pSendBuffer+usDataOffset,
7045 &halStartScanReqMsg.startScanParams,
7046 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007047
7048 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007050
7051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007054 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007055 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7056}/*WDI_ProcessStartScanReq*/
7057
7058
7059/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007060 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007061 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007062
7063 @param pWDICtx: pointer to the WLAN DAL context
7064 pEventData: pointer to the event information structure
7065
Jeff Johnson295189b2012-06-20 16:38:30 -07007066 @see
7067 @return Result of the function call
7068*/
7069WDI_Status
7070WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007071(
Jeff Johnson295189b2012-06-20 16:38:30 -07007072 WDI_ControlBlockType* pWDICtx,
7073 WDI_EventInfoType* pEventData
7074)
7075{
7076 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7077 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007078 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007079 wpt_uint16 usDataOffset = 0;
7080 wpt_uint16 usSendSize = 0;
7081
Jeff Johnsone7245742012-09-05 17:12:55 -07007082 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7084
7085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007087 -------------------------------------------------------------------------*/
7088 if (( NULL == pEventData ) ||
7089 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7090 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7091 {
7092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007096 }
7097
Jeff Johnsone7245742012-09-05 17:12:55 -07007098 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7099 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007100 * forwarded to HAL and result in hang*/
7101#if 0
7102 wpalMutexAcquire(&pWDICtx->wptMutex);
7103 /*-----------------------------------------------------------------------
7104 Check to see if SCAN is already in progress - end scan is only
7105 allowed when a scan is ongoing and the state of the scan procedure
7106 is started
7107 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007108 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007109 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7110 {
7111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7112 "End start not allowed in this state %d %d",
7113 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007114
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007116 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007117 }
7118
Jeff Johnsone7245742012-09-05 17:12:55 -07007119 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007120
7121 wpalMutexRelease(&pWDICtx->wptMutex);
7122#endif
7123
7124 /*-----------------------------------------------------------------------
7125 Get message buffer
7126 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007128 sizeof(halEndScanReqMsg.endScanParams),
7129 &pSendBuffer, &usDataOffset, &usSendSize))||
7130 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7131 {
7132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7133 "Unable to get send buffer in start scan req %x %x %x",
7134 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007137 }
7138
7139 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7140
Jeff Johnsone7245742012-09-05 17:12:55 -07007141 wpalMemoryCopy( pSendBuffer+usDataOffset,
7142 &halEndScanReqMsg.endScanParams,
7143 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007144
7145 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007146 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007147
7148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007149 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007150 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007151 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007152 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7153}/*WDI_ProcessEndScanReq*/
7154
7155
7156/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007157 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007159
7160 @param pWDICtx: pointer to the WLAN DAL context
7161 pEventData: pointer to the event information structure
7162
Jeff Johnson295189b2012-06-20 16:38:30 -07007163 @see
7164 @return Result of the function call
7165*/
7166WDI_Status
7167WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007168(
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 WDI_ControlBlockType* pWDICtx,
7170 WDI_EventInfoType* pEventData
7171)
7172{
7173 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7174 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007175 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007176 wpt_uint16 usDataOffset = 0;
7177 wpt_uint16 usSendSize = 0;
7178 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007179 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7182
7183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007184 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007185 -------------------------------------------------------------------------*/
7186 if (( NULL == pEventData ) ||
7187 ( NULL == pEventData->pEventData) ||
7188 ( NULL == pEventData->pCBfnc))
7189 {
7190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007194 }
7195
7196 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7197 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007198 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7199 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 * forwarded to HAL and result in hang*/
7201#if 0
7202 wpalMutexAcquire(&pWDICtx->wptMutex);
7203 /*-----------------------------------------------------------------------
7204 Check to see if SCAN is already in progress
7205 Finish scan gets invoked any scan states. ie. abort scan
7206 It should be allowed in any states.
7207 -----------------------------------------------------------------------*/
7208 if ( !pWDICtx->bScanInProgress )
7209 {
7210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7211 "Finish start not allowed in this state %d",
7212 pWDICtx->bScanInProgress );
7213
7214 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007215 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007216 }
7217
7218 /*-----------------------------------------------------------------------
7219 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007222 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7223 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 wpalMutexRelease(&pWDICtx->wptMutex);
7225#endif
7226
7227 if ( pWDICtx->bInBmps )
7228 {
7229 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007230 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7231 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7232 {
7233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7234 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7235 WDI_ASSERT(0);
7236 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007237 }
7238
7239 /*-----------------------------------------------------------------------
7240 Get message buffer
7241 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007242 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007243 sizeof(halFinishScanReqMsg.finishScanParams),
7244 &pSendBuffer, &usDataOffset, &usSendSize))||
7245 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7246 {
7247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7248 "Unable to get send buffer in start scan req %x %x %x",
7249 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007252 }
7253
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7256
Jeff Johnsone7245742012-09-05 17:12:55 -07007257 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7259
Jeff Johnsone7245742012-09-05 17:12:55 -07007260 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007261 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7262
7263 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7264 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7265
Jeff Johnsone7245742012-09-05 17:12:55 -07007266 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007267 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007268 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007270 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007271 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7272
Jeff Johnsone7245742012-09-05 17:12:55 -07007273 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7275
7276 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7277 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007278 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007279 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7280 }
7281
7282 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7283 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7284
Jeff Johnsone7245742012-09-05 17:12:55 -07007285 wpalMemoryCopy( pSendBuffer+usDataOffset,
7286 &halFinishScanReqMsg.finishScanParams,
7287 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007288
7289 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007290 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007291
7292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007293 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007294 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007295 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007296 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7297}/*WDI_ProcessFinishScanReq*/
7298
7299
7300/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007301 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007302==========================================================================*/
7303/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007304 @brief Process BSS Join for a given Session
7305
7306 @param pWDICtx: pointer to the WLAN DAL context
7307 pEventData: pointer to the event information structure
7308
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 @see
7310 @return Result of the function call
7311*/
7312WDI_Status
7313WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007314(
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 WDI_ControlBlockType* pWDICtx,
7316 WDI_JoinReqParamsType* pwdiJoinParams,
7317 WDI_JoinRspCb wdiJoinRspCb,
7318 void* pUserData
7319)
7320{
7321 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007323 wpt_uint16 usDataOffset = 0;
7324 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007326
Jeff Johnsone7245742012-09-05 17:12:55 -07007327 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7329
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007330 wpalMutexAcquire(&pWDICtx->wptMutex);
7331
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 /*------------------------------------------------------------------------
7333 Check to see if we have any session with this BSSID already stored, we
7334 should not
7335 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007336 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7337 pwdiJoinParams->wdiReqInfo.macBSSID,
7338 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007339
7340 if ( NULL != pBSSSes )
7341 {
7342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007343 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7344 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007345
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007346 /*reset the bAssociationInProgress otherwise the next
7347 *join request will be queued*/
7348 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7349 wpalMutexRelease(&pWDICtx->wptMutex);
7350 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 }
7352
Jeff Johnson295189b2012-06-20 16:38:30 -07007353 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007354 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007355 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007356 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 if ( NULL == pBSSSes )
7358 {
7359
7360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7361 "DAL has no free sessions - cannot run another join");
7362
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007363 /*reset the bAssociationInProgress otherwise the next
7364 *join request will be queued*/
7365 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007366 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 }
7369
7370 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7372 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 WDI_MAC_ADDR_LEN);
7374
7375 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007378
Jeff Johnson295189b2012-06-20 16:38:30 -07007379 wpalMutexRelease(&pWDICtx->wptMutex);
7380
7381 /*-----------------------------------------------------------------------
7382 Get message buffer
7383 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 sizeof(halJoinReqMsg.joinReqParams),
7386 &pSendBuffer, &usDataOffset, &usSendSize))||
7387 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7388 {
7389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7390 "Unable to get send buffer in join req %x %x %x",
7391 pUserData, pwdiJoinParams, wdiJoinRspCb);
7392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 }
7395
7396 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007398
7399 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007400 pwdiJoinParams->wdiReqInfo.macSTASelf,
7401 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007402
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7405
7406 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7407
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007408#ifdef WLAN_FEATURE_VOWIFI
7409 halJoinReqMsg.joinReqParams.maxTxPower =
7410 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7411#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007412 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007413 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7414#endif
7415
Jeff Johnsone7245742012-09-05 17:12:55 -07007416 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7418 wdiSecondaryChannelOffset);
7419
Jeff Johnsone7245742012-09-05 17:12:55 -07007420 wpalMemoryCopy( pSendBuffer+usDataOffset,
7421 &halJoinReqMsg.joinReqParams,
7422 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007423
7424 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007426
7427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7431 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007432
7433}/*WDI_ProcessBSSSessionJoinReq*/
7434
7435/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007438
7439 @param pWDICtx: pointer to the WLAN DAL context
7440 pEventData: pointer to the event information structure
7441
Jeff Johnson295189b2012-06-20 16:38:30 -07007442 @see
7443 @return Result of the function call
7444*/
7445WDI_Status
7446WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007447(
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 WDI_ControlBlockType* pWDICtx,
7449 WDI_EventInfoType* pEventData
7450)
7451{
7452 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7453 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7454 WDI_JoinRspCb wdiJoinRspCb = NULL;
7455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7456
7457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 -------------------------------------------------------------------------*/
7460 if (( NULL == pEventData ) ||
7461 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7462 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7463 {
7464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007469
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 /*-------------------------------------------------------------------------
7471 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007472 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007473 -------------------------------------------------------------------------*/
7474 wpalMutexAcquire(&pWDICtx->wptMutex);
7475
7476 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7477 {
7478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7479 "Association is currently in progress, queueing new join req");
7480
7481 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 pwdiJoinParams->wdiReqInfo.macBSSID);
7484
7485 wpalMutexRelease(&pWDICtx->wptMutex);
7486
Jeff Johnsone7245742012-09-05 17:12:55 -07007487 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007488 }
7489
7490 /*Starting a new association */
7491 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7492 wpalMutexRelease(&pWDICtx->wptMutex);
7493
7494 /*Process the Join Request*/
7495 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7496 wdiJoinRspCb,pEventData->pUserData);
7497
7498}/*WDI_ProcessJoinReq*/
7499
7500
7501/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007504
7505 @param pWDICtx: pointer to the WLAN DAL context
7506 pEventData: pointer to the event information structure
7507
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 @see
7509 @return Result of the function call
7510*/
7511WDI_Status
7512WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007513(
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 WDI_ControlBlockType* pWDICtx,
7515 WDI_EventInfoType* pEventData
7516)
7517{
7518 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7519 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007520 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007521 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 wpt_uint16 uMsgSize = 0;
7523 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007524 wpt_uint16 usDataOffset = 0;
7525 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007526 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007527
Jeff Johnsone7245742012-09-05 17:12:55 -07007528 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7530
7531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 -------------------------------------------------------------------------*/
7534 if (( NULL == pEventData ) ||
7535 ( NULL == pEventData->pEventData ) ||
7536 ( NULL == pEventData->pCBfnc ))
7537 {
7538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 }
7543
7544 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7545 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7546 /*-------------------------------------------------------------------------
7547 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007548 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007549 -------------------------------------------------------------------------*/
7550 wpalMutexAcquire(&pWDICtx->wptMutex);
7551
7552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007553 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007554 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007555 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7556 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7557 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007558
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007560 {
7561#ifdef WLAN_FEATURE_VOWIFI_11R
7562 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007563 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007564 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007565 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007566 if ( NULL == pBSSSes )
7567 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007568
Jeff Johnson295189b2012-06-20 16:38:30 -07007569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7570 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007571
Jeff Johnson295189b2012-06-20 16:38:30 -07007572 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007573 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007574 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007575
Jeff Johnson295189b2012-06-20 16:38:30 -07007576 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007577 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7578 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007579 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007580
Jeff Johnson295189b2012-06-20 16:38:30 -07007581 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007582 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007583 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7584#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 * Request in case of IBSS*/
7587 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7588 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7589 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7590 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7591 {
7592 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 if ( NULL == pBSSSes )
7597 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007598
Jeff Johnson295189b2012-06-20 16:38:30 -07007599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7600 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007601
Jeff Johnson295189b2012-06-20 16:38:30 -07007602 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007604 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007605
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007607 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7608 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007609 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007610
Jeff Johnson295189b2012-06-20 16:38:30 -07007611 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007612 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007613 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7614 }
7615 else
7616 {
7617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007618 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7619 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7620 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7621
Jeff Johnson295189b2012-06-20 16:38:30 -07007622 /* for IBSS testing */
7623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007624 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 }
7626#endif
7627 }
7628
7629 /*------------------------------------------------------------------------
7630 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007631 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 ------------------------------------------------------------------------*/
7633 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7634 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7636 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7637 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7638 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007639
Jeff Johnsone7245742012-09-05 17:12:55 -07007640 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007641
7642 wpalMutexRelease(&pWDICtx->wptMutex);
7643
Jeff Johnsone7245742012-09-05 17:12:55 -07007644 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 }
7646
7647 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007648 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7649 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 sizeof(pWDICtx->wdiCachedConfigBssReq));
7651
7652 wpalMutexRelease(&pWDICtx->wptMutex);
7653
Jeff Johnsone7245742012-09-05 17:12:55 -07007654 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7655#ifdef WLAN_FEATURE_11AC
7656 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007657 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007658 else
7659#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007660 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007661
7662 /*-----------------------------------------------------------------------
7663 Get message buffer
7664 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007666 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7667 ( usSendSize < (usDataOffset + uMsgSize )))
7668 {
7669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7670 "Unable to get send buffer in config bss req %x %x %x",
7671 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007674 }
7675
7676 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007677#ifdef WLAN_FEATURE_11AC
7678 if (WDI_getFwWlanFeatCaps(DOT11AC))
7679 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7680 &pwdiConfigBSSParams->wdiReqInfo);
7681 else
7682#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007683 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007684 &pwdiConfigBSSParams->wdiReqInfo);
7685
7686 /* Need to fill in the STA Index to invalid, since at this point we have not
7687 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007688 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007689
7690 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7692
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007693#ifdef WLAN_FEATURE_11AC
7694 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7695 wpalMemoryCopy( pSendBuffer+usDataOffset,
7696 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7697 uMsgSize);
7698 }else
7699#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007700 {
7701 if ( uMsgSize <= sizeof(tConfigBssParams) )
7702 {
7703 wpalMemoryCopy( pSendBuffer+usDataOffset,
7704 &halConfigBssReqMsg.uBssParams.configBssParams,
7705 uMsgSize);
7706 }
7707 else
7708 {
7709 return WDI_STATUS_E_FAILURE;
7710 }
7711 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007712
7713 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007714 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007715
7716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7720 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 WDI_CONFIG_BSS_RESP);
7722
7723}/*WDI_ProcessConfigBSSReq*/
7724
7725
7726/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007727 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007728 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007729
7730 @param pWDICtx: pointer to the WLAN DAL context
7731 pEventData: pointer to the event information structure
7732
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 @see
7734 @return Result of the function call
7735*/
7736WDI_Status
7737WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007738(
Jeff Johnson295189b2012-06-20 16:38:30 -07007739 WDI_ControlBlockType* pWDICtx,
7740 WDI_EventInfoType* pEventData
7741)
7742{
7743 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7744 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 wpt_uint16 usDataOffset = 0;
7749 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007751
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7754
7755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 -------------------------------------------------------------------------*/
7758 if (( NULL == pEventData ) ||
7759 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7760 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7761 {
7762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 }
7767
7768 /*-------------------------------------------------------------------------
7769 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007771 -------------------------------------------------------------------------*/
7772 wpalMutexAcquire(&pWDICtx->wptMutex);
7773
7774 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007775 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007777 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7778 pwdiDelBSSParams->ucBssIdx,
7779 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007780
Jeff Johnsone7245742012-09-05 17:12:55 -07007781 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007782 {
7783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007784 "%s: BSS does not yet exist. ucBssIdx %d",
7785 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007786
7787 wpalMutexRelease(&pWDICtx->wptMutex);
7788
7789 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007790 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007791
7792 /*------------------------------------------------------------------------
7793 Check if this BSS is being currently processed or queued,
7794 if queued - queue the new request as well
7795 ------------------------------------------------------------------------*/
7796 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007797 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7799 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7800 __func__, pwdiDelBSSParams->ucBssIdx);
7801
7802 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7803
7804 wpalMutexRelease(&pWDICtx->wptMutex);
7805
7806 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007808
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 /*-----------------------------------------------------------------------
7810 If we receive a Del BSS request for an association that is already in
7811 progress, it indicates that the assoc has failed => we no longer have
7812 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007813 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007814 -----------------------------------------------------------------------*/
7815 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7816 {
7817 /*We can switch to false here because even if a subsequent Join comes in
7818 it will only be processed when DAL transitions out of BUSY state which
7819 happens when the Del BSS request comes */
7820 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7821
7822 /*Former association is complete - prepare next pending assoc for
7823 processing */
7824 WDI_DequeueAssocRequest(pWDICtx);
7825 }
7826
7827 wpalMutexRelease(&pWDICtx->wptMutex);
7828 /*-----------------------------------------------------------------------
7829 Get message buffer
7830 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 sizeof(halBssReqMsg.deleteBssParams),
7833 &pSendBuffer, &usDataOffset, &usSendSize))||
7834 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7835 {
7836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7837 "Unable to get send buffer in start req %x %x %x",
7838 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7839 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 }
7842
7843 /*Fill in the message request structure*/
7844
7845 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007846 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007847
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 wpalMemoryCopy( pSendBuffer+usDataOffset,
7849 &halBssReqMsg.deleteBssParams,
7850 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007851
7852 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007854
Jeff Johnsone7245742012-09-05 17:12:55 -07007855
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007857 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007858 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007859 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7861
Jeff Johnsone7245742012-09-05 17:12:55 -07007862
Jeff Johnson295189b2012-06-20 16:38:30 -07007863}/*WDI_ProcessDelBSSReq*/
7864
7865/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007866 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007867 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007868
7869 @param pWDICtx: pointer to the WLAN DAL context
7870 pEventData: pointer to the event information structure
7871
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 @see
7873 @return Result of the function call
7874*/
7875WDI_Status
7876WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007877(
Jeff Johnson295189b2012-06-20 16:38:30 -07007878 WDI_ControlBlockType* pWDICtx,
7879 WDI_EventInfoType* pEventData
7880)
7881{
7882 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7883 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007884 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007885 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 wpt_uint16 usDataOffset = 0;
7888 wpt_uint16 usSendSize = 0;
7889 wpt_uint16 uMsgSize = 0;
7890 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007891 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007892
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7895
7896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007897 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 -------------------------------------------------------------------------*/
7899 if (( NULL == pEventData ) ||
7900 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7901 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7902 {
7903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007907 }
7908
7909 /*-------------------------------------------------------------------------
7910 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007911 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007912 -------------------------------------------------------------------------*/
7913 wpalMutexAcquire(&pWDICtx->wptMutex);
7914
7915 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007916 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007917 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007918 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7919 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7920 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007921
7922 if ( NULL == pBSSSes )
7923 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7925 "%s: Association sequence for this BSS does not yet exist - "
7926 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7927 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007928
7929 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007931 }
7932
7933 /*------------------------------------------------------------------------
7934 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 ------------------------------------------------------------------------*/
7937 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7938 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7940 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7941 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007942
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007944
7945 wpalMutexRelease(&pWDICtx->wptMutex);
7946
Jeff Johnsone7245742012-09-05 17:12:55 -07007947 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007948 }
7949
7950 /*-----------------------------------------------------------------------
7951 If Post Assoc was not yet received - the current association must
7952 be in progress
7953 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007954 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7956 {
7957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7958 "Association sequence for this BSS association no longer in "
7959 "progress - not allowed");
7960
7961 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007962 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007963 }
7964
7965 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007966 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007967 -----------------------------------------------------------------------*/
7968 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7969 {
7970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7971 "Post Assoc not allowed before JOIN - failing request");
7972
7973 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007974 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007975 }
7976
7977 wpalMutexRelease(&pWDICtx->wptMutex);
7978
7979 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7980 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7981 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7986 ( usSendSize < (usDataOffset + uMsgSize )))
7987 {
7988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7989 "Unable to get send buffer in start req %x %x %x",
7990 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7991 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007992 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 }
7994
7995 /*Copy the STA parameters */
7996 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7997 &pwdiPostAssocParams->wdiSTAParams );
7998
7999 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 WDI_STATableFindStaidByAddr(pWDICtx,
8002 pwdiPostAssocParams->wdiSTAParams.macSTA,
8003 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8004 {
8005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8006 "This station does not exist in the WDI Station Table %d");
8007 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008008 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008010 }
8011
8012 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008014 pBSSSes->ucBSSIdx;
8015
8016 /*Copy the BSS parameters */
8017 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8018 &pwdiPostAssocParams->wdiBSSParams);
8019
8020 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 WDI_STATableFindStaidByAddr(pWDICtx,
8023 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008024 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008025 {
8026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8027 "This station does not exist in the WDI Station Table %d");
8028 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008029 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 }
8032
8033 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 pBSSSes->ucBSSIdx;
8036
Jeff Johnsone7245742012-09-05 17:12:55 -07008037
8038 wpalMemoryCopy( pSendBuffer+usDataOffset,
8039 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8040 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008041
8042 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8043
Jeff Johnsone7245742012-09-05 17:12:55 -07008044 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8045 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8046 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008047
Jeff Johnsone7245742012-09-05 17:12:55 -07008048
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008051
Jeff Johnsone7245742012-09-05 17:12:55 -07008052
8053 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008056
8057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8062
Jeff Johnsone7245742012-09-05 17:12:55 -07008063
Jeff Johnson295189b2012-06-20 16:38:30 -07008064}/*WDI_ProcessPostAssocReq*/
8065
8066/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008067 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008069
8070 @param pWDICtx: pointer to the WLAN DAL context
8071 pEventData: pointer to the event information structure
8072
Jeff Johnson295189b2012-06-20 16:38:30 -07008073 @see
8074 @return Result of the function call
8075*/
8076WDI_Status
8077WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008078(
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 WDI_ControlBlockType* pWDICtx,
8080 WDI_EventInfoType* pEventData
8081)
8082{
8083 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8084 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008085 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008086 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 wpt_uint16 usDataOffset = 0;
8089 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8092
Jeff Johnsone7245742012-09-05 17:12:55 -07008093 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8095
8096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008097 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 -------------------------------------------------------------------------*/
8099 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8100 ( NULL == pEventData->pCBfnc ))
8101 {
8102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008103 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008106 }
8107
8108 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8109 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8110 /*-------------------------------------------------------------------------
8111 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008112 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008113 -------------------------------------------------------------------------*/
8114 wpalMutexAcquire(&pWDICtx->wptMutex);
8115
8116 /*------------------------------------------------------------------------
8117 Find the BSS for which the request is made and identify WDI session
8118 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8120 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008121 &macBSSID))
8122 {
8123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8124 "This station does not exist in the WDI Station Table %d");
8125 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 }
8128
Jeff Johnsone7245742012-09-05 17:12:55 -07008129 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8130 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8133 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8134 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008135
8136 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008138 }
8139
8140 /*------------------------------------------------------------------------
8141 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008142 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 ------------------------------------------------------------------------*/
8144 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8145 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8147 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8148 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008149
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008152 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 }
8154
8155 wpalMutexRelease(&pWDICtx->wptMutex);
8156 /*-----------------------------------------------------------------------
8157 Get message buffer
8158 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 sizeof(halDelStaReqMsg.delStaParams),
8161 &pSendBuffer, &usDataOffset, &usSendSize))||
8162 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8163 {
8164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8165 "Unable to get send buffer in start req %x %x %x",
8166 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 }
8170
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8172 wpalMemoryCopy( pSendBuffer+usDataOffset,
8173 &halDelStaReqMsg.delStaParams,
8174 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008175
8176 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008177 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008178
8179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008182 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8184
8185}/*WDI_ProcessDelSTAReq*/
8186
8187
8188/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008189 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008190==========================================================================*/
8191/**
8192 @brief Process Set BSS Key Request function (called when Main FSM
8193 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008194
8195 @param pWDICtx: pointer to the WLAN DAL context
8196 pEventData: pointer to the event information structure
8197
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 @see
8199 @return Result of the function call
8200*/
8201WDI_Status
8202WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008203(
Jeff Johnson295189b2012-06-20 16:38:30 -07008204 WDI_ControlBlockType* pWDICtx,
8205 WDI_EventInfoType* pEventData
8206)
8207{
8208 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8209 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008210 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008212 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008213 wpt_uint16 usDataOffset = 0;
8214 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008215 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8217 wpt_uint8 keyIndex = 0;
8218
8219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8220
8221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 -------------------------------------------------------------------------*/
8224 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8225 ( NULL == pEventData->pCBfnc ))
8226 {
8227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008228 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 }
8232
8233 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8234 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8235 /*-------------------------------------------------------------------------
8236 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008237 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008238 -------------------------------------------------------------------------*/
8239 wpalMutexAcquire(&pWDICtx->wptMutex);
8240
8241 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8245 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8246 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008247
Jeff Johnsone7245742012-09-05 17:12:55 -07008248 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 {
8250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008251 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8252 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008253
8254 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008255 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008256 }
8257
8258 /*------------------------------------------------------------------------
8259 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008260 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008261 ------------------------------------------------------------------------*/
8262 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8263 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8265 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8266 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008267
Jeff Johnsone7245742012-09-05 17:12:55 -07008268 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008269 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008270 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008271 }
8272
8273
8274 wpalMutexRelease(&pWDICtx->wptMutex);
8275 /*-----------------------------------------------------------------------
8276 Get message buffer
8277 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8280 &pSendBuffer, &usDataOffset, &usSendSize))||
8281 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8282 {
8283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8284 "Unable to get send buffer in set bss key req %x %x %x",
8285 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 }
8289
8290 /*-----------------------------------------------------------------------
8291 Copy the Key parameters into the HAL message
8292 -----------------------------------------------------------------------*/
8293
Jeff Johnsone7245742012-09-05 17:12:55 -07008294 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008295
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8298
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8301
8302 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8303 keyIndex++)
8304 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008305 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008306 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8307 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8308 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8309 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8310 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8311 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008312 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008313 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008314 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8318 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 WDI_MAX_KEY_LENGTH);
8321 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008322
8323 wpalMemoryCopy( pSendBuffer+usDataOffset,
8324 &halSetBssKeyReqMsg.setBssKeyParams,
8325 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008326
8327 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008329
8330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008333 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8334 wdiSetBSSKeyRspCb, pEventData->pUserData,
8335 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008336
8337}/*WDI_ProcessSetBssKeyReq*/
8338
8339/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008340 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008342
8343 @param pWDICtx: pointer to the WLAN DAL context
8344 pEventData: pointer to the event information structure
8345
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 @see
8347 @return Result of the function call
8348*/
8349WDI_Status
8350WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008351(
Jeff Johnson295189b2012-06-20 16:38:30 -07008352 WDI_ControlBlockType* pWDICtx,
8353 WDI_EventInfoType* pEventData
8354)
8355{
8356 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8357 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 wpt_uint16 usDataOffset = 0;
8362 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008363 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8366
8367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008368 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008369 -------------------------------------------------------------------------*/
8370 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8371 ( NULL == pEventData->pCBfnc ))
8372 {
8373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 }
8378
8379 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8380 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8381 /*-------------------------------------------------------------------------
8382 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008383 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 -------------------------------------------------------------------------*/
8385 wpalMutexAcquire(&pWDICtx->wptMutex);
8386
8387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008388 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008389 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8391 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8392 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008393
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 {
8396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8398 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008399
8400 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 }
8403
8404 /*------------------------------------------------------------------------
8405 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008406 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008407 ------------------------------------------------------------------------*/
8408 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8409 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8411 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8412 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008413
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008417 }
8418
8419
8420 wpalMutexRelease(&pWDICtx->wptMutex);
8421
8422 /*-----------------------------------------------------------------------
8423 Get message buffer
8424 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8427 &pSendBuffer, &usDataOffset, &usSendSize))||
8428 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8429 {
8430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8431 "Unable to get send buffer in set bss key req %x %x %x",
8432 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 }
8436 /*-----------------------------------------------------------------------
8437 Copy the Key parameters into the HAL message
8438 -----------------------------------------------------------------------*/
8439 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8440
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8443
8444 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8445
Jeff Johnsone7245742012-09-05 17:12:55 -07008446 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8448
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 wpalMemoryCopy( pSendBuffer+usDataOffset,
8450 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8451 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008452
8453 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008455
8456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008459 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008460 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008462}/*WDI_ProcessRemoveBssKeyReq*/
8463
8464/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008465 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008466 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008467
8468 @param pWDICtx: pointer to the WLAN DAL context
8469 pEventData: pointer to the event information structure
8470
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 @see
8472 @return Result of the function call
8473*/
8474WDI_Status
8475WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008476(
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 WDI_ControlBlockType* pWDICtx,
8478 WDI_EventInfoType* pEventData
8479)
8480{
8481 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8482 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8483 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 wpt_uint16 usDataOffset = 0;
8486 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008488 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8491 wpt_uint8 keyIndex = 0;
8492
8493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8494
8495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008497 -------------------------------------------------------------------------*/
8498 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8499 ( NULL == pEventData->pCBfnc ))
8500 {
8501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 }
8506
8507 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8508 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8509 /*-------------------------------------------------------------------------
8510 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 -------------------------------------------------------------------------*/
8513 wpalMutexAcquire(&pWDICtx->wptMutex);
8514
8515 /*------------------------------------------------------------------------
8516 Find the BSS for which the request is made and identify WDI session
8517 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008518 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8519 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 &macBSSID))
8521 {
8522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8523 "This station does not exist in the WDI Station Table %d");
8524 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008526 }
8527
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8529 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008530 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8532 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8533 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008534
8535 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008537 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008538
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 /*------------------------------------------------------------------------
8540 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008542 ------------------------------------------------------------------------*/
8543 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8544 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8546 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8547 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008548
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008552 }
8553
8554
8555 wpalMutexRelease(&pWDICtx->wptMutex);
8556 /*-----------------------------------------------------------------------
8557 Get message buffer
8558 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8561 &pSendBuffer, &usDataOffset, &usSendSize))||
8562 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8563 {
8564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8565 "Unable to get send buffer in set bss key req %x %x %x",
8566 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008569 }
8570 /*-----------------------------------------------------------------------
8571 Copy the STA Key parameters into the HAL message
8572 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8575
Jeff Johnsone7245742012-09-05 17:12:55 -07008576 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8578
8579 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8580
8581 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8582
8583 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8584
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8586 keyIndex++)
8587 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8590 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8591 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8592 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8593 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8594 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008595 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008596 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008597 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008598 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8601 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008602 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008603 WDI_MAX_KEY_LENGTH);
8604 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008605
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 wpalMemoryCopy( pSendBuffer+usDataOffset,
8607 &halSetStaKeyReqMsg.setStaKeyParams,
8608 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008609
8610 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008612
8613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8617 wdiSetSTAKeyRspCb, pEventData->pUserData,
8618 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008619
8620}/*WDI_ProcessSetSTAKeyReq*/
8621
8622/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008625
8626 @param pWDICtx: pointer to the WLAN DAL context
8627 pEventData: pointer to the event information structure
8628
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 @see
8630 @return Result of the function call
8631*/
8632WDI_Status
8633WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008634(
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 WDI_ControlBlockType* pWDICtx,
8636 WDI_EventInfoType* pEventData
8637)
8638{
8639 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8640 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8641 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 wpt_uint16 usDataOffset = 0;
8644 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 wpt_macAddr macBSSID;
8647 wpt_uint8 ucCurrentBSSSesIdx;
8648 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8650
8651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 -------------------------------------------------------------------------*/
8654 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8655 ( NULL == pEventData->pCBfnc ))
8656 {
8657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 }
8662
8663 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8664 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8665 /*-------------------------------------------------------------------------
8666 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008668 -------------------------------------------------------------------------*/
8669 wpalMutexAcquire(&pWDICtx->wptMutex);
8670
8671 /*------------------------------------------------------------------------
8672 Find the BSS for which the request is made and identify WDI session
8673 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8675 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008676 &macBSSID))
8677 {
8678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8679 "This station does not exist in the WDI Station Table %d");
8680 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008682 }
8683
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8685 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8688 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8689 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008690
8691 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008694
Jeff Johnson295189b2012-06-20 16:38:30 -07008695 /*------------------------------------------------------------------------
8696 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 ------------------------------------------------------------------------*/
8699 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8700 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8702 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8703 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008704
Jeff Johnsone7245742012-09-05 17:12:55 -07008705 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008706 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 }
8709
8710
8711
8712 wpalMutexRelease(&pWDICtx->wptMutex);
8713 /*-----------------------------------------------------------------------
8714 Get message buffer
8715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8718 &pSendBuffer, &usDataOffset, &usSendSize))||
8719 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8720 {
8721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8722 "Unable to get send buffer in set bss key req %x %x %x",
8723 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 }
8727
8728 /*-----------------------------------------------------------------------
8729 Copy the Key parameters into the HAL message
8730 -----------------------------------------------------------------------*/
8731
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8734
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008736 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8737
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8740
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8743
Jeff Johnsone7245742012-09-05 17:12:55 -07008744 wpalMemoryCopy( pSendBuffer+usDataOffset,
8745 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8746 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008747
8748 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008749 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008750
8751 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008756 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008757
8758}/*WDI_ProcessRemoveSTAKeyReq*/
8759
8760/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008763
8764 @param pWDICtx: pointer to the WLAN DAL context
8765 pEventData: pointer to the event information structure
8766
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 @see
8768 @return Result of the function call
8769*/
8770WDI_Status
8771WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008772(
Jeff Johnson295189b2012-06-20 16:38:30 -07008773 WDI_ControlBlockType* pWDICtx,
8774 WDI_EventInfoType* pEventData
8775)
8776{
8777 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8778 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8779 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008780 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 wpt_uint16 usDataOffset = 0;
8782 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008783 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008784 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008785 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8787 wpt_uint8 keyIndex = 0;
8788
8789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8790
8791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 -------------------------------------------------------------------------*/
8794 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8795 ( NULL == pEventData->pCBfnc ))
8796 {
8797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 }
8802
8803 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8804 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8805 /*-------------------------------------------------------------------------
8806 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 -------------------------------------------------------------------------*/
8809 wpalMutexAcquire(&pWDICtx->wptMutex);
8810
8811 /*------------------------------------------------------------------------
8812 Find the BSS for which the request is made and identify WDI session
8813 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8815 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 &macBSSID))
8817 {
8818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8819 "This station does not exist in the WDI Station Table %d");
8820 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008822 }
8823
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8825 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 {
8827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8829 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008830
8831 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008834
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 /*------------------------------------------------------------------------
8836 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 ------------------------------------------------------------------------*/
8839 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8840 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8842 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8843 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008844
Jeff Johnsone7245742012-09-05 17:12:55 -07008845 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008847 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 }
8849
8850
8851 wpalMutexRelease(&pWDICtx->wptMutex);
8852 /*-----------------------------------------------------------------------
8853 Get message buffer
8854 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008855 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8857 &pSendBuffer, &usDataOffset, &usSendSize))||
8858 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8859 {
8860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8861 "Unable to get send buffer in set bss key req %x %x %x",
8862 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8863 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 }
8866 /*-----------------------------------------------------------------------
8867 Copy the STA Key parameters into the HAL message
8868 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8871
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8874
8875 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8876
8877 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8878
8879 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8880
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8882 keyIndex++)
8883 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8886 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8887 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8888 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8889 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8890 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008894 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008896 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8897 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 WDI_MAX_KEY_LENGTH);
8900 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008901
Jeff Johnsone7245742012-09-05 17:12:55 -07008902 wpalMemoryCopy( pSendBuffer+usDataOffset,
8903 &halSetStaKeyReqMsg.setStaKeyParams,
8904 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008905
8906 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008908
8909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008912 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8913 wdiSetSTAKeyRspCb, pEventData->pUserData,
8914 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008915
8916}/*WDI_ProcessSetSTABcastKeyReq*/
8917
8918/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008921
8922 @param pWDICtx: pointer to the WLAN DAL context
8923 pEventData: pointer to the event information structure
8924
Jeff Johnson295189b2012-06-20 16:38:30 -07008925 @see
8926 @return Result of the function call
8927*/
8928WDI_Status
8929WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008930(
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 WDI_ControlBlockType* pWDICtx,
8932 WDI_EventInfoType* pEventData
8933)
8934{
8935 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8936 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8937 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008938 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 wpt_uint16 usDataOffset = 0;
8940 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008942 wpt_macAddr macBSSID;
8943 wpt_uint8 ucCurrentBSSSesIdx;
8944 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8946
8947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 -------------------------------------------------------------------------*/
8950 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8951 ( NULL == pEventData->pCBfnc ))
8952 {
8953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 }
8958
8959 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8960 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8961 /*-------------------------------------------------------------------------
8962 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008964 -------------------------------------------------------------------------*/
8965 wpalMutexAcquire(&pWDICtx->wptMutex);
8966
8967 /*------------------------------------------------------------------------
8968 Find the BSS for which the request is made and identify WDI session
8969 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8971 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 &macBSSID))
8973 {
8974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8975 "This station does not exist in the WDI Station Table %d");
8976 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008978 }
8979
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8981 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8984 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8985 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008986
8987 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008990
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 /*------------------------------------------------------------------------
8992 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 ------------------------------------------------------------------------*/
8995 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8996 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8998 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8999 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009000
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 }
9005
9006
9007
9008 wpalMutexRelease(&pWDICtx->wptMutex);
9009 /*-----------------------------------------------------------------------
9010 Get message buffer
9011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9014 &pSendBuffer, &usDataOffset, &usSendSize))||
9015 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9016 {
9017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9018 "Unable to get send buffer in set bss key req %x %x %x",
9019 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 }
9023
9024 /*-----------------------------------------------------------------------
9025 Copy the Key parameters into the HAL message
9026 -----------------------------------------------------------------------*/
9027
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9030
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9033
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9036
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9039
Jeff Johnsone7245742012-09-05 17:12:55 -07009040 wpalMemoryCopy( pSendBuffer+usDataOffset,
9041 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9042 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009043
9044 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009046
9047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009053
9054}/*WDI_ProcessRemoveSTABcastKeyReq*/
9055
9056/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009058==========================================================================*/
9059/**
9060 @brief Process Add TSpec Request function (called when Main FSM
9061 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009062
9063 @param pWDICtx: pointer to the WLAN DAL context
9064 pEventData: pointer to the event information structure
9065
Jeff Johnson295189b2012-06-20 16:38:30 -07009066 @see
9067 @return Result of the function call
9068*/
9069WDI_Status
9070WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009071(
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 WDI_ControlBlockType* pWDICtx,
9073 WDI_EventInfoType* pEventData
9074)
9075{
9076 WDI_AddTSReqParamsType* pwdiAddTSParams;
9077 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 wpt_uint16 usDataOffset = 0;
9082 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 wpt_macAddr macBSSID;
9085 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009086
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9088
9089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009091 -------------------------------------------------------------------------*/
9092 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9093 ( NULL == pEventData->pCBfnc ))
9094 {
9095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009096 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 }
9100
9101 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9102 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9103 /*-------------------------------------------------------------------------
9104 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009106 -------------------------------------------------------------------------*/
9107 wpalMutexAcquire(&pWDICtx->wptMutex);
9108
9109 /*------------------------------------------------------------------------
9110 Find the BSS for which the request is made and identify WDI session
9111 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9113 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009114 &macBSSID))
9115 {
9116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9117 "This station does not exist in the WDI Station Table %d");
9118 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 }
9121
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9123 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9126 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9127 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009128
9129 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009130 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009131 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009132
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 /*------------------------------------------------------------------------
9134 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 ------------------------------------------------------------------------*/
9137 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9138 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9140 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9141 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009142
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009145 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 }
9147
9148 wpalMutexRelease(&pWDICtx->wptMutex);
9149 /*-----------------------------------------------------------------------
9150 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9154 sizeof(halAddTsParams),
9155 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 &usSendSize))||
9157 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9158 {
9159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9160 "Unable to get send buffer in set bss key req %x %x %x",
9161 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009164 }
9165
9166 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9167 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9168
9169 //TSPEC IE
9170 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9171 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009175 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009186 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009187 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009198 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9202
9203 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009210 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009212 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009214 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009215 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9218
9219 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009220 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009221 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9224
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 wpalMemoryCopy( pSendBuffer+usDataOffset,
9226 &halAddTsParams,
9227 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009228
9229 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009230 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009231
9232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009233 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009234 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009236 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009238}/*WDI_ProcessAddTSpecReq*/
9239
9240
9241/**
9242 @brief Process Del TSpec Request function (called when Main FSM
9243 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009244
9245 @param pWDICtx: pointer to the WLAN DAL context
9246 pEventData: pointer to the event information structure
9247
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 @see
9249 @return Result of the function call
9250*/
9251WDI_Status
9252WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009253(
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 WDI_ControlBlockType* pWDICtx,
9255 WDI_EventInfoType* pEventData
9256)
9257{
9258 WDI_DelTSReqParamsType* pwdiDelTSParams;
9259 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 wpt_uint16 usDataOffset = 0;
9264 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9267
9268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 -------------------------------------------------------------------------*/
9271 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9272 ( NULL == pEventData->pCBfnc ))
9273 {
9274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009278 }
9279
9280 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9281 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9282
9283 /*-------------------------------------------------------------------------
9284 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009285 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009286 -------------------------------------------------------------------------*/
9287 wpalMutexAcquire(&pWDICtx->wptMutex);
9288
9289 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9293 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9294 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009295
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9299 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9300 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9301
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009303 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 }
9305
9306 /*------------------------------------------------------------------------
9307 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 ------------------------------------------------------------------------*/
9310 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9311 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9313 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9314 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009315
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 }
9320
9321
9322 wpalMutexRelease(&pWDICtx->wptMutex);
9323 /*-----------------------------------------------------------------------
9324 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9329 &pSendBuffer, &usDataOffset, &usSendSize))||
9330 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9331 {
9332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9333 "Unable to get send buffer in set bss key req %x %x %x",
9334 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9335 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009337 }
9338
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 wpalMemoryCopy( pSendBuffer+usDataOffset,
9340 &pwdiDelTSParams->wdiDelTSInfo,
9341 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009342
9343 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009344 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009345
9346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9350 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009351}/*WDI_ProcessDelTSpecReq*/
9352
9353/**
9354 @brief Process Update EDCA Params Request function (called when
9355 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009356
9357 @param pWDICtx: pointer to the WLAN DAL context
9358 pEventData: pointer to the event information structure
9359
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 @see
9361 @return Result of the function call
9362*/
9363WDI_Status
9364WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009365(
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 WDI_ControlBlockType* pWDICtx,
9367 WDI_EventInfoType* pEventData
9368)
9369{
9370 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9371 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 wpt_uint16 usDataOffset = 0;
9376 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9379
9380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 -------------------------------------------------------------------------*/
9383 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9384 ( NULL == pEventData->pCBfnc ))
9385 {
9386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009390 }
9391
9392 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9393 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9394 /*-------------------------------------------------------------------------
9395 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009397 -------------------------------------------------------------------------*/
9398 wpalMutexAcquire(&pWDICtx->wptMutex);
9399
9400 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009403 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9404 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9405 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009406
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 {
9409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9411 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009412
9413 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009414 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009415 }
9416
9417 /*------------------------------------------------------------------------
9418 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 ------------------------------------------------------------------------*/
9421 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9422 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9424 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9425 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009426
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 }
9431
9432
9433 wpalMutexRelease(&pWDICtx->wptMutex);
9434 /*-----------------------------------------------------------------------
9435 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009438 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9440 &pSendBuffer, &usDataOffset, &usSendSize))||
9441 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9442 {
9443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9444 "Unable to get send buffer in set bss key req %x %x %x",
9445 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 }
9449
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 wpalMemoryCopy( pSendBuffer+usDataOffset,
9451 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9452 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009453
9454 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009456
9457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9461 wdiUpdateEDCARspCb, pEventData->pUserData,
9462 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009463}/*WDI_ProcessUpdateEDCAParamsReq*/
9464
9465/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009468
9469 @param pWDICtx: pointer to the WLAN DAL context
9470 pEventData: pointer to the event information structure
9471
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 @see
9473 @return Result of the function call
9474*/
9475WDI_Status
9476WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009477(
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 WDI_ControlBlockType* pWDICtx,
9479 WDI_EventInfoType* pEventData
9480)
9481{
9482 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9483 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009485 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 wpt_uint16 usDataOffset = 0;
9488 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009489 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 wpt_macAddr macBSSID;
9491
9492 tAddBASessionReqMsg halAddBASessionReq;
9493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9494
9495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 -------------------------------------------------------------------------*/
9498 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9499 ( NULL == pEventData->pCBfnc ))
9500 {
9501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 }
9506
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009509 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009510 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9511 /*-------------------------------------------------------------------------
9512 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009513 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009514 -------------------------------------------------------------------------*/
9515 wpalMutexAcquire(&pWDICtx->wptMutex);
9516
9517 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009518 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009519 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9521 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 &macBSSID))
9523 {
9524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9525 "This station does not exist in the WDI Station Table %d");
9526 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009528 }
9529
9530
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009532
Jeff Johnsone7245742012-09-05 17:12:55 -07009533 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009534 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9536 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9537 __func__, MAC_ADDR_ARRAY(macBSSID));
9538
Jeff Johnson295189b2012-06-20 16:38:30 -07009539 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 }
9542
9543 /*------------------------------------------------------------------------
9544 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009545 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 ------------------------------------------------------------------------*/
9547 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9548 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9550 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9551 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009552
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 }
9557
9558
9559 wpalMutexRelease(&pWDICtx->wptMutex);
9560 /*-----------------------------------------------------------------------
9561 Get message buffer
9562 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9564 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 sizeof(halAddBASessionReq.addBASessionParams),
9566 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009568 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9569 {
9570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9571 "Unable to get send buffer in Add BA session req %x %x %x",
9572 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 }
9576
9577 halAddBASessionReq.addBASessionParams.staIdx =
9578 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9579 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9580 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9581 WDI_MAC_ADDR_LEN);
9582 halAddBASessionReq.addBASessionParams.baTID =
9583 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9584 halAddBASessionReq.addBASessionParams.baPolicy =
9585 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9586 halAddBASessionReq.addBASessionParams.baBufferSize =
9587 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9588 halAddBASessionReq.addBASessionParams.baTimeout =
9589 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9590 halAddBASessionReq.addBASessionParams.baSSN =
9591 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9592 halAddBASessionReq.addBASessionParams.baDirection =
9593 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9594
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 wpalMemoryCopy( pSendBuffer+usDataOffset,
9596 &halAddBASessionReq.addBASessionParams,
9597 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009598
9599 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009601
9602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009604 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009605 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9606 wdiAddBASessionRspCb, pEventData->pUserData,
9607 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009608}/*WDI_ProcessAddBASessionReq*/
9609
9610/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009612 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009613
9614 @param pWDICtx: pointer to the WLAN DAL context
9615 pEventData: pointer to the event information structure
9616
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 @see
9618 @return Result of the function call
9619*/
9620WDI_Status
9621WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009622(
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 WDI_ControlBlockType* pWDICtx,
9624 WDI_EventInfoType* pEventData
9625)
9626{
9627 WDI_DelBAReqParamsType* pwdiDelBAParams;
9628 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009629 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009630 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 wpt_uint16 usDataOffset = 0;
9633 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009634 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 wpt_macAddr macBSSID;
9636 tDelBAParams halDelBAparam;
9637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9638
9639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 -------------------------------------------------------------------------*/
9642 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9643 ( NULL == pEventData->pCBfnc ))
9644 {
9645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 }
9650
9651 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9652 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9653 /*-------------------------------------------------------------------------
9654 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009656 -------------------------------------------------------------------------*/
9657 wpalMutexAcquire(&pWDICtx->wptMutex);
9658
9659 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009662 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9663 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 &macBSSID))
9665 {
9666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9667 "This station does not exist in the WDI Station Table %d");
9668 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 }
9671
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009673
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009675 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9677 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9678 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009679
9680 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 }
9683
9684 /*------------------------------------------------------------------------
9685 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 ------------------------------------------------------------------------*/
9688 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9689 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9691 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9692 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009693
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 }
9698
9699 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 sizeof(halDelBAparam),
9702 &pSendBuffer, &usDataOffset, &usSendSize))||
9703 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9704 {
9705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9706 "Unable to get send buffer for DEL BA req %x %x %x",
9707 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 }
9711
9712 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9713 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9714 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9715
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 wpalMemoryCopy( pSendBuffer+usDataOffset,
9717 &halDelBAparam,
9718 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009719
9720 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009722
9723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9727 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009728}/*WDI_ProcessDelBAReq*/
9729
9730#ifdef FEATURE_WLAN_CCX
9731
9732WDI_Status
9733WDI_ProcessTSMStatsReq
9734(
9735 WDI_ControlBlockType* pWDICtx,
9736 WDI_EventInfoType* pEventData
9737)
9738{
9739 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9740 WDI_TsmRspCb wdiTSMRspCb;
9741 wpt_uint8 ucCurrentBSSSesIdx = 0;
9742 WDI_BSSSessionType* pBSSSes = NULL;
9743 wpt_uint8* pSendBuffer = NULL;
9744 wpt_uint16 usDataOffset = 0;
9745 wpt_uint16 usSendSize = 0;
9746 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9747 tTsmStatsParams halTsmStatsReqParams = {0};
9748
9749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9750
9751 /*-------------------------------------------------------------------------
9752 Sanity check
9753 -------------------------------------------------------------------------*/
9754 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9755 ( NULL == pEventData->pCBfnc ))
9756 {
9757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009759 WDI_ASSERT(0);
9760 return WDI_STATUS_E_FAILURE;
9761 }
9762
9763 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9764 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9765 /*-------------------------------------------------------------------------
9766 Check to see if we are in the middle of an association, if so queue, if
9767 not it means it is free to process request
9768 -------------------------------------------------------------------------*/
9769 wpalMutexAcquire(&pWDICtx->wptMutex);
9770
9771 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9772 if ( NULL == pBSSSes )
9773 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9775 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9776 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009777
9778 wpalMutexRelease(&pWDICtx->wptMutex);
9779 return WDI_STATUS_E_NOT_ALLOWED;
9780 }
9781
9782 /*------------------------------------------------------------------------
9783 Check if this BSS is being currently processed or queued,
9784 if queued - queue the new request as well
9785 ------------------------------------------------------------------------*/
9786 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9787 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9789 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9790 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009791
9792 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9793 wpalMutexRelease(&pWDICtx->wptMutex);
9794 return wdiStatus;
9795 }
9796
9797 wpalMutexRelease(&pWDICtx->wptMutex);
9798 /*-----------------------------------------------------------------------
9799 Get message buffer
9800 ! TO DO : proper conversion into the HAL Message Request Format
9801 -----------------------------------------------------------------------*/
9802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9803 sizeof(halTsmStatsReqParams),
9804 &pSendBuffer, &usDataOffset, &usSendSize))||
9805 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9806 {
9807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9808 "Unable to get send buffer in set bss key req %x %x %x",
9809 pEventData, pwdiTSMParams, wdiTSMRspCb);
9810 WDI_ASSERT(0);
9811 return WDI_STATUS_E_FAILURE;
9812 }
9813
9814 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9815 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9816 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9817 WDI_MAC_ADDR_LEN);
9818 wpalMemoryCopy( pSendBuffer+usDataOffset,
9819 &halTsmStatsReqParams,
9820 sizeof(halTsmStatsReqParams));
9821
9822 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9823 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9824
9825 /*-------------------------------------------------------------------------
9826 Send TSM Stats Request to HAL
9827 -------------------------------------------------------------------------*/
9828 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9829 wdiTSMRspCb, pEventData->pUserData,
9830 WDI_TSM_STATS_RESP);
9831}/*WDI_ProcessTSMStatsReq*/
9832
9833#endif
9834
9835
9836/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009839
9840 @param pWDICtx: pointer to the WLAN DAL context
9841 pEventData: pointer to the event information structure
9842
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 @see
9844 @return Result of the function call
9845*/
9846WDI_Status
9847WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009848(
Jeff Johnson295189b2012-06-20 16:38:30 -07009849 WDI_ControlBlockType* pWDICtx,
9850 WDI_EventInfoType* pEventData
9851)
9852{
9853 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9854 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 wpt_uint16 usDataOffset = 0;
9857 wpt_uint16 usSendSize = 0;
9858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9859
9860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009861 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009862 -------------------------------------------------------------------------*/
9863 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9864 ( NULL == pEventData->pCBfnc ))
9865 {
9866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 }
9871
9872 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9873 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9874 /*-----------------------------------------------------------------------
9875 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009876 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009877 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9880 &pSendBuffer, &usDataOffset, &usSendSize))||
9881 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9882 {
9883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9884 "Unable to get send buffer in set bss key req %x %x %x",
9885 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009888 }
9889
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 wpalMemoryCopy( pSendBuffer+usDataOffset,
9891 &pwdiFlushAcParams->wdiFlushAcInfo,
9892 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009893
9894 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009896
9897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009900 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9901 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009902}/*WDI_ProcessFlushAcReq*/
9903
9904/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009905 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009907
9908 @param pWDICtx: pointer to the WLAN DAL context
9909 pEventData: pointer to the event information structure
9910
Jeff Johnson295189b2012-06-20 16:38:30 -07009911 @see
9912 @return Result of the function call
9913*/
9914WDI_Status
9915WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009916(
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 WDI_ControlBlockType* pWDICtx,
9918 WDI_EventInfoType* pEventData
9919)
9920{
9921 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9922 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009924 wpt_uint16 usDataOffset = 0;
9925 wpt_uint16 usSendSize = 0;
9926
9927 tBtAmpEventMsg haltBtAmpEventMsg;
9928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9929
9930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 -------------------------------------------------------------------------*/
9933 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9934 ( NULL == pEventData->pCBfnc ))
9935 {
9936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 }
9941
9942 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9943 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9944 /*-----------------------------------------------------------------------
9945 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9950 &pSendBuffer, &usDataOffset, &usSendSize))||
9951 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9952 {
9953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9954 "Unable to get send buffer in BT AMP event req %x %x %x",
9955 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 }
9959
Jeff Johnsone7245742012-09-05 17:12:55 -07009960 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009961 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 wpalMemoryCopy( pSendBuffer+usDataOffset,
9963 &haltBtAmpEventMsg.btAmpEventParams,
9964 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009965
9966 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009968
9969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009970 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9973 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009974}/*WDI_ProcessBtAmpEventReq*/
9975
9976/**
9977 @brief Process Add STA self Request function (called when Main FSM
9978 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009979
9980 @param pWDICtx: pointer to the WLAN DAL context
9981 pEventData: pointer to the event information structure
9982
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 @see
9984 @return Result of the function call
9985*/
9986WDI_Status
9987WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009988(
Jeff Johnson295189b2012-06-20 16:38:30 -07009989 WDI_ControlBlockType* pWDICtx,
9990 WDI_EventInfoType* pEventData
9991)
9992{
9993 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9994 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009995 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009996 wpt_uint16 usDataOffset = 0;
9997 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10000
10001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010002 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010003 -------------------------------------------------------------------------*/
10004 if (( NULL == pEventData ) ||
10005 ( NULL == pEventData->pEventData) ||
10006 ( NULL == pEventData->pCBfnc))
10007 {
10008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010009 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 }
10013
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010015 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010017 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10018 /*-----------------------------------------------------------------------
10019 Get message buffer
10020 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10022 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 sizeof(tAddStaSelfParams),
10024 &pSendBuffer, &usDataOffset, &usSendSize))||
10025 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
10026 {
10027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10028 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10029 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 }
10033
10034 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10037
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
10040
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
10042 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010043
10044 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010046
10047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10051 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10052 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010053}/*WDI_ProcessAddSTASelfReq*/
10054
10055
10056
10057/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010058 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010060
10061 @param pWDICtx: pointer to the WLAN DAL context
10062 pEventData: pointer to the event information structure
10063
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 @see
10065 @return Result of the function call
10066*/
10067WDI_Status
10068WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010069(
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 WDI_ControlBlockType* pWDICtx,
10071 WDI_EventInfoType* pEventData
10072)
10073{
10074 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10075 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 wpt_uint16 usDataOffset = 0;
10078 wpt_uint16 usSendSize = 0;
10079 tDelStaSelfParams halSetDelSelfSTAParams;
10080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10081
10082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010084 -------------------------------------------------------------------------*/
10085 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10086 ( NULL == pEventData->pCBfnc ))
10087 {
10088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010092 }
10093
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10096 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10097
10098 /*-----------------------------------------------------------------------
10099 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010102 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010103 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10104 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10107 {
10108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10109 "Unable to get send buffer in Del Sta Self req %x %x %x",
10110 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 }
10114
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010116 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10117
Jeff Johnsone7245742012-09-05 17:12:55 -070010118 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10119 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010120
10121 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010123
10124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010125 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010127 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10128 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010129 WDI_DEL_STA_SELF_RESP);
10130
10131}
10132
Jeff Johnsone7245742012-09-05 17:12:55 -070010133#ifdef FEATURE_OEM_DATA_SUPPORT
10134/**
10135 @brief Process Start Oem Data Request function (called when Main
10136 FSM allows it)
10137
10138 @param pWDICtx: pointer to the WLAN DAL context
10139 pEventData: pointer to the event information structure
10140
10141 @see
10142 @return Result of the function call
10143*/
10144WDI_Status
10145WDI_ProcessStartOemDataReq
10146(
10147 WDI_ControlBlockType* pWDICtx,
10148 WDI_EventInfoType* pEventData
10149)
10150{
10151 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10152 WDI_oemDataRspCb wdiOemDataRspCb;
10153 wpt_uint8* pSendBuffer = NULL;
10154 wpt_uint16 usDataOffset = 0;
10155 wpt_uint16 usSendSize = 0;
10156 wpt_uint16 reqLen;
10157 tStartOemDataReqParams* halStartOemDataReqParams;
10158
10159 /*-------------------------------------------------------------------------
10160 Sanity check
10161 -------------------------------------------------------------------------*/
10162 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10163 ( NULL == pEventData->pCBfnc ))
10164 {
10165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010166 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 WDI_ASSERT(0);
10168 return WDI_STATUS_E_FAILURE;
10169 }
10170
10171 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10172 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10173
10174 /*-----------------------------------------------------------------------
10175 Get message buffer
10176 -----------------------------------------------------------------------*/
10177
10178 reqLen = sizeof(tStartOemDataReqParams);
10179
10180 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10181 WDI_START_OEM_DATA_REQ, reqLen,
10182 &pSendBuffer, &usDataOffset, &usSendSize))||
10183 (usSendSize < (usDataOffset + reqLen)))
10184 {
10185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10186 "Unable to get send buffer in Start Oem Data req %x %x %x",
10187 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10188 WDI_ASSERT(0);
10189 return WDI_STATUS_E_FAILURE;
10190 }
10191
10192 //copying WDI OEM DATA REQ PARAMS to shared memory
10193 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10194
10195 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10196 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10197
10198 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10199 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10200
10201 /*-------------------------------------------------------------------------
10202 Send Start Request to HAL
10203 -------------------------------------------------------------------------*/
10204 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10205 wdiOemDataRspCb, pEventData->pUserData,
10206 WDI_START_OEM_DATA_RESP);
10207}/*WDI_ProcessStartOemDataReq*/
10208#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010209
10210/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010212 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010213
10214 @param pWDICtx: pointer to the WLAN DAL context
10215 pEventData: pointer to the event information structure
10216
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 @see
10218 @return Result of the function call
10219*/
10220WDI_Status
10221WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010222(
Jeff Johnson295189b2012-06-20 16:38:30 -070010223 WDI_ControlBlockType* pWDICtx,
10224 WDI_EventInfoType* pEventData
10225)
10226{
10227 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10228 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010229 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010230 wpt_uint16 usDataOffset = 0;
10231 wpt_uint16 usSendSize = 0;
10232 tHalWlanHostResumeReqParam halResumeReqParams;
10233
10234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10235
10236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010238 -------------------------------------------------------------------------*/
10239 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10240 ( NULL == pEventData->pCBfnc ))
10241 {
10242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010243 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010246 }
10247
10248 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10249 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10250
10251 /*-----------------------------------------------------------------------
10252 Get message buffer
10253 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10256 &pSendBuffer, &usDataOffset, &usSendSize))||
10257 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10258 {
10259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010260 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010261 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 }
10265
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010267 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010268
10269 wpalMemoryCopy( pSendBuffer+usDataOffset,
10270 &halResumeReqParams,
10271 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010272
10273 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010274 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010275
10276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10280 wdiHostResumeRspCb, pEventData->pUserData,
10281 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010282}/*WDI_ProcessHostResumeReq*/
10283
10284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010287
10288 @param pWDICtx: pointer to the WLAN DAL context
10289 pEventData: pointer to the event information structure
10290
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 @see
10292 @return Result of the function call
10293*/
10294WDI_Status
10295WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010296(
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 WDI_ControlBlockType* pWDICtx,
10298 WDI_EventInfoType* pEventData
10299)
10300{
10301 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10302 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 wpt_uint16 usDataOffset = 0;
10305 wpt_uint16 usSendSize = 0;
10306 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10308
10309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 -------------------------------------------------------------------------*/
10312 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10313 ( NULL == pEventData->pCBfnc ))
10314 {
10315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010316 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 }
10320
10321 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10322 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010323
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 /*-----------------------------------------------------------------------
10325 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010326 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010327 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 sizeof(halTxPerTrackingReqParam),
10330 &pSendBuffer, &usDataOffset, &usSendSize))||
10331 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10332 {
10333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10334 "Unable to get send buffer in set tx per tracking req %x %x %x",
10335 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010338 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010339
Jeff Johnson295189b2012-06-20 16:38:30 -070010340 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10341 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10342 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10343 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010344
10345 wpalMemoryCopy( pSendBuffer+usDataOffset,
10346 &halTxPerTrackingReqParam,
10347 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010348
10349 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010351
10352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010355 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10356 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010357}/*WDI_ProcessSetTxPerTrackingReq*/
10358
10359/*=========================================================================
10360 Indications
10361=========================================================================*/
10362
10363/**
10364 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010365
10366 @param pWDICtx: pointer to the WLAN DAL context
10367 pEventData: pointer to the event information structure
10368
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 @see
10370 @return Result of the function call
10371*/
10372WDI_Status
10373WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010374(
Jeff Johnson295189b2012-06-20 16:38:30 -070010375 WDI_ControlBlockType* pWDICtx,
10376 WDI_EventInfoType* pEventData
10377)
10378{
10379 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010380 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010381 wpt_uint16 usDataOffset = 0;
10382 wpt_uint16 usSendSize = 0;
10383 WDI_Status wdiStatus;
10384 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10386
10387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 -------------------------------------------------------------------------*/
10390 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10391 {
10392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010393 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 }
10397
10398 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10399
10400 /*-----------------------------------------------------------------------
10401 Get message buffer
10402 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10404 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010405 sizeof(halWlanSuspendIndparams),
10406 &pSendBuffer, &usDataOffset, &usSendSize))||
10407 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10408 {
10409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10410 "Unable to get send buffer in Suspend Ind ");
10411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 }
10414
10415 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10416 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10417
Jeff Johnsone7245742012-09-05 17:12:55 -070010418 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 WDI_GetActiveSessionsCount(pWDICtx);
10420
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10422 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010423
10424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010425 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010426 -------------------------------------------------------------------------*/
10427 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010429
Jeff Johnsone7245742012-09-05 17:12:55 -070010430 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010431 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10432}/*WDI_ProcessHostSuspendInd*/
10433
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010434
10435
10436/**
10437 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10438
10439 @param pWDICtx: pointer to the WLAN DAL context
10440 pEventData: pointer to the event information structure
10441
10442 @see
10443 @return Result of the function call
10444*/
10445WDI_Status
10446WDI_ProcessTrafficStatsInd
10447(
10448 WDI_ControlBlockType* pWDICtx,
10449 WDI_EventInfoType* pEventData
10450)
10451{
10452 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10453 wpt_uint8* pSendBuffer = NULL;
10454 wpt_uint16 usDataOffset = 0;
10455 wpt_uint16 usSendSize = 0;
10456 WDI_Status wdiStatus;
10457 tStatsClassBIndParams* pStatsClassBIndParams;
10458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10459
10460 /*-------------------------------------------------------------------------
10461 Sanity check
10462 -------------------------------------------------------------------------*/
10463 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10464 {
10465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10466 "%s: Invalid parameters in Traffic Stats ind",__func__);
10467 WDI_ASSERT(0);
10468 return WDI_STATUS_E_FAILURE;
10469 }
10470
10471 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10472
10473 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10474 {
10475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10476 "%s: Invalid parameters in Traffic Stats ind",__func__);
10477 WDI_ASSERT(0);
10478 return WDI_STATUS_E_FAILURE;
10479 }
10480
10481 /*-----------------------------------------------------------------------
10482 Get message buffer
10483 -----------------------------------------------------------------------*/
10484 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10485 WDI_TRAFFIC_STATS_IND,
10486 sizeof(tStatsClassBIndParams),
10487 &pSendBuffer, &usDataOffset, &usSendSize))||
10488 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10489 {
10490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10491 "Unable to get send buffer in Traffic Stats Ind ");
10492 WDI_ASSERT(0);
10493 return WDI_STATUS_E_FAILURE;
10494 }
10495
10496 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10497
10498 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10499
10500 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10501 pTrafficStatsIndParams->pTrafficStats,
10502 pTrafficStatsIndParams->length);
10503
10504 /*-------------------------------------------------------------------------
10505 Send Suspend Request to HAL
10506 -------------------------------------------------------------------------*/
10507 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10508 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10509
10510 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10511 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10512}/*WDI_ProcessTrafficStatsInd*/
10513
Jeff Johnson295189b2012-06-20 16:38:30 -070010514/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010515 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010516==========================================================================*/
10517/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010518 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010519 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010520
10521 @param pWDICtx: pointer to the WLAN DAL context
10522 pEventData: pointer to the event information structure
10523
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 @see
10525 @return Result of the function call
10526*/
10527WDI_Status
10528WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010529(
Jeff Johnson295189b2012-06-20 16:38:30 -070010530 WDI_ControlBlockType* pWDICtx,
10531 WDI_EventInfoType* pEventData
10532)
10533{
10534 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10535 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010536 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010537 wpt_uint16 usDataOffset = 0;
10538 wpt_uint16 usSendSize = 0;
10539 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10541
10542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 -------------------------------------------------------------------------*/
10545 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10546 ( NULL == pEventData->pCBfnc ))
10547 {
10548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010549 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010552 }
10553
10554 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10555 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10556 /*-----------------------------------------------------------------------
10557 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 sizeof(halSwitchChannelReq.switchChannelParams),
10562 &pSendBuffer, &usDataOffset, &usSendSize))||
10563 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10564 {
10565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10566 "Unable to get send buffer in channel switch req %x %x %x",
10567 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 }
10571
Jeff Johnsone7245742012-09-05 17:12:55 -070010572 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010573 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010574#ifndef WLAN_FEATURE_VOWIFI
10575 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010576 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10577#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010579 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10580
10581#ifdef WLAN_FEATURE_VOWIFI
10582 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10585 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10586 WDI_MAC_ADDR_LEN);
10587 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10588 pwdiSwitchChParams->wdiChInfo.macBSSId,
10589 WDI_MAC_ADDR_LEN);
10590#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 wpalMemoryCopy( pSendBuffer+usDataOffset,
10592 &halSwitchChannelReq.switchChannelParams,
10593 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010594
10595 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010596 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010597
10598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010599 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010600 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10602 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010603}/*WDI_ProcessChannelSwitchReq*/
10604
10605/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010608
10609 @param pWDICtx: pointer to the WLAN DAL context
10610 pEventData: pointer to the event information structure
10611
Jeff Johnson295189b2012-06-20 16:38:30 -070010612 @see
10613 @return Result of the function call
10614*/
10615WDI_Status
10616WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010617(
Jeff Johnson295189b2012-06-20 16:38:30 -070010618 WDI_ControlBlockType* pWDICtx,
10619 WDI_EventInfoType* pEventData
10620)
10621{
10622 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10623 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010624 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 wpt_uint16 usDataOffset = 0;
10628 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010629 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010630
Jeff Johnsone7245742012-09-05 17:12:55 -070010631 tConfigStaReqMsg halConfigStaReqMsg;
10632 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10634
10635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010637 -------------------------------------------------------------------------*/
10638 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10639 ( NULL == pEventData->pCBfnc ))
10640 {
10641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 }
10646
10647 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10648 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10649 /*-------------------------------------------------------------------------
10650 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 -------------------------------------------------------------------------*/
10653 wpalMutexAcquire(&pWDICtx->wptMutex);
10654
10655 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010656 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010657 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10659 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10660 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010661
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10665 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10666 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010667
10668 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 }
10671
10672 /*------------------------------------------------------------------------
10673 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010674 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010675 ------------------------------------------------------------------------*/
10676 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10677 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10679 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10680 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010681
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010685 }
10686
10687 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010688
10689 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10690#ifdef WLAN_FEATURE_11AC
10691 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010692 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 else
10694#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010695 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010696
Jeff Johnson295189b2012-06-20 16:38:30 -070010697 /*-----------------------------------------------------------------------
10698 Get message buffer
10699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10701 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010704 {
10705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10706 "Unable to get send buffer in config sta req %x %x %x",
10707 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010710 }
10711
10712 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 &pwdiConfigSTAParams->wdiReqInfo);
10715
10716 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10717 {
10718 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010720 WDI_STATableFindStaidByAddr(pWDICtx,
10721 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 {
10724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10725 "This station does not exist in the WDI Station Table %d");
10726 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010727 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010729 }
10730 }
10731 else
10732 {
10733 /* Need to fill in the STA Index to invalid, since at this point we have not
10734 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010735 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010736 }
10737
10738 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010739 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010740
Jeff Johnsone7245742012-09-05 17:12:55 -070010741 wpalMemoryCopy( pSendBuffer+usDataOffset,
10742 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010743 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010744
10745 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010747
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10749 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010750 sizeof(pWDICtx->wdiCachedConfigStaReq));
10751
10752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10756 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010757}/*WDI_ProcessConfigStaReq*/
10758
10759
10760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010761 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010762 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010763
10764 @param pWDICtx: pointer to the WLAN DAL context
10765 pEventData: pointer to the event information structure
10766
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 @see
10768 @return Result of the function call
10769*/
10770WDI_Status
10771WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010772(
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 WDI_ControlBlockType* pWDICtx,
10774 WDI_EventInfoType* pEventData
10775)
10776{
10777 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10778 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010779 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010780 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010781 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010782 wpt_uint16 usDataOffset = 0;
10783 wpt_uint16 usSendSize = 0;
10784 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010785 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10787
10788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 -------------------------------------------------------------------------*/
10791 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10792 ( NULL == pEventData->pCBfnc ))
10793 {
10794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 }
10799
10800 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10801 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10802 /*-------------------------------------------------------------------------
10803 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 -------------------------------------------------------------------------*/
10806 wpalMutexAcquire(&pWDICtx->wptMutex);
10807
10808 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010809 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010810 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10812 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10813 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010814
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010818 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10819 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 }
10821 else
10822 {
10823 /*------------------------------------------------------------------------
10824 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 ------------------------------------------------------------------------*/
10827 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10828 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10830 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10831 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10832
10833 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010834 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010835 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 }
10837 }
10838 /* If the link is set to enter IDLE - the Session allocated for this BSS
10839 will be deleted on the Set Link State response coming from HAL
10840 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10843
10844 wpalMutexRelease(&pWDICtx->wptMutex);
10845 /*-----------------------------------------------------------------------
10846 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010848 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010849
10850 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010851 sizeof(halLinkStateReqMsg),
10852 &pSendBuffer, &usDataOffset, &usSendSize))||
10853 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10854 {
10855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10856 "Unable to get send buffer in set bss key req %x %x %x",
10857 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10858 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 }
10861
10862 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10863 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10864
10865 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10866 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10867
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10870
Jeff Johnsone7245742012-09-05 17:12:55 -070010871 wpalMemoryCopy( pSendBuffer+usDataOffset,
10872 &halLinkStateReqMsg,
10873 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010874
10875 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010876 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010877
10878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010879 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010880 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010881 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10882 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010883}/*WDI_ProcessSetLinkStateReq*/
10884
10885
10886/**
10887 @brief Process Get Stats Request function (called when Main FSM
10888 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010889
10890 @param pWDICtx: pointer to the WLAN DAL context
10891 pEventData: pointer to the event information structure
10892
Jeff Johnson295189b2012-06-20 16:38:30 -070010893 @see
10894 @return Result of the function call
10895*/
10896WDI_Status
10897WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010898(
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 WDI_ControlBlockType* pWDICtx,
10900 WDI_EventInfoType* pEventData
10901)
10902{
10903 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
10904 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010905 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 wpt_uint16 usDataOffset = 0;
10907 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010908 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010909 WDI_BSSSessionType* pBSSSes = NULL;
10910 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 tHalStatsReqMsg halStatsReqMsg;
10913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10914
10915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010917 -------------------------------------------------------------------------*/
10918 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10919 ( NULL == pEventData->pCBfnc ) )
10920 {
10921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010925 }
10926
10927 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10928 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10929
10930 /*-------------------------------------------------------------------------
10931 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010932 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 -------------------------------------------------------------------------*/
10934 wpalMutexAcquire(&pWDICtx->wptMutex);
10935
10936 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010938 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10940 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010941 &macBSSID))
10942 {
10943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10944 "This station does not exist in the WDI Station Table %d");
10945 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 }
10948
Jeff Johnsone7245742012-09-05 17:12:55 -070010949 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10950 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010951 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10953 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10954 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010955
10956 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010957 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010958 }
10959
10960 /*------------------------------------------------------------------------
10961 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010962 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 ------------------------------------------------------------------------*/
10964 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10965 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10967 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10968 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010969
Jeff Johnsone7245742012-09-05 17:12:55 -070010970 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010971 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010972 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010973 }
10974
10975
10976 wpalMutexRelease(&pWDICtx->wptMutex);
10977
10978 /*-----------------------------------------------------------------------
10979 Get message buffer
10980 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010982 sizeof(halStatsReqMsg.statsReqParams),
10983 &pSendBuffer, &usDataOffset, &usSendSize))||
10984 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10985 {
10986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10987 "Unable to get send buffer in set bss key req %x %x %x",
10988 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010991 }
10992
Jeff Johnsone7245742012-09-05 17:12:55 -070010993 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010994 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010995 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010996 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010997 wpalMemoryCopy( pSendBuffer+usDataOffset,
10998 &halStatsReqMsg.statsReqParams,
10999 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011000
11001 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011002 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011003
11004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011006 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011007 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11008 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011009}/*WDI_ProcessGetStatsReq*/
11010
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011011#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11012/**
11013 @brief Process Get Roam Rssi Request function (called when Main FSM
11014 allows it)
11015
11016 @param pWDICtx: pointer to the WLAN DAL context
11017 pEventData: pointer to the event information structure
11018
11019 @see
11020 @return Result of the function call
11021*/
11022WDI_Status
11023WDI_ProcessGetRoamRssiReq
11024(
11025 WDI_ControlBlockType* pWDICtx,
11026 WDI_EventInfoType* pEventData
11027)
11028{
11029 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11030 WDI_GetStatsRspCb wdiGetStatsRspCb;
11031 wpt_uint8* pSendBuffer = NULL;
11032 wpt_uint16 usDataOffset = 0;
11033 wpt_uint16 usSendSize = 0;
11034 wpt_uint8 ucCurrentBSSSesIdx = 0;
11035 WDI_BSSSessionType* pBSSSes = NULL;
11036 wpt_macAddr macBSSID;
11037 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11038 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11040 /*-------------------------------------------------------------------------
11041 Sanity check
11042 -------------------------------------------------------------------------*/
11043 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11044 ( NULL == pEventData->pCBfnc ) )
11045 {
11046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11047 "%s: Invalid parameters", __func__);
11048 WDI_ASSERT(0);
11049 return WDI_STATUS_E_FAILURE;
11050 }
11051
11052 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11053 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11054
11055 /*-------------------------------------------------------------------------
11056 Check to see if we are in the middle of an association, if so queue, if
11057 not it means it is free to process request
11058 -------------------------------------------------------------------------*/
11059 wpalMutexAcquire(&pWDICtx->wptMutex);
11060
11061 /*------------------------------------------------------------------------
11062 Find the BSS for which the request is made
11063 ------------------------------------------------------------------------*/
11064 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11065 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11066 &macBSSID))
11067 {
11068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11069 "This station does not exist in the WDI Station Table %d");
11070 wpalMutexRelease(&pWDICtx->wptMutex);
11071 return WDI_STATUS_E_FAILURE;
11072 }
11073
11074 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11075 if ( NULL == pBSSSes )
11076 {
11077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11078 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11079 __func__, MAC_ADDR_ARRAY(macBSSID));
11080
11081 wpalMutexRelease(&pWDICtx->wptMutex);
11082 return WDI_STATUS_E_NOT_ALLOWED;
11083 }
11084
11085 /*------------------------------------------------------------------------
11086 Check if this BSS is being currently processed or queued,
11087 if queued - queue the new request as well
11088 ------------------------------------------------------------------------*/
11089 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11090 {
11091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11092 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11093 __func__, MAC_ADDR_ARRAY(macBSSID));
11094
11095 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11096 wpalMutexRelease(&pWDICtx->wptMutex);
11097 return wdiStatus;
11098 }
11099
11100 wpalMutexRelease(&pWDICtx->wptMutex);
11101
11102 /*-----------------------------------------------------------------------
11103 Get message buffer
11104 -----------------------------------------------------------------------*/
11105 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11106 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11107 &pSendBuffer, &usDataOffset, &usSendSize))||
11108 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11109 {
11110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11111 "Unable to get send buffer in set bss key req %x %x %x",
11112 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11113 WDI_ASSERT(0);
11114 return WDI_STATUS_E_FAILURE;
11115 }
11116
11117 halRssiRoamReqMsg.roamRssiReqParams.staId =
11118 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11119 wpalMemoryCopy( pSendBuffer+usDataOffset,
11120 &halRssiRoamReqMsg.roamRssiReqParams,
11121 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11122
11123 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11124 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11125
11126 /*-------------------------------------------------------------------------
11127 Send Get STA Request to HAL
11128 -------------------------------------------------------------------------*/
11129 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11130 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11131}/*WDI_ProcessGetRoamRssiReq*/
11132#endif
11133
Jeff Johnson295189b2012-06-20 16:38:30 -070011134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011135 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011136 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011137
11138 @param pWDICtx: pointer to the WLAN DAL context
11139 pEventData: pointer to the event information structure
11140
Jeff Johnson295189b2012-06-20 16:38:30 -070011141 @see
11142 @return Result of the function call
11143*/
11144WDI_Status
11145WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011146(
Jeff Johnson295189b2012-06-20 16:38:30 -070011147 WDI_ControlBlockType* pWDICtx,
11148 WDI_EventInfoType* pEventData
11149)
11150{
11151 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11152 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11153
Jeff Johnsone7245742012-09-05 17:12:55 -070011154 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011155 wpt_uint16 usDataOffset = 0;
11156 wpt_uint16 usSendSize = 0;
11157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11158
11159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011161 -------------------------------------------------------------------------*/
11162 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11163 ( NULL == pEventData->pCBfnc))
11164 {
11165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 }
11170
11171 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11172 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11173
11174 /*-----------------------------------------------------------------------
11175 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011176 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011177 -----------------------------------------------------------------------*/
11178
Jeff Johnsone7245742012-09-05 17:12:55 -070011179 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11181 &pSendBuffer, &usDataOffset, &usSendSize))||
11182 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11183 {
11184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11185 "Unable to get send buffer in set bss key req %x %x %x",
11186 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011189 }
11190
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 wpalMemoryCopy( pSendBuffer+usDataOffset,
11192 &pwdiUpdateCfgParams->uConfigBufferLen,
11193 sizeof(wpt_uint32));
11194 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11195 pwdiUpdateCfgParams->pConfigBuffer,
11196 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011197
11198 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011200
11201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011202 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011203 -------------------------------------------------------------------------*/
11204
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11206 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011207
11208}/*WDI_ProcessUpdateCfgReq*/
11209
11210
11211/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011214
11215 @param pWDICtx: pointer to the WLAN DAL context
11216 pEventData: pointer to the event information structure
11217
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 @see
11219 @return Result of the function call
11220*/
11221WDI_Status
11222WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011223(
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 WDI_ControlBlockType* pWDICtx,
11225 WDI_EventInfoType* pEventData
11226)
11227{
11228 WDI_AddBAReqParamsType* pwdiAddBAParams;
11229 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011230 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011231 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011233 wpt_uint16 usDataOffset = 0;
11234 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011236 wpt_macAddr macBSSID;
11237
11238 tAddBAReqMsg halAddBAReq;
11239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11240
11241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011243 -------------------------------------------------------------------------*/
11244 if (( NULL == pEventData ) ||
11245 ( NULL == pEventData->pEventData) ||
11246 ( NULL == pEventData->pCBfnc ))
11247 {
11248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011252 }
11253
11254 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11255 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11256
11257 /*-------------------------------------------------------------------------
11258 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011259 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011260 -------------------------------------------------------------------------*/
11261 wpalMutexAcquire(&pWDICtx->wptMutex);
11262
11263 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011264 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011265 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011266 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11267 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011268 &macBSSID))
11269 {
11270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11271 "This station does not exist in the WDI Station Table %d");
11272 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011274 }
11275
Jeff Johnsone7245742012-09-05 17:12:55 -070011276 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11277 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011278 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11280 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11281 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011282
11283 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 }
11286
11287 /*------------------------------------------------------------------------
11288 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011289 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011290 ------------------------------------------------------------------------*/
11291 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11292 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11294 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11295 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011296
Jeff Johnsone7245742012-09-05 17:12:55 -070011297 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011298 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011299 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011300 }
11301
11302
11303 wpalMutexRelease(&pWDICtx->wptMutex);
11304 /*-----------------------------------------------------------------------
11305 Get message buffer
11306 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011307 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011308 sizeof(halAddBAReq.addBAParams),
11309 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011310 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011311 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11312 {
11313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11314 "Unable to get send buffer in Add BA req %x %x %x",
11315 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 }
11319
Jeff Johnsone7245742012-09-05 17:12:55 -070011320 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011321 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11322 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11323#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011325 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11326#endif
11327
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 wpalMemoryCopy( pSendBuffer+usDataOffset,
11329 &halAddBAReq.addBAParams,
11330 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011331
11332 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011333 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011334
11335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011336 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011337 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11339 wdiAddBARspCb, pEventData->pUserData,
11340 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011341}/*WDI_ProcessAddBAReq*/
11342
11343
11344
11345/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011346 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011347 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011348
11349 @param pWDICtx: pointer to the WLAN DAL context
11350 pEventData: pointer to the event information structure
11351
Jeff Johnson295189b2012-06-20 16:38:30 -070011352 @see
11353 @return Result of the function call
11354*/
11355WDI_Status
11356WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011357(
Jeff Johnson295189b2012-06-20 16:38:30 -070011358 WDI_ControlBlockType* pWDICtx,
11359 WDI_EventInfoType* pEventData
11360)
11361{
11362 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11363 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011364 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011365 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011366 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011367 wpt_uint16 usDataOffset = 0;
11368 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011369 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011370 wpt_uint16 index;
11371 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011372
Jeff Johnson295189b2012-06-20 16:38:30 -070011373 tTriggerBAReqMsg halTriggerBAReq;
11374 tTriggerBaReqCandidate* halTriggerBACandidate;
11375 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11377
11378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 -------------------------------------------------------------------------*/
11381 if (( NULL == pEventData ) ||
11382 ( NULL == pEventData->pEventData ) ||
11383 ( NULL == pEventData->pCBfnc ))
11384 {
11385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011389 }
11390
11391 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11392 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11393 /*-------------------------------------------------------------------------
11394 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011395 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011396 -------------------------------------------------------------------------*/
11397 wpalMutexAcquire(&pWDICtx->wptMutex);
11398
11399 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011400 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011401 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011402 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11403 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011404 &macBSSID))
11405 {
11406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11407 "This station does not exist in the WDI Station Table %d");
11408 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011410 }
11411
Jeff Johnsone7245742012-09-05 17:12:55 -070011412 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11413 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11416 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11417 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011418
11419 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011421 }
11422
11423 /*------------------------------------------------------------------------
11424 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011426 ------------------------------------------------------------------------*/
11427 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11428 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11430 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11431 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011432
Jeff Johnsone7245742012-09-05 17:12:55 -070011433 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011434 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011435 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011436 }
11437
11438
11439 wpalMutexRelease(&pWDICtx->wptMutex);
11440 /*-----------------------------------------------------------------------
11441 Get message buffer
11442 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11444 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011445 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011446 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11448 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011449 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011450 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011451 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11453 {
11454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11455 "Unable to get send buffer in Trigger BA req %x %x %x",
11456 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011459 }
11460
Jeff Johnsone7245742012-09-05 17:12:55 -070011461 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011462 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11465
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 wpalMemoryCopy( pSendBuffer+usDataOffset,
11467 &halTriggerBAReq.triggerBAParams,
11468 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011469
Jeff Johnsone7245742012-09-05 17:12:55 -070011470 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011471 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11472 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11473 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011474
11475 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 index++)
11477 {
11478 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11479 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11480 halTriggerBACandidate++;
11481 wdiTriggerBACandidate++;
11482 }
11483
11484 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011485 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011486
11487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011488 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11491 wdiTriggerBARspCb, pEventData->pUserData,
11492 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011493}/*WDI_ProcessTriggerBAReq*/
11494
11495
11496
11497/**
11498 @brief Process Update Beacon Params Request function (called when Main FSM
11499 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011500
11501 @param pWDICtx: pointer to the WLAN DAL context
11502 pEventData: pointer to the event information structure
11503
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 @see
11505 @return Result of the function call
11506*/
11507WDI_Status
11508WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011509(
Jeff Johnson295189b2012-06-20 16:38:30 -070011510 WDI_ControlBlockType* pWDICtx,
11511 WDI_EventInfoType* pEventData
11512)
11513{
11514 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11515 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011516 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011517 wpt_uint16 usDataOffset = 0;
11518 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011519 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11521
11522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 -------------------------------------------------------------------------*/
11525 if (( NULL == pEventData ) ||
11526 ( NULL == pEventData->pEventData) ||
11527 ( NULL == pEventData->pCBfnc))
11528 {
11529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011533 }
11534
11535 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11536 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11537 /*-----------------------------------------------------------------------
11538 Get message buffer
11539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 sizeof(halUpdateBeaconParams),
11542 &pSendBuffer, &usDataOffset, &usSendSize))||
11543 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11544 {
11545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11546 "Unable to get send buffer in set bss key req %x %x %x",
11547 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 }
11551
11552 /*BSS Index of the BSS*/
11553 halUpdateBeaconParams.bssIdx =
11554 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11555 /*shortPreamble mode. HAL should update all the STA rates when it
11556 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011558 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11559 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011560 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011561 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11562 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011564 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11565
11566 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011568 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011569 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011570 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011571 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011572 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011573 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011574 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011575 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011577 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011578 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11579 halUpdateBeaconParams.fRIFSMode =
11580 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011582 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11583
Jeff Johnsone7245742012-09-05 17:12:55 -070011584 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11585 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011586
11587 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011588 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011589
11590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011591 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011592 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011593 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11594 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011595}/*WDI_ProcessUpdateBeaconParamsReq*/
11596
11597
11598
11599/**
11600 @brief Process Send Beacon template Request function (called when Main FSM
11601 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011602
11603 @param pWDICtx: pointer to the WLAN DAL context
11604 pEventData: pointer to the event information structure
11605
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 @see
11607 @return Result of the function call
11608*/
11609WDI_Status
11610WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011611(
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 WDI_ControlBlockType* pWDICtx,
11613 WDI_EventInfoType* pEventData
11614)
11615{
11616 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11617 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011618 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011619 wpt_uint16 usDataOffset = 0;
11620 wpt_uint16 usSendSize = 0;
11621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11622
11623 tSendBeaconReqMsg halSendBeaconReq;
11624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011626 -------------------------------------------------------------------------*/
11627 if (( NULL == pEventData ) ||
11628 ( NULL == pEventData->pEventData ) ||
11629 ( NULL == pEventData->pCBfnc ))
11630 {
11631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 }
11636
11637 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11638 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11639 /*-----------------------------------------------------------------------
11640 Get message buffer
11641 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 sizeof(halSendBeaconReq.sendBeaconParam),
11644 &pSendBuffer, &usDataOffset, &usSendSize))||
11645 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11646 {
11647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11648 "Unable to get send buffer in send beacon req %x %x %x",
11649 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 }
11653
11654 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11655 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11656 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011657 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011658 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11659 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11660 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11661 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070011666
Jeff Johnsone7245742012-09-05 17:12:55 -070011667 wpalMemoryCopy( pSendBuffer+usDataOffset,
11668 &halSendBeaconReq.sendBeaconParam,
11669 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011670
11671 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011672 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011673
11674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011677 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11678 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011679}/*WDI_ProcessSendBeaconParamsReq*/
11680
11681/**
11682 @brief Process Update Beacon Params Request function (called when Main FSM
11683 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011684
11685 @param pWDICtx: pointer to the WLAN DAL context
11686 pEventData: pointer to the event information structure
11687
Jeff Johnson295189b2012-06-20 16:38:30 -070011688 @see
11689 @return Result of the function call
11690*/
11691WDI_Status
11692WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011693(
Jeff Johnson295189b2012-06-20 16:38:30 -070011694 WDI_ControlBlockType* pWDICtx,
11695 WDI_EventInfoType* pEventData
11696)
11697{
11698 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11699 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011701 wpt_uint16 usDataOffset = 0;
11702 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011703 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11705
11706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011708 -------------------------------------------------------------------------*/
11709 if (( NULL == pEventData ) ||
11710 ( NULL == pEventData->pEventData) ||
11711 ( NULL == pEventData->pCBfnc))
11712 {
11713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011717 }
11718
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011721 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011722 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11723 /*-----------------------------------------------------------------------
11724 Get message buffer
11725 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011726 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 sizeof(halUpdateProbeRspTmplParams),
11728 &pSendBuffer, &usDataOffset, &usSendSize))||
11729 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11730 {
11731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11732 "Unable to get send buffer in set bss key req %x %x %x",
11733 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011736 }
11737
11738 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 WDI_MAC_ADDR_LEN);
11741
Jeff Johnsone7245742012-09-05 17:12:55 -070011742 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011743 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11744
11745 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11746 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011747 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011748
11749
11750 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11751 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11752 WDI_PROBE_REQ_BITMAP_IE_LEN);
11753
Jeff Johnsone7245742012-09-05 17:12:55 -070011754 wpalMemoryCopy( pSendBuffer+usDataOffset,
11755 &halUpdateProbeRspTmplParams,
11756 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011757
11758 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011759 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011760
11761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011762 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011763 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011764 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11765 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11766 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011767}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11768
11769/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011770 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011771 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011772
11773 @param pWDICtx: pointer to the WLAN DAL context
11774 pEventData: pointer to the event information structure
11775
Jeff Johnson295189b2012-06-20 16:38:30 -070011776 @see
11777 @return Result of the function call
11778*/
11779WDI_Status
11780WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011781(
Jeff Johnson295189b2012-06-20 16:38:30 -070011782 WDI_ControlBlockType* pWDICtx,
11783 WDI_EventInfoType* pEventData
11784)
11785{
11786
11787 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11788 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11789
11790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011791 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011792 -------------------------------------------------------------------------*/
11793 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011794 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011795 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011796 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011797 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11798 {
11799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011800 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 }
11804
11805 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11808
11809 /*cache the wdi nv request message here if the the first fragment
11810 * To issue the request to HAL for the next fragment */
11811 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11812 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11814 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11816
11817 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11818 pWDICtx->pRspCBUserData = pEventData->pUserData;
11819 }
11820
11821 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11822}
11823
11824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011825 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011826 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011827
11828 @param pWDICtx: pointer to the WLAN DAL context
11829 pEventData: pointer to the event information structure
11830
Jeff Johnson295189b2012-06-20 16:38:30 -070011831 @see
11832 @return Result of the function call
11833*/
11834WDI_Status WDI_ProcessSetMaxTxPowerReq
11835(
11836 WDI_ControlBlockType* pWDICtx,
11837 WDI_EventInfoType* pEventData
11838)
11839{
11840 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11841 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011842 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011843 wpt_uint16 usDataOffset = 0;
11844 wpt_uint16 usSendSize = 0;
11845 tSetMaxTxPwrReq halSetMaxTxPower;
11846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11847
11848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 -------------------------------------------------------------------------*/
11851 if (( NULL == pEventData ) ||
11852 ( NULL == pEventData->pEventData ) ||
11853 ( NULL == pEventData->pCBfnc ))
11854 {
11855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011856 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011860 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011861 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011862 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011863 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11864
11865 /*-----------------------------------------------------------------------
11866 Get message buffer
11867 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011868if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011869 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11870 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011871 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011872)))
11873 {
11874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11875 "Unable to get Set Max Tx Power req %x %x %x",
11876 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011879 }
11880
11881 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11882 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11883 WDI_MAC_ADDR_LEN);
11884
11885 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11886 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11887 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011888 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011889 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011890
11891 wpalMemoryCopy( pSendBuffer+usDataOffset,
11892 &halSetMaxTxPower.setMaxTxPwrParams,
11893 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011894
11895 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011896 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011897
11898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011901 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11902 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11903 WDI_SET_MAX_TX_POWER_RESP);
11904
Jeff Johnson295189b2012-06-20 16:38:30 -070011905}
11906
schangd82195a2013-03-13 18:41:24 -070011907/**
11908 @brief Process Set Tx Power Request function (called when Main
11909 FSM allows it)
11910
11911 @param pWDICtx: pointer to the WLAN DAL context
11912 pEventData: pointer to the event information structure
11913
11914 @see
11915 @return Result of the function call
11916*/
11917WDI_Status WDI_ProcessSetTxPowerReq
11918(
11919 WDI_ControlBlockType* pWDICtx,
11920 WDI_EventInfoType* pEventData
11921)
11922{
11923 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
11924 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
11925 wpt_uint8* pSendBuffer = NULL;
11926 wpt_uint16 usDataOffset = 0;
11927 wpt_uint16 usSendSize = 0;
11928 tSetTxPwrReqMsg *halSetTxPower = NULL;;
11929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11930
11931 /*-------------------------------------------------------------------------
11932 Sanity check
11933 -------------------------------------------------------------------------*/
11934 if (( NULL == pEventData ) ||
11935 ( NULL == pEventData->pEventData ) ||
11936 ( NULL == pEventData->pCBfnc ))
11937 {
11938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11939 "%s: Invalid parameters", __func__);
11940 WDI_ASSERT(0);
11941 return WDI_STATUS_E_FAILURE;
11942 }
11943
11944 pwdiSetTxPowerParams =
11945 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
11946 wdiSetTxPowerRspCb =
11947 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
11948
11949 /*-----------------------------------------------------------------------
11950 Get message buffer
11951 -----------------------------------------------------------------------*/
11952 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
11953 sizeof(tSetTxPwrReqParams),
11954 &pSendBuffer, &usDataOffset, &usSendSize))||
11955 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
11956 )))
11957 {
11958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11959 "Unable to get Set Max Tx Power req %x %x %x",
11960 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
11961 WDI_ASSERT(0);
11962 return WDI_STATUS_E_FAILURE;
11963 }
11964
11965 halSetTxPower = (tSetTxPwrReqMsg *)(pSendBuffer+usDataOffset);
11966 halSetTxPower->setTxPwrReqParams.txPower =
11967 pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
11968 halSetTxPower->setTxPwrReqParams.bssIdx =
11969 pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
11970
11971 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
11972 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
11973
11974 /*-------------------------------------------------------------------------
11975 Send Set Tx Power Request to HAL
11976 -------------------------------------------------------------------------*/
11977 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11978 wdiSetTxPowerRspCb, pEventData->pUserData,
11979 WDI_SET_TX_POWER_RESP);
11980}
Jeff Johnson295189b2012-06-20 16:38:30 -070011981
11982/**
11983 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11984 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011985
11986 @param pWDICtx: pointer to the WLAN DAL context
11987 pEventData: pointer to the event information structure
11988
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 @see
11990 @return Result of the function call
11991*/
11992WDI_Status
11993WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011994(
Jeff Johnson295189b2012-06-20 16:38:30 -070011995 WDI_ControlBlockType* pWDICtx,
11996 WDI_EventInfoType* pEventData
11997)
11998{
11999 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12000 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012001 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012002 wpt_uint16 usDataOffset = 0;
12003 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12006
12007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012008 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012009 -------------------------------------------------------------------------*/
12010 if (( NULL == pEventData ) ||
12011 ( NULL == pEventData->pEventData) ||
12012 ( NULL == pEventData->pCBfnc))
12013 {
12014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012018 }
12019
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12024 /*-----------------------------------------------------------------------
12025 Get message buffer
12026 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012027 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12028 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 sizeof(halSetP2PGONOAParams),
12030 &pSendBuffer, &usDataOffset, &usSendSize))||
12031 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12032 {
12033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12034 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12035 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012038 }
12039
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012043 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12044 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012049 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012050 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012051 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012052 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12053
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 wpalMemoryCopy( pSendBuffer+usDataOffset,
12055 &halSetP2PGONOAParams,
12056 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012057
12058 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012059 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012060
12061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012064 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12065 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12066 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012067}/*WDI_ProcessP2PGONOAReq*/
12068
Jeff Johnson295189b2012-06-20 16:38:30 -070012069
12070
12071/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012072 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012073 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012074 @param None
12075
12076 @see
12077 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012078*/
12079void
12080WDI_SetPowerStateCb
12081(
12082 wpt_status status,
12083 unsigned int dxePhyAddr,
12084 void *pContext
12085)
12086{
12087 wpt_status wptStatus;
12088 WDI_ControlBlockType *pCB = NULL;
12089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12090 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12091 {
12092 //it shouldn't happen, put an error msg
12093 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012094 /*
12095 * Trigger the event to bring the Enter BMPS req function to come
12096 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012097*/
12098 if( NULL != pContext )
12099 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012100 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012101 }
12102 else
12103 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012104 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 pCB = &gWDICb;
12106 }
12107 pCB->dxePhyAddr = dxePhyAddr;
12108 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12109 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12110 {
12111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12112 "Failed to set an event");
12113
Jeff Johnsone7245742012-09-05 17:12:55 -070012114 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012115 }
12116 return;
12117}
12118
12119
12120/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012121 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012122 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012123
12124 @param pWDICtx: pointer to the WLAN DAL context
12125 pEventData: pointer to the event information structure
12126
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 @see
12128 @return Result of the function call
12129*/
12130WDI_Status
12131WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012132(
Jeff Johnson295189b2012-06-20 16:38:30 -070012133 WDI_ControlBlockType* pWDICtx,
12134 WDI_EventInfoType* pEventData
12135)
12136{
Jeff Johnson43971f52012-07-17 12:26:56 -070012137 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012138 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012140 wpt_uint16 usDataOffset = 0;
12141 wpt_uint16 usSendSize = 0;
12142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12143
12144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012146 -------------------------------------------------------------------------*/
12147 if (( NULL == pEventData ) ||
12148 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12149 {
12150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012152 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012153 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 }
12155
12156 /*-----------------------------------------------------------------------
12157 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 0,
12162 &pSendBuffer, &usDataOffset, &usSendSize))||
12163 ( usSendSize < (usDataOffset )))
12164 {
12165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12166 "Unable to get send buffer in Enter IMPS req %x %x",
12167 pEventData, wdiEnterImpsRspCb);
12168 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012169 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 }
12171
12172 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012173 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12174 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012175 {
12176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12177 "WDI Init failed to reset an event");
12178
Jeff Johnsone7245742012-09-05 17:12:55 -070012179 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012180 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012181 }
12182
12183 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012184 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12185 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12187 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12188 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012189 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012190 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012191
12192 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012193 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012194 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012195 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12196 WDI_SET_POWER_STATE_TIMEOUT);
12197 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 {
12199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12200 "WDI Init failed to wait on an event");
12201
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012203 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 }
12205
12206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012209 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12210 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012211
12212fail:
12213 // Release the message buffer so we don't leak
12214 wpalMemoryFree(pSendBuffer);
12215
12216failRequest:
12217 //WDA should have failure check to avoid the memory leak
12218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012219}/*WDI_ProcessEnterImpsReq*/
12220
12221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012222 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012223 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012224
12225 @param pWDICtx: pointer to the WLAN DAL context
12226 pEventData: pointer to the event information structure
12227
Jeff Johnson295189b2012-06-20 16:38:30 -070012228 @see
12229 @return Result of the function call
12230*/
12231WDI_Status
12232WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012233(
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 WDI_ControlBlockType* pWDICtx,
12235 WDI_EventInfoType* pEventData
12236)
12237{
12238 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012239 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012240 wpt_uint16 usDataOffset = 0;
12241 wpt_uint16 usSendSize = 0;
12242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12243
12244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012246 -------------------------------------------------------------------------*/
12247 if (( NULL == pEventData ) ||
12248 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12249 {
12250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012251 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012254 }
12255
12256 /*-----------------------------------------------------------------------
12257 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012258 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012259 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 0,
12262 &pSendBuffer, &usDataOffset, &usSendSize))||
12263 ( usSendSize < (usDataOffset )))
12264 {
12265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12266 "Unable to get send buffer in Exit IMPS req %x %x",
12267 pEventData, wdiExitImpsRspCb);
12268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 }
12271
12272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012273 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012274 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12276 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012277}/*WDI_ProcessExitImpsReq*/
12278
12279/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012280 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012281 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012282
12283 @param pWDICtx: pointer to the WLAN DAL context
12284 pEventData: pointer to the event information structure
12285
Jeff Johnson295189b2012-06-20 16:38:30 -070012286 @see
12287 @return Result of the function call
12288*/
12289WDI_Status
12290WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012291(
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 WDI_ControlBlockType* pWDICtx,
12293 WDI_EventInfoType* pEventData
12294)
12295{
12296 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12297 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012299 wpt_uint16 usDataOffset = 0;
12300 wpt_uint16 usSendSize = 0;
12301 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012302 wpt_status wptStatus;
12303
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12305
12306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 -------------------------------------------------------------------------*/
12309 if (( NULL == pEventData ) ||
12310 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12311 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12312 {
12313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012314 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012316 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 }
12318
12319 /*-----------------------------------------------------------------------
12320 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012321 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 sizeof(enterBmpsReq),
12325 &pSendBuffer, &usDataOffset, &usSendSize))||
12326 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12327 {
12328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12329 "Unable to get send buffer in Enter BMPS req %x %x %x",
12330 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12331 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012332 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 }
12334
12335 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012336 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12337 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 {
12339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12340 "WDI Init failed to reset an event");
12341
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012343 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012344 }
12345
12346 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012347 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12348 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12349 {
12350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12351 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12352 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012353 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012354 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012355
12356/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012357 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012359 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12360 WDI_SET_POWER_STATE_TIMEOUT);
12361 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012362 {
12363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12364 "WDI Init failed to wait on an event");
12365
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012367 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 }
12369
12370 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12371
12372 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12373 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12374 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12375 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12376
12377 // For CCX and 11R Roaming
12378 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12379 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12380 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12381
12382 wpalMemoryCopy( pSendBuffer+usDataOffset,
12383 &enterBmpsReq,
12384 sizeof(enterBmpsReq));
12385
12386 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012387 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012388
12389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012392 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12393 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012394
12395fail:
12396 // Release the message buffer so we don't leak
12397 wpalMemoryFree(pSendBuffer);
12398
12399failRequest:
12400 //WDA should have failure check to avoid the memory leak
12401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012402}/*WDI_ProcessEnterBmpsReq*/
12403
12404/**
12405 @brief Process Exit BMPS Request function (called when Main FSM
12406 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012407
12408 @param pWDICtx: pointer to the WLAN DAL context
12409 pEventData: pointer to the event information structure
12410
Jeff Johnson295189b2012-06-20 16:38:30 -070012411 @see
12412 @return Result of the function call
12413*/
12414WDI_Status
12415WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012416(
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 WDI_ControlBlockType* pWDICtx,
12418 WDI_EventInfoType* pEventData
12419)
12420{
12421 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12422 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012423 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012424 wpt_uint16 usDataOffset = 0;
12425 wpt_uint16 usSendSize = 0;
12426 tHalExitBmpsReqParams exitBmpsReq;
12427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12428
12429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012431 -------------------------------------------------------------------------*/
12432 if (( NULL == pEventData ) ||
12433 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12434 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12435 {
12436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012437 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012440 }
12441
12442 /*-----------------------------------------------------------------------
12443 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012445 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012446 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012447 sizeof(exitBmpsReq),
12448 &pSendBuffer, &usDataOffset, &usSendSize))||
12449 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12450 {
12451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12452 "Unable to get send buffer in Exit BMPS req %x %x %x",
12453 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012456 }
12457 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12458
Jeff Johnsone7245742012-09-05 17:12:55 -070012459 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12460
Jeff Johnson295189b2012-06-20 16:38:30 -070012461 wpalMemoryCopy( pSendBuffer+usDataOffset,
12462 &exitBmpsReq,
12463 sizeof(exitBmpsReq));
12464
12465 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012466 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012467
12468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012471 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12472 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012473}/*WDI_ProcessExitBmpsReq*/
12474
12475/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012476 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012477 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012478
12479 @param pWDICtx: pointer to the WLAN DAL context
12480 pEventData: pointer to the event information structure
12481
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 @see
12483 @return Result of the function call
12484*/
12485WDI_Status
12486WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012487(
Jeff Johnson295189b2012-06-20 16:38:30 -070012488 WDI_ControlBlockType* pWDICtx,
12489 WDI_EventInfoType* pEventData
12490)
12491{
12492 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12493 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012494 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012495 wpt_uint16 usDataOffset = 0;
12496 wpt_uint16 usSendSize = 0;
12497 tUapsdReqParams enterUapsdReq;
12498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12499
12500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 -------------------------------------------------------------------------*/
12503 if (( NULL == pEventData ) ||
12504 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12505 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12506 {
12507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012511 }
12512
12513 /*-----------------------------------------------------------------------
12514 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012515 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012516 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012517 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 sizeof(enterUapsdReq),
12519 &pSendBuffer, &usDataOffset, &usSendSize))||
12520 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12521 {
12522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12523 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12524 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012527 }
12528
12529 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12530 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12531 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12532 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12533 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12534 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12535 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12536 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012537 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012538
Jeff Johnsone7245742012-09-05 17:12:55 -070012539 wpalMemoryCopy( pSendBuffer+usDataOffset,
12540 &enterUapsdReq,
12541 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012542
12543 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012544 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012545
12546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12550 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012551}/*WDI_ProcessEnterUapsdReq*/
12552
12553/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012556
12557 @param pWDICtx: pointer to the WLAN DAL context
12558 pEventData: pointer to the event information structure
12559
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 @see
12561 @return Result of the function call
12562*/
12563WDI_Status
12564WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012565(
Jeff Johnson295189b2012-06-20 16:38:30 -070012566 WDI_ControlBlockType* pWDICtx,
12567 WDI_EventInfoType* pEventData
12568)
12569{
12570 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 wpt_uint16 usDataOffset = 0;
12573 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012574 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12575 wpt_uint8 bssIdx = 0;
12576
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12578
12579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 -------------------------------------------------------------------------*/
12582 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012583 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012584 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12585 {
12586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012590 }
12591
12592 /*-----------------------------------------------------------------------
12593 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012594 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012597 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012598 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012599 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012600 {
12601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12602 "Unable to get send buffer in Exit UAPSD req %x %x",
12603 pEventData, wdiExitUapsdRspCb);
12604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 }
12607
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012608 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12609
12610 wpalMemoryCopy( pSendBuffer+usDataOffset,
12611 &bssIdx,
12612 sizeof(wpt_uint8));
12613
12614 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12615 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12616
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012618 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012619 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012620 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12621 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012622}/*WDI_ProcessExitUapsdReq*/
12623
12624/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012627
12628 @param pWDICtx: pointer to the WLAN DAL context
12629 pEventData: pointer to the event information structure
12630
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 @see
12632 @return Result of the function call
12633*/
12634WDI_Status
12635WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012636(
Jeff Johnson295189b2012-06-20 16:38:30 -070012637 WDI_ControlBlockType* pWDICtx,
12638 WDI_EventInfoType* pEventData
12639)
12640{
12641 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12642 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012643 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 wpt_uint16 usDataOffset = 0;
12645 wpt_uint16 usSendSize = 0;
12646 tUapsdInfo uapsdAcParamsReq;
12647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12648
12649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 -------------------------------------------------------------------------*/
12652 if (( NULL == pEventData ) ||
12653 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12654 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12655 {
12656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012660 }
12661
12662 /*-----------------------------------------------------------------------
12663 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012666 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012667 sizeof(uapsdAcParamsReq),
12668 &pSendBuffer, &usDataOffset, &usSendSize))||
12669 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12670 {
12671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12672 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12673 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012676 }
12677
12678 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12679 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12680 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12681 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12682 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12683 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12684
Jeff Johnsone7245742012-09-05 17:12:55 -070012685 wpalMemoryCopy( pSendBuffer+usDataOffset,
12686 &uapsdAcParamsReq,
12687 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012688
12689 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012691
12692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012693 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012694 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012695 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12696 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012697}/*WDI_ProcessSetUapsdAcParamsReq*/
12698
12699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012700 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012702
12703 @param pWDICtx: pointer to the WLAN DAL context
12704 pEventData: pointer to the event information structure
12705
Jeff Johnson295189b2012-06-20 16:38:30 -070012706 @see
12707 @return Result of the function call
12708*/
12709WDI_Status
12710WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012711(
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 WDI_ControlBlockType* pWDICtx,
12713 WDI_EventInfoType* pEventData
12714)
12715{
12716 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12717 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012718 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012719 wpt_uint16 usDataOffset = 0;
12720 wpt_uint16 usSendSize = 0;
12721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12722
12723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012725 -------------------------------------------------------------------------*/
12726 if (( NULL == pEventData ) ||
12727 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12728 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12729 {
12730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 }
12735
12736 /*-----------------------------------------------------------------------
12737 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012738 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012739 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012740 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012741 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12742 &pSendBuffer, &usDataOffset, &usSendSize))||
12743 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12744 {
12745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12746 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12747 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012750 }
12751
Jeff Johnsone7245742012-09-05 17:12:55 -070012752 wpalMemoryCopy( pSendBuffer+usDataOffset,
12753 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12754 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012755
12756 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012758
12759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12763 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012764}/*WDI_ProcessUpdateUapsdParamsReq*/
12765
12766/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012767 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012769
12770 @param pWDICtx: pointer to the WLAN DAL context
12771 pEventData: pointer to the event information structure
12772
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 @see
12774 @return Result of the function call
12775*/
12776WDI_Status
12777WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012778(
Jeff Johnson295189b2012-06-20 16:38:30 -070012779 WDI_ControlBlockType* pWDICtx,
12780 WDI_EventInfoType* pEventData
12781)
12782{
12783 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12784 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012785 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012786 wpt_uint16 usDataOffset = 0;
12787 wpt_uint16 usSendSize = 0;
12788 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12789
12790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12791
12792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012793 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 -------------------------------------------------------------------------*/
12795 if (( NULL == pEventData ) ||
12796 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12797 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12798 {
12799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012800 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 }
12804
12805 /*-----------------------------------------------------------------------
12806 Get message buffer
12807 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012808 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012809 sizeof(halRxpFilterParams),
12810 &pSendBuffer, &usDataOffset, &usSendSize))||
12811 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12812 {
12813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12814 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12815 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012818 }
12819
Jeff Johnsone7245742012-09-05 17:12:55 -070012820 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012821 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012822 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012823 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12824
Jeff Johnsone7245742012-09-05 17:12:55 -070012825 wpalMemoryCopy( pSendBuffer+usDataOffset,
12826 &halRxpFilterParams,
12827 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012828
12829 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012830 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012831
12832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012833 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12836 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012837}/*WDI_ProcessConfigureRxpFilterReq*/
12838
12839/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012840 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012841 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012842
12843 @param pWDICtx: pointer to the WLAN DAL context
12844 pEventData: pointer to the event information structure
12845
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 @see
12847 @return Result of the function call
12848*/
12849WDI_Status
12850WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012851(
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 WDI_ControlBlockType* pWDICtx,
12853 WDI_EventInfoType* pEventData
12854)
12855{
12856 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12857 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 wpt_uint16 usDataOffset = 0;
12860 wpt_uint16 usSendSize = 0;
12861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12862
12863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 -------------------------------------------------------------------------*/
12866 if (( NULL == pEventData ) ||
12867 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12868 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12869 {
12870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 }
12875
12876 /*-----------------------------------------------------------------------
12877 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12882 &pSendBuffer, &usDataOffset, &usSendSize))||
12883 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12884 {
12885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12886 "Unable to get send buffer in Set beacon filter req %x %x %x",
12887 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 }
12891
Jeff Johnsone7245742012-09-05 17:12:55 -070012892 wpalMemoryCopy( pSendBuffer+usDataOffset,
12893 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12894 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12895 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12896 &pwdiBeaconFilterParams->aFilters[0],
12897 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012898
12899 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012901
12902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12906 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012907}/*WDI_ProcessSetBeaconFilterReq*/
12908
12909/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012910 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012912
12913 @param pWDICtx: pointer to the WLAN DAL context
12914 pEventData: pointer to the event information structure
12915
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 @see
12917 @return Result of the function call
12918*/
12919WDI_Status
12920WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012921(
Jeff Johnson295189b2012-06-20 16:38:30 -070012922 WDI_ControlBlockType* pWDICtx,
12923 WDI_EventInfoType* pEventData
12924)
12925{
12926 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12927 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012928 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 wpt_uint16 usDataOffset = 0;
12930 wpt_uint16 usSendSize = 0;
12931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12932
12933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012934 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 -------------------------------------------------------------------------*/
12936 if (( NULL == pEventData ) ||
12937 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12938 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12939 {
12940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012944 }
12945
12946 /*-----------------------------------------------------------------------
12947 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012948 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012949 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012950 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012951 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12952 &pSendBuffer, &usDataOffset, &usSendSize))||
12953 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12954 {
12955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12956 "Unable to get send buffer in remove beacon filter req %x %x %x",
12957 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012960 }
12961
Jeff Johnsone7245742012-09-05 17:12:55 -070012962 wpalMemoryCopy( pSendBuffer+usDataOffset,
12963 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12964 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012965
12966 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012967 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012968
12969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012970 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012971 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012972 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12973 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012974}
12975
12976/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012977 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012978 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012979
12980 @param pWDICtx: pointer to the WLAN DAL context
12981 pEventData: pointer to the event information structure
12982
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 @see
12984 @return Result of the function call
12985*/
12986WDI_Status
12987WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012988(
Jeff Johnson295189b2012-06-20 16:38:30 -070012989 WDI_ControlBlockType* pWDICtx,
12990 WDI_EventInfoType* pEventData
12991)
12992{
12993 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12994 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 wpt_uint16 usDataOffset = 0;
12997 wpt_uint16 usSendSize = 0;
12998 tHalRSSIThresholds rssiThresholdsReq;
12999 WDI_Status ret_status = 0;
13000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13001
13002 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013003 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013004 -------------------------------------------------------------------------*/
13005 if (( NULL == pEventData ) ||
13006 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13007 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13008 {
13009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013010 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013013 }
13014
13015 /*-----------------------------------------------------------------------
13016 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013017 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013018 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013019 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013020 sizeof(rssiThresholdsReq),
13021 &pSendBuffer, &usDataOffset, &usSendSize))||
13022 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13023 {
13024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13025 "Unable to get send buffer in remove beacon filter req %x %x %x",
13026 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013029 }
13030
Jeff Johnsone7245742012-09-05 17:12:55 -070013031 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013032 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013033 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013034 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013036 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013037 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013039 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013042 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013043 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013044 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013045 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013046 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013048 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13051
Jeff Johnsone7245742012-09-05 17:12:55 -070013052 wpalMemoryCopy( pSendBuffer+usDataOffset,
13053 &rssiThresholdsReq,
13054 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013055
13056 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013057 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013058
13059 /*-------------------------------------------------------------------------
13060 Send Set threshold req to HAL
13061 -------------------------------------------------------------------------*/
13062 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13063 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13064 {
13065 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13066 // req. Then as a result of processing the threshold cross ind, we trigger
13067 // a Set threshold req, then we need to indicate to WDI that it needs to
13068 // go to busy state as a result of the indication as we sent a req in the
13069 // same WDI context.
13070 // Hence expected state transition is to busy.
13071 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13072 }
13073
13074 return ret_status;
13075}
13076
13077/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013080
13081 @param pWDICtx: pointer to the WLAN DAL context
13082 pEventData: pointer to the event information structure
13083
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 @see
13085 @return Result of the function call
13086*/
13087WDI_Status
13088WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013089(
Jeff Johnson295189b2012-06-20 16:38:30 -070013090 WDI_ControlBlockType* pWDICtx,
13091 WDI_EventInfoType* pEventData
13092)
13093{
13094 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13095 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013096 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013097 wpt_uint16 usDataOffset = 0;
13098 wpt_uint16 usSendSize = 0;
13099 tHalHostOffloadReq hostOffloadParams;
13100 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013101 wpt_uint8 ucCurrentBSSSesIdx = 0;
13102 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013103
13104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13105
13106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013108 -------------------------------------------------------------------------*/
13109 if (( NULL == pEventData ) ||
13110 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13111 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13112 {
13113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013115 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013116 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013117 }
13118
13119 /*-----------------------------------------------------------------------
13120 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013121 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013123 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013124 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13125 &pSendBuffer, &usDataOffset, &usSendSize))||
13126 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13127 {
13128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13129 "Unable to get send buffer in host offload req %x %x %x",
13130 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13131 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013132 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013133 }
13134
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013135 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13136 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13137 &pBSSSes);
13138 if ( NULL == pBSSSes )
13139 {
13140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013141 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013142 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013143 }
13144
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13146 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013147
Jeff Johnson295189b2012-06-20 16:38:30 -070013148 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13149 {
13150 // ARP Offload
13151 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13152 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13153 4);
13154 }
13155 else
13156 {
13157 // NS Offload
13158 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13159 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13160 16);
13161
13162#ifdef WLAN_NS_OFFLOAD
13163 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13164 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13165 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13166 16);
13167 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13168 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13169 16);
13170 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13171 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13172 16);
13173 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13174 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13175 16);
13176 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13177 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13178 6);
13179 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13180 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13181 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070013182
Jeff Johnson295189b2012-06-20 16:38:30 -070013183#endif // WLAN_NS_OFFLOAD
13184 }
13185
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013186 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13187
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 // copy hostOffloadParams into pSendBuffer
13189 wpalMemoryCopy( pSendBuffer+usDataOffset,
13190 &hostOffloadParams,
13191 sizeof(hostOffloadParams));
13192
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013193 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013194 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013195 // copy nsOffloadParams into pSendBuffer
13196 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 &nsOffloadParams,
13198 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013199 }
13200 else
13201 {
13202#ifdef WLAN_NS_OFFLOAD
13203 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13204 {
13205 // copy nsOffloadParams into pSendBuffer
13206 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13207 &nsOffloadParams,
13208 sizeof(nsOffloadParams));
13209 }
13210#endif
13211 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013212
13213 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013215
13216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13220 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013221
13222fail:
13223 // Release the message buffer so we don't leak
13224 wpalMemoryFree(pSendBuffer);
13225
13226failRequest:
13227 //WDA should have failure check to avoid the memory leak
13228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013229}/*WDI_ProcessHostOffloadReq*/
13230
13231/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013232 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013234
13235 @param pWDICtx: pointer to the WLAN DAL context
13236 pEventData: pointer to the event information structure
13237
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 @see
13239 @return Result of the function call
13240*/
13241WDI_Status
13242WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013243(
Jeff Johnson295189b2012-06-20 16:38:30 -070013244 WDI_ControlBlockType* pWDICtx,
13245 WDI_EventInfoType* pEventData
13246)
13247{
13248 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13249 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013250 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013251 wpt_uint16 usDataOffset = 0;
13252 wpt_uint16 usSendSize = 0;
13253 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013254 wpt_uint8 ucCurrentBSSSesIdx = 0;
13255 WDI_BSSSessionType* pBSSSes = NULL;
13256
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13258
13259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 -------------------------------------------------------------------------*/
13262 if (( NULL == pEventData ) ||
13263 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13264 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13265 {
13266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13267 "Invalid parameters in Keep Alive req");
13268 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013269 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 }
13271
13272 /*-----------------------------------------------------------------------
13273 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 sizeof(keepAliveReq),
13278 &pSendBuffer, &usDataOffset, &usSendSize))||
13279 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13280 {
13281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13282 "Unable to get send buffer in keep alive req %x %x %x",
13283 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13284 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013285 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 }
13287
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013288 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13289 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13290 &pBSSSes);
13291 if ( NULL == pBSSSes )
13292 {
13293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013294 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013295 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013296 }
13297
Jeff Johnson295189b2012-06-20 16:38:30 -070013298 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13299 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13300
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013301 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013302
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13304 {
13305 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13306 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13307 HAL_IPV4_ADDR_LEN);
13308 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13309 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013310 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013311 wpalMemoryCopy(keepAliveReq.destMacAddr,
13312 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13313 HAL_MAC_ADDR_LEN);
13314 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013315
13316 wpalMemoryCopy( pSendBuffer+usDataOffset,
13317 &keepAliveReq,
13318 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013319
13320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13321 "Process keep alive req %d",sizeof(keepAliveReq));
13322
13323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13324 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13325
13326 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013327 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013328
13329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13330 "Sending keep alive req to HAL");
13331
13332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013334 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013335 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13336 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013337
13338fail:
13339 // Release the message buffer so we don't leak
13340 wpalMemoryFree(pSendBuffer);
13341
13342failRequest:
13343 //WDA should have failure check to avoid the memory leak
13344 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013345}/*WDI_ProcessKeepAliveReq*/
13346
13347
13348/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013349 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013351
13352 @param pWDICtx: pointer to the WLAN DAL context
13353 pEventData: pointer to the event information structure
13354
Jeff Johnson295189b2012-06-20 16:38:30 -070013355 @see
13356 @return Result of the function call
13357*/
13358WDI_Status
13359WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013360(
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 WDI_ControlBlockType* pWDICtx,
13362 WDI_EventInfoType* pEventData
13363)
13364{
13365 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13366 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013367 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013368 wpt_uint16 usDataOffset = 0;
13369 wpt_uint16 usSendSize = 0;
13370 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013371 wpt_uint8 ucCurrentBSSSesIdx = 0;
13372 WDI_BSSSessionType* pBSSSes = NULL;
13373
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13375
13376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 -------------------------------------------------------------------------*/
13379 if (( NULL == pEventData ) ||
13380 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13381 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13382 {
13383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013386 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013387 }
13388
13389 /*-----------------------------------------------------------------------
13390 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013391 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013393 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 sizeof(wowlAddBcPtrnReq),
13395 &pSendBuffer, &usDataOffset, &usSendSize))||
13396 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13397 {
13398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13399 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13400 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13401 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013402 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 }
13404
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013405 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13406 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13407 &pBSSSes);
13408 if ( NULL == pBSSSes )
13409 {
13410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013411 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013412 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013413 }
13414
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013417 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013418 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013419 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013420 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13423
13424 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13425 {
13426 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13427 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13428 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13429 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13430 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13431 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13432 }
13433 else
13434 {
13435 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13436 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13437 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13438 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13439 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13440 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13441
13442 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13443 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13444 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13445 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13446 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13447 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13448 }
13449
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013450 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13451
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 wpalMemoryCopy( pSendBuffer+usDataOffset,
13453 &wowlAddBcPtrnReq,
13454 sizeof(wowlAddBcPtrnReq));
13455
13456 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013458
13459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013460 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13463 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013464fail:
13465 // Release the message buffer so we don't leak
13466 wpalMemoryFree(pSendBuffer);
13467
13468failRequest:
13469 //WDA should have failure check to avoid the memory leak
13470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013471}/*WDI_ProcessWowlAddBcPtrnReq*/
13472
13473/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013476
13477 @param pWDICtx: pointer to the WLAN DAL context
13478 pEventData: pointer to the event information structure
13479
Jeff Johnson295189b2012-06-20 16:38:30 -070013480 @see
13481 @return Result of the function call
13482*/
13483WDI_Status
13484WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013485(
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 WDI_ControlBlockType* pWDICtx,
13487 WDI_EventInfoType* pEventData
13488)
13489{
13490 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13491 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 wpt_uint16 usDataOffset = 0;
13494 wpt_uint16 usSendSize = 0;
13495 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013496 wpt_uint8 ucCurrentBSSSesIdx = 0;
13497 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13499
13500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 -------------------------------------------------------------------------*/
13503 if (( NULL == pEventData ) ||
13504 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13505 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13506 {
13507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013509 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013510 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013511 }
13512
13513 /*-----------------------------------------------------------------------
13514 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013515 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013517 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 sizeof(wowlDelBcPtrnReq),
13519 &pSendBuffer, &usDataOffset, &usSendSize))||
13520 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13521 {
13522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13523 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13524 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13525 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013526 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 }
13528
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013529 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13530 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13531 &pBSSSes);
13532 if ( NULL == pBSSSes )
13533 {
13534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013535 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013536 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013537 }
13538
Jeff Johnsone7245742012-09-05 17:12:55 -070013539 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013540 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013541
13542 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13543
Jeff Johnsone7245742012-09-05 17:12:55 -070013544 wpalMemoryCopy( pSendBuffer+usDataOffset,
13545 &wowlDelBcPtrnReq,
13546 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013547
13548 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013549 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013550
13551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013552 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013553 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013554 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13555 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013556
13557fail:
13558 // Release the message buffer so we don't leak
13559 wpalMemoryFree(pSendBuffer);
13560
13561failRequest:
13562 //WDA should have failure check to avoid the memory leak
13563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013564}/*WDI_ProcessWowlDelBcPtrnReq*/
13565
13566/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013567 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013568 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013569
13570 @param pWDICtx: pointer to the WLAN DAL context
13571 pEventData: pointer to the event information structure
13572
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 @see
13574 @return Result of the function call
13575*/
13576WDI_Status
13577WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013578(
Jeff Johnson295189b2012-06-20 16:38:30 -070013579 WDI_ControlBlockType* pWDICtx,
13580 WDI_EventInfoType* pEventData
13581)
13582{
13583 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13584 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013585 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013586 wpt_uint16 usDataOffset = 0;
13587 wpt_uint16 usSendSize = 0;
13588 tHalWowlEnterParams wowlEnterReq;
13589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13590
13591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013593 -------------------------------------------------------------------------*/
13594 if (( NULL == pEventData ) ||
13595 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13596 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13597 {
13598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013602 }
13603
13604 /*-----------------------------------------------------------------------
13605 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013606 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013607 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013609 sizeof(wowlEnterReq),
13610 &pSendBuffer, &usDataOffset, &usSendSize))||
13611 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13612 {
13613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13614 "Unable to get send buffer in Wowl enter req %x %x %x",
13615 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 }
13619
Jeff Johnsone7245742012-09-05 17:12:55 -070013620 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013621 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013622 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013623 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013624 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013625 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013626 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013627 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013628 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013629 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013631 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013633 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013634 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013635 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13636
13637#ifdef WLAN_WAKEUP_EVENTS
13638 wowlEnterReq.ucWoWEAPIDRequestEnable =
13639 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13640
13641 wowlEnterReq.ucWoWEAPOL4WayEnable =
13642 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13643
13644 wowlEnterReq.ucWowNetScanOffloadMatch =
13645 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13646
13647 wowlEnterReq.ucWowGTKRekeyError =
13648 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13649
13650 wowlEnterReq.ucWoWBSSConnLoss =
13651 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13652#endif // WLAN_WAKEUP_EVENTS
13653
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013654 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13655
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13657 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13658 sizeof(tSirMacAddr));
13659
Jeff Johnsone7245742012-09-05 17:12:55 -070013660 wpalMemoryCopy( pSendBuffer+usDataOffset,
13661 &wowlEnterReq,
13662 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013663
13664 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013665 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013666
13667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013668 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013669 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13671 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013672}/*WDI_ProcessWowlEnterReq*/
13673
13674/**
13675 @brief Process Wowl exit Request function (called when Main FSM
13676 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013677
13678 @param pWDICtx: pointer to the WLAN DAL context
13679 pEventData: pointer to the event information structure
13680
Jeff Johnson295189b2012-06-20 16:38:30 -070013681 @see
13682 @return Result of the function call
13683*/
13684WDI_Status
13685WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013686(
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 WDI_ControlBlockType* pWDICtx,
13688 WDI_EventInfoType* pEventData
13689)
13690{
13691 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013692 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013693 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013694 wpt_uint16 usDataOffset = 0;
13695 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013696 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13698
13699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013700 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 -------------------------------------------------------------------------*/
13702 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013703 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013704 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13705 {
13706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013707 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013710 }
13711
13712 /*-----------------------------------------------------------------------
13713 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013717 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013718 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013719 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 {
13721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13722 "Unable to get send buffer in Wowl Exit req %x %x",
13723 pEventData, wdiWowlExitCb);
13724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 }
13727
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013728 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13729
13730 wpalMemoryCopy( pSendBuffer+usDataOffset,
13731 &wowlExitparams,
13732 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013734 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013736 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13737 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013738}/*WDI_ProcessWowlExitReq*/
13739
13740/**
13741 @brief Process Configure Apps Cpu Wakeup State Request function
13742 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013743
13744 @param pWDICtx: pointer to the WLAN DAL context
13745 pEventData: pointer to the event information structure
13746
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 @see
13748 @return Result of the function call
13749*/
13750WDI_Status
13751WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013752(
Jeff Johnson295189b2012-06-20 16:38:30 -070013753 WDI_ControlBlockType* pWDICtx,
13754 WDI_EventInfoType* pEventData
13755)
13756{
13757 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13758 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013759 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013760 wpt_uint16 usDataOffset = 0;
13761 wpt_uint16 usSendSize = 0;
13762 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13764
13765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 -------------------------------------------------------------------------*/
13768 if (( NULL == pEventData ) ||
13769 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13770 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13771 {
13772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013773 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013774 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013776 }
13777
13778 /*-----------------------------------------------------------------------
13779 Get message buffer
13780 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 sizeof(halCfgAppsCpuWakeupStateReqParams),
13783 &pSendBuffer, &usDataOffset, &usSendSize))||
13784 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13785 {
13786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13787 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13788 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013791 }
13792
Jeff Johnsone7245742012-09-05 17:12:55 -070013793 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013794 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13795
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 wpalMemoryCopy( pSendBuffer+usDataOffset,
13797 &halCfgAppsCpuWakeupStateReqParams,
13798 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013799
13800 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013801 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013802
13803 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013804 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013805 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013806 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13807 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13808 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013809}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13810
13811#ifdef WLAN_FEATURE_VOWIFI_11R
13812/**
13813 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13814 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013815
13816 @param pWDICtx: pointer to the WLAN DAL context
13817 pEventData: pointer to the event information structure
13818
Jeff Johnson295189b2012-06-20 16:38:30 -070013819 @see
13820 @return Result of the function call
13821*/
13822WDI_Status
13823WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013824(
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 WDI_ControlBlockType* pWDICtx,
13826 WDI_EventInfoType* pEventData
13827)
13828{
13829 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13830 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013831 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 wpt_uint16 usDataOffset = 0;
13835 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 wpt_macAddr macBSSID;
13838 tAggrAddTsReq halAggrAddTsReq;
13839 int i;
13840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13841
13842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 -------------------------------------------------------------------------*/
13845 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13846 ( NULL == pEventData->pCBfnc ))
13847 {
13848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013849 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013852 }
13853 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13854 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13855 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13856 /*-------------------------------------------------------------------------
13857 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013858 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013859 -------------------------------------------------------------------------*/
13860 wpalMutexAcquire(&pWDICtx->wptMutex);
13861
13862 /*------------------------------------------------------------------------
13863 Find the BSS for which the request is made and identify WDI session
13864 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013865 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13866 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013867 &macBSSID))
13868 {
13869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13870 "This station does not exist in the WDI Station Table %d");
13871 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013873 }
13874
Jeff Johnsone7245742012-09-05 17:12:55 -070013875 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13876 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013877 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13879 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13880 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013881
13882 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013883 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013884 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013885
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 /*------------------------------------------------------------------------
13887 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013888 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 ------------------------------------------------------------------------*/
13890 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13891 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13893 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13894 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013895
Jeff Johnsone7245742012-09-05 17:12:55 -070013896 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013898 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013899 }
13900
13901 wpalMutexRelease(&pWDICtx->wptMutex);
13902 /*-----------------------------------------------------------------------
13903 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013904 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013905 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013906 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013907 sizeof(tAggrAddTsParams),
13908 &pSendBuffer, &usDataOffset, &usSendSize))||
13909 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13910 {
13911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13912 "Unable to get send buffer in set bss key req %x %x %x",
13913 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013916 }
13917
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013919 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013920 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013921 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13922
13923 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13924 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013925 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013926 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013927 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013928 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013929 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13931 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013932 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13934 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013935 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013936 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13937 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013938 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013939 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13940 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013941 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013942 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13943 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13946 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013947 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013948 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13949 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013950 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013951 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13952 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013953 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013955 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013956 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013957
13958
13959 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013960 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013961 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013962 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013967 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013970 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013971 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013973 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013974 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013975 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013983 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13989 }
13990
Jeff Johnsone7245742012-09-05 17:12:55 -070013991 wpalMemoryCopy( pSendBuffer+usDataOffset,
13992 &halAggrAddTsReq,
13993 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013994
13995 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013997
13998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014002 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014004}/*WDI_ProcessAggrAddTSpecReq*/
14005#endif /* WLAN_FEATURE_VOWIFI_11R */
14006
14007/**
14008 @brief Process Shutdown Request function (called when Main FSM
14009 allows it)
14010
14011 @param pWDICtx: pointer to the WLAN DAL context
14012 pEventData: pointer to the event information structure
14013
14014 @see
14015 @return Result of the function call
14016*/
14017WDI_Status
14018WDI_ProcessShutdownReq
14019(
14020 WDI_ControlBlockType* pWDICtx,
14021 WDI_EventInfoType* pEventData
14022 )
14023{
14024 wpt_status wptStatus;
14025
14026
14027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14028
14029 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014030 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 -------------------------------------------------------------------------*/
14032 if ( NULL == pEventData )
14033 {
14034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014036 WDI_ASSERT(0);
14037 return WDI_STATUS_E_FAILURE;
14038 }
14039
14040 wpalMutexAcquire(&pWDICtx->wptMutex);
14041
14042
14043 gWDIInitialized = eWLAN_PAL_FALSE;
14044 /*! TO DO: stop the data services */
14045 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14046 {
14047 /*Stop the STA Table !UT- check this logic again
14048 It is safer to do it here than on the response - because a stop is imminent*/
14049 WDI_STATableStop(pWDICtx);
14050
14051 /* Stop Transport Driver, DXE */
14052 WDTS_Stop(pWDICtx);
14053 }
14054
14055 /*Clear all pending request*/
14056 WDI_ClearPendingRequests(pWDICtx);
14057 /* Close Data transport*/
14058 /* FTM mode does not open Data Path */
14059 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14060 {
14061 WDTS_Close(pWDICtx);
14062 }
14063 /*Close the STA Table !UT- check this logic again*/
14064 WDI_STATableClose(pWDICtx);
14065 /*close the PAL */
14066 wptStatus = wpalClose(pWDICtx->pPALContext);
14067 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14068 {
14069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14070 "Failed to wpal Close %d", wptStatus);
14071 WDI_ASSERT(0);
14072 }
14073
14074 /*Transition back to init state*/
14075 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14076
14077 wpalMutexRelease(&pWDICtx->wptMutex);
14078
14079 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014080 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014081
14082
Jeff Johnsone7245742012-09-05 17:12:55 -070014083 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014084}/*WDI_ProcessShutdownReq*/
14085
14086/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014087 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014088========================================================================*/
14089
14090/**
14091 @brief Process Start Response function (called when a response
14092 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014093
14094 @param pWDICtx: pointer to the WLAN DAL context
14095 pEventData: pointer to the event information structure
14096
Jeff Johnson295189b2012-06-20 16:38:30 -070014097 @see
14098 @return Result of the function call
14099*/
14100WDI_Status
14101WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014102(
Jeff Johnson295189b2012-06-20 16:38:30 -070014103 WDI_ControlBlockType* pWDICtx,
14104 WDI_EventInfoType* pEventData
14105)
14106{
14107 WDI_StartRspParamsType wdiRspParams;
14108 WDI_StartRspCb wdiStartRspCb = NULL;
14109
14110 tHalMacStartRspParams* startRspParams;
14111
14112#ifndef HAL_SELF_STA_PER_BSS
14113 WDI_AddStaParams wdiAddSTAParam = {0};
14114#endif
14115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14116
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 -------------------------------------------------------------------------*/
14121 if (( NULL == pEventData ) ||
14122 ( NULL == pEventData->pEventData) ||
14123 ( NULL == wdiStartRspCb ))
14124 {
14125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014129 }
14130
14131 /*-------------------------------------------------------------------------
14132 Extract response and send it to UMAC
14133 -------------------------------------------------------------------------*/
14134 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14135 {
14136 // not enough data was received
14137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14138 "Invalid response length in Start Resp Expect %x Rcvd %x",
14139 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14140 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 }
14143
14144 /*-------------------------------------------------------------------------
14145 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014146 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014147 -------------------------------------------------------------------------*/
14148 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14149
14150 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14151 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14152 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14153 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14154 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14155 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14156 wdiRspParams.wlanReportedVersion.major =
14157 startRspParams->wcnssWlanVersion.major;
14158 wdiRspParams.wlanReportedVersion.minor =
14159 startRspParams->wcnssWlanVersion.minor;
14160 wdiRspParams.wlanReportedVersion.version =
14161 startRspParams->wcnssWlanVersion.version;
14162 wdiRspParams.wlanReportedVersion.revision =
14163 startRspParams->wcnssWlanVersion.revision;
14164 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14165 startRspParams->wcnssCrmVersionString,
14166 sizeof(wdiRspParams.wcnssSoftwareVersion));
14167 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14168 startRspParams->wcnssWlanVersionString,
14169 sizeof(wdiRspParams.wcnssHardwareVersion));
14170 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14171
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014172 /*Save the HAL Version*/
14173 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14174
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 wpalMutexAcquire(&pWDICtx->wptMutex);
14176 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14177 {
14178 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14179
14180 /*Cache the start response for further use*/
14181 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014182 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 sizeof(pWDICtx->wdiCachedStartRspParams));
14184
14185 }
14186 else
14187 {
14188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14189 "Failed to start device with status %s(%d)",
14190 WDI_getHALStatusMsgString(startRspParams->status),
14191 startRspParams->status);
14192
14193 /*Set the expected state transition to stopped - because the start has
14194 failed*/
14195 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14196
14197 wpalMutexRelease(&pWDICtx->wptMutex);
14198
14199 /*Notify UMAC*/
14200 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014201
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14203
14204 /*Although the response is an error - it was processed by our function
14205 so as far as the caller is concerned this is a succesful reponse processing*/
14206 return WDI_STATUS_SUCCESS;
14207 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014208
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 wpalMutexRelease(&pWDICtx->wptMutex);
14210
14211 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14212 {
14213 /* FTM mode does not need to execute below */
14214 /* Notify UMAC */
14215 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14216 return WDI_STATUS_SUCCESS;
14217 }
14218
14219 /* START the Data transport */
14220 WDTS_startTransport(pWDICtx);
14221
14222 /*Start the STA Table !- check this logic again*/
14223 WDI_STATableStart(pWDICtx);
14224
14225#ifndef HAL_SELF_STA_PER_BSS
14226 /* Store the Self STA Index */
14227 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14228
14229 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14230 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14231 WDI_MAC_ADDR_LEN);
14232
14233 /* At this point add the self-STA */
14234
14235 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14236 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14237 /*! TO DO: wdiAddSTAParam.dpuSig */
14238 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14239 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14240 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14241
14242 //all DPU indices are the same for self STA
14243 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14244 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014245 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014246 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14247 WDI_MAC_ADDR_LEN);
14248 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14249 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14250
14251 /* Note: Since we don't get an explicit config STA request for self STA, we
14252 add the self STA upon receiving the Start response message. But the
14253 self STA entry in the table is deleted when WDI gets an explicit delete STA
14254 request */
14255 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14256#endif
14257
14258 /*Notify UMAC*/
14259 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14260
Jeff Johnsone7245742012-09-05 17:12:55 -070014261 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014262}/*WDI_ProcessStartRsp*/
14263
14264
14265/**
14266 @brief Process Stop Response function (called when a response
14267 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014268
14269 @param pWDICtx: pointer to the WLAN DAL context
14270 pEventData: pointer to the event information structure
14271
Jeff Johnson295189b2012-06-20 16:38:30 -070014272 @see
14273 @return Result of the function call
14274*/
14275WDI_Status
14276WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014277(
Jeff Johnson295189b2012-06-20 16:38:30 -070014278 WDI_ControlBlockType* pWDICtx,
14279 WDI_EventInfoType* pEventData
14280)
14281{
14282 WDI_Status wdiStatus;
14283 WDI_StopRspCb wdiStopRspCb = NULL;
14284
Jeff Johnsone7245742012-09-05 17:12:55 -070014285 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14287
Jeff Johnsone7245742012-09-05 17:12:55 -070014288 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014291 -------------------------------------------------------------------------*/
14292 if (( NULL == pEventData ) ||
14293 ( NULL == pEventData->pEventData) ||
14294 ( NULL == wdiStopRspCb ))
14295 {
14296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 }
14301
14302 /*-------------------------------------------------------------------------
14303 Extract response and send it to UMAC
14304 -------------------------------------------------------------------------*/
14305 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14306 {
14307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14308 "Invalid response length in Stop Resp %x %x",
14309 pEventData->uEventDataSize);
14310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 }
14313
14314 /*-------------------------------------------------------------------------
14315 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014316 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014317 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014318 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14319 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 sizeof(halMacStopRspMsg.stopRspParams));
14321
Jeff Johnsone7245742012-09-05 17:12:55 -070014322 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014323
14324 wpalMutexAcquire(&pWDICtx->wptMutex);
14325
14326 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 --------------------------------------------------------------------------*/
14329 if ( WDI_STATUS_SUCCESS != wdiStatus )
14330 {
14331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14332 "Failed to stop the device with status %s (%d)",
14333 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14334 halMacStopRspMsg.stopRspParams.status);
14335
Jeff Johnsone7245742012-09-05 17:12:55 -070014336 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14337
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014341
Jeff Johnson295189b2012-06-20 16:38:30 -070014342 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14343
14344 /*Transition now as WDI may get preempted imediately after it sends
14345 up the Stop Response and it will not get to process the state transition
14346 from Main Rsp function*/
14347 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14348 wpalMutexRelease(&pWDICtx->wptMutex);
14349
14350 /*! TO DO: - STOP the Data transport */
14351
14352 /*Notify UMAC*/
14353 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14354
Jeff Johnsone7245742012-09-05 17:12:55 -070014355 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014356}/*WDI_ProcessStopRsp*/
14357
14358/**
14359 @brief Process Close Rsp function (called when a response
14360 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014361
14362 @param pWDICtx: pointer to the WLAN DAL context
14363 pEventData: pointer to the event information structure
14364
Jeff Johnson295189b2012-06-20 16:38:30 -070014365 @see
14366 @return Result of the function call
14367*/
14368WDI_Status
14369WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014370(
Jeff Johnson295189b2012-06-20 16:38:30 -070014371 WDI_ControlBlockType* pWDICtx,
14372 WDI_EventInfoType* pEventData
14373)
14374{
14375 /*There is no close response comming from HAL - function just kept for
14376 simmetry */
14377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014379}/*WDI_ProcessCloseRsp*/
14380
14381
14382/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014384============================================================================*/
14385
14386/**
14387 @brief Process Init Scan Rsp function (called when a response
14388 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014389
14390 @param pWDICtx: pointer to the WLAN DAL context
14391 pEventData: pointer to the event information structure
14392
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 @see
14394 @return Result of the function call
14395*/
14396WDI_Status
14397WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014398(
Jeff Johnson295189b2012-06-20 16:38:30 -070014399 WDI_ControlBlockType* pWDICtx,
14400 WDI_EventInfoType* pEventData
14401)
14402{
14403 WDI_Status wdiStatus;
14404 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014406 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14408
14409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 -------------------------------------------------------------------------*/
14412 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14413 ( NULL == pEventData->pEventData))
14414 {
14415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 }
14420
14421 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14422 if( NULL == wdiInitScanRspCb)
14423 {
14424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014425 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 }
14429
14430 /*-------------------------------------------------------------------------
14431 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014432 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014434 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14435 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 sizeof(halInitScanRspMsg.initScanRspParams));
14437
Jeff Johnsone7245742012-09-05 17:12:55 -070014438 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014439
14440 if ( pWDICtx->bInBmps )
14441 {
14442 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014443 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14444 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14446 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14447 WDI_ASSERT(0);
14448 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 }
14450
14451 /*Notify UMAC*/
14452 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14453
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014455}/*WDI_ProcessInitScanRsp*/
14456
14457
14458/**
14459 @brief Process Start Scan Rsp function (called when a response
14460 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014461
14462 @param pWDICtx: pointer to the WLAN DAL context
14463 pEventData: pointer to the event information structure
14464
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 @see
14466 @return Result of the function call
14467*/
14468WDI_Status
14469WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014470(
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 WDI_ControlBlockType* pWDICtx,
14472 WDI_EventInfoType* pEventData
14473)
14474{
14475 WDI_StartScanRspParamsType wdiStartScanParams;
14476 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014477
14478 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14480
14481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 -------------------------------------------------------------------------*/
14484 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14485 ( NULL == pEventData->pEventData))
14486 {
14487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 }
14492
14493 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14494 if( NULL == wdiStartScanRspCb)
14495 {
14496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014497 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014500 }
14501
14502 /*-------------------------------------------------------------------------
14503 Extract response and send it to UMAC
14504 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014505 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14506 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014507 sizeof(halStartScanRspMsg.startScanRspParams));
14508
14509 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14510 halStartScanRspMsg.startScanRspParams.status);
14511#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014512 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014513 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014514 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014515 halStartScanRspMsg.startScanRspParams.startTSF,
14516 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014517#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014518
14519 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14520 {
14521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14522 "Start scan failed with status %s (%d)",
14523 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14524 halStartScanRspMsg.startScanRspParams.status);
14525 /* send the status to UMAC, don't return from here*/
14526 }
14527
14528 /*Notify UMAC*/
14529 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14530
Jeff Johnsone7245742012-09-05 17:12:55 -070014531 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014532
14533}/*WDI_ProcessStartScanRsp*/
14534
14535
14536/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014537 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014538 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014539
14540 @param pWDICtx: pointer to the WLAN DAL context
14541 pEventData: pointer to the event information structure
14542
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 @see
14544 @return Result of the function call
14545*/
14546WDI_Status
14547WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014548(
Jeff Johnson295189b2012-06-20 16:38:30 -070014549 WDI_ControlBlockType* pWDICtx,
14550 WDI_EventInfoType* pEventData
14551)
14552{
14553 WDI_Status wdiStatus;
14554 tHalEndScanRspMsg halEndScanRspMsg;
14555 WDI_EndScanRspCb wdiEndScanRspCb;
14556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14557
14558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014560 -------------------------------------------------------------------------*/
14561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14562 ( NULL == pEventData->pEventData))
14563 {
14564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 }
14569
14570 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14571
14572 /*-------------------------------------------------------------------------
14573 Extract response and send it to UMAC
14574 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014575 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14576 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 sizeof(halEndScanRspMsg.endScanRspParams));
14578
Jeff Johnsone7245742012-09-05 17:12:55 -070014579 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014580
14581 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14582 {
14583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14584 "End Scan failed with status %s (%d )",
14585 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14586 halEndScanRspMsg.endScanRspParams.status);
14587 /* send the status to UMAC, don't return from here*/
14588 }
14589
14590 /*Notify UMAC*/
14591 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14592
Jeff Johnsone7245742012-09-05 17:12:55 -070014593 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014594}/*WDI_ProcessEndScanRsp*/
14595
14596
14597/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014600
14601 @param pWDICtx: pointer to the WLAN DAL context
14602 pEventData: pointer to the event information structure
14603
Jeff Johnson295189b2012-06-20 16:38:30 -070014604 @see
14605 @return Result of the function call
14606*/
14607WDI_Status
14608WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014609(
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 WDI_ControlBlockType* pWDICtx,
14611 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014612)
Jeff Johnson295189b2012-06-20 16:38:30 -070014613{
14614 WDI_Status wdiStatus;
14615 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014616
14617 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14619
14620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014622 -------------------------------------------------------------------------*/
14623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14624 ( NULL == pEventData->pEventData))
14625 {
14626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014630 }
14631
14632 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14633
14634 /*-------------------------------------------------------------------------
14635 Extract response and send it to UMAC
14636 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14638 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014639 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14640
Jeff Johnsone7245742012-09-05 17:12:55 -070014641 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014642
14643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014644 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 halFinishScanRspMsg.finishScanRspParams.status);
14646
14647 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14648 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14649 {
14650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14651 "Finish Scan failed with status %s (%d)",
14652 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14653 halFinishScanRspMsg.finishScanRspParams.status);
14654 /* send the status to UMAC, don't return from here*/
14655 }
14656
14657 /*Notify UMAC*/
14658 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14659
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014661}/*WDI_ProcessFinishScanRsp*/
14662
14663/**
14664 @brief Process Join Response function (called when a response
14665 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014666
14667 @param pWDICtx: pointer to the WLAN DAL context
14668 pEventData: pointer to the event information structure
14669
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 @see
14671 @return Result of the function call
14672*/
14673WDI_Status
14674WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014675(
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 WDI_ControlBlockType* pWDICtx,
14677 WDI_EventInfoType* pEventData
14678)
14679{
14680 WDI_Status wdiStatus;
14681 WDI_JoinRspCb wdiJoinRspCb;
14682 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014683
14684 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14686
14687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 -------------------------------------------------------------------------*/
14690 if (( NULL == pWDICtx ) ||
14691 ( NULL == pWDICtx->pfncRspCB ) ||
14692 ( NULL == pEventData ) ||
14693 ( NULL == pEventData->pEventData))
14694 {
14695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014696 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 }
14700
14701 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14702
14703 /*-------------------------------------------------------------------------
14704 Extract response and send it to UMAC
14705 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14707 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014708 sizeof(halJoinRspMsg.joinRspParams));
14709
Jeff Johnsone7245742012-09-05 17:12:55 -070014710 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014711
14712 wpalMutexAcquire(&pWDICtx->wptMutex);
14713
14714 /*-----------------------------------------------------------------------
14715 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014716 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014718 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014719 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14720 {
14721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14723 "association no longer in progress %d - mysterious HAL response",
14724 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014725
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014729 }
14730
14731 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14732
14733 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014734 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 -----------------------------------------------------------------------*/
14736 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14737 {
14738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14739 "Join only allowed in Joining state - failure state is %d "
14740 "strange HAL response", pBSSSes->wdiAssocState);
14741
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14743
Jeff Johnson295189b2012-06-20 16:38:30 -070014744 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 }
14747
14748
14749 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 -----------------------------------------------------------------------*/
14752 if ( WDI_STATUS_SUCCESS != wdiStatus )
14753 {
14754 /*Association was failed by HAL - remove session*/
14755 WDI_DeleteSession(pWDICtx, pBSSSes);
14756
14757 /*Association no longer in progress */
14758 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14759
14760 /*Association no longer in progress - prepare pending assoc for processing*/
14761 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014762
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 }
14764 else
14765 {
14766 /*Transition to state Joining - this may be redundant as we are supposed
14767 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 }
14770
14771 wpalMutexRelease(&pWDICtx->wptMutex);
14772
14773 /*Notify UMAC*/
14774 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14775
Jeff Johnsone7245742012-09-05 17:12:55 -070014776 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014777}/*WDI_ProcessJoinRsp*/
14778
14779
14780/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014781 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014782 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014783
14784 @param pWDICtx: pointer to the WLAN DAL context
14785 pEventData: pointer to the event information structure
14786
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 @see
14788 @return Result of the function call
14789*/
14790WDI_Status
14791WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014792(
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 WDI_ControlBlockType* pWDICtx,
14794 WDI_EventInfoType* pEventData
14795)
14796{
14797 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14798 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014799 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 WDI_BSSSessionType* pBSSSes = NULL;
14801
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14804 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014805
Jeff Johnson295189b2012-06-20 16:38:30 -070014806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14807
14808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 -------------------------------------------------------------------------*/
14811 if (( NULL == pEventData ) ||
14812 ( NULL == pEventData->pEventData))
14813 {
14814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014815 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014818 }
14819
14820 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14821
14822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014823 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14826 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 sizeof(halConfigBssRspMsg.configBssRspParams));
14828
14829 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14830 halConfigBssRspMsg.configBssRspParams.status);
14831 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14832 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014833 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014834 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14835 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014836
Jeff Johnson295189b2012-06-20 16:38:30 -070014837 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014838
14839 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014840 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014841
14842 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014843 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014844
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014846
Jeff Johnson295189b2012-06-20 16:38:30 -070014847 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14850 #endif
14851 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14852 halConfigBssRspMsg.configBssRspParams.staMac,
14853 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014854
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 wpalMutexAcquire(&pWDICtx->wptMutex);
14856 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014859 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14860 wdiConfigBSSParams.macBSSID,
14861 &pBSSSes);
14862
Jeff Johnson295189b2012-06-20 16:38:30 -070014863 /*-----------------------------------------------------------------------
14864 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014865 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 -----------------------------------------------------------------------*/
14867 if ( NULL == pBSSSes )
14868 {
14869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14870 "Association sequence for this BSS does not yet exist "
14871 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014872
14873 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14874
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014876 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014877 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014878
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 /*Save data for this BSS*/
14880 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14881 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014890 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014891 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14892 pBSSSes->bcastStaIdx =
14893 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014894
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014896
Jeff Johnson295189b2012-06-20 16:38:30 -070014897 /*-------------------------------------------------------------------------
14898 Add Peer STA
14899 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14902 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014903
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 wdiAddSTAParam.ucHTCapable =
14908 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14909 wdiAddSTAParam.ucStaType =
14910 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14911
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14914 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014916
14917 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14918 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14919 WDI_MAC_ADDR_LEN);
14920
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014924 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014934
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14936 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014937
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14939 /*-------------------------------------------------------------------------
14940 Add Broadcast STA only in AP mode
14941 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014942 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 WDI_BSS_OPERATIONAL_MODE_AP )
14944 {
14945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14946 "Add BCAST STA to table for index: %d",
14947 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014948
14949 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014951
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14953 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14954 }
14955 wpalMutexRelease(&pWDICtx->wptMutex);
14956 }
14957 else
14958 {
14959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14960 "Config BSS RSP failed with status : %s(%d)",
14961 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014962 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 halConfigBssRspMsg.configBssRspParams.status);
14964
Jeff Johnsone7245742012-09-05 17:12:55 -070014965
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 /*Association was failed by HAL - remove session*/
14967 WDI_DeleteSession(pWDICtx, pBSSSes);
14968
14969 /*Association no longer in progress */
14970 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14971
14972 /*Association no longer in progress - prepare pending assoc for processing*/
14973 WDI_DequeueAssocRequest(pWDICtx);
14974
14975 }
14976
14977 /*Notify UMAC*/
14978 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14979
Jeff Johnsone7245742012-09-05 17:12:55 -070014980 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014981}/*WDI_ProcessConfigBSSRsp*/
14982
14983
14984/**
14985 @brief Process Del BSS Response function (called when a response
14986 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014987
14988 @param pWDICtx: pointer to the WLAN DAL context
14989 pEventData: pointer to the event information structure
14990
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 @see
14992 @return Result of the function call
14993*/
14994WDI_Status
14995WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014996(
Jeff Johnson295189b2012-06-20 16:38:30 -070014997 WDI_ControlBlockType* pWDICtx,
14998 WDI_EventInfoType* pEventData
14999)
15000{
15001 WDI_DelBSSRspParamsType wdiDelBSSParams;
15002 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015003 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015004 WDI_BSSSessionType* pBSSSes = NULL;
15005
Jeff Johnsone7245742012-09-05 17:12:55 -070015006 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15008
15009 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015010 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015011 -------------------------------------------------------------------------*/
15012 if (( NULL == pEventData ) ||
15013 ( NULL == pEventData->pEventData))
15014 {
15015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 }
15020
15021 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15022
15023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015024 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015025 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15027 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015028 sizeof(halDelBssRspMsg.deleteBssRspParams));
15029
15030
15031 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015032 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015033
15034 wpalMutexAcquire(&pWDICtx->wptMutex);
15035
15036 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015037 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015038 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15040 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15041 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015042
15043 /*-----------------------------------------------------------------------
15044 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015045 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015046 -----------------------------------------------------------------------*/
15047 if ( NULL == pBSSSes )
15048 {
15049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15050 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015051 "association no longer in progress - mysterious HAL response");
15052
15053 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15054
15055 wpalMutexRelease(&pWDICtx->wptMutex);
15056 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015057 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015058
15059 /*Extract BSSID for the response to UMAC*/
15060 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15061 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15062
15063 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15064
15065 /*-----------------------------------------------------------------------
15066 The current session will be deleted
15067 -----------------------------------------------------------------------*/
15068 WDI_DeleteSession(pWDICtx, pBSSSes);
15069
15070
15071 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15072 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015074 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015075 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015076
15077 /* Delete the STA's in this BSS */
15078 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15079
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 wpalMutexRelease(&pWDICtx->wptMutex);
15081
15082 /*Notify UMAC*/
15083 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15084
Jeff Johnsone7245742012-09-05 17:12:55 -070015085 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015086}/*WDI_ProcessDelBSSRsp*/
15087
15088/**
15089 @brief Process Post Assoc Rsp function (called when a response
15090 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015091
15092 @param pWDICtx: pointer to the WLAN DAL context
15093 pEventData: pointer to the event information structure
15094
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 @see
15096 @return Result of the function call
15097*/
15098WDI_Status
15099WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015100(
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 WDI_ControlBlockType* pWDICtx,
15102 WDI_EventInfoType* pEventData
15103)
15104{
15105 WDI_PostAssocRspParamsType wdiPostAssocParams;
15106 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015107 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015108 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015109 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15111
15112 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015113 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015114 -------------------------------------------------------------------------*/
15115 if (( NULL == pEventData ) ||
15116 ( NULL == pEventData->pEventData))
15117 {
15118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 }
15123
15124 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15125
15126 /*-------------------------------------------------------------------------
15127 Extract response and send it to UMAC
15128 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015129 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15130 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015131 sizeof(halPostAssocRspMsg.postAssocRspParams));
15132
15133 /*Extract the Post Assoc STA Params */
15134
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015136 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015139 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015140 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15141
Jeff Johnsone7245742012-09-05 17:12:55 -070015142 wdiPostAssocParams.wdiStatus =
15143 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015144
15145 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15146 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015147 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15148 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015149 WDI_MAC_ADDR_LEN);
15150
15151 /* Extract Post Assoc BSS Params */
15152
Jeff Johnsone7245742012-09-05 17:12:55 -070015153 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15154 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15155 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015156
15157 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15158 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015159 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15161 .macSTA, WDI_MAC_ADDR_LEN);
15162
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15165
Jeff Johnsone7245742012-09-05 17:12:55 -070015166 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15168
15169 wdiPostAssocParams.bssParams.ucBSSIdx =
15170 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15171
Jeff Johnsone7245742012-09-05 17:12:55 -070015172 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15174
15175 wpalMutexAcquire(&pWDICtx->wptMutex);
15176
15177 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015182 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015183
15184 /*-----------------------------------------------------------------------
15185 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 -----------------------------------------------------------------------*/
15188 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15191 {
15192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15193 "Association sequence for this BSS does not yet exist or "
15194 "association no longer in progress - mysterious HAL response");
15195
Jeff Johnsone7245742012-09-05 17:12:55 -070015196 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15197
Jeff Johnson295189b2012-06-20 16:38:30 -070015198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015200 }
15201
15202 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 -----------------------------------------------------------------------*/
15205 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15206 {
15207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15208 "Post Assoc not allowed before JOIN - failing request "
15209 "strange HAL response");
15210
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15212
Jeff Johnson295189b2012-06-20 16:38:30 -070015213 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015214 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015215 }
15216
15217 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015218 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015219 -----------------------------------------------------------------------*/
15220 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15221 {
15222 /*Association was failed by HAL - remove session*/
15223 WDI_DeleteSession(pWDICtx, pBSSSes);
15224 }
15225 else
15226 {
15227 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015229
15230 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015231 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015232 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015233 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015235 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015237 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015238 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15239
Jeff Johnsone7245742012-09-05 17:12:55 -070015240 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15242 }
15243
15244 /*Association no longer in progress */
15245 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15246
15247 /*Association no longer in progress - prepare pending assoc for processing*/
15248 WDI_DequeueAssocRequest(pWDICtx);
15249
15250 wpalMutexRelease(&pWDICtx->wptMutex);
15251
15252 /*Notify UMAC*/
15253 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15254
Jeff Johnsone7245742012-09-05 17:12:55 -070015255 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015256}/*WDI_ProcessPostAssocRsp*/
15257
15258/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015260 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015261
15262 @param pWDICtx: pointer to the WLAN DAL context
15263 pEventData: pointer to the event information structure
15264
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 @see
15266 @return Result of the function call
15267*/
15268WDI_Status
15269WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015270(
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 WDI_ControlBlockType* pWDICtx,
15272 WDI_EventInfoType* pEventData
15273)
15274{
15275 WDI_DelSTARspParamsType wdiDelSTARsp;
15276 WDI_DelSTARspCb wdiDelSTARspCb;
15277 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15280
15281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015283 -------------------------------------------------------------------------*/
15284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15285 ( NULL == pEventData->pEventData))
15286 {
15287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 }
15292
15293 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15294
15295 /*-------------------------------------------------------------------------
15296 Extract response and send it to UMAC
15297 -------------------------------------------------------------------------*/
15298 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 sizeof(halDelStaRspMsg.delStaRspParams));
15301
15302 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015303 wdiDelSTARsp.wdiStatus =
15304 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015305
15306 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15307
15308 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15309 if(staType == WDI_STA_ENTRY_SELF)
15310 {
15311 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15312
15313 /* At this point add the self-STA */
15314
15315 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15316 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15317 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15318
15319#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15320#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15321
15322 //all DPU indices are the same for self STA
15323 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15324 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15325 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15326 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15327 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15328 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015329
15330 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015331 }
15332 else
15333 {
15334 //Delete the station in the table
15335 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15336 }
15337
15338 /*Notify UMAC*/
15339 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15340
Jeff Johnsone7245742012-09-05 17:12:55 -070015341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015342}/*WDI_ProcessDelSTARsp*/
15343
15344
15345/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015347==========================================================================*/
15348
15349/**
15350 @brief Process Set BSS Key Rsp function (called when a response
15351 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015352
15353 @param pWDICtx: pointer to the WLAN DAL context
15354 pEventData: pointer to the event information structure
15355
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 @see
15357 @return Result of the function call
15358*/
15359WDI_Status
15360WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015361(
Jeff Johnson295189b2012-06-20 16:38:30 -070015362 WDI_ControlBlockType* pWDICtx,
15363 WDI_EventInfoType* pEventData
15364)
15365{
15366 WDI_Status wdiStatus;
15367 eHalStatus halStatus;
15368 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15370
15371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015373 -------------------------------------------------------------------------*/
15374 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15375 ( NULL == pEventData->pEventData))
15376 {
15377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 }
15382
15383 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15384
15385 /*-------------------------------------------------------------------------
15386 Extract response and send it to UMAC
15387 -------------------------------------------------------------------------*/
15388 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015389 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015390
15391 if ( eHAL_STATUS_SUCCESS != halStatus )
15392 {
15393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15394 "Set BSS Key failed with status %s (%d)",
15395 WDI_getHALStatusMsgString(halStatus),
15396 halStatus);
15397 /* send the status to UMAC, don't return from here*/
15398 }
15399
15400 /*Notify UMAC*/
15401 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15402
Jeff Johnsone7245742012-09-05 17:12:55 -070015403 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015404}/*WDI_ProcessSetBssKeyRsp*/
15405
15406/**
15407 @brief Process Remove BSS Key Rsp function (called when a response
15408 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015409
15410 @param pWDICtx: pointer to the WLAN DAL context
15411 pEventData: pointer to the event information structure
15412
Jeff Johnson295189b2012-06-20 16:38:30 -070015413 @see
15414 @return Result of the function call
15415*/
15416WDI_Status
15417WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015418(
Jeff Johnson295189b2012-06-20 16:38:30 -070015419 WDI_ControlBlockType* pWDICtx,
15420 WDI_EventInfoType* pEventData
15421)
15422{
15423 WDI_Status wdiStatus;
15424 eHalStatus halStatus;
15425 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15427
15428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 -------------------------------------------------------------------------*/
15431 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15432 ( NULL == pEventData->pEventData))
15433 {
15434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015438 }
15439
15440 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15441
15442 /*-------------------------------------------------------------------------
15443 Extract response and send it to UMAC
15444 -------------------------------------------------------------------------*/
15445 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015446 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015447
15448 if ( eHAL_STATUS_SUCCESS != halStatus )
15449 {
15450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15451 "Remove BSS Key failed with status %s (%d )",
15452 WDI_getHALStatusMsgString(halStatus),
15453 halStatus);
15454 /* send the status to UMAC, don't return from here*/
15455 }
15456
15457 /*Notify UMAC*/
15458 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15459
Jeff Johnsone7245742012-09-05 17:12:55 -070015460 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015461}/*WDI_ProcessSetBssKeyRsp*/
15462
15463
15464/**
15465 @brief Process Set STA Key Rsp function (called when a response
15466 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015467
15468 @param pWDICtx: pointer to the WLAN DAL context
15469 pEventData: pointer to the event information structure
15470
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 @see
15472 @return Result of the function call
15473*/
15474WDI_Status
15475WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015476(
Jeff Johnson295189b2012-06-20 16:38:30 -070015477 WDI_ControlBlockType* pWDICtx,
15478 WDI_EventInfoType* pEventData
15479)
15480{
15481 WDI_Status wdiStatus;
15482 eHalStatus halStatus;
15483 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15485
15486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015488 -------------------------------------------------------------------------*/
15489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15490 ( NULL == pEventData->pEventData))
15491 {
15492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015496 }
15497
15498 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15499
15500 /*-------------------------------------------------------------------------
15501 Extract response and send it to UMAC
15502 -------------------------------------------------------------------------*/
15503 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015505
15506 if ( eHAL_STATUS_SUCCESS != halStatus )
15507 {
15508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15509 "Set STA Key failed with status %s (%d)",
15510 WDI_getHALStatusMsgString(halStatus),
15511 halStatus);
15512 /* send the status to UMAC, don't return from here*/
15513 }
15514
15515 /*Notify UMAC*/
15516 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15517
Jeff Johnsone7245742012-09-05 17:12:55 -070015518 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015519}/*WDI_ProcessSetSTAKeyRsp*/
15520
15521/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015522 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015523 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015524
15525 @param pWDICtx: pointer to the WLAN DAL context
15526 pEventData: pointer to the event information structure
15527
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 @see
15529 @return Result of the function call
15530*/
15531WDI_Status
15532WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015533(
Jeff Johnson295189b2012-06-20 16:38:30 -070015534 WDI_ControlBlockType* pWDICtx,
15535 WDI_EventInfoType* pEventData
15536)
15537{
15538 WDI_Status wdiStatus;
15539 eHalStatus halStatus;
15540 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15542
15543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015544 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015545 -------------------------------------------------------------------------*/
15546 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15547 ( NULL == pEventData->pEventData))
15548 {
15549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015550 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015553 }
15554
15555 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15556
15557 /*-------------------------------------------------------------------------
15558 Extract response and send it to UMAC
15559 -------------------------------------------------------------------------*/
15560 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015561 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015562
15563 if ( eHAL_STATUS_SUCCESS != halStatus )
15564 {
15565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15566 "Remove STA Key failed with status %s (%d)",
15567 WDI_getHALStatusMsgString(halStatus),
15568 halStatus);
15569 /* send the status to UMAC, don't return from here*/
15570 }
15571
15572 /*Notify UMAC*/
15573 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15574
Jeff Johnsone7245742012-09-05 17:12:55 -070015575 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015576}/*WDI_ProcessRemoveStaKeyRsp*/
15577
15578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015581
15582 @param pWDICtx: pointer to the WLAN DAL context
15583 pEventData: pointer to the event information structure
15584
Jeff Johnson295189b2012-06-20 16:38:30 -070015585 @see
15586 @return Result of the function call
15587*/
15588WDI_Status
15589WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015590(
Jeff Johnson295189b2012-06-20 16:38:30 -070015591 WDI_ControlBlockType* pWDICtx,
15592 WDI_EventInfoType* pEventData
15593)
15594{
15595 WDI_Status wdiStatus;
15596 eHalStatus halStatus;
15597 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15599
15600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015602 -------------------------------------------------------------------------*/
15603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15604 ( NULL == pEventData->pEventData))
15605 {
15606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015610 }
15611
15612 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15613
15614 /*-------------------------------------------------------------------------
15615 Extract response and send it to UMAC
15616 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 wpalMemoryCopy( &halStatus,
15618 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015619 sizeof(halStatus));
15620
Jeff Johnsone7245742012-09-05 17:12:55 -070015621 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015622
15623 if ( eHAL_STATUS_SUCCESS != halStatus )
15624 {
15625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15626 "Set STA Key failed with status %s (%d)",
15627 WDI_getHALStatusMsgString(halStatus),
15628 halStatus);
15629 /* send the status to UMAC, don't return from here*/
15630 }
15631
15632 /*Notify UMAC*/
15633 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15634
Jeff Johnsone7245742012-09-05 17:12:55 -070015635 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015636}/*WDI_ProcessSetSTABcastKeyRsp*/
15637
15638/**
15639 @brief Process Remove STA Bcast Key Rsp function (called when a
15640 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015641
15642 @param pWDICtx: pointer to the WLAN DAL context
15643 pEventData: pointer to the event information structure
15644
Jeff Johnson295189b2012-06-20 16:38:30 -070015645 @see
15646 @return Result of the function call
15647*/
15648WDI_Status
15649WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015650(
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 WDI_ControlBlockType* pWDICtx,
15652 WDI_EventInfoType* pEventData
15653)
15654{
15655 WDI_Status wdiStatus;
15656 eHalStatus halStatus;
15657 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15659
15660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 -------------------------------------------------------------------------*/
15663 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15664 ( NULL == pEventData->pEventData))
15665 {
15666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015667 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015670 }
15671
15672 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15673
15674 /*-------------------------------------------------------------------------
15675 Extract response and send it to UMAC
15676 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 wpalMemoryCopy( &halStatus,
15678 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 sizeof(halStatus));
15680
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015682
15683 if ( eHAL_STATUS_SUCCESS != halStatus )
15684 {
15685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15686 "Remove STA Key failed with status %s (%d)",
15687 WDI_getHALStatusMsgString(halStatus),
15688 halStatus);
15689 /* send the status to UMAC, don't return from here*/
15690 }
15691
15692 /*Notify UMAC*/
15693 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15694
Jeff Johnsone7245742012-09-05 17:12:55 -070015695 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015696}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15697
15698
15699/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015700 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015701==========================================================================*/
15702
15703/**
15704 @brief Process Add TSpec Rsp function (called when a response
15705 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015706
15707 @param pWDICtx: pointer to the WLAN DAL context
15708 pEventData: pointer to the event information structure
15709
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 @see
15711 @return Result of the function call
15712*/
15713WDI_Status
15714WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015715(
Jeff Johnson295189b2012-06-20 16:38:30 -070015716 WDI_ControlBlockType* pWDICtx,
15717 WDI_EventInfoType* pEventData
15718)
15719{
15720 WDI_Status wdiStatus;
15721 eHalStatus halStatus;
15722 WDI_AddTsRspCb wdiAddTsRspCb;
15723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15724
15725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 -------------------------------------------------------------------------*/
15728 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15729 ( NULL == pEventData->pEventData))
15730 {
15731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015735 }
15736
15737 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15738
15739 /*-------------------------------------------------------------------------
15740 Extract response and send it to UMAC
15741 -------------------------------------------------------------------------*/
15742 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015744
15745 /*Notify UMAC*/
15746 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15747
Jeff Johnsone7245742012-09-05 17:12:55 -070015748 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015749}/*WDI_ProcessAddTSpecRsp*/
15750
15751
15752/**
15753 @brief Process Del TSpec Rsp function (called when a response
15754 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015755
15756 @param pWDICtx: pointer to the WLAN DAL context
15757 pEventData: pointer to the event information structure
15758
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 @see
15760 @return Result of the function call
15761*/
15762WDI_Status
15763WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015764(
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 WDI_ControlBlockType* pWDICtx,
15766 WDI_EventInfoType* pEventData
15767)
15768{
15769 WDI_Status wdiStatus;
15770 eHalStatus halStatus;
15771 WDI_DelTsRspCb wdiDelTsRspCb;
15772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15773
15774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 -------------------------------------------------------------------------*/
15777 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15778 ( NULL == pEventData->pEventData))
15779 {
15780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 }
15785
15786 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15787
15788 /*-------------------------------------------------------------------------
15789 Extract response and send it to UMAC
15790 -------------------------------------------------------------------------*/
15791 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015793
15794 /*Notify UMAC*/
15795 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15796
Jeff Johnsone7245742012-09-05 17:12:55 -070015797 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015798}/*WDI_ProcessDelTSpecRsp*/
15799
15800/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015803
15804 @param pWDICtx: pointer to the WLAN DAL context
15805 pEventData: pointer to the event information structure
15806
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 @see
15808 @return Result of the function call
15809*/
15810WDI_Status
15811WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015812(
Jeff Johnson295189b2012-06-20 16:38:30 -070015813 WDI_ControlBlockType* pWDICtx,
15814 WDI_EventInfoType* pEventData
15815)
15816{
15817 WDI_Status wdiStatus;
15818 eHalStatus halStatus;
15819 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15821
15822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 -------------------------------------------------------------------------*/
15825 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15826 ( NULL == pEventData->pEventData))
15827 {
15828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 }
15833
15834 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15835
15836 /*-------------------------------------------------------------------------
15837 Extract response and send it to UMAC
15838 -------------------------------------------------------------------------*/
15839 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015840 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015841
15842 /*Notify UMAC*/
15843 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15844
Jeff Johnsone7245742012-09-05 17:12:55 -070015845 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015846}/*WDI_ProcessUpdateEDCAParamsRsp*/
15847
15848
15849/**
15850 @brief Process Add BA Rsp function (called when a response
15851 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015852
15853 @param pWDICtx: pointer to the WLAN DAL context
15854 pEventData: pointer to the event information structure
15855
Jeff Johnson295189b2012-06-20 16:38:30 -070015856 @see
15857 @return Result of the function call
15858*/
15859WDI_Status
15860WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015861(
Jeff Johnson295189b2012-06-20 16:38:30 -070015862 WDI_ControlBlockType* pWDICtx,
15863 WDI_EventInfoType* pEventData
15864)
15865{
15866 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15867
15868 tAddBASessionRspParams halBASessionRsp;
15869 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15870
Jeff Johnsone7245742012-09-05 17:12:55 -070015871
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15873
15874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015876 -------------------------------------------------------------------------*/
15877 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15878 ( NULL == pEventData->pEventData))
15879 {
15880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015881 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 }
15885
15886 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15887
15888 /*-------------------------------------------------------------------------
15889 Extract response and send it to UMAC
15890 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 wpalMemoryCopy( &halBASessionRsp,
15892 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015893 sizeof(halBASessionRsp));
15894
15895 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15896
Jeff Johnson43971f52012-07-17 12:26:56 -070015897 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015898 {
15899 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15900 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15901 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15902 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15903 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15904 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15905 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15906 }
15907
15908 /*Notify UMAC*/
15909 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15910
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015912}/*WDI_ProcessAddSessionBARsp*/
15913
15914
15915/**
15916 @brief Process Del BA Rsp function (called when a response
15917 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015918
15919 @param pWDICtx: pointer to the WLAN DAL context
15920 pEventData: pointer to the event information structure
15921
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 @see
15923 @return Result of the function call
15924*/
15925WDI_Status
15926WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015927(
Jeff Johnson295189b2012-06-20 16:38:30 -070015928 WDI_ControlBlockType* pWDICtx,
15929 WDI_EventInfoType* pEventData
15930)
15931{
15932 WDI_Status wdiStatus;
15933 eHalStatus halStatus;
15934 WDI_DelBARspCb wdiDelBARspCb;
15935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15936
15937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015939 -------------------------------------------------------------------------*/
15940 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15941 ( NULL == pEventData->pEventData))
15942 {
15943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 }
15948
15949 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15950
15951 /*-------------------------------------------------------------------------
15952 Extract response and send it to UMAC
15953 -------------------------------------------------------------------------*/
15954 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015956
15957 if ( eHAL_STATUS_SUCCESS == halStatus )
15958 {
15959 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15960 }
15961
15962 /*Notify UMAC*/
15963 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15964
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015966}/*WDI_ProcessDelBARsp*/
15967
15968#ifdef FEATURE_WLAN_CCX
15969/**
15970 @brief Process TSM Stats Rsp function (called when a response
15971 is being received over the bus from HAL)
15972
15973 @param pWDICtx: pointer to the WLAN DAL context
15974 pEventData: pointer to the event information structure
15975
15976 @see
15977 @return Result of the function call
15978*/
15979WDI_Status
15980WDI_ProcessTsmStatsRsp
15981(
15982 WDI_ControlBlockType* pWDICtx,
15983 WDI_EventInfoType* pEventData
15984)
15985{
15986 WDI_TsmRspCb wdiTsmStatsRspCb;
15987 tTsmStatsRspMsg halTsmStatsRspMsg;
15988 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15990
15991 /*-------------------------------------------------------------------------
15992 Sanity check
15993 -------------------------------------------------------------------------*/
15994 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15995 ( NULL == pEventData->pEventData))
15996 {
15997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015998 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 WDI_ASSERT(0);
16000 return WDI_STATUS_E_FAILURE;
16001 }
16002
16003 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16004
16005 /*-------------------------------------------------------------------------
16006 Unpack HAL Response Message - the header was already extracted by the
16007 main Response Handling procedure
16008 -------------------------------------------------------------------------*/
16009 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16010 pEventData->pEventData,
16011 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16012
16013 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16014 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16015 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16016 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16017 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16018 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16019 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16020 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16021 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16022 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16023 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16024 halTsmStatsRspMsg.tsmStatsRspParams.status);
16025
16026 /*Notify UMAC*/
16027 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16028
16029 return WDI_STATUS_SUCCESS;
16030}/*WDI_ProcessTsmStatsRsp*/
16031
16032#endif
16033
16034
16035
16036/**
16037 @brief Process Flush AC Rsp function (called when a response
16038 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016039
16040 @param pWDICtx: pointer to the WLAN DAL context
16041 pEventData: pointer to the event information structure
16042
Jeff Johnson295189b2012-06-20 16:38:30 -070016043 @see
16044 @return Result of the function call
16045*/
16046WDI_Status
16047WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016048(
Jeff Johnson295189b2012-06-20 16:38:30 -070016049 WDI_ControlBlockType* pWDICtx,
16050 WDI_EventInfoType* pEventData
16051)
16052{
16053 WDI_Status wdiStatus;
16054 eHalStatus halStatus;
16055 WDI_FlushAcRspCb wdiFlushAcRspCb;
16056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16057
16058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016060 -------------------------------------------------------------------------*/
16061 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16062 ( NULL == pEventData->pEventData))
16063 {
16064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 }
16069
16070 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16071
16072 /*-------------------------------------------------------------------------
16073 Extract response and send it to UMAC
16074 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016075 wpalMemoryCopy( &halStatus,
16076 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 sizeof(halStatus));
16078
Jeff Johnsone7245742012-09-05 17:12:55 -070016079 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016080
16081 /*Notify UMAC*/
16082 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16083
Jeff Johnsone7245742012-09-05 17:12:55 -070016084 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016085}/*WDI_ProcessFlushAcRsp*/
16086
16087/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016088 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016090
16091 @param pWDICtx: pointer to the WLAN DAL context
16092 pEventData: pointer to the event information structure
16093
Jeff Johnson295189b2012-06-20 16:38:30 -070016094 @see
16095 @return Result of the function call
16096*/
16097WDI_Status
16098WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016099(
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 WDI_ControlBlockType* pWDICtx,
16101 WDI_EventInfoType* pEventData
16102)
16103{
16104 WDI_Status wdiStatus;
16105 eHalStatus halStatus;
16106 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16108
16109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 -------------------------------------------------------------------------*/
16112 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16113 ( NULL == pEventData->pEventData))
16114 {
16115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016116 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016119 }
16120
16121 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16122
16123 /*-------------------------------------------------------------------------
16124 Extract response and send it to UMAC
16125 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 wpalMemoryCopy( &halStatus,
16127 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 sizeof(halStatus));
16129
Jeff Johnsone7245742012-09-05 17:12:55 -070016130 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016131
16132 /*Notify UMAC*/
16133 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16134
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016136}/*WDI_ProcessBtAmpEventRsp*/
16137
16138
16139/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016142
16143 @param pWDICtx: pointer to the WLAN DAL context
16144 pEventData: pointer to the event information structure
16145
Jeff Johnson295189b2012-06-20 16:38:30 -070016146 @see
16147 @return Result of the function call
16148*/
16149WDI_Status
16150WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016151(
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 WDI_ControlBlockType* pWDICtx,
16153 WDI_EventInfoType* pEventData
16154)
16155{
16156 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16157 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16158 tAddStaSelfRspMsg halAddStaSelfRsp;
16159 WDI_AddStaParams wdiAddSTAParam = {0};
16160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16161
16162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 -------------------------------------------------------------------------*/
16165 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16166 ( NULL == pEventData->pEventData))
16167 {
16168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016172 }
16173
Jeff Johnsone7245742012-09-05 17:12:55 -070016174 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016175 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16176
16177 /*-------------------------------------------------------------------------
16178 Extract response and send it to UMAC
16179 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016180 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16181 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16183
16184
Jeff Johnsone7245742012-09-05 17:12:55 -070016185 wdiAddSTASelfParams.wdiStatus =
16186 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016187
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016192 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016193 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16194
16195 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16196 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16197 WDI_MAC_ADDR_LEN);
16198
16199
16200#ifdef HAL_SELF_STA_PER_BSS
16201
16202 /* At this point add the self-STA */
16203
16204 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16205 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16206 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16207
16208 //all DPU indices are the same for self STA
16209
16210 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16213 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16214 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16215 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16216 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16217
16218 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16219 WDI_MAC_ADDR_LEN);
16220
16221 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16222 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16223
Jeff Johnsone7245742012-09-05 17:12:55 -070016224 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16226 {
16227 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16228 }
16229#endif
16230
16231 /*Notify UMAC*/
16232 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16233
Jeff Johnsone7245742012-09-05 17:12:55 -070016234 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016235}/*WDI_ProcessAddSTASelfRsp*/
16236
16237
16238
16239/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016240 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016241 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016242
16243 @param pWDICtx: pointer to the WLAN DAL context
16244 pEventData: pointer to the event information structure
16245
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 @see
16247 @return Result of the function call
16248*/
16249WDI_Status
16250WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016251(
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 WDI_ControlBlockType* pWDICtx,
16253 WDI_EventInfoType* pEventData
16254)
16255{
16256 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16257 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16258 tDelStaSelfRspParams delStaSelfRspParams;
16259 wpt_uint8 ucStaIdx;
16260
16261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16262
16263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 -------------------------------------------------------------------------*/
16266 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16267 ( NULL == pEventData->pEventData))
16268 {
16269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016270 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016273 }
16274
16275 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16276
16277 /*-------------------------------------------------------------------------
16278 Extract response and send it to UMAC
16279 -------------------------------------------------------------------------*/
16280
Jeff Johnsone7245742012-09-05 17:12:55 -070016281 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 (wpt_uint8*)pEventData->pEventData,
16283 sizeof(tDelStaSelfRspParams));
16284
Jeff Johnsone7245742012-09-05 17:12:55 -070016285 wdiDelStaSelfRspParams.wdiStatus =
16286 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016287
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16290 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16291 {
16292 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 delStaSelfRspParams.selfMacAddr,
16295 &ucStaIdx);
16296 if(WDI_STATUS_E_FAILURE == wdiStatus)
16297 {
16298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016299 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 }
16303 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16304 }
16305
16306 /*Notify UMAC*/
16307 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16308
16309 return WDI_STATUS_SUCCESS;
16310}
16311
Jeff Johnsone7245742012-09-05 17:12:55 -070016312#ifdef FEATURE_OEM_DATA_SUPPORT
16313/**
16314 @brief Start Oem Data Rsp function (called when a
16315 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016316
Jeff Johnsone7245742012-09-05 17:12:55 -070016317 @param pWDICtx: pointer to the WLAN DAL context
16318 pEventData: pointer to the event information structure
16319
16320 @see
16321 @return Result of the function call
16322*/
16323#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16324
16325WDI_Status
16326WDI_ProcessStartOemDataRsp
16327(
16328 WDI_ControlBlockType* pWDICtx,
16329 WDI_EventInfoType* pEventData
16330)
16331{
16332 WDI_oemDataRspCb wdiOemDataRspCb;
16333 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16334 tStartOemDataRspParams* halStartOemDataRspParams;
16335
16336 /*-------------------------------------------------------------------------
16337 Sanity check
16338 -------------------------------------------------------------------------*/
16339 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16340 ( NULL == pEventData->pEventData))
16341 {
16342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016343 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016344 WDI_ASSERT(0);
16345 return WDI_STATUS_E_FAILURE;
16346 }
16347
16348 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16349
16350 /*-------------------------------------------------------------------------
16351 Extract response and send it to UMAC
16352 -------------------------------------------------------------------------*/
16353 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16354
16355
16356 //It is the responsibility of the application code to check for failure
16357 //conditions!
16358
16359 //Allocate memory for WDI OEM DATA RSP structure
16360 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16361
16362 if(NULL == wdiOemDataRspParams)
16363 {
16364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16365 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16366 pWDICtx, pEventData, pEventData->pEventData);
16367 WDI_ASSERT(0);
16368 return WDI_STATUS_E_FAILURE;
16369 }
16370
16371 /* Populate WDI structure members */
16372 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16373
16374 /*Notify UMAC*/
16375 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16376
16377 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16378 wpalMemoryFree(wdiOemDataRspParams);
16379
16380 return WDI_STATUS_SUCCESS;
16381}/*WDI_PrcoessStartOemDataRsp*/
16382#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016383
16384/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016385 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016386===========================================================================*/
16387
16388/**
16389 @brief Process Channel Switch Rsp function (called when a response
16390 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016391
16392 @param pWDICtx: pointer to the WLAN DAL context
16393 pEventData: pointer to the event information structure
16394
Jeff Johnson295189b2012-06-20 16:38:30 -070016395 @see
16396 @return Result of the function call
16397*/
16398WDI_Status
16399WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016400(
Jeff Johnson295189b2012-06-20 16:38:30 -070016401 WDI_ControlBlockType* pWDICtx,
16402 WDI_EventInfoType* pEventData
16403)
16404{
16405 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16406 WDI_SwitchChRspCb wdiChSwitchRspCb;
16407 tSwitchChannelRspParams halSwitchChannelRsp;
16408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16409
16410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016412 -------------------------------------------------------------------------*/
16413 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16414 ( NULL == pEventData->pEventData))
16415 {
16416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016420 }
16421
16422 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16423
16424 /*-------------------------------------------------------------------------
16425 Extract response and send it to UMAC
16426 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016427 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016428 (wpt_uint8*)pEventData->pEventData,
16429 sizeof(halSwitchChannelRsp));
16430
Jeff Johnsone7245742012-09-05 17:12:55 -070016431 wdiSwitchChRsp.wdiStatus =
16432 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016433 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16434
16435#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016436 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016437#endif
16438
16439 /*Notify UMAC*/
16440 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16441
Jeff Johnsone7245742012-09-05 17:12:55 -070016442 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016443}/*WDI_ProcessChannelSwitchRsp*/
16444
16445
16446/**
16447 @brief Process Config STA Rsp function (called when a response
16448 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016449
16450 @param pWDICtx: pointer to the WLAN DAL context
16451 pEventData: pointer to the event information structure
16452
Jeff Johnson295189b2012-06-20 16:38:30 -070016453 @see
16454 @return Result of the function call
16455*/
16456WDI_Status
16457WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016458(
Jeff Johnson295189b2012-06-20 16:38:30 -070016459 WDI_ControlBlockType* pWDICtx,
16460 WDI_EventInfoType* pEventData
16461)
16462{
16463 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16464 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16465 WDI_AddStaParams wdiAddSTAParam;
16466
16467 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016468 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016469
Jeff Johnsone7245742012-09-05 17:12:55 -070016470 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16472
16473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016475 -------------------------------------------------------------------------*/
16476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16477 ( NULL == pEventData->pEventData))
16478 {
16479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016483 }
16484
16485 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16486
16487 /*-------------------------------------------------------------------------
16488 Extract response and send it to UMAC
16489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016490 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16491 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 sizeof(halConfigStaRsp.configStaRspParams));
16493
16494
16495 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16496 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16497 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16498 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16499 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16500
16501 /* MAC Address of STA - take from cache as it does not come back in the
16502 response*/
16503 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016506
16507 wdiCfgSTAParams.wdiStatus =
16508 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016509
16510 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16511 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16512 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16513
16514 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16515 {
16516 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16517 {
16518 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016519 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16521 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016522
Jeff Johnson295189b2012-06-20 16:38:30 -070016523 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016524 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016525 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 wdiAddSTAParam.ucHTCapable =
16527 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16528 wdiAddSTAParam.ucStaType =
16529 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16530
Jeff Johnson295189b2012-06-20 16:38:30 -070016531 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016532 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16533 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016535
16536 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16537 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16538 WDI_MAC_ADDR_LEN);
16539
16540 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16541 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16542 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016543
16544 if ( NULL == pBSSSes )
16545 {
16546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16547 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016548
Jeff Johnson295189b2012-06-20 16:38:30 -070016549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 }
16552
16553 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016554 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016555 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016556 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016558 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016560 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 halConfigStaRsp.configStaRspParams.ucBcastSig;
16562 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16563 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016564
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16566 }
16567 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16568 {
16569 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16570
Jeff Johnsone7245742012-09-05 17:12:55 -070016571 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016572 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016573 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016574 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016575 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016577 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016578 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016579 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 halConfigStaRsp.configStaRspParams.ucUcastSig;
16585 }
16586 }
16587
16588 /*Notify UMAC*/
16589 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16590
Jeff Johnsone7245742012-09-05 17:12:55 -070016591 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016592}/*WDI_ProcessConfigStaRsp*/
16593
16594
16595/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016596 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016597 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016598
16599 @param pWDICtx: pointer to the WLAN DAL context
16600 pEventData: pointer to the event information structure
16601
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 @see
16603 @return Result of the function call
16604*/
16605WDI_Status
16606WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016607(
Jeff Johnson295189b2012-06-20 16:38:30 -070016608 WDI_ControlBlockType* pWDICtx,
16609 WDI_EventInfoType* pEventData
16610)
16611{
16612 WDI_Status wdiStatus;
16613 eHalStatus halStatus;
16614 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16615
16616 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16619
16620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 -------------------------------------------------------------------------*/
16623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16624 ( NULL == pEventData->pEventData))
16625 {
16626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 }
16631
16632 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16633
16634 wpalMutexAcquire(&pWDICtx->wptMutex);
16635
16636 /*If the link is being transitioned to idle - the BSS is to be deleted
16637 - this type of ending a session is possible when UMAC has failed an
16638 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16641 {
16642 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016643 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016644 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016645 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16646 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16647 &pBSSSes);
16648
Jeff Johnson295189b2012-06-20 16:38:30 -070016649 /*-----------------------------------------------------------------------
16650 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016651 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 -----------------------------------------------------------------------*/
16653 if ( NULL == pBSSSes )
16654 {
16655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16656 "Set link response received outside association session");
16657 }
16658 else
16659 {
16660 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16661 will be del BSS coming after this to stop the beaconing & cleaning up the
16662 sessions*/
16663 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16664 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16665 {
16666 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016667 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016668 -----------------------------------------------------------------------*/
16669 WDI_DeleteSession(pWDICtx, pBSSSes);
16670
16671 /*-----------------------------------------------------------------------
16672 Check to see if this association is in progress - if so disable the
16673 flag as this has ended
16674 -----------------------------------------------------------------------*/
16675 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016676 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016677 /*Association no longer in progress */
16678 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16679 /*Association no longer in progress - prepare pending assoc for processing*/
16680 WDI_DequeueAssocRequest(pWDICtx);
16681 }
16682 }
16683 }
16684 }
16685 /* If the link state has been set to POST ASSOC, reset the "association in
16686 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016687 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016688 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16689 {
16690 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16691 WDI_DequeueAssocRequest(pWDICtx);
16692 }
16693
16694 wpalMutexRelease(&pWDICtx->wptMutex);
16695
16696 /*-------------------------------------------------------------------------
16697 Extract response and send it to UMAC
16698 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016699 wpalMemoryCopy( &halStatus,
16700 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 sizeof(halStatus));
16702
Jeff Johnsone7245742012-09-05 17:12:55 -070016703 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016704
16705 /*Notify UMAC*/
16706 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16707
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016709}/*WDI_ProcessSetLinkStateRsp*/
16710
16711/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016712 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016713 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016714
16715 @param pWDICtx: pointer to the WLAN DAL context
16716 pEventData: pointer to the event information structure
16717
Jeff Johnson295189b2012-06-20 16:38:30 -070016718 @see
16719 @return Result of the function call
16720*/
16721WDI_Status
16722WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016723(
Jeff Johnson295189b2012-06-20 16:38:30 -070016724 WDI_ControlBlockType* pWDICtx,
16725 WDI_EventInfoType* pEventData
16726)
16727{
16728 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16729 WDI_GetStatsRspCb wdiGetStatsRspCb;
16730 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016731
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16733
16734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 -------------------------------------------------------------------------*/
16737 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16738 ( NULL == pEventData->pEventData))
16739 {
16740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 }
16745
16746 /*-------------------------------------------------------------------------
16747 Extract response and send it to UMAC
16748 -------------------------------------------------------------------------*/
16749 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16750
16751 /*allocate the stats response buffer */
16752 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16753 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16754 + sizeof(WDI_GetStatsRspParamsType));
16755
16756 if(NULL == wdiGetStatsRsp)
16757 {
16758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16759 "Failed to allocate memory in Get Stats Response %x %x %x ",
16760 pWDICtx, pEventData, pEventData->pEventData);
16761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 }
16764
16765 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16766
16767 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16768 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16769 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16770 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16771 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16772 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16773
16774 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16775 wpalMemoryCopy(wdiGetStatsRsp + 1,
16776 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16777 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16778
16779 /*Notify UMAC*/
16780 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16781
16782 wpalMemoryFree(wdiGetStatsRsp);
16783
Jeff Johnsone7245742012-09-05 17:12:55 -070016784 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016785}/*WDI_ProcessGetStatsRsp*/
16786
Srinivas Girigowda2471d832013-01-25 13:33:11 -080016787#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
16788/**
16789 @brief Process Get Roam Rssi Rsp function (called when a response is
16790 being received over the bus from HAL)
16791
16792 @param pWDICtx: pointer to the WLAN DAL context
16793 pEventData: pointer to the event information structure
16794
16795 @see
16796 @return Result of the function call
16797*/
16798WDI_Status
16799WDI_ProcessGetRoamRssiRsp
16800(
16801 WDI_ControlBlockType* pWDICtx,
16802 WDI_EventInfoType* pEventData
16803)
16804{
16805 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
16806 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
16807 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
16808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16809
16810 /*-------------------------------------------------------------------------
16811 Sanity check
16812 -------------------------------------------------------------------------*/
16813 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16814 ( NULL == pEventData->pEventData))
16815 {
16816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16817 "%s: Invalid parameters", __func__);
16818 WDI_ASSERT(0);
16819 return WDI_STATUS_E_FAILURE;
16820 }
16821
16822 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
16823 if(NULL == wdiGetRoamRssiRspCb)
16824 {
16825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16826 "%s: call back function is NULL", __func__);
16827 WDI_ASSERT(0);
16828 return WDI_STATUS_E_FAILURE;
16829 }
16830
16831 /*-------------------------------------------------------------------------
16832 Extract response and send it to UMAC
16833 -------------------------------------------------------------------------*/
16834 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
16835 pEventData->pEventData,
16836 sizeof(halRoamRssiRspParams.roamRssiRspParams));
16837
16838 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
16839 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
16840 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
16841
16842 /*Notify UMAC*/
16843 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
16844
16845 return WDI_STATUS_SUCCESS;
16846}/*WDI_ProcessGetRoamRssiRsp*/
16847#endif
16848
Jeff Johnson295189b2012-06-20 16:38:30 -070016849
16850/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016851 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016852 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016853
16854 @param pWDICtx: pointer to the WLAN DAL context
16855 pEventData: pointer to the event information structure
16856
Jeff Johnson295189b2012-06-20 16:38:30 -070016857 @see
16858 @return Result of the function call
16859*/
16860WDI_Status
16861WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016862(
Jeff Johnson295189b2012-06-20 16:38:30 -070016863 WDI_ControlBlockType* pWDICtx,
16864 WDI_EventInfoType* pEventData
16865)
16866{
16867 WDI_Status wdiStatus;
16868 eHalStatus halStatus;
16869 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16871
16872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 -------------------------------------------------------------------------*/
16875 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16876 ( NULL == pEventData->pEventData))
16877 {
16878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016879 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 }
16883
16884 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16885
16886 /*-------------------------------------------------------------------------
16887 Extract response and send it to UMAC
16888 -------------------------------------------------------------------------*/
16889 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016890 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016891
16892 /*Notify UMAC*/
16893 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16894
Jeff Johnsone7245742012-09-05 17:12:55 -070016895 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016896}/*WDI_ProcessUpdateCfgRsp*/
16897
16898
16899
16900/**
16901 @brief Process Add BA Rsp function (called when a response
16902 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016903
16904 @param pWDICtx: pointer to the WLAN DAL context
16905 pEventData: pointer to the event information structure
16906
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 @see
16908 @return Result of the function call
16909*/
16910WDI_Status
16911WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016912(
Jeff Johnson295189b2012-06-20 16:38:30 -070016913 WDI_ControlBlockType* pWDICtx,
16914 WDI_EventInfoType* pEventData
16915)
16916{
16917 WDI_AddBARspCb wdiAddBARspCb;
16918
16919 tAddBARspParams halAddBARsp;
16920 WDI_AddBARspinfoType wdiAddBARsp;
16921
16922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16923
16924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016926 -------------------------------------------------------------------------*/
16927 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16928 ( NULL == pEventData->pEventData))
16929 {
16930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016931 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016932 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016933 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 }
16935
16936 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16937
16938 /*-------------------------------------------------------------------------
16939 Extract response and send it to UMAC
16940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016941 wpalMemoryCopy( &halAddBARsp,
16942 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016943 sizeof(halAddBARsp));
16944
16945 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16946
Jeff Johnson43971f52012-07-17 12:26:56 -070016947 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016948 {
16949 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16950 }
16951
16952 /*Notify UMAC*/
16953 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16954
Jeff Johnsone7245742012-09-05 17:12:55 -070016955 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016956}/*WDI_ProcessAddSessionBARsp*/
16957
16958/**
16959 @brief Process Add BA Rsp function (called when a response
16960 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016961
16962 @param pWDICtx: pointer to the WLAN DAL context
16963 pEventData: pointer to the event information structure
16964
Jeff Johnson295189b2012-06-20 16:38:30 -070016965 @see
16966 @return Result of the function call
16967*/
16968WDI_Status
16969WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016970(
Jeff Johnson295189b2012-06-20 16:38:30 -070016971 WDI_ControlBlockType* pWDICtx,
16972 WDI_EventInfoType* pEventData
16973)
16974{
16975 WDI_TriggerBARspCb wdiTriggerBARspCb;
16976
16977 tTriggerBARspParams* halTriggerBARsp;
16978 tTriggerBaRspCandidate* halBaCandidate;
16979 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16980 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16981 wpt_uint16 index;
16982 wpt_uint16 TidIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016983
Jeff Johnson295189b2012-06-20 16:38:30 -070016984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16985
16986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 -------------------------------------------------------------------------*/
16989 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16990 ( NULL == pEventData->pEventData))
16991 {
16992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016993 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016994 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016995 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016996 }
16997
16998 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16999
17000 /*-------------------------------------------------------------------------
17001 Extract response and send it to UMAC
17002 -------------------------------------------------------------------------*/
17003 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17004
Jeff Johnsone7245742012-09-05 17:12:55 -070017005 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
17006 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017007 sizeof(WDI_TriggerBARspCandidateType));
17008 if(NULL == wdiTriggerBARsp)
17009 {
17010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17011 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17012 pWDICtx, pEventData, pEventData->pEventData);
17013 wpalMemoryFree(halTriggerBARsp);
17014 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017015 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017016 }
17017
17018 wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17019
17020 if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
17021 {
17022 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17025
17026 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17027 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17028
17029 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17030 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017031 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017032 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17033 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17034 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017035 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017036 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017038 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17039 }
17040 wdiTriggerBARspCandidate++;
17041 halBaCandidate++;
17042 }
17043 }
17044
17045 /*Notify UMAC*/
17046 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17047
17048 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017049 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017050}/*WDI_ProcessAddSessionBARsp*/
17051
17052/**
17053 @brief Process Update Beacon Params Rsp function (called when a response
17054 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017055
17056 @param pWDICtx: pointer to the WLAN DAL context
17057 pEventData: pointer to the event information structure
17058
Jeff Johnson295189b2012-06-20 16:38:30 -070017059 @see
17060 @return Result of the function call
17061*/
17062WDI_Status
17063WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017064(
Jeff Johnson295189b2012-06-20 16:38:30 -070017065 WDI_ControlBlockType* pWDICtx,
17066 WDI_EventInfoType* pEventData
17067)
17068{
17069 WDI_Status wdiStatus;
17070 eHalStatus halStatus;
17071 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17073
17074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017075 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017076 -------------------------------------------------------------------------*/
17077 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17078 ( NULL == pEventData->pEventData))
17079 {
17080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017081 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 }
17085
17086 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17087
17088 /*-------------------------------------------------------------------------
17089 Extract response and send it to UMAC
17090 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017091 wpalMemoryCopy( &halStatus,
17092 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017093 sizeof(halStatus));
17094
Jeff Johnsone7245742012-09-05 17:12:55 -070017095 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017096
17097 /*Notify UMAC*/
17098 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17099
Jeff Johnsone7245742012-09-05 17:12:55 -070017100 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017101}/*WDI_ProcessUpdateBeaconParamsRsp*/
17102
17103/**
17104 @brief Process Send Beacon template Rsp function (called when a response
17105 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017106
17107 @param pWDICtx: pointer to the WLAN DAL context
17108 pEventData: pointer to the event information structure
17109
Jeff Johnson295189b2012-06-20 16:38:30 -070017110 @see
17111 @return Result of the function call
17112*/
17113WDI_Status
17114WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017115(
Jeff Johnson295189b2012-06-20 16:38:30 -070017116 WDI_ControlBlockType* pWDICtx,
17117 WDI_EventInfoType* pEventData
17118)
17119{
17120 WDI_Status wdiStatus;
17121 eHalStatus halStatus;
17122 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17124
17125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017127 -------------------------------------------------------------------------*/
17128 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17129 ( NULL == pEventData->pEventData))
17130 {
17131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 }
17136
17137 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17138
17139 /*-------------------------------------------------------------------------
17140 Extract response and send it to UMAC
17141 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017142 wpalMemoryCopy( &halStatus,
17143 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 sizeof(halStatus));
17145
Jeff Johnsone7245742012-09-05 17:12:55 -070017146 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017147
17148 /*Notify UMAC*/
17149 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17150
Jeff Johnsone7245742012-09-05 17:12:55 -070017151 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017152}/*WDI_ProcessSendBeaconParamsRsp*/
17153
Jeff Johnsone7245742012-09-05 17:12:55 -070017154
Jeff Johnson295189b2012-06-20 16:38:30 -070017155/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017156 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017157 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017158
17159 @param pWDICtx: pointer to the WLAN DAL context
17160 pEventData: pointer to the event information structure
17161
Jeff Johnson295189b2012-06-20 16:38:30 -070017162 @see
17163 @return Result of the function call
17164*/
17165WDI_Status
17166WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017167(
Jeff Johnson295189b2012-06-20 16:38:30 -070017168 WDI_ControlBlockType* pWDICtx,
17169 WDI_EventInfoType* pEventData
17170)
17171{
17172 WDI_Status wdiStatus;
17173 eHalStatus halStatus;
17174 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17176
17177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017179 -------------------------------------------------------------------------*/
17180 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17181 ( NULL == pEventData->pEventData))
17182 {
17183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017184 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 }
17188
17189 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17190
17191 /*-------------------------------------------------------------------------
17192 Extract response and send it to UMAC
17193 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017194 wpalMemoryCopy( &halStatus,
17195 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017196 sizeof(halStatus));
17197
Jeff Johnsone7245742012-09-05 17:12:55 -070017198 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017199
17200 /*Notify UMAC*/
17201 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17202
Jeff Johnsone7245742012-09-05 17:12:55 -070017203 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017204}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17205
17206 /**
17207 @brief Process Set Max Tx Power 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_ProcessSetMaxTxPowerRsp
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 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017224
Jeff Johnson295189b2012-06-20 16:38:30 -070017225 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017226
Jeff Johnson295189b2012-06-20 16:38:30 -070017227 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17229
17230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 -------------------------------------------------------------------------*/
17233 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17234 ( NULL == pEventData->pEventData))
17235 {
17236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017240 }
17241
17242 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17243
17244 /*-------------------------------------------------------------------------
17245 Extract response and send it to UMAC
17246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017247 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17248 pEventData->pEventData,
17249 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017250
17251 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17252 {
17253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17254 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017255 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 }
17258
Jeff Johnsone7245742012-09-05 17:12:55 -070017259 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017261 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017262
17263 /*Notify UMAC*/
17264 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17265
Jeff Johnsone7245742012-09-05 17:12:55 -070017266 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017267}
17268
schangd82195a2013-03-13 18:41:24 -070017269 /**
17270 @brief Process Set Tx Power Rsp function (called when a response
17271 is being received over the bus from HAL)
17272
17273 @param pWDICtx: pointer to the WLAN DAL context
17274 pEventData: pointer to the event information structure
17275
17276 @see
17277 @return Result of the function call
17278*/
17279WDI_Status
17280WDI_ProcessSetTxPowerRsp
17281(
17282 WDI_ControlBlockType* pWDICtx,
17283 WDI_EventInfoType* pEventData
17284)
17285{
17286 tSetTxPwrRspMsg halTxpowerrsp;
17287 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17288 WDA_SetTxPowerRspCb wdiReqStatusCb;
17289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17290
17291 /*-------------------------------------------------------------------------
17292 Sanity check
17293 -------------------------------------------------------------------------*/
17294 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17295 ( NULL == pEventData->pEventData))
17296 {
17297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17298 "%s: Invalid parameters", __func__);
17299 WDI_ASSERT(0);
17300 return WDI_STATUS_E_FAILURE;
17301 }
17302
17303 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17304
17305 /*-------------------------------------------------------------------------
17306 Extract response and send it to UMAC
17307 -------------------------------------------------------------------------*/
17308 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17309 pEventData->pEventData,
17310 sizeof(halTxpowerrsp.setTxPwrRspParams));
17311
17312 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17313 {
17314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17315 "Error status returned in Set Tx Power Response ");
17316 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17317 return WDI_STATUS_E_FAILURE;
17318 }
17319
17320 wdiSetTxPowerRspMsg.wdiStatus =
17321 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17322
17323 /*Notify UMAC*/
17324 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17325
17326 return WDI_STATUS_SUCCESS;
17327}
17328
Jeff Johnson295189b2012-06-20 16:38:30 -070017329/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017330 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017331 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017332
17333 @param pWDICtx: pointer to the WLAN DAL context
17334 pEventData: pointer to the event information structure
17335
Jeff Johnson295189b2012-06-20 16:38:30 -070017336 @see
17337 @return Result of the function call
17338*/
17339WDI_Status
17340WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017341(
Jeff Johnson295189b2012-06-20 16:38:30 -070017342 WDI_ControlBlockType* pWDICtx,
17343 WDI_EventInfoType* pEventData
17344)
17345{
17346 WDI_Status wdiStatus;
17347 eHalStatus halStatus;
17348 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17350
17351 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017352 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017353 -------------------------------------------------------------------------*/
17354 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17355 ( NULL == pEventData->pEventData))
17356 {
17357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 }
17362
17363 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17364
17365 /*-------------------------------------------------------------------------
17366 Extract response and send it to UMAC
17367 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017368 wpalMemoryCopy( &halStatus,
17369 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017370 sizeof(halStatus));
17371
Jeff Johnsone7245742012-09-05 17:12:55 -070017372 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017373
17374 /*Notify UMAC*/
17375 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17376
Jeff Johnsone7245742012-09-05 17:12:55 -070017377 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017378}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017379/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017382
17383 @param pWDICtx: pointer to the WLAN DAL context
17384 pEventData: pointer to the event information structure
17385
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 @see
17387 @return Result of the function call
17388*/
17389WDI_Status
17390WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017391(
Jeff Johnson295189b2012-06-20 16:38:30 -070017392 WDI_ControlBlockType* pWDICtx,
17393 WDI_EventInfoType* pEventData
17394)
17395{
17396 WDI_Status wdiStatus;
17397 eHalStatus halStatus;
17398 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017399 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17401
17402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017404 -------------------------------------------------------------------------*/
17405 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17406 ( NULL == pEventData->pEventData))
17407 {
17408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017409 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017410 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017411 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017412 }
17413
17414 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17415
17416 /*-------------------------------------------------------------------------
17417 Extract response and send it to UMAC
17418 -------------------------------------------------------------------------*/
17419 halStatus = *((eHalStatus*)pEventData->pEventData);
17420
Jeff Johnsone7245742012-09-05 17:12:55 -070017421 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017422
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017423 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17424 * Other module states are taken care by PMC.
17425 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17426 */
17427 if (wdiStatus != WDI_STATUS_SUCCESS) {
17428
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17430 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17431 halStatus);
17432 /* Call Back is not required as we are putting the DXE in FULL
17433 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017434 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17435
17436 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17438 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17439 WDI_ASSERT(0);
17440 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017441 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017442 /*Notify UMAC*/
17443 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17444
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017446}/*WDI_ProcessEnterImpsRsp*/
17447
17448/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017449 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017450 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017451
17452 @param pWDICtx: pointer to the WLAN DAL context
17453 pEventData: pointer to the event information structure
17454
Jeff Johnson295189b2012-06-20 16:38:30 -070017455 @see
17456 @return Result of the function call
17457*/
17458WDI_Status
17459WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017460(
Jeff Johnson295189b2012-06-20 16:38:30 -070017461 WDI_ControlBlockType* pWDICtx,
17462 WDI_EventInfoType* pEventData
17463)
17464{
17465 WDI_Status wdiStatus;
17466 eHalStatus halStatus;
17467 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017468 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017469 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17470
17471 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017472 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017473 -------------------------------------------------------------------------*/
17474 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17475 ( NULL == pEventData->pEventData))
17476 {
17477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017478 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017481 }
17482
17483 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17484
17485 /*-------------------------------------------------------------------------
17486 Extract response and send it to UMAC
17487 -------------------------------------------------------------------------*/
17488 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017489 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017490
17491 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017492 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17493 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17494 {
17495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17496 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17497 WDI_ASSERT(0);
17498 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017499 /*Notify UMAC*/
17500 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17501
Jeff Johnsone7245742012-09-05 17:12:55 -070017502 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017503}/*WDI_ProcessExitImpsRsp*/
17504
17505/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017506 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017507 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017508
17509 @param pWDICtx: pointer to the WLAN DAL context
17510 pEventData: pointer to the event information structure
17511
Jeff Johnson295189b2012-06-20 16:38:30 -070017512 @see
17513 @return Result of the function call
17514*/
17515WDI_Status
17516WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017517(
Jeff Johnson295189b2012-06-20 16:38:30 -070017518 WDI_ControlBlockType* pWDICtx,
17519 WDI_EventInfoType* pEventData
17520)
17521{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017522 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17523 tHalEnterBmpsRspParams halEnterBmpsRsp;
17524 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17525 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017526 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17528
17529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017530 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017531 -------------------------------------------------------------------------*/
17532 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17533 ( NULL == pEventData->pEventData))
17534 {
17535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017536 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017539 }
17540
Jeff Johnson295189b2012-06-20 16:38:30 -070017541 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017542 Extract response and send it to UMAC
17543 -------------------------------------------------------------------------*/
17544 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17545 {
17546 wpalMemoryCopy( &halEnterBmpsRsp,
17547 pEventData->pEventData,
17548 sizeof(halEnterBmpsRsp));
17549
17550 //Used to print debug message
17551 halStatus = halEnterBmpsRsp.status;
17552 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17553 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17554 }
17555 else
17556 {
17557 halStatus = *((eHalStatus*)pEventData->pEventData);
17558 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17559 }
17560
17561 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017562
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017563 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17564 * Other module states are taken care by PMC.
17565 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17566 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017567 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17568 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017569
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017571 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17572 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017573 /* Call Back is not required as we are putting the DXE in FULL
17574 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017575 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17576 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17577 {
17578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17579 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17580 WDI_ASSERT(0);
17581 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017582 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017583 }
17584
Jeff Johnson295189b2012-06-20 16:38:30 -070017585 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017586 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017587
Jeff Johnsone7245742012-09-05 17:12:55 -070017588 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017589}/*WDI_ProcessEnterBmpsRsp*/
17590
17591/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017592 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017593 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017594
17595 @param pWDICtx: pointer to the WLAN DAL context
17596 pEventData: pointer to the event information structure
17597
Jeff Johnson295189b2012-06-20 16:38:30 -070017598 @see
17599 @return Result of the function call
17600*/
17601WDI_Status
17602WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017603(
Jeff Johnson295189b2012-06-20 16:38:30 -070017604 WDI_ControlBlockType* pWDICtx,
17605 WDI_EventInfoType* pEventData
17606)
17607{
Jeff Johnson295189b2012-06-20 16:38:30 -070017608 eHalStatus halStatus;
17609 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017610 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017611 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17612 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17614
17615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017616 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017617 -------------------------------------------------------------------------*/
17618 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17619 ( NULL == pEventData->pEventData))
17620 {
17621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017622 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017625 }
17626
17627 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17628
17629 /*-------------------------------------------------------------------------
17630 Extract response and send it to UMAC
17631 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017632
17633 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17634 {
17635 wpalMemoryCopy( &halExitBmpsRsp,
17636 pEventData->pEventData,
17637 sizeof(halExitBmpsRsp));
17638
17639 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17640 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17641 }
17642 else
17643 {
17644 halStatus = *((eHalStatus*)pEventData->pEventData);
17645 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17646 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017647
17648 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017649 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17650 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17651 {
17652 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17653 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17654 WDI_ASSERT(0);
17655 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017656 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17657
17658 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017659 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017660
Jeff Johnsone7245742012-09-05 17:12:55 -070017661 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017662}/*WDI_ProcessExitBmpsRsp*/
17663
17664/**
17665 @brief Process Enter UAPSD Rsp function (called when a response
17666 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017667
17668 @param pWDICtx: pointer to the WLAN DAL context
17669 pEventData: pointer to the event information structure
17670
Jeff Johnson295189b2012-06-20 16:38:30 -070017671 @see
17672 @return Result of the function call
17673*/
17674WDI_Status
17675WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017676(
Jeff Johnson295189b2012-06-20 16:38:30 -070017677 WDI_ControlBlockType* pWDICtx,
17678 WDI_EventInfoType* pEventData
17679)
17680{
Jeff Johnson295189b2012-06-20 16:38:30 -070017681 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017682 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017683 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017684 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17685
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17687
17688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017689 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017690 -------------------------------------------------------------------------*/
17691 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17692 ( NULL == pEventData->pEventData))
17693 {
17694 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017695 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017696 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017697 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017698 }
17699
17700 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17701
17702 /*-------------------------------------------------------------------------
17703 Extract response and send it to UMAC
17704 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017705 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17706 {
17707 wpalMemoryCopy( &halEnterUapsdRsp,
17708 pEventData->pEventData,
17709 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017710
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017711 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17712 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17713 }
17714 else
17715 {
17716 halStatus = *((eHalStatus*)pEventData->pEventData);
17717 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17718 }
17719
17720 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017721 {
17722 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17723 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17724 // the traffic to decide when to suspend the trigger frames when there is no traffic
17725 // activity on the trigger enabled ACs
17726 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17727
17728#ifdef WLAN_PERF
17729 // Increment the BD signature to refresh the fast path BD utilization
17730 pWDICtx->uBdSigSerialNum++;
17731#endif
17732 }
17733
17734 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017735 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017736
Jeff Johnsone7245742012-09-05 17:12:55 -070017737 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017738}/*WDI_ProcessEnterUapsdRsp*/
17739
17740/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017741 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017742 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017743
17744 @param pWDICtx: pointer to the WLAN DAL context
17745 pEventData: pointer to the event information structure
17746
Jeff Johnson295189b2012-06-20 16:38:30 -070017747 @see
17748 @return Result of the function call
17749*/
17750WDI_Status
17751WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017752(
Jeff Johnson295189b2012-06-20 16:38:30 -070017753 WDI_ControlBlockType* pWDICtx,
17754 WDI_EventInfoType* pEventData
17755)
17756{
Jeff Johnson295189b2012-06-20 16:38:30 -070017757 eHalStatus halStatus;
17758 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017759 tHalExitUapsdRspParams halExitUapsdRsp;
17760 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017761 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17762
17763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017764 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017765 -------------------------------------------------------------------------*/
17766 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17767 ( NULL == pEventData->pEventData))
17768 {
17769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017770 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017771 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017772 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017773 }
17774
17775 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17776
17777 /*-------------------------------------------------------------------------
17778 Extract response and send it to UMAC
17779 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017780 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17781 {
17782 wpalMemoryCopy( &halExitUapsdRsp,
17783 pEventData->pEventData,
17784 sizeof(halExitUapsdRsp));
17785
17786 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17787 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17788 }
17789 else
17790 {
17791 halStatus = *((eHalStatus*)pEventData->pEventData);
17792 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17793 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017794 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17795 // directly instead of the FW WQ.
17796 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17797
17798#ifdef WLAN_PERF
17799 // Increment the BD signature to refresh the fast path BD utilization
17800 pWDICtx->uBdSigSerialNum++;
17801#endif
17802
17803 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017804 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017805
Jeff Johnsone7245742012-09-05 17:12:55 -070017806 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017807}/*WDI_ProcessExitUapsdRsp*/
17808
17809/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017810 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017811 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017812
17813 @param pWDICtx: pointer to the WLAN DAL context
17814 pEventData: pointer to the event information structure
17815
Jeff Johnson295189b2012-06-20 16:38:30 -070017816 @see
17817 @return Result of the function call
17818*/
17819WDI_Status
17820WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017821(
Jeff Johnson295189b2012-06-20 16:38:30 -070017822 WDI_ControlBlockType* pWDICtx,
17823 WDI_EventInfoType* pEventData
17824)
17825{
17826 WDI_Status wdiStatus;
17827 eHalStatus halStatus;
17828 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17830
17831 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017832 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017833 -------------------------------------------------------------------------*/
17834 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17835 ( NULL == pEventData->pEventData))
17836 {
17837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017838 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017839 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 }
17842
17843 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17844
17845 /*-------------------------------------------------------------------------
17846 Extract response and send it to UMAC
17847 -------------------------------------------------------------------------*/
17848 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017849 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017850
17851 /*Notify UMAC*/
17852 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17853
Jeff Johnsone7245742012-09-05 17:12:55 -070017854 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017855}/*WDI_ProcessSetUapsdAcParamsRsp*/
17856
17857/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017858 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017859 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017860
17861 @param pWDICtx: pointer to the WLAN DAL context
17862 pEventData: pointer to the event information structure
17863
Jeff Johnson295189b2012-06-20 16:38:30 -070017864 @see
17865 @return Result of the function call
17866*/
17867WDI_Status
17868WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017869(
Jeff Johnson295189b2012-06-20 16:38:30 -070017870 WDI_ControlBlockType* pWDICtx,
17871 WDI_EventInfoType* pEventData
17872)
17873{
17874 WDI_Status wdiStatus;
17875 eHalStatus halStatus;
17876 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17878
17879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017881 -------------------------------------------------------------------------*/
17882 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17883 ( NULL == pEventData->pEventData))
17884 {
17885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017886 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017889 }
17890
17891 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17892
17893 /*-------------------------------------------------------------------------
17894 Extract response and send it to UMAC
17895 -------------------------------------------------------------------------*/
17896 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017897 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017898
17899 /*Notify UMAC*/
17900 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17901
Jeff Johnsone7245742012-09-05 17:12:55 -070017902 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017903}/*WDI_ProcessUpdateUapsdParamsRsp*/
17904
17905/**
17906 @brief Process Configure RXP filter Rsp function (called when a
17907 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017908
17909 @param pWDICtx: pointer to the WLAN DAL context
17910 pEventData: pointer to the event information structure
17911
Jeff Johnson295189b2012-06-20 16:38:30 -070017912 @see
17913 @return Result of the function call
17914*/
17915WDI_Status
17916WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017917(
Jeff Johnson295189b2012-06-20 16:38:30 -070017918 WDI_ControlBlockType* pWDICtx,
17919 WDI_EventInfoType* pEventData
17920)
17921{
17922 WDI_Status wdiStatus;
17923 eHalStatus halStatus;
17924 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17926
17927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017929 -------------------------------------------------------------------------*/
17930 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17931 ( NULL == pEventData->pEventData))
17932 {
17933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017934 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017935 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017936 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017937 }
17938
17939 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17940
17941 /*-------------------------------------------------------------------------
17942 Extract response and send it to UMAC
17943 -------------------------------------------------------------------------*/
17944 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017945 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017946
17947 /*Notify UMAC*/
17948 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17949
Jeff Johnsone7245742012-09-05 17:12:55 -070017950 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017951}/*WDI_ProcessConfigureRxpFilterRsp*/
17952
17953/**
17954 @brief Process Set beacon filter Rsp function (called when a
17955 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017956
17957 @param pWDICtx: pointer to the WLAN DAL context
17958 pEventData: pointer to the event information structure
17959
Jeff Johnson295189b2012-06-20 16:38:30 -070017960 @see
17961 @return Result of the function call
17962*/
17963WDI_Status
17964WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017965(
Jeff Johnson295189b2012-06-20 16:38:30 -070017966 WDI_ControlBlockType* pWDICtx,
17967 WDI_EventInfoType* pEventData
17968)
17969{
17970 WDI_Status wdiStatus;
17971 eHalStatus halStatus;
17972 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17973 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17974
17975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017976 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017977 -------------------------------------------------------------------------*/
17978 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17979 ( NULL == pEventData->pEventData))
17980 {
17981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017983 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017984 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017985 }
17986
17987 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
17988
17989 /*-------------------------------------------------------------------------
17990 Extract response and send it to UMAC
17991 -------------------------------------------------------------------------*/
17992 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017993 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017994
17995 /*Notify UMAC*/
17996 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17997
Jeff Johnsone7245742012-09-05 17:12:55 -070017998 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017999}/*WDI_ProcessSetBeaconFilterRsp*/
18000
18001/**
18002 @brief Process remove beacon filter Rsp function (called when a
18003 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018004
18005 @param pWDICtx: pointer to the WLAN DAL context
18006 pEventData: pointer to the event information structure
18007
Jeff Johnson295189b2012-06-20 16:38:30 -070018008 @see
18009 @return Result of the function call
18010*/
18011WDI_Status
18012WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018013(
Jeff Johnson295189b2012-06-20 16:38:30 -070018014 WDI_ControlBlockType* pWDICtx,
18015 WDI_EventInfoType* pEventData
18016)
18017{
18018 WDI_Status wdiStatus;
18019 eHalStatus halStatus;
18020 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18022
18023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018024 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018025 -------------------------------------------------------------------------*/
18026 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18027 ( NULL == pEventData->pEventData))
18028 {
18029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018030 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018033 }
18034
18035 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18036
18037 /*-------------------------------------------------------------------------
18038 Extract response and send it to UMAC
18039 -------------------------------------------------------------------------*/
18040 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018041 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018042
18043 /*Notify UMAC*/
18044 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18045
Jeff Johnsone7245742012-09-05 17:12:55 -070018046 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018047}/*WDI_ProcessRemBeaconFilterRsp*/
18048
18049/**
18050 @brief Process set RSSI thresholds Rsp function (called when a
18051 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018052
18053 @param pWDICtx: pointer to the WLAN DAL context
18054 pEventData: pointer to the event information structure
18055
Jeff Johnson295189b2012-06-20 16:38:30 -070018056 @see
18057 @return Result of the function call
18058*/
18059WDI_Status
18060WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018061(
Jeff Johnson295189b2012-06-20 16:38:30 -070018062 WDI_ControlBlockType* pWDICtx,
18063 WDI_EventInfoType* pEventData
18064)
18065{
18066 WDI_Status wdiStatus;
18067 eHalStatus halStatus;
18068 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18070
18071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018073 -------------------------------------------------------------------------*/
18074 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18075 ( NULL == pEventData->pEventData))
18076 {
18077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018078 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018079 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018081 }
18082
18083 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18084
18085 /*-------------------------------------------------------------------------
18086 Extract response and send it to UMAC
18087 -------------------------------------------------------------------------*/
18088 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018089 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018090
18091 /*Notify UMAC*/
18092 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18093
Jeff Johnsone7245742012-09-05 17:12:55 -070018094 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018095}/*WDI_ProcessSetRSSIThresoldsRsp*/
18096
18097/**
18098 @brief Process host offload Rsp function (called when a
18099 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018100
18101 @param pWDICtx: pointer to the WLAN DAL context
18102 pEventData: pointer to the event information structure
18103
Jeff Johnson295189b2012-06-20 16:38:30 -070018104 @see
18105 @return Result of the function call
18106*/
18107WDI_Status
18108WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018109(
Jeff Johnson295189b2012-06-20 16:38:30 -070018110 WDI_ControlBlockType* pWDICtx,
18111 WDI_EventInfoType* pEventData
18112)
18113{
18114 WDI_Status wdiStatus;
18115 eHalStatus halStatus;
18116 WDI_HostOffloadCb wdiHostOffloadCb;
18117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18118
18119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018120 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018121 -------------------------------------------------------------------------*/
18122 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18123 ( NULL == pEventData->pEventData))
18124 {
18125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018129 }
18130
18131 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18132
18133 /*-------------------------------------------------------------------------
18134 Extract response and send it to UMAC
18135 -------------------------------------------------------------------------*/
18136 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018137 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018138
18139 /*Notify UMAC*/
18140 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18141
Jeff Johnsone7245742012-09-05 17:12:55 -070018142 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018143}/*WDI_ProcessHostOffloadRsp*/
18144
18145/**
18146 @brief Process keep alive Rsp function (called when a
18147 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018148
18149 @param pWDICtx: pointer to the WLAN DAL context
18150 pEventData: pointer to the event information structure
18151
Jeff Johnson295189b2012-06-20 16:38:30 -070018152 @see
18153 @return Result of the function call
18154*/
18155WDI_Status
18156WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018157(
Jeff Johnson295189b2012-06-20 16:38:30 -070018158 WDI_ControlBlockType* pWDICtx,
18159 WDI_EventInfoType* pEventData
18160)
18161{
18162 WDI_Status wdiStatus;
18163 eHalStatus halStatus;
18164 WDI_KeepAliveCb wdiKeepAliveCb;
18165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18167 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18168
18169
18170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018172 -------------------------------------------------------------------------*/
18173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18174 ( NULL == pEventData->pEventData))
18175 {
18176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018180 }
18181
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18183
Jeff Johnson295189b2012-06-20 16:38:30 -070018184 /*-------------------------------------------------------------------------
18185 Extract response and send it to UMAC
18186 -------------------------------------------------------------------------*/
18187 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018188 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018189
18190 /*Notify UMAC*/
18191 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18192
Jeff Johnsone7245742012-09-05 17:12:55 -070018193 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018194}/*WDI_ProcessKeepAliveRsp*/
18195
18196/**
18197 @brief Process wowl add ptrn Rsp function (called when a
18198 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018199
18200 @param pWDICtx: pointer to the WLAN DAL context
18201 pEventData: pointer to the event information structure
18202
Jeff Johnson295189b2012-06-20 16:38:30 -070018203 @see
18204 @return Result of the function call
18205*/
18206WDI_Status
18207WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018208(
Jeff Johnson295189b2012-06-20 16:38:30 -070018209 WDI_ControlBlockType* pWDICtx,
18210 WDI_EventInfoType* pEventData
18211)
18212{
Jeff Johnson295189b2012-06-20 16:38:30 -070018213 eHalStatus halStatus;
18214 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018215 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18216 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18217
Jeff Johnson295189b2012-06-20 16:38:30 -070018218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18219
18220 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018221 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018222 -------------------------------------------------------------------------*/
18223 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18224 ( NULL == pEventData->pEventData))
18225 {
18226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018227 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018230 }
18231
18232 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18233
18234 /*-------------------------------------------------------------------------
18235 Extract response and send it to UMAC
18236 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018237 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18238 {
18239 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18240 pEventData->pEventData,
18241 sizeof(halAddWowlBcastPtrRsp));
18242
18243 wdiWowlAddBcPtrRsp.wdiStatus =
18244 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18245 }
18246 else
18247 {
18248 halStatus = *((eHalStatus*)pEventData->pEventData);
18249 wdiWowlAddBcPtrRsp.wdiStatus =
18250 WDI_HAL_2_WDI_STATUS(halStatus);
18251 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018252
18253 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018254 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018255
Jeff Johnsone7245742012-09-05 17:12:55 -070018256 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018257}/*WDI_ProcessWowlAddBcPtrnRsp*/
18258
18259/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018260 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018261 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018262
18263 @param pWDICtx: pointer to the WLAN DAL context
18264 pEventData: pointer to the event information structure
18265
Jeff Johnson295189b2012-06-20 16:38:30 -070018266 @see
18267 @return Result of the function call
18268*/
18269WDI_Status
18270WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018271(
Jeff Johnson295189b2012-06-20 16:38:30 -070018272 WDI_ControlBlockType* pWDICtx,
18273 WDI_EventInfoType* pEventData
18274)
18275{
Jeff Johnson295189b2012-06-20 16:38:30 -070018276 eHalStatus halStatus;
18277 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018278 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18279 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18281
18282 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018283 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018284 -------------------------------------------------------------------------*/
18285 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18286 ( NULL == pEventData->pEventData))
18287 {
18288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018289 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018292 }
18293
18294 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18295
18296 /*-------------------------------------------------------------------------
18297 Extract response and send it to UMAC
18298 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018299 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18300 {
18301 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18302 pEventData->pEventData,
18303 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018304
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018305 wdiWowlDelBcstPtrRsp.wdiStatus =
18306 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18307 }
18308 else
18309 {
18310 halStatus = *((eHalStatus*)pEventData->pEventData);
18311 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18312 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018313 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018314 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018315
Jeff Johnsone7245742012-09-05 17:12:55 -070018316 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018317}/*WDI_ProcessWowlDelBcPtrnRsp*/
18318
18319/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018320 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018321 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018322
18323 @param pWDICtx: pointer to the WLAN DAL context
18324 pEventData: pointer to the event information structure
18325
Jeff Johnson295189b2012-06-20 16:38:30 -070018326 @see
18327 @return Result of the function call
18328*/
18329WDI_Status
18330WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018331(
Jeff Johnson295189b2012-06-20 16:38:30 -070018332 WDI_ControlBlockType* pWDICtx,
18333 WDI_EventInfoType* pEventData
18334)
18335{
Jeff Johnson295189b2012-06-20 16:38:30 -070018336 eHalStatus halStatus;
18337 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018338 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18339 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18341
18342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018344 -------------------------------------------------------------------------*/
18345 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18346 ( NULL == pEventData->pEventData))
18347 {
18348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018352 }
18353
18354 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18355
18356 /*-------------------------------------------------------------------------
18357 Extract response and send it to UMAC
18358 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018359 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18360 {
18361 wpalMemoryCopy( &halEnterWowlRspParams,
18362 (wpt_uint8*)pEventData->pEventData,
18363 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018364
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018365 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18366 wdiwowlEnterRsp.status =
18367 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18368 }
18369 else
18370 {
18371 halStatus = *((eHalStatus*)pEventData->pEventData);
18372 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18373 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018374 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018375 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018376
Jeff Johnsone7245742012-09-05 17:12:55 -070018377 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018378}/*WDI_ProcessWowlEnterRsp*/
18379
18380/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018381 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018383
18384 @param pWDICtx: pointer to the WLAN DAL context
18385 pEventData: pointer to the event information structure
18386
Jeff Johnson295189b2012-06-20 16:38:30 -070018387 @see
18388 @return Result of the function call
18389*/
18390WDI_Status
18391WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018392(
Jeff Johnson295189b2012-06-20 16:38:30 -070018393 WDI_ControlBlockType* pWDICtx,
18394 WDI_EventInfoType* pEventData
18395)
18396{
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 eHalStatus halStatus;
18398 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018399 tHalExitWowlRspParams halExitWowlRspParams;
18400 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18401
Jeff Johnson295189b2012-06-20 16:38:30 -070018402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18403
18404 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018405 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018406 -------------------------------------------------------------------------*/
18407 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18408 ( NULL == pEventData->pEventData))
18409 {
18410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018411 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018412 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018414 }
18415
18416 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18417
18418 /*-------------------------------------------------------------------------
18419 Extract response and send it to UMAC
18420 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018421 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18422 {
18423 wpalMemoryCopy( &halExitWowlRspParams,
18424 pEventData->pEventData,
18425 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018426
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018427 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18428 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18429
18430 }
18431 else
18432 {
18433 halStatus = *((eHalStatus*)pEventData->pEventData);
18434 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18435 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018436 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018437 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018438
Jeff Johnsone7245742012-09-05 17:12:55 -070018439 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018440}/*WDI_ProcessWowlExitRsp*/
18441
18442/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018443 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 (called when a response is being received over the bus
18445 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018446
18447 @param pWDICtx: pointer to the WLAN DAL context
18448 pEventData: pointer to the event information structure
18449
Jeff Johnson295189b2012-06-20 16:38:30 -070018450 @see
18451 @return Result of the function call
18452*/
18453WDI_Status
18454WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018455(
Jeff Johnson295189b2012-06-20 16:38:30 -070018456 WDI_ControlBlockType* pWDICtx,
18457 WDI_EventInfoType* pEventData
18458)
18459{
18460 WDI_Status wdiStatus;
18461 eHalStatus halStatus;
18462 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18463 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18464
18465 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018466 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 -------------------------------------------------------------------------*/
18468 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18469 ( NULL == pEventData->pEventData))
18470 {
18471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018475 }
18476
18477 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18478
18479 /*-------------------------------------------------------------------------
18480 Extract response and send it to UMAC
18481 -------------------------------------------------------------------------*/
18482 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018483 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018484
18485 /*Notify UMAC*/
18486 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18487
Jeff Johnsone7245742012-09-05 17:12:55 -070018488 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018489}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18490
18491
18492/**
18493 @brief Process Nv download(called when a response
18494 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018495
18496 @param pWDICtx: pointer to the WLAN DAL context
18497 pEventData: pointer to the event information structure
18498
Jeff Johnson295189b2012-06-20 16:38:30 -070018499 @see
18500 @return Result of the function call
18501*/
18502WDI_Status
18503WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018504(
Jeff Johnson295189b2012-06-20 16:38:30 -070018505 WDI_ControlBlockType* pWDICtx,
18506 WDI_EventInfoType* pEventData
18507)
18508{
18509
18510 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18511 tHalNvImgDownloadRspParams halNvDownloadRsp;
18512 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18513
18514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018516 -------------------------------------------------------------------------*/
18517 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18518 ( NULL == pEventData->pEventData))
18519 {
18520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 }
18525
18526 /*-------------------------------------------------------------------------
18527 Extract response and send it to UMAC
18528 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018529 wpalMemoryCopy( &halNvDownloadRsp,
18530 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018531 sizeof(halNvDownloadRsp));
18532
18533 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18534
18535 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018536 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18537 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018538 {
18539 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018540 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018541 }
18542 else
18543 {
18544 /*Reset the Nv related global information in WDI context information */
18545 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18546 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18547 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18548 /*call WDA callback function for last fragment */
18549 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18550 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18551 }
18552
Jeff Johnsone7245742012-09-05 17:12:55 -070018553 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018554}
18555#ifdef WLAN_FEATURE_VOWIFI_11R
18556/**
18557 @brief Process Add TSpec Rsp function (called when a response
18558 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018559
18560 @param pWDICtx: pointer to the WLAN DAL context
18561 pEventData: pointer to the event information structure
18562
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 @see
18564 @return Result of the function call
18565*/
18566WDI_Status
18567WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018568(
Jeff Johnson295189b2012-06-20 16:38:30 -070018569 WDI_ControlBlockType* pWDICtx,
18570 WDI_EventInfoType* pEventData
18571)
18572{
18573 WDI_Status wdiStatus;
18574 tAggrAddTsRspParams aggrAddTsRsp;
18575 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18577
18578 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018579 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018580 -------------------------------------------------------------------------*/
18581 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18582 ( NULL == pEventData->pEventData))
18583 {
18584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 }
18589
18590 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18591
18592 /*-------------------------------------------------------------------------
18593 Extract response and send it to UMAC
18594 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018595 wpalMemoryCopy( &aggrAddTsRsp,
18596 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018597 sizeof(aggrAddTsRsp));
18598
18599 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018600 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018601
18602 /*Notify UMAC*/
18603 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18604
Jeff Johnsone7245742012-09-05 17:12:55 -070018605 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018606}/*WDI_ProcessAddTSpecRsp*/
18607#endif /* WLAN_FEATURE_VOWIFI_11R */
18608
18609/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018610 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018611 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018612
18613 @param pWDICtx: pointer to the WLAN DAL context
18614 pEventData: pointer to the event information structure
18615
Jeff Johnson295189b2012-06-20 16:38:30 -070018616 @see
18617 @return Result of the function call
18618*/
18619WDI_Status
18620WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018621(
Jeff Johnson295189b2012-06-20 16:38:30 -070018622 WDI_ControlBlockType* pWDICtx,
18623 WDI_EventInfoType* pEventData
18624)
18625{
18626 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18627 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18628 tHalHostResumeRspParams hostResumeRspMsg;
18629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18630
18631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018632 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018633 -------------------------------------------------------------------------*/
18634 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18635 ( NULL == pEventData->pEventData))
18636 {
18637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018638 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018639 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018640 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018641 }
18642
18643 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18644
18645 /*-------------------------------------------------------------------------
18646 Extract response and send it to UMAC
18647 -------------------------------------------------------------------------*/
18648
Jeff Johnsone7245742012-09-05 17:12:55 -070018649 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018650 (wpt_uint8*)pEventData->pEventData,
18651 sizeof(hostResumeRspMsg));
18652
Jeff Johnsone7245742012-09-05 17:12:55 -070018653 wdiResumeRspParams.wdiStatus =
18654 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018655
18656 /*Notify UMAC*/
18657 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18658
18659 return WDI_STATUS_SUCCESS;
18660}
18661
18662/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018663 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018664 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018665
18666 @param pWDICtx: pointer to the WLAN DAL context
18667 pEventData: pointer to the event information structure
18668
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 @see
18670 @return Result of the function call
18671*/
18672WDI_Status
18673WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018674(
Jeff Johnson295189b2012-06-20 16:38:30 -070018675 WDI_ControlBlockType* pWDICtx,
18676 WDI_EventInfoType* pEventData
18677)
18678{
18679 WDI_Status wdiStatus;
18680 eHalStatus halStatus;
18681 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18683
18684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018685 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018686 -------------------------------------------------------------------------*/
18687 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18688 ( NULL == pEventData->pEventData))
18689 {
18690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018694 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018695
18696 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018697
18698 /*-------------------------------------------------------------------------
18699 Extract response and send it to UMAC
18700 -------------------------------------------------------------------------*/
18701 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018702 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018703
18704 /*Notify UMAC*/
18705 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18706
Jeff Johnsone7245742012-09-05 17:12:55 -070018707 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018708}/*WDI_ProcessSetTxPerTrackingRsp*/
18709
18710/*==========================================================================
18711 Indications from HAL
18712 ==========================================================================*/
18713/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018714 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018715 indication of this kind is being received over the bus
18716 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018717
18718 @param pWDICtx: pointer to the WLAN DAL context
18719 pEventData: pointer to the event information structure
18720
Jeff Johnson295189b2012-06-20 16:38:30 -070018721 @see
18722 @return Result of the function call
18723*/
18724WDI_Status
18725WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018726(
Jeff Johnson295189b2012-06-20 16:38:30 -070018727 WDI_ControlBlockType* pWDICtx,
18728 WDI_EventInfoType* pEventData
18729)
18730{
18731 WDI_LowLevelIndType wdiInd;
18732 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18734
18735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018737 -------------------------------------------------------------------------*/
18738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18739 ( NULL == pEventData->pEventData))
18740 {
18741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018745 }
18746
18747 /*-------------------------------------------------------------------------
18748 Extract indication and send it to UMAC
18749 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018750 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18751 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018752 sizeof(tHalRSSINotification));
18753
18754 /*Fill in the indication parameters*/
18755 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18756 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18757 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18758 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18759 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18760 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18761 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18762 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18763 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18764 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18765 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18766 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18767 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018768 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18769 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018770
ltimariu034f7d62013-01-24 18:54:33 -080018771 if ( pWDICtx->wdiLowLevelIndCB )
18772 {
18773 /*Notify UMAC of indication*/
18774 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18775 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018776
18777 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018778}/*WDI_ProcessLowRSSIInd*/
18779
18780
18781/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018782 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018783 an indication of this kind is being received over the
18784 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018785
18786 @param pWDICtx: pointer to the WLAN DAL context
18787 pEventData: pointer to the event information structure
18788
Jeff Johnson295189b2012-06-20 16:38:30 -070018789 @see
18790 @return Result of the function call
18791*/
18792WDI_Status
18793WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018794(
Jeff Johnson295189b2012-06-20 16:38:30 -070018795 WDI_ControlBlockType* pWDICtx,
18796 WDI_EventInfoType* pEventData
18797)
18798{
18799 WDI_Status wdiStatus;
18800 eHalStatus halStatus;
18801 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018802 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18804
18805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018806 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 -------------------------------------------------------------------------*/
18808 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18809 ( NULL == pEventData->pEventData))
18810 {
18811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018812 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018815 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018816 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018817 /*-------------------------------------------------------------------------
18818 Extract indication and send it to UMAC
18819 -------------------------------------------------------------------------*/
18820 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18821 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018822 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018823
18824 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018825 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018826 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
18827 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080018828 if ( pWDICtx->wdiLowLevelIndCB )
18829 {
18830 /*Notify UMAC*/
18831 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18832 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018833
18834 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018835}/*WDI_ProcessMissedBeaconInd*/
18836
18837
18838/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018839 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018840 an indication of this kind is being received over the
18841 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018842
18843 @param pWDICtx: pointer to the WLAN DAL context
18844 pEventData: pointer to the event information structure
18845
Jeff Johnson295189b2012-06-20 16:38:30 -070018846 @see
18847 @return Result of the function call
18848*/
18849WDI_Status
18850WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018851(
Jeff Johnson295189b2012-06-20 16:38:30 -070018852 WDI_ControlBlockType* pWDICtx,
18853 WDI_EventInfoType* pEventData
18854)
18855{
18856 WDI_Status wdiStatus;
18857 eHalStatus halStatus;
18858 WDI_LowLevelIndType wdiInd;
18859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18860
18861 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018862 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018863 -------------------------------------------------------------------------*/
18864 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18865 ( NULL == pEventData->pEventData))
18866 {
18867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018868 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018871 }
18872
18873 /*-------------------------------------------------------------------------
18874 Extract indication and send it to UMAC
18875 -------------------------------------------------------------------------*/
18876 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18877 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018878 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018879
18880 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018881 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018882 /* ! TO DO - fill in from HAL struct:
18883 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18884
ltimariu034f7d62013-01-24 18:54:33 -080018885 if ( pWDICtx->wdiLowLevelIndCB )
18886 {
18887 /*Notify UMAC*/
18888 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18889 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018890
18891 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018892}/*WDI_ProcessUnkAddrFrameInd*/
18893
18894
18895/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018896 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018897 indication of this kind is being received over the bus
18898 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018899
18900 @param pWDICtx: pointer to the WLAN DAL context
18901 pEventData: pointer to the event information structure
18902
Jeff Johnson295189b2012-06-20 16:38:30 -070018903 @see
18904 @return Result of the function call
18905*/
18906WDI_Status
18907WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018908(
Jeff Johnson295189b2012-06-20 16:38:30 -070018909 WDI_ControlBlockType* pWDICtx,
18910 WDI_EventInfoType* pEventData
18911)
18912{
18913 WDI_LowLevelIndType wdiInd;
18914 tpSirMicFailureInd pHalMicFailureInd;
18915
18916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18917
18918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018919 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018920 -------------------------------------------------------------------------*/
18921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18922 ( NULL == pEventData->pEventData))
18923 {
18924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018928 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018929
Jeff Johnson295189b2012-06-20 16:38:30 -070018930 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18931 /*-------------------------------------------------------------------------
18932 Extract indication and send it to UMAC
18933 -------------------------------------------------------------------------*/
18934
18935 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018936 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018937 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18938 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18939 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18940 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18941 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18942 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18943 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18944 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018945 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018947 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018948 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018949 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018950 pHalMicFailureInd->info.keyId;
18951 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18952 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18953 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18954 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080018955
18956 if ( pWDICtx->wdiLowLevelIndCB )
18957 {
18958 /*Notify UMAC*/
18959 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18960 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018961
18962 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018963}/*WDI_ProcessMicFailureInd*/
18964
18965
18966/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018967 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018968 an indication of this kind is being received over the
18969 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018970
18971 @param pWDICtx: pointer to the WLAN DAL context
18972 pEventData: pointer to the event information structure
18973
Jeff Johnson295189b2012-06-20 16:38:30 -070018974 @see
18975 @return Result of the function call
18976*/
18977WDI_Status
18978WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018979(
Jeff Johnson295189b2012-06-20 16:38:30 -070018980 WDI_ControlBlockType* pWDICtx,
18981 WDI_EventInfoType* pEventData
18982)
18983{
18984 WDI_Status wdiStatus;
18985 eHalStatus halStatus;
18986 WDI_LowLevelIndType wdiInd;
18987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18988
18989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018990 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018991 -------------------------------------------------------------------------*/
18992 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18993 ( NULL == pEventData->pEventData))
18994 {
18995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018996 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018997 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018998 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018999 }
19000
19001 /*-------------------------------------------------------------------------
19002 Extract indication and send it to UMAC
19003 -------------------------------------------------------------------------*/
19004
19005 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19006 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019007 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019008
19009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19010 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019011
Jeff Johnson295189b2012-06-20 16:38:30 -070019012 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019013 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19014 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019015
ltimariu034f7d62013-01-24 18:54:33 -080019016 if ( pWDICtx->wdiLowLevelIndCB )
19017 {
19018 /*Notify UMAC*/
19019 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19020 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019021
19022 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019023}/*WDI_ProcessFatalErrorInd*/
19024
19025/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019026 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 an indication of this kind is being received over the
19028 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019029
19030 @param pWDICtx: pointer to the WLAN DAL context
19031 pEventData: pointer to the event information structure
19032
Jeff Johnson295189b2012-06-20 16:38:30 -070019033 @see
19034 @return Result of the function call
19035*/
19036WDI_Status
19037WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019038(
Jeff Johnson295189b2012-06-20 16:38:30 -070019039 WDI_ControlBlockType* pWDICtx,
19040 WDI_EventInfoType* pEventData
19041)
19042{
19043 tDeleteStaContextParams halDelSTACtx;
19044 WDI_LowLevelIndType wdiInd;
19045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19046
19047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019049 -------------------------------------------------------------------------*/
19050 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19051 ( NULL == pEventData->pEventData))
19052 {
19053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019054 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019056 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019057 }
19058
19059 /*-------------------------------------------------------------------------
19060 Extract indication and send it to UMAC
19061 -------------------------------------------------------------------------*/
19062
19063 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019064 wpalMemoryCopy( &halDelSTACtx,
19065 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 sizeof(halDelSTACtx));
19067
19068 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019069 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019070
19071 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19072 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19073 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19074 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19075
Jeff Johnsone7245742012-09-05 17:12:55 -070019076 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019077 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019078 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019079 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019080 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19081 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019082
ltimariu034f7d62013-01-24 18:54:33 -080019083 if ( pWDICtx->wdiLowLevelIndCB )
19084 {
19085 /*Notify UMAC*/
19086 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19087 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019088
19089 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019090}/*WDI_ProcessDelSTAInd*/
19091
19092/**
19093*@brief Process Coex Indication function (called when
19094 an indication of this kind is being received over the
19095 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019096
19097 @param pWDICtx: pointer to the WLAN DAL context
19098 pEventData: pointer to the event information structure
19099
Jeff Johnson295189b2012-06-20 16:38:30 -070019100 @see
19101 @return Result of the function call
19102*/
19103WDI_Status
19104WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019105(
Jeff Johnson295189b2012-06-20 16:38:30 -070019106 WDI_ControlBlockType* pWDICtx,
19107 WDI_EventInfoType* pEventData
19108)
19109{
19110 WDI_LowLevelIndType wdiInd;
19111 tCoexIndMsg halCoexIndMsg;
19112 wpt_uint32 index;
19113 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19114
19115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019116 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019117 -------------------------------------------------------------------------*/
19118 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19119 ( NULL == pEventData->pEventData ))
19120 {
19121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019122 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019123 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019125 }
19126
19127 /*-------------------------------------------------------------------------
19128 Extract indication and send it to UMAC
19129 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019130 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19131 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019132 sizeof(halCoexIndMsg.coexIndParams) );
19133
19134 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019135 wdiInd.wdiIndicationType = WDI_COEX_IND;
19136 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019137 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19138 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019139 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019140 }
19141
19142 // DEBUG
19143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19144 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019145 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19146 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19147 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19148 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19149 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019150
ltimariu034f7d62013-01-24 18:54:33 -080019151 if ( pWDICtx->wdiLowLevelIndCB )
19152 {
19153 /*Notify UMAC*/
19154 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19155 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019156
19157 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019158}/*WDI_ProcessCoexInd*/
19159
19160/**
19161*@brief Process Tx Complete Indication function (called when
19162 an indication of this kind is being received over the
19163 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_ProcessTxCompleteInd
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{
19178 WDI_LowLevelIndType wdiInd;
19179 tTxComplIndMsg halTxComplIndMsg;
19180 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19181
19182 /*-------------------------------------------------------------------------
19183 Sanity check
19184 -------------------------------------------------------------------------*/
19185 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19186 ( NULL == pEventData->pEventData ))
19187 {
19188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019189 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019190 WDI_ASSERT( 0 );
19191 return WDI_STATUS_E_FAILURE;
19192 }
19193
19194 /*-------------------------------------------------------------------------
19195 Extract indication and send it to UMAC
19196 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019197 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19198 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019199 sizeof(halTxComplIndMsg.txComplParams) );
19200
19201 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019202 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19203 wdiInd.wdiIndicationData.tx_complete_status
19204 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019205
ltimariu034f7d62013-01-24 18:54:33 -080019206 if ( pWDICtx->wdiLowLevelIndCB )
19207 {
19208 /*Notify UMAC*/
19209 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19210 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019211
19212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019213}/*WDI_ProcessTxCompleteInd*/
19214
Jeff Johnson295189b2012-06-20 16:38:30 -070019215/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019216*@brief Process Noa Start Indication function (called when
19217 an indication of this kind is being received over the
19218 bus from HAL)
19219
19220 @param pWDICtx: pointer to the WLAN DAL context
19221 pEventData: pointer to the event information structure
19222
19223 @see
19224 @return Result of the function call
19225*/
19226WDI_Status
19227WDI_ProcessP2pNoaStartInd
19228(
19229 WDI_ControlBlockType* pWDICtx,
19230 WDI_EventInfoType* pEventData
19231)
19232{
19233 WDI_LowLevelIndType wdiInd;
19234 tNoaStartIndMsg halNoaStartIndMsg;
19235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19236
19237 /*-------------------------------------------------------------------------
19238 Sanity check
19239 -------------------------------------------------------------------------*/
19240 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19241 ( NULL == pEventData->pEventData ))
19242 {
19243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19244 "%s: Invalid parameters", __func__);
19245 WDI_ASSERT( 0 );
19246 return WDI_STATUS_E_FAILURE;
19247 }
19248
19249 /*-------------------------------------------------------------------------
19250 Extract indication and send it to UMAC
19251 -------------------------------------------------------------------------*/
19252 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19253 pEventData->pEventData,
19254 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19255
19256 /*Fill in the indication parameters*/
19257 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19258
19259 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19260 = halNoaStartIndMsg.noaStartIndParams.status;
19261
19262 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19263 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19264
19265 /*Notify UMAC*/
19266 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19267
19268 return WDI_STATUS_SUCCESS;
19269}/*WDI_ProcessNoaAttrInd*/
19270
19271/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019272*@brief Process Noa Attr Indication function (called when
19273 an indication of this kind is being received over the
19274 bus from HAL)
19275
19276 @param pWDICtx: pointer to the WLAN DAL context
19277 pEventData: pointer to the event information structure
19278
19279 @see
19280 @return Result of the function call
19281*/
19282WDI_Status
19283WDI_ProcessP2pNoaAttrInd
19284(
19285 WDI_ControlBlockType* pWDICtx,
19286 WDI_EventInfoType* pEventData
19287)
19288{
19289 WDI_LowLevelIndType wdiInd;
19290 tNoaAttrIndMsg halNoaAttrIndMsg;
19291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19292
19293 /*-------------------------------------------------------------------------
19294 Sanity check
19295 -------------------------------------------------------------------------*/
19296 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19297 ( NULL == pEventData->pEventData ))
19298 {
19299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019301 WDI_ASSERT( 0 );
19302 return WDI_STATUS_E_FAILURE;
19303 }
19304
19305 /*-------------------------------------------------------------------------
19306 Extract indication and send it to UMAC
19307 -------------------------------------------------------------------------*/
19308 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19309 pEventData->pEventData,
19310 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19311
19312 /*Fill in the indication parameters*/
19313 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019314
Jeff Johnson295189b2012-06-20 16:38:30 -070019315 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19316 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019317
Jeff Johnson295189b2012-06-20 16:38:30 -070019318 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19319 = halNoaAttrIndMsg.noaAttrIndParams.index;
19320 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19321 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19322 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19323 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019324
Jeff Johnson295189b2012-06-20 16:38:30 -070019325 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19326 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19327 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19328 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19329 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19330 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19331 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19332 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019333
Jeff Johnson295189b2012-06-20 16:38:30 -070019334 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19335 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19336 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19337 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19338 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19339 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19340 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19341 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19342
ltimariu034f7d62013-01-24 18:54:33 -080019343 if ( pWDICtx->wdiLowLevelIndCB )
19344 {
19345 /*Notify UMAC*/
19346 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19347 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019348
19349 return WDI_STATUS_SUCCESS;
19350}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019351
19352/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019353 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019354 an indication of this kind is being received over the
19355 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019356
19357 @param pWDICtx: pointer to the WLAN DAL context
19358 pEventData: pointer to the event information structure
19359
Jeff Johnson295189b2012-06-20 16:38:30 -070019360 @see
19361 @return Result of the function call
19362*/
19363WDI_Status
19364WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019365(
Jeff Johnson295189b2012-06-20 16:38:30 -070019366 WDI_ControlBlockType* pWDICtx,
19367 WDI_EventInfoType* pEventData
19368)
19369{
19370 WDI_LowLevelIndType wdiInd;
19371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019372
Jeff Johnson295189b2012-06-20 16:38:30 -070019373 /*-------------------------------------------------------------------------
19374 Extract indication and send it to UMAC
19375 -------------------------------------------------------------------------*/
19376 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019377 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19378
ltimariu034f7d62013-01-24 18:54:33 -080019379 if ( pWDICtx->wdiLowLevelIndCB )
19380 {
19381 /*Notify UMAC*/
19382 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19383 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019384
Jeff Johnsone7245742012-09-05 17:12:55 -070019385 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019386}/*WDI_ProcessTxPerHitInd*/
19387
Jeff Johnson295189b2012-06-20 16:38:30 -070019388/**
19389 @brief WDI_ProcessFTMCommandReq
19390 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019391
19392 @param pWDICtx: pointer to the WLAN DAL context
19393 pEventData: pointer to the event information structure
19394
Jeff Johnson295189b2012-06-20 16:38:30 -070019395 @see
19396 @return Result of the function call
19397*/
19398WDI_Status
19399WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019400(
Jeff Johnson295189b2012-06-20 16:38:30 -070019401 WDI_ControlBlockType* pWDICtx,
19402 WDI_EventInfoType* pEventData
19403)
19404{
19405 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19406 wpt_uint8 *ftmCommandBuffer = NULL;
19407 wpt_uint16 dataOffset;
19408 wpt_uint16 bufferSize;
19409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019411 -------------------------------------------------------------------------*/
19412 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19413 ( NULL == pEventData->pEventData))
19414
19415 {
19416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 }
19421
19422 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19423
19424 /* Get MSG Buffer */
19425 WDI_GetMessageBuffer(pWDICtx,
19426 WDI_FTM_CMD_REQ,
19427 ftmCommandReq->bodyLength,
19428 &ftmCommandBuffer,
19429 &dataOffset,
19430 &bufferSize);
19431
19432 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19433 ftmCommandReq->FTMCommandBody,
19434 ftmCommandReq->bodyLength);
19435
19436 /* Send MSG */
19437 return WDI_SendMsg(pWDICtx,
19438 ftmCommandBuffer,
19439 bufferSize,
19440 pEventData->pCBfnc,
19441 pEventData->pUserData,
19442 WDI_FTM_CMD_RESP);
19443}
19444
19445/**
19446 @brief WDI_ProcessFTMCommandRsp
19447 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019448
19449 @param pWDICtx: pointer to the WLAN DAL context
19450 pEventData: pointer to the event information structure
19451
Jeff Johnson295189b2012-06-20 16:38:30 -070019452 @see
19453 @return Result of the function call
19454*/
19455WDI_Status
19456WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019457(
Jeff Johnson295189b2012-06-20 16:38:30 -070019458 WDI_ControlBlockType* pWDICtx,
19459 WDI_EventInfoType* pEventData
19460)
19461{
19462 WDI_FTMCommandRspCb ftmCMDRspCb;
19463 tProcessPttRspParams *ftmCMDRspData = NULL;
19464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19465
19466 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019467 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019468 -------------------------------------------------------------------------*/
19469 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19470 ( NULL == pEventData->pEventData))
19471 {
19472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019473 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019474 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019476 }
19477
19478 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19479
19480 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19481
Jeff Johnsone7245742012-09-05 17:12:55 -070019482 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19483 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019484 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19485
19486 /*Notify UMAC*/
19487 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19488
Jeff Johnsone7245742012-09-05 17:12:55 -070019489 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019490}
Jeff Johnson295189b2012-06-20 16:38:30 -070019491/**
19492 @brief WDI_ProcessHalDumpCmdReq
19493 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019494
19495 @param pWDICtx: pointer to the WLAN DAL context
19496 pEventData: pointer to the event information structure
19497
Jeff Johnson295189b2012-06-20 16:38:30 -070019498 @see
19499 @return Result of the function call
19500*/
19501WDI_Status
19502WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019503(
Jeff Johnson295189b2012-06-20 16:38:30 -070019504 WDI_ControlBlockType* pWDICtx,
19505 WDI_EventInfoType* pEventData
19506)
19507{
19508 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19509 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19510 wpt_uint16 usDataOffset = 0;
19511 wpt_uint16 usSendSize = 0;
19512 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019513 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019514
19515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019516 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019517 -------------------------------------------------------------------------*/
19518 if (( NULL == pEventData ) ||
19519 ( NULL == pEventData->pEventData) ||
19520 ( NULL == pEventData->pCBfnc ))
19521 {
19522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019526 }
19527
19528 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19529 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19530
19531 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019532 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019533 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019534 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019535 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019536 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019537 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019538 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019539 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019540 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019541 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019542
Jeff Johnson295189b2012-06-20 16:38:30 -070019543 /*-----------------------------------------------------------------------
19544 Get message buffer
19545 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019546 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019547 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19548 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019549 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019550 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19551 {
19552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19553 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19554 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019557 }
19558
Jeff Johnsone7245742012-09-05 17:12:55 -070019559 wpalMemoryCopy( pSendBuffer+usDataOffset,
19560 &halDumpCmdReqMsg.dumpCmdReqParams,
19561 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019562
19563 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019564 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019565
19566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019567 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019569 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19570 wdiHALDumpCmdRspCb, pEventData->pUserData,
19571 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019572}
19573
19574/**
19575 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019576 Process hal Dump Command Response from HAL, simply route to HDD
19577
19578 @param pWDICtx: pointer to the WLAN DAL context
19579 pEventData: pointer to the event information structure
19580
Jeff Johnson295189b2012-06-20 16:38:30 -070019581 @see
19582 @return Result of the function call
19583*/
19584WDI_Status
19585WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019586(
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 WDI_ControlBlockType* pWDICtx,
19588 WDI_EventInfoType* pEventData
19589)
19590{
19591 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019592 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019593 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19594
19595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019596 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019597 -------------------------------------------------------------------------*/
19598 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19599 ( NULL == pEventData->pEventData))
19600 {
19601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019602 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019605 }
19606
Jeff Johnsone7245742012-09-05 17:12:55 -070019607 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019608
19609 /*Initialize the WDI Response structure */
19610 wdiHALDumpCmdRsp.usBufferLen = 0;
19611 wdiHALDumpCmdRsp.pBuffer = NULL;
19612
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019613 wpalMemoryCopy( &halDumpCmdRspParams,
19614 pEventData->pEventData,
19615 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019616
19617 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019618 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019619
19620 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019621 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019622 {
19623 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019624 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19625 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19626
19627 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19628 &halDumpCmdRspParams.rspBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019629 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19630 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019631
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 /*Notify UMAC*/
19633 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19634
19635 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19636 {
19637 /* Free the allocated buffer */
19638 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19639 }
19640 return WDI_STATUS_SUCCESS;
19641}
19642
19643/*==========================================================================
19644 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019645
Jeff Johnson295189b2012-06-20 16:38:30 -070019646 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019647 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019648==========================================================================*/
19649/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019650 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 when it wishes to send up a notification like the ones
19652 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019653
Jeff Johnson295189b2012-06-20 16:38:30 -070019654 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019655
19656 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019657 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019658 wctsNotifyCBData: the callback data of the user
19659
Jeff Johnson295189b2012-06-20 16:38:30 -070019660 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019661
19662 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019663*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019664void
Jeff Johnson295189b2012-06-20 16:38:30 -070019665WDI_NotifyMsgCTSCB
19666(
Jeff Johnsone7245742012-09-05 17:12:55 -070019667 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019668 WCTS_NotifyEventType wctsEvent,
19669 void* wctsNotifyCBData
19670)
19671{
Jeff Johnsone7245742012-09-05 17:12:55 -070019672 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19674
19675 if (NULL == pWDICtx )
19676 {
19677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019678 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019680 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019681 }
19682
19683 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19684 {
19685 /* callback presumably occurred after close */
19686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019687 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019688 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019689 }
19690
19691 if ( WCTS_EVENT_OPEN == wctsEvent )
19692 {
19693 /*Flag must be set atomically as it is checked from incoming request
19694 functions*/
19695 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019696 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019697
19698 /*Nothing to do - so try to dequeue any pending request that may have
19699 occurred while we were trying to establish this*/
19700 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019701 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019702 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019703 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019704 {
19705 /*Flag must be set atomically as it is checked from incoming request
19706 functions*/
19707 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019708 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019709
19710 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019711 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019712 wpalMutexRelease(&pWDICtx->wptMutex);
19713
19714 /*Notify that the Control Channel is closed */
19715 wpalEventSet(&pWDICtx->wctsActionEvent);
19716 }
19717
19718}/*WDI_NotifyMsgCTSCB*/
19719
19720
19721/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019722 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019723 when it wishes to send up a packet received over the
19724 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019725
Jeff Johnson295189b2012-06-20 16:38:30 -070019726 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019727
19728 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019729 pMsg: the packet
19730 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019731 wctsRxMsgCBData: the callback data of the user
19732
Jeff Johnson295189b2012-06-20 16:38:30 -070019733 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019734
19735 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019736*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019737void
19738WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019739(
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019741 void* pMsg,
19742 wpt_uint32 uLen,
19743 void* wctsRxMsgCBData
19744)
19745{
Jeff Johnsone7245742012-09-05 17:12:55 -070019746 tHalMsgHeader *pHalMsgHeader;
19747 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019748 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19750
19751 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019752 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019753 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019754 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019755 ( uLen < sizeof(tHalMsgHeader)))
19756 {
19757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019760 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019761 }
19762
19763 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19764 {
19765 /* callback presumably occurred after close */
19766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019767 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019768 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019769 }
19770
Jeff Johnsone7245742012-09-05 17:12:55 -070019771 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019772 context - so no serialization is necessary here
19773 ! - revisit this assumption */
19774
19775 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19776
19777 if ( uLen != pHalMsgHeader->msgLen )
19778 {
19779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19780 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019781 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19782 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019783 }
19784
19785 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19786
19787 /*The message itself starts after the header*/
19788 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19789 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19790 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19791 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19792
19793
19794 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19795 {
19796 /*Stop the timer as the response was received */
19797 /*!UT - check for potential race conditions between stop and response */
19798 wpalTimerStop(&pWDICtx->wptResponseTimer);
19799 }
19800 /* Check if we receive a response message which is not expected */
19801 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19802 {
19803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19804 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19805 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019806 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019807 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19808 pWDICtx->wdiExpectedResponse);
19809 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19810 return;
19811 }
19812
19813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19814 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19815
19816 /*Post response event to the state machine*/
19817 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19818
19819}/*WDI_RXMsgCTSCB*/
19820
19821
19822/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019823 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019824========================================================================*/
19825
19826/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019827 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019828 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019829
Jeff Johnson295189b2012-06-20 16:38:30 -070019830 @param pWDICtx - pointer to the control block
19831
19832 @return Result of the function call
19833*/
19834WPT_INLINE WDI_Status
19835WDI_CleanCB
19836(
19837 WDI_ControlBlockType* pWDICtx
19838)
19839{
19840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19841
19842 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019843 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019844
Jeff Johnsone7245742012-09-05 17:12:55 -070019845 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019846 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19847 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19848
19849 WDI_ResetAssocSessions( pWDICtx );
19850
19851 return WDI_STATUS_SUCCESS;
19852}/*WDI_CleanCB*/
19853
19854
19855/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019856 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019857
Jeff Johnsone7245742012-09-05 17:12:55 -070019858
19859 @param pWDICtx: pointer to the WLAN DAL context
19860 pEventData: pointer to the event information structure
19861
Jeff Johnson295189b2012-06-20 16:38:30 -070019862 @see
19863 @return Result of the function call
19864*/
19865WPT_INLINE WDI_Status
19866WDI_ProcessRequest
19867(
19868 WDI_ControlBlockType* pWDICtx,
19869 WDI_EventInfoType* pEventData
19870)
19871{
19872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19873
Jeff Johnsone7245742012-09-05 17:12:55 -070019874 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019875 already checked these pointers*/
19876
19877 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19878 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019879 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19881 "Calling request processing function for req %s (%d) %x",
19882 WDI_getReqMsgString(pEventData->wdiRequest),
19883 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19884 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19885 }
19886 else
19887 {
19888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019889 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019890 pEventData->wdiRequest);
19891 return WDI_STATUS_E_NOT_IMPLEMENT;
19892 }
19893}/*WDI_ProcessRequest*/
19894
19895
19896/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019897 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019898 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019899 prefixes it with a send message header
19900
19901 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019902 wdiReqType: type of the request being sent
19903 uBufferLen: message buffer len
19904 pMsgBuffer: resulting allocated buffer
19905 pusDataOffset: offset in the buffer where the caller
19906 can start copying its message data
19907 puBufferSize: the resulting buffer size (offset+buff
19908 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019909
Jeff Johnson295189b2012-06-20 16:38:30 -070019910 @see
19911 @return Result of the function call
19912*/
19913WDI_Status
19914WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019915(
19916 WDI_ControlBlockType* pWDICtx,
19917 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019918 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019919 wpt_uint8** pMsgBuffer,
19920 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019921 wpt_uint16* pusBufferSize
19922)
19923{
19924 tHalMsgHeader halMsgHeader;
19925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19926
Jeff Johnsone7245742012-09-05 17:12:55 -070019927 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019928 again*/
19929
19930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019931 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019933 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019934 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19935 if ( NULL == *pMsgBuffer )
19936 {
19937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19938 "Unable to allocate message buffer for req %s (%d)",
19939 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019940 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019942 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019943 }
19944
19945 /*-------------------------------------------------------------------------
19946 Fill in the message header
19947 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019948 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19949 /* Fill msgVersion */
19950#ifdef WLAN_FEATURE_11AC
19951 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019952 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019953 else
19954#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019955 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019956
Jeff Johnsone7245742012-09-05 17:12:55 -070019957 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19958 *pusDataOffset = sizeof(halMsgHeader);
19959 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19960
19961 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019962}/*WDI_GetMessageBuffer*/
19963
19964
19965/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019966 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019967 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019968 the CB
19969
19970 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019971 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019972
Jeff Johnson295189b2012-06-20 16:38:30 -070019973 usSendSize size of the buffer to be sent
19974 pRspCb: response callback - save in the WDI
19975 CB
19976 pUserData: user data associated with the
19977 callback
19978 wdiExpectedResponse: the code of the response that is
19979 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019980
Jeff Johnson295189b2012-06-20 16:38:30 -070019981 @see
19982 @return Result of the function call
19983*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019984WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019985WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070019986(
19987 WDI_ControlBlockType* pWDICtx,
19988 wpt_uint8* pSendBuffer,
19989 wpt_uint32 usSendSize,
19990 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070019991 void* pUserData,
19992 WDI_ResponseEnumType wdiExpectedResponse
19993)
19994{
Jeff Johnsond13512a2012-07-17 11:42:19 -070019995 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019996 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070019997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19998
19999 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020000 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 ------------------------------------------------------------------------*/
20002 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020003 pWDICtx->pfncRspCB = pRspCb;
20004 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020005
20006 /*-----------------------------------------------------------------------
20007 Call the CTS to send this message over - free message afterwards
20008 - notify transport failure
20009 Note: CTS is reponsible for freeing the message buffer.
20010 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020011 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20012 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20013 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020016 "Failed to send message over the bus - catastrophic failure");
20017
Jeff Johnsond13512a2012-07-17 11:42:19 -070020018 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020019 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020020 else
20021 {
20022 /* even when message was placed in CTS deferred Q, we will treat it
20023 success but log this info
20024 */
20025 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20026 {
20027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20028 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20029 "response %s (%d)",
20030 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20031 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020032 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020033 }
20034 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020035
Jeff Johnsond13512a2012-07-17 11:42:19 -070020036 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020037 if ( NULL != pWDICtx->wdiReqStatusCB )
20038 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020039 /*Inform originator whether request went through or not*/
20040 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20041 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020042 pWDICtx->wdiReqStatusCB = NULL;
20043 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020044 callback(wdiStatus, callbackContext);
20045
20046 /*For WDI requests which have registered a request callback,
20047 inform the WDA caller of the same via setting the return value
20048 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20049 end up repeating the functonality in the req callback for the
20050 WDI_STATUS_E_FAILURE case*/
20051 if (wdiStatus == WDI_STATUS_E_FAILURE)
20052 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020053 }
20054
Jeff Johnsond13512a2012-07-17 11:42:19 -070020055 if ( wdiStatus == WDI_STATUS_SUCCESS )
20056 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020057 /*Start timer for the expected response */
20058 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020059
20060 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020061 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020062 }
20063 else
20064 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020065 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020066 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20067 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020068
Jeff Johnsond13512a2012-07-17 11:42:19 -070020069 return wdiStatus;
20070
Jeff Johnson295189b2012-06-20 16:38:30 -070020071}/*WDI_SendMsg*/
20072
20073
20074
20075/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020076 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 the bus using the control transport and saves some info
20078 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020079
20080 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020081 pSendBuffer: buffer to be sent
20082 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020083
Jeff Johnson295189b2012-06-20 16:38:30 -070020084 @see
20085 @return Result of the function call
20086*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020087WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020088WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020089(
20090 WDI_ControlBlockType* pWDICtx,
20091 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 wpt_uint32 usSendSize
20093)
20094{
20095 wpt_uint32 uStatus ;
20096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20097
20098 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020099 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020100 Note: CTS is reponsible for freeing the message buffer.
20101 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020102 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 (void*)pSendBuffer, usSendSize );
20104
20105 /*Inform Upper MAC about the outcome of the request*/
20106 if ( NULL != pWDICtx->wdiReqStatusCB )
20107 {
20108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20109 "Send indication status : %d", uStatus);
20110
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020111 /* even if CTS placed indication into its deferred Q, we treat it
20112 * as success and let CTS drain its queue as per smd interrupt to CTS
20113 */
20114 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 -070020115 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020116 }
20117
20118 /*If sending of the message failed - it is considered catastrophic and
20119 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020120 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20121 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20122
Jeff Johnson295189b2012-06-20 16:38:30 -070020123 {
20124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020125 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020126
20127 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20128 return WDI_STATUS_E_FAILURE;
20129 }
20130
Jeff Johnsone7245742012-09-05 17:12:55 -070020131 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020132}/*WDI_SendIndication*/
20133
20134
20135/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020136 @brief WDI_DetectedDeviceError - called internally by DAL when
20137 it has detected a failure in the device
20138
20139 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020140 usErrorCode: error code detected by WDI or received
20141 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020142
Jeff Johnson295189b2012-06-20 16:38:30 -070020143 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020144 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020145*/
20146void
20147WDI_DetectedDeviceError
20148(
20149 WDI_ControlBlockType* pWDICtx,
20150 wpt_uint16 usErrorCode
20151)
20152{
20153 WDI_LowLevelIndType wdiInd;
20154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20155
20156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20157 "Device Error detected code: %d - transitioning to stopped state",
20158 usErrorCode);
20159
20160 wpalMutexAcquire(&pWDICtx->wptMutex);
20161
20162 WDI_STATableStop(pWDICtx);
20163
20164 WDI_ResetAssocSessions(pWDICtx);
20165
20166 /*Set the expected state transition to stopped - because the device
20167 experienced a failure*/
20168 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20169
20170 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020171 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020172
Jeff Johnsone7245742012-09-05 17:12:55 -070020173 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020174
20175 /*TO DO: - there should be an attempt to reset the device here*/
20176
20177 wpalMutexRelease(&pWDICtx->wptMutex);
20178
20179 /*------------------------------------------------------------------------
20180 Notify UMAC if a handler is registered
20181 ------------------------------------------------------------------------*/
20182 if (pWDICtx->wdiLowLevelIndCB)
20183 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020184 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20185 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020186
20187 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20188 }
20189}/*WDI_DetectedDeviceError*/
20190
20191/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020192 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020193 we started on send message has expire - this should
20194 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020195 reply - trigger catastrophic failure
20196 @param
20197
Jeff Johnson295189b2012-06-20 16:38:30 -070020198 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020199
20200 @see
20201 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020202*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020203void
Jeff Johnson295189b2012-06-20 16:38:30 -070020204WDI_ResponseTimerCB
20205(
20206 void *pUserData
20207)
20208{
20209 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20211
20212 if (NULL == pWDICtx )
20213 {
20214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020215 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020217 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020218 }
20219
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020220 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020221 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020222
20223 /* If response timer is running at this time that means this timer
20224 * event is not for the last request but rather last-to-last request and
20225 * this timer event has come after we recevied respone for last-to-last
20226 * message
20227 */
20228 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20229 {
20230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20231 "WDI_ResponseTimerCB: timer in running state on timer event, "
20232 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20233 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20234 return;
20235 }
20236
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
20238 {
20239
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053020240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020241 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020242 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020243 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020244 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20245 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020246 /* WDI timeout means Riva is not responding or SMD communication to Riva
20247 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020248 * is to initiate SSR from APPS
20249 * There is also an option to re-enable wifi, which will eventually
20250 * trigger SSR
20251 */
20252#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070020253 wpalWcnssResetIntr();
20254 /* if this timer fires, it means Riva did not receive the FIQ */
20255 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020256#else
20257 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20258 wpalWlanReload();
20259#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020260 }
20261 else
20262 {
20263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020264 "Timeout occurred but not waiting for any response %d "
20265 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20266 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20267 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020268 }
20269
20270 return;
20271
20272}/*WDI_ResponseTimerCB*/
20273
20274
20275/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020276 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020277
Jeff Johnsone7245742012-09-05 17:12:55 -070020278
20279 @param pWDICtx: pointer to the WLAN DAL context
20280 pEventData: pointer to the event information structure
20281
Jeff Johnson295189b2012-06-20 16:38:30 -070020282 @see
20283 @return Result of the function call
20284*/
20285WPT_INLINE WDI_Status
20286WDI_ProcessResponse
20287(
20288 WDI_ControlBlockType* pWDICtx,
20289 WDI_EventInfoType* pEventData
20290)
20291{
20292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20293
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020295 already checked these pointers
20296 ! - revisit this assumption */
20297 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20298 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020299 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020301 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 WDI_getRespMsgString(pEventData->wdiResponse),
20303 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20304 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20305 }
20306 else
20307 {
20308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 pEventData->wdiResponse);
20311 return WDI_STATUS_E_NOT_IMPLEMENT;
20312 }
20313}/*WDI_ProcessResponse*/
20314
20315
20316/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020317 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020318=========================================================================*/
20319
20320/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020321 @brief Utility function used by the DAL Core to help queue a
20322 request that cannot be processed right away.
20323 @param
20324
Jeff Johnson295189b2012-06-20 16:38:30 -070020325 pWDICtx: - pointer to the WDI control block
20326 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 queued
20328
20329 @see
20330 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020331*/
20332WDI_Status
20333WDI_QueuePendingReq
20334(
20335 WDI_ControlBlockType* pWDICtx,
20336 WDI_EventInfoType* pEventData
20337)
20338{
Jeff Johnsone7245742012-09-05 17:12:55 -070020339 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020340 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020341 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20343
20344 if ( NULL == pEventDataQueue )
20345 {
20346 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020347 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020348 WDI_ASSERT(0);
20349 return WDI_STATUS_MEM_FAILURE;
20350 }
20351
20352 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20353 pEventDataQueue->pUserData = pEventData->pUserData;
20354 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20355 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020356 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020357
20358 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20359 {
20360 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020361
Jeff Johnson295189b2012-06-20 16:38:30 -070020362 if ( NULL == pEventInfo )
20363 {
20364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020365 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020366 WDI_ASSERT(0);
20367 wpalMemoryFree(pEventDataQueue);
20368 return WDI_STATUS_MEM_FAILURE;
20369 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020370
Jeff Johnson295189b2012-06-20 16:38:30 -070020371 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20372
20373 }
20374 pEventDataQueue->pEventData = pEventInfo;
20375
20376 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020377 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020378
Jeff Johnsone7245742012-09-05 17:12:55 -070020379 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020380
20381 return WDI_STATUS_SUCCESS;
20382}/*WDI_QueuePendingReq*/
20383
20384/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020385 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020386 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020387 @param
20388
20389 pMsg - pointer to the message
20390
20391 @see
20392 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020393*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020394void
Jeff Johnson295189b2012-06-20 16:38:30 -070020395WDI_PALCtrlMsgCB
20396(
20397 wpt_msg *pMsg
20398)
20399{
20400 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020401 WDI_ControlBlockType* pWDICtx = NULL;
20402 WDI_Status wdiStatus;
20403 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020404 void* pUserData;
20405 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20406
20407 if (( NULL == pMsg )||
20408 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20409 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20410 {
20411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020412 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020414 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020415 }
20416
20417 /*Transition back to the state that we had before serialization
20418 - serialization transitions us to BUSY to stop any incomming requests
20419 ! TO DO L: possible race condition here if a request comes in between the
20420 state transition and the post function*/
20421
Jeff Johnsone7245742012-09-05 17:12:55 -070020422 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020423
20424 /*-----------------------------------------------------------------------
20425 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020426 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020427 -----------------------------------------------------------------------*/
20428 switch ( pEventData->wdiRequest )
20429 {
20430
Jeff Johnsone7245742012-09-05 17:12:55 -070020431 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020432 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20433 break;
20434
Jeff Johnson295189b2012-06-20 16:38:30 -070020435 case WDI_NV_DOWNLOAD_REQ:
20436 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20437 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20438 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20439 {
20440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020441 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020442 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20443 }
20444 else
20445 {
20446 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20447 }
20448
20449 break;
20450
20451 default:
20452 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20453 break;
20454 }/*switch ( pEventData->wdiRequest )*/
20455
20456 if ( WDI_STATUS_SUCCESS != wdiStatus )
20457 {
20458 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20459
20460 if ( NULL != pfnReqStatusCB )
20461 {
20462 /*Fail the request*/
20463 pfnReqStatusCB( wdiStatus, pUserData);
20464 }
20465 }
20466
20467 /* Free data - that was allocated when queueing*/
20468 if( pEventData != NULL )
20469 {
20470 if( pEventData->pEventData != NULL )
20471 {
20472 wpalMemoryFree(pEventData->pEventData);
20473 }
20474 wpalMemoryFree(pEventData);
20475 }
20476
20477 if( pMsg != NULL )
20478 {
20479 wpalMemoryFree(pMsg);
20480 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020481
Jeff Johnson295189b2012-06-20 16:38:30 -070020482}/*WDI_PALCtrlMsgCB*/
20483
20484/**
20485 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020486 and schedule for execution a pending request
20487 @param
20488
Jeff Johnson295189b2012-06-20 16:38:30 -070020489 pWDICtx: - pointer to the WDI control block
20490 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020491 queued
20492
20493 @see
20494 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020495*/
20496WDI_Status
20497WDI_DequeuePendingReq
20498(
20499 WDI_ControlBlockType* pWDICtx
20500)
20501{
Jeff Johnsone7245742012-09-05 17:12:55 -070020502 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020503 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020504 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20506
Jeff Johnsone7245742012-09-05 17:12:55 -070020507 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020508
20509 if ( NULL == pNode )
20510 {
20511 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020512 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020513 return WDI_STATUS_SUCCESS;
20514 }
20515
20516 /*The node actually points to the 1st element inside the Event Data struct -
20517 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020518 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020519
20520 /*Serialize processing in the control thread
20521 !TO DO: - check to see if these are all the messages params that need
20522 to be filled in*/
20523 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20524
20525 if ( NULL == palMsg )
20526 {
20527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020528 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020530 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020532 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020533 palMsg->callback = WDI_PALCtrlMsgCB;
20534 palMsg->ptr = pEventData;
20535
20536 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020537 palMsg->val = pWDICtx->uGlobalState;
20538
Jeff Johnson295189b2012-06-20 16:38:30 -070020539 /*Transition back to BUSY as we need to handle a queued request*/
20540 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020541
Jeff Johnson295189b2012-06-20 16:38:30 -070020542 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20543
20544 return WDI_STATUS_PENDING;
20545}/*WDI_DequeuePendingReq*/
20546
20547
20548/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020549 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020550 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020551 away.- The assoc requests will be queued by BSSID
20552 @param
20553
Jeff Johnson295189b2012-06-20 16:38:30 -070020554 pWDICtx: - pointer to the WDI control block
20555 pEventData: pointer to the evnt info that needs to be queued
20556 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020557
20558 @see
20559 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020560*/
20561WDI_Status
20562WDI_QueueNewAssocRequest
20563(
20564 WDI_ControlBlockType* pWDICtx,
20565 WDI_EventInfoType* pEventData,
20566 wpt_macAddr macBSSID
20567)
20568{
Jeff Johnsone7245742012-09-05 17:12:55 -070020569 wpt_uint8 i;
20570 WDI_BSSSessionType* pSession = NULL;
20571 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020572 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020573 void* pEventInfo;
20574 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020576
Jeff Johnsone7245742012-09-05 17:12:55 -070020577
20578 /*------------------------------------------------------------------------
20579 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 ------------------------------------------------------------------------*/
20581 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20582 {
20583 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20584 {
20585 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020586 pSession = &pWDICtx->aBSSSessions[i];
20587 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020588 }
20589 }
20590
20591 if ( i >= WDI_MAX_BSS_SESSIONS )
20592 {
20593 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020596
Jeff Johnson295189b2012-06-20 16:38:30 -070020597 /*------------------------------------------------------------------------
20598 Fill in the BSSID for this session and set the usage flag
20599 ------------------------------------------------------------------------*/
20600 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020601 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020602
20603 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020604 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020605 ------------------------------------------------------------------------*/
20606 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20607 if ( NULL == pEventDataQueue )
20608 {
20609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020610 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 WDI_ASSERT(0);
20612 return WDI_STATUS_MEM_FAILURE;
20613 }
20614
20615 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20616 if ( NULL == pSessionIdElement )
20617 {
20618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020619 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020620 WDI_ASSERT(0);
20621 wpalMemoryFree(pEventDataQueue);
20622 return WDI_STATUS_MEM_FAILURE;
20623 }
20624
20625 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20626 if ( NULL == pEventInfo )
20627 {
20628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020629 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020630 WDI_ASSERT(0);
20631 wpalMemoryFree(pSessionIdElement);
20632 wpalMemoryFree(pEventDataQueue);
20633 return WDI_STATUS_MEM_FAILURE;
20634 }
20635
20636 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20637 pEventDataQueue->pUserData = pEventData->pUserData;
20638 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20639 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020640 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020641
20642 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20643 pEventDataQueue->pEventData = pEventInfo;
20644
20645 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020646 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020647
20648 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020649 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020650
Jeff Johnsone7245742012-09-05 17:12:55 -070020651 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020652
20653 /*We need to maintain a separate list that keeps track of the order in which
20654 the new assoc requests are being queued such that we can start processing
20655 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020656 pSessionIdElement->ucIndex = i;
20657 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020658
20659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20660 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020661 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020662
20663 /*Return pending as this is what the status of the request is since it has
20664 been queued*/
20665 return WDI_STATUS_PENDING;
20666}/*WDI_QueueNewAssocRequest*/
20667
20668/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020669 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020670 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020671 away.- The assoc requests will be queued by BSSID
20672 @param
20673
Jeff Johnson295189b2012-06-20 16:38:30 -070020674 pWDICtx: - pointer to the WDI control block
20675 pSession: - session in which to queue
20676 pEventData: pointer to the event info that needs to be
20677 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020678
20679 @see
20680 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020681*/
20682WDI_Status
20683WDI_QueueAssocRequest
20684(
20685 WDI_ControlBlockType* pWDICtx,
20686 WDI_BSSSessionType* pSession,
20687 WDI_EventInfoType* pEventData
20688)
20689{
Jeff Johnsone7245742012-09-05 17:12:55 -070020690 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020692 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020694
20695 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 Sanity check
20697 ------------------------------------------------------------------------*/
20698 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20699 {
20700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020702
Jeff Johnsone7245742012-09-05 17:12:55 -070020703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020704 }
20705
20706 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020707 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020708 ------------------------------------------------------------------------*/
20709 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20710 if ( NULL == pEventDataQueue )
20711 {
20712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020713 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 WDI_ASSERT(0);
20715 return WDI_STATUS_MEM_FAILURE;
20716 }
20717
20718 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20719 if ( NULL == pEventInfo )
20720 {
20721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20722 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020723 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020724 WDI_ASSERT(0);
20725 wpalMemoryFree(pEventDataQueue);
20726 return WDI_STATUS_MEM_FAILURE;
20727 }
20728
20729 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20730 pEventDataQueue->pUserData = pEventData->pUserData;
20731 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20732 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020733 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020734 pEventDataQueue->pEventData = pEventInfo;
20735
20736 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20737
20738 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020739 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020740
20741 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020742 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020743
Jeff Johnsone7245742012-09-05 17:12:55 -070020744 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020745
20746 /*The result of this operation is pending because the request has been
20747 queued and it will be processed at a later moment in time */
20748 return WDI_STATUS_PENDING;
20749}/*WDI_QueueAssocRequest*/
20750
20751/**
20752 @brief Utility function used by the DAL Core to help dequeue
20753 an association request that was pending
20754 The request will be queued up in front of the main
20755 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 @param
20757
Jeff Johnson295189b2012-06-20 16:38:30 -070020758 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020759
20760
20761 @see
20762 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020763*/
20764WDI_Status
20765WDI_DequeueAssocRequest
20766(
20767 WDI_ControlBlockType* pWDICtx
20768)
20769{
Jeff Johnsone7245742012-09-05 17:12:55 -070020770 wpt_list_node* pNode = NULL;
20771 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020772 WDI_BSSSessionType* pSession;
20773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020774
20775 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 Sanity check
20777 ------------------------------------------------------------------------*/
20778 if ( NULL == pWDICtx )
20779 {
20780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020782
Jeff Johnsone7245742012-09-05 17:12:55 -070020783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 }
20785
20786 /*------------------------------------------------------------------------
20787 An association has been completed => a new association can occur
20788 Check to see if there are any pending associations ->
20789 If so , transfer all the pending requests into the busy queue for
20790 processing
20791 These requests have arrived prior to the requests in the busy queue
20792 (bc they needed to be processed in order to be placed in this queue)
20793 => they will be placed at the front of the busy queue
20794 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020795 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020796
20797 if ( NULL == pNode )
20798 {
20799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020800 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020801 return WDI_STATUS_SUCCESS;
20802 }
20803
20804 /*The node actually points to the 1st element inside the Session Id struct -
20805 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020806 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020807
20808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20809 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20810
20811 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20812 {
20813 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020814
Jeff Johnson295189b2012-06-20 16:38:30 -070020815 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020816 the front of the main waiting queue for subsequent execution*/
20817 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 while ( NULL != pNode )
20819 {
20820 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020821 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20822 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020823 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020824 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020825 }
20826 else
20827 {
20828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020829 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 WPAL_ASSERT(0);
20831 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020834
Jeff Johnson295189b2012-06-20 16:38:30 -070020835 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20836 wpalMemoryFree(pSessionIdElement);
20837 return WDI_STATUS_SUCCESS;
20838}/*WDI_DequeueAssocRequest*/
20839
20840/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020841 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020842 pending requests - all req cb will be called with
20843 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020844 @param
20845
Jeff Johnson295189b2012-06-20 16:38:30 -070020846 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020847
20848 @see
20849 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020850*/
20851WDI_Status
20852WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020853(
Jeff Johnson295189b2012-06-20 16:38:30 -070020854 WDI_ControlBlockType* pWDICtx
20855)
20856{
Jeff Johnsone7245742012-09-05 17:12:55 -070020857 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020858 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020859 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 void* pUserData;
20861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20862
Jeff Johnsone7245742012-09-05 17:12:55 -070020863 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020864
20865 /*------------------------------------------------------------------------
20866 Go through all the requests and fail them - this will only be called
20867 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020868 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020869 ------------------------------------------------------------------------*/
20870 while( pNode )
20871 {
20872 /*The node actually points to the 1st element inside the Event Data struct -
20873 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 pEventDataQueue = (WDI_EventInfoType*)pNode;
20875
Jeff Johnson295189b2012-06-20 16:38:30 -070020876 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20877 if ( NULL != pfnReqStatusCB )
20878 {
20879 /*Fail the request*/
20880 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20881 }
20882 /* Free data - that was allocated when queueing */
20883 if ( pEventDataQueue->pEventData != NULL )
20884 {
20885 wpalMemoryFree(pEventDataQueue->pEventData);
20886 }
20887 wpalMemoryFree(pEventDataQueue);
20888
20889 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20890 {
20891 break;
20892 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020893 }
20894
Jeff Johnson295189b2012-06-20 16:38:30 -070020895 return WDI_STATUS_SUCCESS;
20896}/*WDI_ClearPendingRequests*/
20897
20898/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020899 @brief Helper routine used to init the BSS Sessions in the WDI control block
20900
20901
20902 @param pWDICtx: pointer to the WLAN DAL context
20903
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 @see
20905*/
20906void
20907WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020908(
Jeff Johnson295189b2012-06-20 16:38:30 -070020909 WDI_ControlBlockType* pWDICtx
20910)
20911{
Jeff Johnsone7245742012-09-05 17:12:55 -070020912 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20914
20915 /*-------------------------------------------------------------------------
20916 No Sanity check
20917 -------------------------------------------------------------------------*/
20918 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20919 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20922 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20923 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20924 }
20925}/*WDI_ResetAssocSessions*/
20926
20927/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020928 @brief Helper routine used to find a session based on the BSSID
20929
20930
20931 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020933 pSession: pointer to the session (if found)
20934
Jeff Johnson295189b2012-06-20 16:38:30 -070020935 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020936 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020937*/
20938wpt_uint8
20939WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020940(
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 WDI_ControlBlockType* pWDICtx,
20942 wpt_macAddr macBSSID,
20943 WDI_BSSSessionType** ppSession
20944)
20945{
Jeff Johnsone7245742012-09-05 17:12:55 -070020946 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20948
20949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020951 -------------------------------------------------------------------------*/
20952 if ( NULL == ppSession )
20953 {
20954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020955 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020956 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020957 }
20958
Jeff Johnsone7245742012-09-05 17:12:55 -070020959 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020960
Jeff Johnsone7245742012-09-05 17:12:55 -070020961 /*------------------------------------------------------------------------
20962 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020963 ------------------------------------------------------------------------*/
20964 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20965 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020966 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20967 (eWLAN_PAL_TRUE ==
20968 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20969 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020970 {
20971 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020972 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020973 return i;
20974 }
20975 }
20976
Jeff Johnsone7245742012-09-05 17:12:55 -070020977 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020978}/*WDI_FindAssocSession*/
20979
20980/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020981 @brief Helper routine used to find a session based on the BSSID
20982
20983
20984 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020985 ucBSSIdx: BSS Index of the session
20986 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020987
Jeff Johnson295189b2012-06-20 16:38:30 -070020988 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020989 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020990*/
20991wpt_uint8
20992WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020993(
Jeff Johnson295189b2012-06-20 16:38:30 -070020994 WDI_ControlBlockType* pWDICtx,
20995 wpt_uint16 ucBSSIdx,
20996 WDI_BSSSessionType** ppSession
20997)
20998{
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21001
21002 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021003 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021004 -------------------------------------------------------------------------*/
21005 if ( NULL == ppSession )
21006 {
21007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021008 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021009 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021010 }
21011
Jeff Johnsone7245742012-09-05 17:12:55 -070021012 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021013
Jeff Johnsone7245742012-09-05 17:12:55 -070021014 /*------------------------------------------------------------------------
21015 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021016 ------------------------------------------------------------------------*/
21017 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21018 {
21019 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21020 {
21021 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021022 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021023 return i;
21024 }
21025 }
21026
Jeff Johnsone7245742012-09-05 17:12:55 -070021027 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021028}/*WDI_FindAssocSessionByBSSIdx*/
21029
21030/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021031 @brief Helper routine used to find a session based on the BSSID
21032
21033
21034 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021035 ucBSSIdx: BSS Index of the session
21036 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021037
Jeff Johnson295189b2012-06-20 16:38:30 -070021038 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021039 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021040*/
21041wpt_uint8
21042WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021043(
Jeff Johnson295189b2012-06-20 16:38:30 -070021044 WDI_ControlBlockType* pWDICtx,
21045 wpt_uint16 usIdx,
21046 WDI_BSSSessionType** ppSession
21047)
21048{
21049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21050
21051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021052 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 -------------------------------------------------------------------------*/
21054 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21055 {
21056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021057 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021058 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021059 }
21060
21061 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021062 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021063
21064 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021065
Jeff Johnson295189b2012-06-20 16:38:30 -070021066}/*WDI_FindAssocSessionByBSSIdx*/
21067
21068/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021069 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021071
21072
21073 @param pWDICtx: pointer to the WLAN DAL context
21074 pSession: pointer to the session (if found)
21075
Jeff Johnson295189b2012-06-20 16:38:30 -070021076 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021077 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021078*/
21079wpt_uint8
21080WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021081(
Jeff Johnson295189b2012-06-20 16:38:30 -070021082 WDI_ControlBlockType* pWDICtx,
21083 WDI_BSSSessionType** ppSession
21084)
21085{
Jeff Johnsone7245742012-09-05 17:12:55 -070021086 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021089 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021090 -------------------------------------------------------------------------*/
21091 if ( NULL == ppSession )
21092 {
21093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021094 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021095 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021096 }
21097
Jeff Johnsone7245742012-09-05 17:12:55 -070021098 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021099
Jeff Johnsone7245742012-09-05 17:12:55 -070021100 /*------------------------------------------------------------------------
21101 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021102 ------------------------------------------------------------------------*/
21103 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21104 {
21105 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21106 {
21107 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021108 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021109 return i;
21110 }
21111 }
21112
Jeff Johnsone7245742012-09-05 17:12:55 -070021113 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021114}/*WDI_FindEmptySession*/
21115
21116
21117/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021118 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021119 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021120
21121
21122 @param pWDICtx: pointer to the WLAN DAL context
21123
Jeff Johnson295189b2012-06-20 16:38:30 -070021124 @see
21125 @return Number of sessions in use
21126*/
21127wpt_uint8
21128WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021129(
Jeff Johnson295189b2012-06-20 16:38:30 -070021130 WDI_ControlBlockType* pWDICtx
21131)
21132{
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021135
21136 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021137 Count all sessions in use
21138 ------------------------------------------------------------------------*/
21139 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21140 {
21141 if ( pWDICtx->aBSSSessions[i].bInUse )
21142 {
21143 ucCount++;
21144 }
21145 }
21146
Jeff Johnsone7245742012-09-05 17:12:55 -070021147 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021148}/*WDI_GetActiveSessionsCount*/
21149
21150/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021151 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021152 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021153
21154
21155 @param pWDICtx: pointer to the WLAN DAL context
21156 pSession: pointer to the session (if found)
21157
Jeff Johnson295189b2012-06-20 16:38:30 -070021158 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021159 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021160*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021161void
Jeff Johnson295189b2012-06-20 16:38:30 -070021162WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021163(
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 WDI_ControlBlockType* pWDICtx,
21165 WDI_BSSSessionType* ppSession
21166)
21167{
21168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 -------------------------------------------------------------------------*/
21171 if ( NULL == ppSession )
21172 {
21173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021174 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021175 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 }
21177
Jeff Johnsone7245742012-09-05 17:12:55 -070021178 /*------------------------------------------------------------------------
21179 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021180 ------------------------------------------------------------------------*/
21181 wpal_list_destroy(&ppSession->wptPendingQueue);
21182 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021183 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21184 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021185 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21186 wpal_list_init(&ppSession->wptPendingQueue);
21187
21188}/*WDI_DeleteSession*/
21189
21190/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021191 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021192 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021193 @param
21194
Jeff Johnson295189b2012-06-20 16:38:30 -070021195 WDI_AddStaParams: - pointer to the WDI Add STA params
21196 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021197
21198 @see
21199 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021200*/
21201void
21202WDI_AddBcastSTAtoSTATable
21203(
21204 WDI_ControlBlockType* pWDICtx,
21205 WDI_AddStaParams * staParams,
21206 wpt_uint16 usBcastStaIdx
21207)
21208{
21209 WDI_AddStaParams wdiAddSTAParam = {0};
21210 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21212
21213 /*---------------------------------------------------------------------
21214 Sanity check
21215 ---------------------------------------------------------------------*/
21216 if ( NULL == staParams )
21217 {
21218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021219 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021220
Jeff Johnsone7245742012-09-05 17:12:55 -070021221 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021222 }
21223
21224 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21225 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21226 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21227 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21228 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21229 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21230 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21231 WDI_MAC_ADDR_LEN );
21232 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21233 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21234 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21235 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21236 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21237 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21238 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021239
Jeff Johnson295189b2012-06-20 16:38:30 -070021240 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21241}
21242
21243/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021244 @brief NV blob will be divided into fragments of size 4kb and
21245 Sent to HAL
21246
21247 @param pWDICtx: pointer to the WLAN DAL context
21248 pEventData: pointer to the event information structure
21249
Jeff Johnson295189b2012-06-20 16:38:30 -070021250 @see
21251 @return Result of the function call
21252 */
21253
21254WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021255(
Jeff Johnson295189b2012-06-20 16:38:30 -070021256 WDI_ControlBlockType* pWDICtx,
21257 WDI_EventInfoType* pEventData
21258)
21259{
21260
21261 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21262 wpt_uint8* pSendBuffer = NULL;
21263 wpt_uint16 usDataOffset = 0;
21264 wpt_uint16 usSendSize = 0;
21265 wpt_uint16 usCurrentFragmentSize =0;
21266 wpt_uint8* pSrcBuffer = NULL;
21267 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21268 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21269
21270 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21271 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21272 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21273
Jeff Johnsone7245742012-09-05 17:12:55 -070021274 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021275 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21276
21277 /* Update the current Fragment Number */
21278 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21279
21280 /*Update the HAL REQ structure */
21281 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21282 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21283 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21284
21285 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021286 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021287 image will be sent to HAL*/
21288
Jeff Johnsone7245742012-09-05 17:12:55 -070021289 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021290 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021291 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021292 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021293 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021294 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21295 usCurrentFragmentSize = FRAGMENT_SIZE;
21296
21297 /*Update the HAL REQ structure */
21298 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21299 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21300
21301 }
21302 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 usCurrentFragmentSize = FRAGMENT_SIZE;
21305
21306 /*Update the HAL REQ structure */
21307 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21308 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21309 }
21310
21311 /*-----------------------------------------------------------------------
21312 Get message buffer
21313 -----------------------------------------------------------------------*/
21314 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21315 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21316 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021317 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021318 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21319 {
21320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21321 "Unable to get send buffer in NV Download req %x %x ",
21322 pEventData, pwdiNvDownloadReqParams);
21323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021325 }
21326
21327 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021328 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021329 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21330
21331 /* Appending the NV image fragment */
21332 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21333 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21334 usCurrentFragmentSize);
21335
21336 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021338
Jeff Johnsone7245742012-09-05 17:12:55 -070021339 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21340 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021341 WDI_NV_DOWNLOAD_RESP);
21342
21343}
Jeff Johnsone7245742012-09-05 17:12:55 -070021344/*============================================================================
21345 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 ============================================================================*/
21347/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021348 @brief Helper routine used to find a session based on the BSSID
21349 @param pContext: pointer to the WLAN DAL context
21350 @param pDPContext: pointer to the Datapath context
21351
Jeff Johnson295189b2012-06-20 16:38:30 -070021352 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021353 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021354*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021355WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021356WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21357{
21358 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21359
21360 pCB->pDPContext = pDPContext;
21361 return;
21362}
21363
21364/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021365 @brief Helper routine used to find a session based on the BSSID
21366
21367
21368 @param pContext: pointer to the WLAN DAL context
21369
Jeff Johnson295189b2012-06-20 16:38:30 -070021370 @see
21371 @return pointer to Datapath context
21372*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021373WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021374WDI_DS_GetDatapathContext (void *pContext)
21375{
21376 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21377 return pCB->pDPContext;
21378}
21379/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021380 @brief Helper routine used to find a session based on the BSSID
21381
21382
21383 @param pContext: pointer to the WLAN DAL context
21384 @param pDTDriverContext: pointer to the Transport Driver context
21385
Jeff Johnson295189b2012-06-20 16:38:30 -070021386 @see
21387 @return void
21388*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021389WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021390WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21391{
21392 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21393
21394 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021395 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021396}
21397
21398/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021399 @brief Helper routine used to find a session based on the BSSID
21400
21401
21402 @param pWDICtx: pointer to the WLAN DAL context
21403
Jeff Johnson295189b2012-06-20 16:38:30 -070021404 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021405 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021406*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021407WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021408WDT_GetTransportDriverContext (void *pContext)
21409{
21410 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021411 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021412}
21413
Jeff Johnsone7245742012-09-05 17:12:55 -070021414/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021415 Helper inline converters
21416 ============================================================================*/
21417/*Convert WDI driver type into HAL driver type*/
21418WPT_STATIC WPT_INLINE WDI_Status
21419WDI_HAL_2_WDI_STATUS
21420(
21421 eHalStatus halStatus
21422)
21423{
Jeff Johnsone7245742012-09-05 17:12:55 -070021424 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021425 the chances of getting inlined*/
21426 switch( halStatus )
21427 {
21428 case eHAL_STATUS_SUCCESS:
21429 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21430 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21431 return WDI_STATUS_SUCCESS;
21432 case eHAL_STATUS_FAILURE:
21433 return WDI_STATUS_E_FAILURE;
21434 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021435 return WDI_STATUS_MEM_FAILURE;
21436 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021437 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021438 default:
21439 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21440 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021441
Jeff Johnsone7245742012-09-05 17:12:55 -070021442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021443}/*WDI_HAL_2_WDI_STATUS*/
21444
21445/*Convert WDI request type into HAL request type*/
21446WPT_STATIC WPT_INLINE tHalHostMsgType
21447WDI_2_HAL_REQ_TYPE
21448(
21449 WDI_RequestEnumType wdiReqType
21450)
21451{
Jeff Johnsone7245742012-09-05 17:12:55 -070021452 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021453 the chances of getting inlined*/
21454 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021455 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021456 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021457 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021458 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021459 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021460 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021461 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021462 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021463 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021465 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021466 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021467 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021469 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021470 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021471 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021472 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021473 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021474 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021475 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021476 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021477 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021478 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021479 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021480 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021481 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021482 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021483 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021484 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021485 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021486 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021488 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021489 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021490 return WLAN_HAL_RMV_STAKEY_REQ;
21491 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021492 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021493 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021494 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021495 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021496 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021497 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021498 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021499 case WDI_DEL_BA_REQ:
21500 return WLAN_HAL_DEL_BA_REQ;
21501#ifdef FEATURE_WLAN_CCX
21502 case WDI_TSM_STATS_REQ:
21503 return WLAN_HAL_TSM_STATS_REQ;
21504#endif
21505 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021506 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021507 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021508 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021509 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021510 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021511 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021512 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021513 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021514 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021515 case WDI_ADD_BA_SESSION_REQ:
21516 return WLAN_HAL_ADD_BA_SESSION_REQ;
21517 case WDI_TRIGGER_BA_REQ:
21518 return WLAN_HAL_TRIGGER_BA_REQ;
21519 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021520 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021521 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021522 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21524 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21525 case WDI_SET_MAX_TX_POWER_REQ:
21526 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070021527 case WDI_SET_TX_POWER_REQ:
21528 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21530 return WLAN_HAL_SET_P2P_GONOA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021531 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021532 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021533 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021534 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021535 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021537 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021538 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021539 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021540 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021542 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021543 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021544 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021545 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021546 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021547 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021548 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021550 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 case WDI_REM_BEACON_FILTER_REQ:
21552 return WLAN_HAL_REM_BCN_FILTER_REQ;
21553 case WDI_SET_RSSI_THRESHOLDS_REQ:
21554 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21555 case WDI_HOST_OFFLOAD_REQ:
21556 return WLAN_HAL_HOST_OFFLOAD_REQ;
21557 case WDI_WOWL_ADD_BC_PTRN_REQ:
21558 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21559 case WDI_WOWL_DEL_BC_PTRN_REQ:
21560 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21561 case WDI_WOWL_ENTER_REQ:
21562 return WLAN_HAL_ENTER_WOWL_REQ;
21563 case WDI_WOWL_EXIT_REQ:
21564 return WLAN_HAL_EXIT_WOWL_REQ;
21565 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21566 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21567 case WDI_NV_DOWNLOAD_REQ:
21568 return WLAN_HAL_DOWNLOAD_NV_REQ;
21569 case WDI_FLUSH_AC_REQ:
21570 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21571 case WDI_BTAMP_EVENT_REQ:
21572 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21573#ifdef WLAN_FEATURE_VOWIFI_11R
21574 case WDI_AGGR_ADD_TS_REQ:
21575 return WLAN_HAL_AGGR_ADD_TS_REQ;
21576#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070021577 case WDI_FTM_CMD_REQ:
21578 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021579 case WDI_ADD_STA_SELF_REQ:
21580 return WLAN_HAL_ADD_STA_SELF_REQ;
21581 case WDI_DEL_STA_SELF_REQ:
21582 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021583#ifdef FEATURE_OEM_DATA_SUPPORT
21584 case WDI_START_OEM_DATA_REQ:
21585 return WLAN_HAL_START_OEM_DATA_REQ;
21586#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021587 case WDI_HOST_RESUME_REQ:
21588 return WLAN_HAL_HOST_RESUME_REQ;
21589 case WDI_HOST_SUSPEND_IND:
21590 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080021591 case WDI_TRAFFIC_STATS_IND:
21592 return WLAN_HAL_CLASS_B_STATS_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021593 case WDI_KEEP_ALIVE_REQ:
21594 return WLAN_HAL_KEEP_ALIVE_REQ;
21595
21596#ifdef FEATURE_WLAN_SCAN_PNO
21597 case WDI_SET_PREF_NETWORK_REQ:
21598 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21599 case WDI_SET_RSSI_FILTER_REQ:
21600 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21601 case WDI_UPDATE_SCAN_PARAMS_REQ:
21602 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21603#endif // FEATURE_WLAN_SCAN_PNO
21604 case WDI_SET_TX_PER_TRACKING_REQ:
21605 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21606#ifdef WLAN_FEATURE_PACKET_FILTERING
21607 case WDI_8023_MULTICAST_LIST_REQ:
21608 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21609 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021610 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021611 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21612 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21613 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21614 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21615#endif // WLAN_FEATURE_PACKET_FILTERING
21616 case WDI_HAL_DUMP_CMD_REQ:
21617 return WLAN_HAL_DUMP_COMMAND_REQ;
21618#ifdef WLAN_FEATURE_GTK_OFFLOAD
21619 case WDI_GTK_OFFLOAD_REQ:
21620 return WLAN_HAL_GTK_OFFLOAD_REQ;
21621 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21622 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21623#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21624
21625 case WDI_INIT_SCAN_CON_REQ:
21626 return WLAN_HAL_INIT_SCAN_CON_REQ;
21627 case WDI_SET_POWER_PARAMS_REQ:
21628 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21629 case WDI_SET_TM_LEVEL_REQ:
21630 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21631 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21632 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021633#ifdef WLAN_FEATURE_11AC
21634 case WDI_UPDATE_VHT_OP_MODE_REQ:
21635 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21636#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021637 case WDI_GET_ROAM_RSSI_REQ:
21638 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021639 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021640 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021641 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021642
Jeff Johnson295189b2012-06-20 16:38:30 -070021643}/*WDI_2_HAL_REQ_TYPE*/
21644
21645/*Convert WDI response type into HAL response type*/
21646WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21647HAL_2_WDI_RSP_TYPE
21648(
21649 tHalHostMsgType halMsg
21650)
21651{
Jeff Johnsone7245742012-09-05 17:12:55 -070021652 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021653 the chances of getting inlined*/
21654 switch( halMsg )
21655 {
21656 case WLAN_HAL_START_RSP:
21657 return WDI_START_RESP;
21658 case WLAN_HAL_STOP_RSP:
21659 return WDI_STOP_RESP;
21660 case WLAN_HAL_INIT_SCAN_RSP:
21661 return WDI_INIT_SCAN_RESP;
21662 case WLAN_HAL_START_SCAN_RSP:
21663 return WDI_START_SCAN_RESP;
21664 case WLAN_HAL_END_SCAN_RSP:
21665 return WDI_END_SCAN_RESP;
21666 case WLAN_HAL_FINISH_SCAN_RSP:
21667 return WDI_FINISH_SCAN_RESP;
21668 case WLAN_HAL_CONFIG_STA_RSP:
21669 return WDI_CONFIG_STA_RESP;
21670 case WLAN_HAL_DELETE_STA_RSP:
21671 return WDI_DEL_STA_RESP;
21672 case WLAN_HAL_CONFIG_BSS_RSP:
21673 return WDI_CONFIG_BSS_RESP;
21674 case WLAN_HAL_DELETE_BSS_RSP:
21675 return WDI_DEL_BSS_RESP;
21676 case WLAN_HAL_JOIN_RSP:
21677 return WDI_JOIN_RESP;
21678 case WLAN_HAL_POST_ASSOC_RSP:
21679 return WDI_POST_ASSOC_RESP;
21680 case WLAN_HAL_SET_BSSKEY_RSP:
21681 return WDI_SET_BSS_KEY_RESP;
21682 case WLAN_HAL_SET_STAKEY_RSP:
21683 return WDI_SET_STA_KEY_RESP;
21684 case WLAN_HAL_RMV_BSSKEY_RSP:
21685 return WDI_RMV_BSS_KEY_RESP;
21686 case WLAN_HAL_RMV_STAKEY_RSP:
21687 return WDI_RMV_STA_KEY_RESP;
21688 case WLAN_HAL_SET_BCASTKEY_RSP:
21689 return WDI_SET_STA_BCAST_KEY_RESP;
21690 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21691 // return WDI_RMV_STA_BCAST_KEY_RESP;
21692 case WLAN_HAL_ADD_TS_RSP:
21693 return WDI_ADD_TS_RESP;
21694 case WLAN_HAL_DEL_TS_RSP:
21695 return WDI_DEL_TS_RESP;
21696 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21697 return WDI_UPD_EDCA_PRMS_RESP;
21698 case WLAN_HAL_ADD_BA_RSP:
21699 return WDI_ADD_BA_RESP;
21700 case WLAN_HAL_DEL_BA_RSP:
21701 return WDI_DEL_BA_RESP;
21702#ifdef FEATURE_WLAN_CCX
21703 case WLAN_HAL_TSM_STATS_RSP:
21704 return WDI_TSM_STATS_RESP;
21705#endif
21706 case WLAN_HAL_CH_SWITCH_RSP:
21707 return WDI_CH_SWITCH_RESP;
21708 case WLAN_HAL_SET_LINK_ST_RSP:
21709 return WDI_SET_LINK_ST_RESP;
21710 case WLAN_HAL_GET_STATS_RSP:
21711 return WDI_GET_STATS_RESP;
21712 case WLAN_HAL_UPDATE_CFG_RSP:
21713 return WDI_UPDATE_CFG_RESP;
21714 case WLAN_HAL_ADD_BA_SESSION_RSP:
21715 return WDI_ADD_BA_SESSION_RESP;
21716 case WLAN_HAL_TRIGGER_BA_RSP:
21717 return WDI_TRIGGER_BA_RESP;
21718 case WLAN_HAL_UPDATE_BEACON_RSP:
21719 return WDI_UPD_BCON_PRMS_RESP;
21720 case WLAN_HAL_SEND_BEACON_RSP:
21721 return WDI_SND_BCON_RESP;
21722 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21723 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21724 /*Indications*/
21725 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21726 return WDI_HAL_RSSI_NOTIFICATION_IND;
21727 case WLAN_HAL_MISSED_BEACON_IND:
21728 return WDI_HAL_MISSED_BEACON_IND;
21729 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21730 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21731 case WLAN_HAL_MIC_FAILURE_IND:
21732 return WDI_HAL_MIC_FAILURE_IND;
21733 case WLAN_HAL_FATAL_ERROR_IND:
21734 return WDI_HAL_FATAL_ERROR_IND;
21735 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21736 return WDI_HAL_DEL_STA_IND;
21737 case WLAN_HAL_COEX_IND:
21738 return WDI_HAL_COEX_IND;
21739 case WLAN_HAL_OTA_TX_COMPL_IND:
21740 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021741 case WLAN_HAL_P2P_NOA_ATTR_IND:
21742 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021743 case WLAN_HAL_P2P_NOA_START_IND:
21744 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021745 case WLAN_HAL_TX_PER_HIT_IND:
21746 return WDI_HAL_TX_PER_HIT_IND;
21747 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21748 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070021749 case WLAN_HAL_SET_TX_POWER_RSP:
21750 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021751 case WLAN_HAL_SET_P2P_GONOA_RSP:
21752 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021754 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021755 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021756 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021757 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021758 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021759 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021760 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021761 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021762 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021764 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021765 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021766 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021767 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021768 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021769 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021770 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021771 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21772 return WDI_SET_BEACON_FILTER_RESP;
21773 case WLAN_HAL_REM_BCN_FILTER_RSP:
21774 return WDI_REM_BEACON_FILTER_RESP;
21775 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21776 return WDI_SET_RSSI_THRESHOLDS_RESP;
21777 case WLAN_HAL_HOST_OFFLOAD_RSP:
21778 return WDI_HOST_OFFLOAD_RESP;
21779 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21780 return WDI_WOWL_ADD_BC_PTRN_RESP;
21781 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21782 return WDI_WOWL_DEL_BC_PTRN_RESP;
21783 case WLAN_HAL_ENTER_WOWL_RSP:
21784 return WDI_WOWL_ENTER_RESP;
21785 case WLAN_HAL_EXIT_WOWL_RSP:
21786 return WDI_WOWL_EXIT_RESP;
21787 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21788 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21789 case WLAN_HAL_DOWNLOAD_NV_RSP:
21790 return WDI_NV_DOWNLOAD_RESP;
21791 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21792 return WDI_FLUSH_AC_RESP;
21793 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21794 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021795 case WLAN_HAL_PROCESS_PTT_RSP:
21796 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021797 case WLAN_HAL_ADD_STA_SELF_RSP:
21798 return WDI_ADD_STA_SELF_RESP;
21799case WLAN_HAL_DEL_STA_SELF_RSP:
21800 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021801#ifdef FEATURE_OEM_DATA_SUPPORT
21802 case WLAN_HAL_START_OEM_DATA_RSP:
21803 return WDI_START_OEM_DATA_RESP;
21804#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021805 case WLAN_HAL_HOST_RESUME_RSP:
21806 return WDI_HOST_RESUME_RESP;
21807 case WLAN_HAL_KEEP_ALIVE_RSP:
21808 return WDI_KEEP_ALIVE_RESP;
21809#ifdef FEATURE_WLAN_SCAN_PNO
21810 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21811 return WDI_SET_PREF_NETWORK_RESP;
21812 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021813 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021814 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21815 return WDI_UPDATE_SCAN_PARAMS_RESP;
21816 case WLAN_HAL_PREF_NETW_FOUND_IND:
21817 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21818#endif // FEATURE_WLAN_SCAN_PNO
21819 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21820 return WDI_SET_TX_PER_TRACKING_RESP;
21821#ifdef WLAN_FEATURE_PACKET_FILTERING
21822 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21823 return WDI_8023_MULTICAST_LIST_RESP;
21824 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21825 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21826 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21827 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21828 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21829 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21830#endif // WLAN_FEATURE_PACKET_FILTERING
21831
21832 case WLAN_HAL_DUMP_COMMAND_RSP:
21833 return WDI_HAL_DUMP_CMD_RESP;
21834 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21835 return WDI_SET_POWER_PARAMS_RESP;
21836#ifdef WLAN_FEATURE_VOWIFI_11R
21837 case WLAN_HAL_AGGR_ADD_TS_RSP:
21838 return WDI_AGGR_ADD_TS_RESP;
21839#endif
21840
21841#ifdef WLAN_FEATURE_GTK_OFFLOAD
21842 case WLAN_HAL_GTK_OFFLOAD_RSP:
21843 return WDI_GTK_OFFLOAD_RESP;
21844 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21845 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21846#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21847#ifdef WLAN_WAKEUP_EVENTS
21848 case WLAN_HAL_WAKE_REASON_IND:
21849 return WDI_HAL_WAKE_REASON_IND;
21850#endif // WLAN_WAKEUP_EVENTS
21851
21852 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21853 return WDI_SET_TM_LEVEL_RESP;
21854 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21855 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021856#ifdef WLAN_FEATURE_11AC
21857 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21858 return WDI_UPDATE_VHT_OP_MODE_RESP;
21859#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021860#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
21861 case WLAN_HAL_GET_ROAM_RSSI_RSP:
21862 return WDI_GET_ROAM_RSSI_RESP;
21863#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021864 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021865 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021866 }
21867
21868}/*HAL_2_WDI_RSP_TYPE*/
21869
21870
21871/*Convert WDI driver type into HAL driver type*/
21872WPT_STATIC WPT_INLINE tDriverType
21873WDI_2_HAL_DRV_TYPE
21874(
21875 WDI_DriverType wdiDriverType
21876)
21877{
Jeff Johnsone7245742012-09-05 17:12:55 -070021878 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 the chances of getting inlined*/
21880 switch( wdiDriverType )
21881 {
21882 case WDI_DRIVER_TYPE_PRODUCTION:
21883 return eDRIVER_TYPE_PRODUCTION;
21884 case WDI_DRIVER_TYPE_MFG:
21885 return eDRIVER_TYPE_MFG;
21886 case WDI_DRIVER_TYPE_DVT:
21887 return eDRIVER_TYPE_DVT;
21888 }
21889
Jeff Johnsone7245742012-09-05 17:12:55 -070021890 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021891}/*WDI_2_HAL_DRV_TYPE*/
21892
21893
21894/*Convert WDI stop reason into HAL stop reason*/
21895WPT_STATIC WPT_INLINE tHalStopType
21896WDI_2_HAL_STOP_REASON
21897(
21898 WDI_StopType wdiDriverType
21899)
21900{
Jeff Johnsone7245742012-09-05 17:12:55 -070021901 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021902 the chances of getting inlined*/
21903 switch( wdiDriverType )
21904 {
21905 case WDI_STOP_TYPE_SYS_RESET:
21906 return HAL_STOP_TYPE_SYS_RESET;
21907 case WDI_DRIVER_TYPE_MFG:
21908 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21909 case WDI_STOP_TYPE_RF_KILL:
21910 return HAL_STOP_TYPE_RF_KILL;
21911 }
21912
Jeff Johnsone7245742012-09-05 17:12:55 -070021913 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021914}/*WDI_2_HAL_STOP_REASON*/
21915
21916
21917/*Convert WDI scan mode type into HAL scan mode type*/
21918WPT_STATIC WPT_INLINE eHalSysMode
21919WDI_2_HAL_SCAN_MODE
21920(
21921 WDI_ScanMode wdiScanMode
21922)
21923{
Jeff Johnsone7245742012-09-05 17:12:55 -070021924 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021925 the chances of getting inlined*/
21926 switch( wdiScanMode )
21927 {
21928 case WDI_SCAN_MODE_NORMAL:
21929 return eHAL_SYS_MODE_NORMAL;
21930 case WDI_SCAN_MODE_LEARN:
21931 return eHAL_SYS_MODE_LEARN;
21932 case WDI_SCAN_MODE_SCAN:
21933 return eHAL_SYS_MODE_SCAN;
21934 case WDI_SCAN_MODE_PROMISC:
21935 return eHAL_SYS_MODE_PROMISC;
21936 case WDI_SCAN_MODE_SUSPEND_LINK:
21937 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021938 case WDI_SCAN_MODE_ROAM_SCAN:
21939 return eHAL_SYS_MODE_ROAM_SCAN;
21940 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21941 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021942 }
21943
Jeff Johnsone7245742012-09-05 17:12:55 -070021944 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021945}/*WDI_2_HAL_SCAN_MODE*/
21946
21947/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021948WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021949WDI_2_HAL_SEC_CH_OFFSET
21950(
21951 WDI_HTSecondaryChannelOffset wdiSecChOffset
21952)
21953{
Jeff Johnsone7245742012-09-05 17:12:55 -070021954 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021955 the chances of getting inlined*/
21956 switch( wdiSecChOffset )
21957 {
21958 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021959 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021960 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021961 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021962 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021963 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21964#ifdef WLAN_FEATURE_11AC
21965 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21966 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21967 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21968 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21969 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21970 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21971 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21972 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21973 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21974 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21975 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21976 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21977 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21978 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21979#endif
21980 default:
21981 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021982 }
21983
Jeff Johnsone7245742012-09-05 17:12:55 -070021984 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021985}/*WDI_2_HAL_SEC_CH_OFFSET*/
21986
21987/*Convert WDI BSS type into HAL BSS type*/
21988WPT_STATIC WPT_INLINE tSirBssType
21989WDI_2_HAL_BSS_TYPE
21990(
21991 WDI_BssType wdiBSSType
21992)
21993{
Jeff Johnsone7245742012-09-05 17:12:55 -070021994 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 the chances of getting inlined*/
21996 switch( wdiBSSType )
21997 {
21998 case WDI_INFRASTRUCTURE_MODE:
21999 return eSIR_INFRASTRUCTURE_MODE;
22000 case WDI_INFRA_AP_MODE:
22001 return eSIR_INFRA_AP_MODE;
22002 case WDI_IBSS_MODE:
22003 return eSIR_IBSS_MODE;
22004 case WDI_BTAMP_STA_MODE:
22005 return eSIR_BTAMP_STA_MODE;
22006 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022007 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022008 case WDI_BSS_AUTO_MODE:
22009 return eSIR_AUTO_MODE;
22010 }
22011
Jeff Johnsone7245742012-09-05 17:12:55 -070022012 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022013}/*WDI_2_HAL_BSS_TYPE*/
22014
22015/*Convert WDI NW type into HAL NW type*/
22016WPT_STATIC WPT_INLINE tSirNwType
22017WDI_2_HAL_NW_TYPE
22018(
22019 WDI_NwType wdiNWType
22020)
22021{
Jeff Johnsone7245742012-09-05 17:12:55 -070022022 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022023 the chances of getting inlined*/
22024 switch( wdiNWType )
22025 {
22026 case WDI_11A_NW_TYPE:
22027 return eSIR_11A_NW_TYPE;
22028 case WDI_11B_NW_TYPE:
22029 return eSIR_11B_NW_TYPE;
22030 case WDI_11G_NW_TYPE:
22031 return eSIR_11G_NW_TYPE;
22032 case WDI_11N_NW_TYPE:
22033 return eSIR_11N_NW_TYPE;
22034 }
22035
Jeff Johnsone7245742012-09-05 17:12:55 -070022036 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022037}/*WDI_2_HAL_NW_TYPE*/
22038
22039/*Convert WDI chanel bonding type into HAL cb type*/
22040WPT_STATIC WPT_INLINE ePhyChanBondState
22041WDI_2_HAL_CB_STATE
22042(
22043 WDI_PhyChanBondState wdiCbState
22044)
22045{
Jeff Johnsone7245742012-09-05 17:12:55 -070022046 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022047 the chances of getting inlined*/
22048 switch ( wdiCbState )
22049 {
22050 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22051 return PHY_SINGLE_CHANNEL_CENTERED;
22052 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22053 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22054 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22055 return PHY_DOUBLE_CHANNEL_CENTERED;
22056 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22057 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022058#ifdef WLAN_FEATURE_11AC
22059 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22060 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22061 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22062 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22063 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22064 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22065 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22066 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22067 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22068 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22069 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22070 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22071 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22072 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22073#endif
22074 case WDI_MAX_CB_STATE:
22075 default:
22076 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022077 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022078
Jeff Johnson295189b2012-06-20 16:38:30 -070022079 return PHY_CHANNEL_BONDING_STATE_MAX;
22080}/*WDI_2_HAL_CB_STATE*/
22081
22082/*Convert WDI chanel bonding type into HAL cb type*/
22083WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22084WDI_2_HAL_HT_OPER_MODE
22085(
22086 WDI_HTOperatingMode wdiHTOperMode
22087)
22088{
Jeff Johnsone7245742012-09-05 17:12:55 -070022089 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022090 the chances of getting inlined*/
22091 switch ( wdiHTOperMode )
22092 {
22093 case WDI_HT_OP_MODE_PURE:
22094 return eSIR_HT_OP_MODE_PURE;
22095 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22096 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22097 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22098 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22099 case WDI_HT_OP_MODE_MIXED:
22100 return eSIR_HT_OP_MODE_MIXED;
22101 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022102
Jeff Johnson295189b2012-06-20 16:38:30 -070022103 return eSIR_HT_OP_MODE_MAX;
22104}/*WDI_2_HAL_HT_OPER_MODE*/
22105
22106/*Convert WDI mimo PS type into HAL mimo PS type*/
22107WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22108WDI_2_HAL_MIMO_PS
22109(
22110 WDI_HTMIMOPowerSaveState wdiHTOperMode
22111)
22112{
Jeff Johnsone7245742012-09-05 17:12:55 -070022113 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 the chances of getting inlined*/
22115 switch ( wdiHTOperMode )
22116 {
22117 case WDI_HT_MIMO_PS_STATIC:
22118 return eSIR_HT_MIMO_PS_STATIC;
22119 case WDI_HT_MIMO_PS_DYNAMIC:
22120 return eSIR_HT_MIMO_PS_DYNAMIC;
22121 case WDI_HT_MIMO_PS_NA:
22122 return eSIR_HT_MIMO_PS_NA;
22123 case WDI_HT_MIMO_PS_NO_LIMIT:
22124 return eSIR_HT_MIMO_PS_NO_LIMIT;
22125 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022126
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 return eSIR_HT_MIMO_PS_MAX;
22128}/*WDI_2_HAL_MIMO_PS*/
22129
22130/*Convert WDI ENC type into HAL ENC type*/
22131WPT_STATIC WPT_INLINE tAniEdType
22132WDI_2_HAL_ENC_TYPE
22133(
22134 WDI_EncryptType wdiEncType
22135)
22136{
Jeff Johnsone7245742012-09-05 17:12:55 -070022137 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022138 the chances of getting inlined*/
22139 switch ( wdiEncType )
22140 {
22141 case WDI_ENCR_NONE:
22142 return eSIR_ED_NONE;
22143
22144 case WDI_ENCR_WEP40:
22145 return eSIR_ED_WEP40;
22146
22147 case WDI_ENCR_WEP104:
22148 return eSIR_ED_WEP104;
22149
22150 case WDI_ENCR_TKIP:
22151 return eSIR_ED_TKIP;
22152
22153 case WDI_ENCR_CCMP:
22154 return eSIR_ED_CCMP;
22155
22156 case WDI_ENCR_AES_128_CMAC:
22157 return eSIR_ED_AES_128_CMAC;
22158#if defined(FEATURE_WLAN_WAPI)
22159 case WDI_ENCR_WPI:
22160 return eSIR_ED_WPI;
22161#endif
22162 default:
22163 return eSIR_ED_NOT_IMPLEMENTED;
22164 }
22165
22166}/*WDI_2_HAL_ENC_TYPE*/
22167
22168/*Convert WDI WEP type into HAL WEP type*/
22169WPT_STATIC WPT_INLINE tAniWepType
22170WDI_2_HAL_WEP_TYPE
22171(
22172 WDI_WepType wdiWEPType
22173)
22174{
Jeff Johnsone7245742012-09-05 17:12:55 -070022175 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022176 the chances of getting inlined*/
22177 switch ( wdiWEPType )
22178 {
22179 case WDI_WEP_STATIC:
22180 return eSIR_WEP_STATIC;
22181
22182 case WDI_WEP_DYNAMIC:
22183 return eSIR_WEP_DYNAMIC;
22184 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022185
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 return eSIR_WEP_MAX;
22187}/*WDI_2_HAL_WEP_TYPE*/
22188
22189WPT_STATIC WPT_INLINE tSirLinkState
22190WDI_2_HAL_LINK_STATE
22191(
22192 WDI_LinkStateType wdiLinkState
22193)
22194{
Jeff Johnsone7245742012-09-05 17:12:55 -070022195 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022196 the chances of getting inlined*/
22197 switch ( wdiLinkState )
22198 {
22199 case WDI_LINK_IDLE_STATE:
22200 return eSIR_LINK_IDLE_STATE;
22201
22202 case WDI_LINK_PREASSOC_STATE:
22203 return eSIR_LINK_PREASSOC_STATE;
22204
22205 case WDI_LINK_POSTASSOC_STATE:
22206 return eSIR_LINK_POSTASSOC_STATE;
22207
22208 case WDI_LINK_AP_STATE:
22209 return eSIR_LINK_AP_STATE;
22210
22211 case WDI_LINK_IBSS_STATE:
22212 return eSIR_LINK_IBSS_STATE;
22213
22214 case WDI_LINK_BTAMP_PREASSOC_STATE:
22215 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22216
22217 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22218 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22219
22220 case WDI_LINK_BTAMP_AP_STATE:
22221 return eSIR_LINK_BTAMP_AP_STATE;
22222
22223 case WDI_LINK_BTAMP_STA_STATE:
22224 return eSIR_LINK_BTAMP_STA_STATE;
22225
22226 case WDI_LINK_LEARN_STATE:
22227 return eSIR_LINK_LEARN_STATE;
22228
22229 case WDI_LINK_SCAN_STATE:
22230 return eSIR_LINK_SCAN_STATE;
22231
22232 case WDI_LINK_FINISH_SCAN_STATE:
22233 return eSIR_LINK_FINISH_SCAN_STATE;
22234
22235 case WDI_LINK_INIT_CAL_STATE:
22236 return eSIR_LINK_INIT_CAL_STATE;
22237
22238 case WDI_LINK_FINISH_CAL_STATE:
22239 return eSIR_LINK_FINISH_CAL_STATE;
22240
Jeff Johnson295189b2012-06-20 16:38:30 -070022241 case WDI_LINK_LISTEN_STATE:
22242 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022243
22244 default:
22245 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022246 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022247}
22248
Jeff Johnsone7245742012-09-05 17:12:55 -070022249/*Translate a STA Context from WDI into HAL*/
22250WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022251void
22252WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022253(
Jeff Johnson295189b2012-06-20 16:38:30 -070022254 tConfigStaParams* phalConfigSta,
22255 WDI_ConfigStaReqInfoType* pwdiConfigSta
22256)
22257{
22258 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022259#ifdef WLAN_FEATURE_11AC
22260 /* Get the Version 1 Handler */
22261 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22262 if (WDI_getFwWlanFeatCaps(DOT11AC))
22263 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022264 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022265 }
22266#endif
22267 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022268 the chances of getting inlined*/
22269
Jeff Johnsone7245742012-09-05 17:12:55 -070022270 wpalMemoryCopy(phalConfigSta->bssId,
22271 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22272
22273 wpalMemoryCopy(phalConfigSta->staMac,
22274 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022275
22276 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22277 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22278 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22279 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22280 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22281 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22282 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22283 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22284 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22285 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22286 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22287 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22288 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22289 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22290 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22291 phalConfigSta->action = pwdiConfigSta->wdiAction;
22292 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22293 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22294 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22295 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22296 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22297 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22298 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022299
Jeff Johnson295189b2012-06-20 16:38:30 -070022300 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22301
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022303 pwdiConfigSta->wdiSupportedRates.opRateMode;
22304 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22305 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022306 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022307 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22308 }
22309 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22310 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022311 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022312 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22313 }
22314 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22315 {
22316 phalConfigSta->supportedRates.aniLegacyRates[i] =
22317 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22318 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022319 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022320 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22321 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22322 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022323 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022324 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22325 }
22326 phalConfigSta->supportedRates.rxHighestDataRate =
22327 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22328
Jeff Johnsone7245742012-09-05 17:12:55 -070022329#ifdef WLAN_FEATURE_11AC
22330 if(phalConfigSta_V1 != NULL)
22331 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022332 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22333 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22334 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22335 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022336 }
22337#endif
22338
Jeff Johnson295189b2012-06-20 16:38:30 -070022339 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022340
Jeff Johnsone7245742012-09-05 17:12:55 -070022341#ifdef WLAN_FEATURE_11AC
22342 if(phalConfigSta_V1 != NULL)
22343 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022344 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22345 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022346 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022347 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22348 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22349
Jeff Johnsone7245742012-09-05 17:12:55 -070022350 }
22351#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022352}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022353
22354/*Translate a Rate set info from WDI into HAL*/
22355WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022356WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022357(
Jeff Johnson295189b2012-06-20 16:38:30 -070022358 tSirMacRateSet* pHalRateSet,
22359 WDI_RateSet* pwdiRateSet
22360)
22361{
Jeff Johnsone7245742012-09-05 17:12:55 -070022362 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22364
22365 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22366 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22367
22368 for ( i = 0; i < pHalRateSet->numRates; i++ )
22369 {
22370 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22371 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022372
Jeff Johnson295189b2012-06-20 16:38:30 -070022373}/*WDI_CopyWDIRateSetToHALRateSet*/
22374
22375
22376/*Translate an EDCA Parameter Record from WDI into HAL*/
22377WPT_STATIC WPT_INLINE void
22378WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022379(
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 tSirMacEdcaParamRecord* phalEdcaParam,
22381 WDI_EdcaParamRecord* pWDIEdcaParam
22382)
22383{
Jeff Johnsone7245742012-09-05 17:12:55 -070022384 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022385 the chances of getting inlined*/
22386
22387 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22388 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22389 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22390 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22391
22392 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22393 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22394 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22395}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22396
22397
22398/*Copy a management frame header from WDI fmt into HAL fmt*/
22399WPT_STATIC WPT_INLINE void
22400WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22401(
22402 tSirMacMgmtHdr* pmacMgmtHdr,
22403 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22404)
22405{
22406 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22407 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22408 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22409 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22410 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22411 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22412 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22413 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22414 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22415 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22416 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22417
22418 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22419 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22420
Jeff Johnsone7245742012-09-05 17:12:55 -070022421 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022422 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022423 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022424 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022425 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022426 pwdiMacMgmtHdr->bssId, 6);
22427
22428 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22429 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22430 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22431
22432}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22433
22434
22435/*Copy config bss parameters from WDI fmt into HAL fmt*/
22436WPT_STATIC WPT_INLINE void
22437WDI_CopyWDIConfigBSSToHALConfigBSS
22438(
22439 tConfigBssParams* phalConfigBSS,
22440 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22441)
22442{
22443
22444 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022445#ifdef WLAN_FEATURE_11AC
22446 /* Get the Version 1 Handler */
22447 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22448 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022449 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022450#endif
22451
Jeff Johnson295189b2012-06-20 16:38:30 -070022452 wpalMemoryCopy( phalConfigBSS->bssId,
22453 pwdiConfigBSS->macBSSID,
22454 WDI_MAC_ADDR_LEN);
22455
22456#ifdef HAL_SELF_STA_PER_BSS
22457 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22458 pwdiConfigBSS->macSelfAddr,
22459 WDI_MAC_ADDR_LEN);
22460#endif
22461
22462 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22463
22464 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22465 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22466
Jeff Johnsone7245742012-09-05 17:12:55 -070022467 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022468 pwdiConfigBSS->ucShortSlotTimeSupported;
22469 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22470 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22471 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22472 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22473 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022474 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022475 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22476 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22477 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22478 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22479 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22480 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22481 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22482 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22483 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22484 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22485 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22486
Jeff Johnsone7245742012-09-05 17:12:55 -070022487 phalConfigBSS->htOperMode =
22488 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022489
22490 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22491 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22492 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22493 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22494
22495#ifdef WLAN_FEATURE_VOWIFI
22496 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22497#endif
22498
22499 /*! Used 32 as magic number because that is how the ssid is declared inside the
22500 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022501 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22503 pwdiConfigBSS->wdiSSID.ucLength : 32;
22504 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022505 pwdiConfigBSS->wdiSSID.sSSID,
22506 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022507
22508 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22509 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022510
Jeff Johnson295189b2012-06-20 16:38:30 -070022511 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22512 &pwdiConfigBSS->wdiRateSet);
22513
22514 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22515
22516 if(phalConfigBSS->edcaParamsValid)
22517 {
22518 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22519 &pwdiConfigBSS->wdiBEEDCAParams);
22520 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22521 &pwdiConfigBSS->wdiBKEDCAParams);
22522 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22523 &pwdiConfigBSS->wdiVIEDCAParams);
22524 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22525 &pwdiConfigBSS->wdiVOEDCAParams);
22526 }
22527
Jeff Johnsone7245742012-09-05 17:12:55 -070022528 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022529
22530 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22531
22532#ifdef WLAN_FEATURE_VOWIFI_11R
22533
Jeff Johnsone7245742012-09-05 17:12:55 -070022534 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022535 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022536
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 if( phalConfigBSS->extSetStaKeyParamValid )
22538 {
22539 /*-----------------------------------------------------------------------
22540 Copy the STA Key parameters into the HAL message
22541 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022542 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022543 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22544
Jeff Johnsone7245742012-09-05 17:12:55 -070022545 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22547
22548 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22549
22550 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22551
22552 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22553
Jeff Johnson295189b2012-06-20 16:38:30 -070022554 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22555 keyIndex++)
22556 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022557 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022558 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22559 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22560 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22561 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22562 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22563 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022564 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022565 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022566 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022568 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022569 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22570 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022571 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022572 WDI_MAX_KEY_LENGTH);
22573 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022574 }
22575 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22576 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022577 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022578 sizeof(phalConfigBSS->extSetStaKeyParam) );
22579 }
22580
22581#endif /*WLAN_FEATURE_VOWIFI_11R*/
22582
Jeff Johnsone7245742012-09-05 17:12:55 -070022583#ifdef WLAN_FEATURE_11AC
22584 if(phalConfigBSS_V1 != NULL)
22585 {
22586 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22587 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22588 }
22589#endif
22590
Jeff Johnson295189b2012-06-20 16:38:30 -070022591}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22592
22593
Jeff Johnsone7245742012-09-05 17:12:55 -070022594/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022595 pointed to by user data */
22596WPT_STATIC WPT_INLINE void
22597WDI_ExtractRequestCBFromEvent
22598(
22599 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022600 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022601 void** ppUserData
22602)
22603{
22604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22605 switch ( pEvent->wdiRequest )
22606 {
22607 case WDI_START_REQ:
22608 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22609 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22610 break;
22611 case WDI_STOP_REQ:
22612 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22613 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22614 break;
22615 case WDI_INIT_SCAN_REQ:
22616 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22617 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22618 break;
22619 case WDI_START_SCAN_REQ:
22620 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22621 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22622 break;
22623 case WDI_END_SCAN_REQ:
22624 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22625 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22626 break;
22627 case WDI_FINISH_SCAN_REQ:
22628 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22629 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22630 break;
22631 case WDI_JOIN_REQ:
22632 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22633 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22634 break;
22635 case WDI_CONFIG_BSS_REQ:
22636 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22637 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22638 break;
22639 case WDI_DEL_BSS_REQ:
22640 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22641 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22642 break;
22643 case WDI_POST_ASSOC_REQ:
22644 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22645 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22646 break;
22647 case WDI_DEL_STA_REQ:
22648 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22649 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22650 break;
22651 case WDI_DEL_STA_SELF_REQ:
22652 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22653 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22654 break;
22655
22656 case WDI_SET_BSS_KEY_REQ:
22657 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22658 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22659 break;
22660 case WDI_RMV_BSS_KEY_REQ:
22661 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22662 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22663 break;
22664 case WDI_SET_STA_KEY_REQ:
22665 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22666 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22667 break;
22668 case WDI_RMV_STA_KEY_REQ:
22669 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22670 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22671 break;
22672 case WDI_ADD_TS_REQ:
22673 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22674 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22675 break;
22676 case WDI_DEL_TS_REQ:
22677 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22678 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22679 break;
22680 case WDI_UPD_EDCA_PRMS_REQ:
22681 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22682 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22683 break;
22684 case WDI_ADD_BA_SESSION_REQ:
22685 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22686 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22687 break;
22688 case WDI_DEL_BA_REQ:
22689 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22690 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22691 break;
22692#ifdef FEATURE_WLAN_CCX
22693 case WDI_TSM_STATS_REQ:
22694 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22695 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22696 break;
22697#endif
22698 case WDI_CH_SWITCH_REQ:
22699 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22700 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22701 break;
22702 case WDI_CONFIG_STA_REQ:
22703 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22704 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22705 break;
22706 case WDI_SET_LINK_ST_REQ:
22707 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22708 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22709 break;
22710 case WDI_GET_STATS_REQ:
22711 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22712 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22713 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022714#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22715 case WDI_GET_ROAM_RSSI_REQ:
22716 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22717 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
22718 break;
22719#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022720 case WDI_UPDATE_CFG_REQ:
22721 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22722 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22723 break;
22724 case WDI_ADD_BA_REQ:
22725 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22726 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22727 break;
22728 case WDI_TRIGGER_BA_REQ:
22729 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22730 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22731 break;
22732 case WDI_UPD_BCON_PRMS_REQ:
22733 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22734 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22735 break;
22736 case WDI_SND_BCON_REQ:
22737 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22738 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22739 break;
22740 case WDI_ENTER_BMPS_REQ:
22741 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22742 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22743 break;
22744 case WDI_EXIT_BMPS_REQ:
22745 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22746 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22747 break;
22748 case WDI_ENTER_UAPSD_REQ:
22749 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22750 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22751 break;
22752 case WDI_UPDATE_UAPSD_PARAM_REQ:
22753 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22754 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22755 break;
22756 case WDI_CONFIGURE_RXP_FILTER_REQ:
22757 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22758 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22759 break;
22760 case WDI_SET_BEACON_FILTER_REQ:
22761 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22762 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22763 break;
22764 case WDI_REM_BEACON_FILTER_REQ:
22765 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22766 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022767 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022768 case WDI_SET_RSSI_THRESHOLDS_REQ:
22769 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22770 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22771 break;
22772 case WDI_HOST_OFFLOAD_REQ:
22773 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22774 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22775 break;
22776 case WDI_WOWL_ADD_BC_PTRN_REQ:
22777 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22778 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22779 break;
22780 case WDI_WOWL_DEL_BC_PTRN_REQ:
22781 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22782 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22783 break;
22784 case WDI_WOWL_ENTER_REQ:
22785 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22786 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22787 break;
22788 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22789 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22790 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22791 break;
22792 case WDI_FLUSH_AC_REQ:
22793 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22794 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22795 break;
22796 case WDI_BTAMP_EVENT_REQ:
22797 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22798 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22799 break;
22800 case WDI_KEEP_ALIVE_REQ:
22801 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22802 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22803 break;
22804 case WDI_SET_TX_PER_TRACKING_REQ:
22805 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22806 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080022807 break;
22808 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
22809 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22810 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
22811 break;
22812 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22813 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22814 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
22815 break;
22816 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22817 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22818 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
22819 break;
22820
Jeff Johnson295189b2012-06-20 16:38:30 -070022821 default:
22822 *ppfnReqCB = NULL;
22823 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022824 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022825 }
22826}/*WDI_ExtractRequestCBFromEvent*/
22827
22828
22829/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022830 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022831 frame xtl is enabled for a particular STA.
22832
22833 WDI_PostAssocReq must have been called.
22834
Jeff Johnsone7245742012-09-05 17:12:55 -070022835 @param uSTAIdx: STA index
22836
Jeff Johnson295189b2012-06-20 16:38:30 -070022837 @see WDI_PostAssocReq
22838 @return Result of the function call
22839*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022840wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022841WDI_IsHwFrameTxTranslationCapable
22842(
22843 wpt_uint8 uSTAIdx
22844)
22845{
Jeff Johnsone7245742012-09-05 17:12:55 -070022846 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022847 uma value*/
22848 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022849 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022850 ------------------------------------------------------------------------*/
22851 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22852 {
22853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22854 "WDI API call before module is initialized - Fail request");
22855
Jeff Johnsone7245742012-09-05 17:12:55 -070022856 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022857 }
22858
Gopichand Nakkalaba261272013-01-03 15:45:56 -080022859#ifdef WLAN_SOFTAP_VSTA_FEATURE
22860 if (IS_VSTA_IDX(uSTAIdx))
22861 {
22862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22863 "STA %d is a Virtual STA, "
22864 "HW frame translation disabled", uSTAIdx);
22865 return eWLAN_PAL_FALSE;
22866 }
22867#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070022868
Jeff Johnson295189b2012-06-20 16:38:30 -070022869 return gWDICb.bFrameTransEnabled;
22870}/*WDI_IsHwFrameTxTranslationCapable*/
22871
22872#ifdef FEATURE_WLAN_SCAN_PNO
22873/**
22874 @brief WDI_SetPreferredNetworkList
22875
Jeff Johnsone7245742012-09-05 17:12:55 -070022876 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022877 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022878
Jeff Johnson295189b2012-06-20 16:38:30 -070022879 wdiPNOScanCb: callback for passing back the response
22880 of the Set PNO operation received from the
22881 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022882
Jeff Johnson295189b2012-06-20 16:38:30 -070022883 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022884 callback
22885
Jeff Johnson295189b2012-06-20 16:38:30 -070022886 @return Result of the function call
22887*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022888WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022889WDI_SetPreferredNetworkReq
22890(
22891 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22892 WDI_PNOScanCb wdiPNOScanCb,
22893 void* pUserData
22894)
22895{
22896 WDI_EventInfoType wdiEventData = {{0}};
22897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22898
22899 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022900 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022901 ------------------------------------------------------------------------*/
22902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22903 {
22904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22905 "WDI API call before module is initialized - Fail request");
22906
Jeff Johnsone7245742012-09-05 17:12:55 -070022907 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022908 }
22909
22910 /*------------------------------------------------------------------------
22911 Fill in Event data and post to the Main FSM
22912 ------------------------------------------------------------------------*/
22913 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022914 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022915 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022916 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022917 wdiEventData.pUserData = pUserData;
22918
22919 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22920}
22921
22922
22923/**
22924 @brief WDI_SetRssiFilterReq
22925
Jeff Johnsone7245742012-09-05 17:12:55 -070022926 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022927 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022928
Jeff Johnson295189b2012-06-20 16:38:30 -070022929 wdiRssiFilterCb: callback for passing back the response
22930 of the Set RSSI Filter operation received from the
22931 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022932
Jeff Johnson295189b2012-06-20 16:38:30 -070022933 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022934 callback
22935
Jeff Johnson295189b2012-06-20 16:38:30 -070022936 @return Result of the function call
22937*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022938WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022939WDI_SetRssiFilterReq
22940(
22941 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22942 WDI_RssiFilterCb wdiRssiFilterCb,
22943 void* pUserData
22944)
22945{
22946 WDI_EventInfoType wdiEventData = {{0}};
22947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22948
22949 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022950 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022951 ------------------------------------------------------------------------*/
22952 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22953 {
22954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22955 "WDI API call before module is initialized - Fail request");
22956
Jeff Johnsone7245742012-09-05 17:12:55 -070022957 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022958 }
22959
22960 /*------------------------------------------------------------------------
22961 Fill in Event data and post to the Main FSM
22962 ------------------------------------------------------------------------*/
22963 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022964 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022965 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022966 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022967 wdiEventData.pUserData = pUserData;
22968
22969 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22970}/*WDI_SetRssiFilterReq*/
22971
22972/**
22973 @brief WDI_UpdateScanParamsReq
22974
Jeff Johnsone7245742012-09-05 17:12:55 -070022975 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022976 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022977
Jeff Johnson295189b2012-06-20 16:38:30 -070022978 wdiUpdateScanParamsCb: callback for passing back the response
22979 of the Set PNO operation received from the
22980 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022981
Jeff Johnson295189b2012-06-20 16:38:30 -070022982 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022983 callback
22984
Jeff Johnson295189b2012-06-20 16:38:30 -070022985 @return Result of the function call
22986*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022987WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022988WDI_UpdateScanParamsReq
22989(
22990 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22991 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22992 void* pUserData
22993)
22994{
22995 WDI_EventInfoType wdiEventData = {{0}};
22996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22997
22998 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022999 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023000 ------------------------------------------------------------------------*/
23001 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23002 {
23003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23004 "WDI API call before module is initialized - Fail request");
23005
Jeff Johnsone7245742012-09-05 17:12:55 -070023006 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023007 }
23008
23009 /*------------------------------------------------------------------------
23010 Fill in Event data and post to the Main FSM
23011 ------------------------------------------------------------------------*/
23012 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023013 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023014 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023015 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023016 wdiEventData.pUserData = pUserData;
23017
23018 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23019}
23020
23021/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023022 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023023 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023024
23025 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023026 pwdiPNOScanReqParams: pointer to the info received
23027 from upper layers
23028 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023029 and its size
23030
Jeff Johnson295189b2012-06-20 16:38:30 -070023031 @return Result of the function call
23032*/
23033
23034WDI_Status
23035WDI_PackPreferredNetworkList
23036(
23037 WDI_ControlBlockType* pWDICtx,
23038 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23039 wpt_uint8** ppSendBuffer,
23040 wpt_uint16* pSize
23041)
23042{
Jeff Johnsone7245742012-09-05 17:12:55 -070023043 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023044 wpt_uint16 usDataOffset = 0;
23045 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023046 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023047 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023048 /*-----------------------------------------------------------------------
23049 Get message buffer
23050 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023051 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023052 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023053 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023054 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023055 {
23056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23057 "Unable to get send buffer in Set PNO req %x ",
23058 pwdiPNOScanReqParams);
23059 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 }
23062
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023063 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23064
Jeff Johnson295189b2012-06-20 16:38:30 -070023065 /*-------------------------------------------------------------------------
23066 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23067 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023068 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023070 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023071 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23072
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023073 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023074 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023075 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023076 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23078
23079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023080 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023081 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23082 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23083 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23084
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023085 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023086 {
23087 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023088 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023089 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23090
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023091 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023092 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023093 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023094
23095 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023096 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023097 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023098
23099 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023100 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023101 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023102
Jeff Johnsone7245742012-09-05 17:12:55 -070023103 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023104 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023105 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023106 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23107 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23108 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23109 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023110
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023111 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023112 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023113 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023114
23115 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023116 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023117 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23118
23119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023120 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023121 pPrefNetwListParams->aNetworks[i].ssId.length,
23122 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023123 }
23124
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023125 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023126 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023127 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23128 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23129 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23130
23131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023132 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023133 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023134 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23135 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23136
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023137 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023138 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023139 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023140 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023141 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023142 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23143 }
23144
23145 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023146 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023147 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23148 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23149 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023150 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023151
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023152 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023153 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023154 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023155
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023156 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023157 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23158 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23159 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023160 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023161
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023162 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023163 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023164 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023165
23166 /*Set the output values*/
23167 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023168 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023169
23170 return WDI_STATUS_SUCCESS;
23171}/*WDI_PackPreferredNetworkList*/
23172
23173/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023174 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023175 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023176
23177 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023178 pwdiPNOScanReqParams: pointer to the info received
23179 from upper layers
23180 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023181 and its size
23182
Jeff Johnson295189b2012-06-20 16:38:30 -070023183 @return Result of the function call
23184*/
23185
23186WDI_Status
23187WDI_PackPreferredNetworkListNew
23188(
23189 WDI_ControlBlockType* pWDICtx,
23190 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23191 wpt_uint8** ppSendBuffer,
23192 wpt_uint16* pSize
23193)
23194{
Jeff Johnsone7245742012-09-05 17:12:55 -070023195 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 wpt_uint16 usDataOffset = 0;
23197 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023198 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023199 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023200
23201 /*-----------------------------------------------------------------------
23202 Get message buffer
23203 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023204 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023205 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023207 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023208 {
23209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23210 "Unable to get send buffer in Set PNO req %x ",
23211 pwdiPNOScanReqParams);
23212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023214 }
23215
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023216 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23217
Jeff Johnson295189b2012-06-20 16:38:30 -070023218 /*-------------------------------------------------------------------------
23219 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23220 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023221 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023222 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023223 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023224 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23225
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023226 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023227 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023228 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023229 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023230 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23231
23232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023233 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023234 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23235 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23236 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23237
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023238 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023239 {
23240 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023241 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023242 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23243
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023244 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023245 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023246 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023247
23248 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023249 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023250 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023251
23252 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023253 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023254 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023255
23256 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023257 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023258 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023259
Jeff Johnsone7245742012-09-05 17:12:55 -070023260 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023261 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023262 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023263 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23264
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023265 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023266 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023267 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023268
23269 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023270 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023271 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23272
23273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023274 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023275 pPrefNetwListParams->aNetworks[i].ssId.length,
23276 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023277 }
23278
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023279 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023281 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23282 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23283 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23284
23285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023286 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023287 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023288 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23289 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23290
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023291 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023292 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023293 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023294 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023295 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023296 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23297 }
23298
23299 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023300 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023301 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23302 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23303 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023305
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023306 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023307 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023308 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023309
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023310 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023311 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23312 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23313 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023314 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023315
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023316 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023317 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023318 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023319
Jeff Johnson295189b2012-06-20 16:38:30 -070023320
23321 /*Set the output values*/
23322 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023323 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023324
23325 return WDI_STATUS_SUCCESS;
23326}/*WDI_PackPreferredNetworkListNew*/
23327
23328/**
23329 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023330
23331 @param pWDICtx: pointer to the WLAN DAL context
23332 pEventData: pointer to the event information structure
23333
Jeff Johnson295189b2012-06-20 16:38:30 -070023334 @return Result of the function call
23335*/
23336WDI_Status
23337WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023338(
Jeff Johnson295189b2012-06-20 16:38:30 -070023339 WDI_ControlBlockType* pWDICtx,
23340 WDI_EventInfoType* pEventData
23341)
23342{
23343 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23344 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023345 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023346 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023347 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023348
23349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 -------------------------------------------------------------------------*/
23352 if (( NULL == pEventData ) ||
23353 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23354 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23355 {
23356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023358 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023360 }
23361
23362 /*-------------------------------------------------------------------------
23363 Pack the PNO request structure based on version
23364 -------------------------------------------------------------------------*/
23365 if ( pWDICtx->wdiPNOVersion > 0 )
23366 {
23367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023368 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 pWDICtx->wdiPNOVersion);
23370
23371 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23372 &pSendBuffer, &usSendSize);
23373 }
23374 else
23375 {
23376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023377 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 pWDICtx->wdiPNOVersion);
23379
23380 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23381 &pSendBuffer, &usSendSize);
23382 }
23383
23384 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23385 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23386 {
23387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023388 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023390 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023391 }
23392
23393 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023394 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023395
23396 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023397 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023399 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23400 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023401}
23402
23403/**
23404 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023405
23406 @param pWDICtx: pointer to the WLAN DAL context
23407 pEventData: pointer to the event information structure
23408
Jeff Johnson295189b2012-06-20 16:38:30 -070023409 @see
23410 @return Result of the function call
23411*/
23412WDI_Status
23413WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023414(
Jeff Johnson295189b2012-06-20 16:38:30 -070023415 WDI_ControlBlockType* pWDICtx,
23416 WDI_EventInfoType* pEventData
23417)
23418{
23419 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23420 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023421 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023422 wpt_uint16 usDataOffset = 0;
23423 wpt_uint16 usSendSize = 0;
23424 wpt_uint8 ucRssiThreshold;
23425
23426 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023427 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023428 -------------------------------------------------------------------------*/
23429 if (( NULL == pEventData ) ||
23430 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
23431 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
23432 {
23433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 }
23438
23439 /*-----------------------------------------------------------------------
23440 Get message buffer
23441 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023442 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023443 sizeof(ucRssiThreshold),
23444 &pSendBuffer, &usDataOffset, &usSendSize))||
23445 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
23446 {
23447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23448 "Unable to get send buffer in Set PNO req %x %x %x",
23449 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
23450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 }
23453
23454 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
23455
Jeff Johnsone7245742012-09-05 17:12:55 -070023456 wpalMemoryCopy( pSendBuffer+usDataOffset,
23457 &ucRssiThreshold,
23458 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070023459
23460 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023461 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023462
23463 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023464 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023465 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023466 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23467 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023468}
23469
23470
23471/**
23472 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070023473
23474 @param pWDICtx: pointer to the WLAN DAL context
23475 pEventData: pointer to the event information structure
23476
Jeff Johnson295189b2012-06-20 16:38:30 -070023477 @see
23478 @return Result of the function call
23479*/
23480WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023481WDI_PackUpdateScanParamsReq
23482(
23483 WDI_ControlBlockType* pWDICtx,
23484 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23485 wpt_uint8** ppSendBuffer,
23486 wpt_uint16* pSize
23487)
23488{
23489 wpt_uint8* pSendBuffer = NULL;
23490 wpt_uint16 usDataOffset = 0;
23491 wpt_uint16 usSendSize = 0;
23492 tUpdateScanParams updateScanParams = {0};
23493
23494
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023496 "Begin WDI Update Scan Parameters Old Style Params");
23497 /*-----------------------------------------------------------------------
23498 Get message buffer
23499 -----------------------------------------------------------------------*/
23500 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23501 sizeof(updateScanParams),
23502 &pSendBuffer, &usDataOffset, &usSendSize))||
23503 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23504 {
23505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23506 "Unable to get send buffer in Update Scan Params req %x",
23507 pwdiUpdateScanParams);
23508 WDI_ASSERT(0);
23509 return WDI_STATUS_E_FAILURE;
23510 }
23511
23512 //
23513 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23514 //
23515
23516 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23517 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23518
23519 updateScanParams.ucChannelCount =
23520 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23521 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23522 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23523 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
23524
23525 wpalMemoryCopy( updateScanParams.aChannels,
23526 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23527 updateScanParams.ucChannelCount);
23528
23529
23530 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23531 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23532 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23533 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23534 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23535
23536 wpalMemoryCopy( pSendBuffer+usDataOffset,
23537 &updateScanParams,
23538 sizeof(updateScanParams));
23539
23540 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23541 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23542
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023544 "End Update Scan Parameters Old Style");
23545
23546 /*Set the output values*/
23547 *ppSendBuffer = pSendBuffer;
23548 *pSize = usSendSize;
23549
23550 return WDI_STATUS_SUCCESS;
23551}
23552
23553/**
23554 @brief Process Update Scan Params function
23555
23556 @param pWDICtx: pointer to the WLAN DAL context
23557 pEventData: pointer to the event information structure
23558
23559 @see
23560 @return Result of the function call
23561*/
23562WDI_Status
23563WDI_PackUpdateScanParamsReqEx
23564(
23565 WDI_ControlBlockType* pWDICtx,
23566 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23567 wpt_uint8** ppSendBuffer,
23568 wpt_uint16* pSize
23569)
23570{
23571 wpt_uint8* pSendBuffer = NULL;
23572 wpt_uint16 usDataOffset = 0;
23573 wpt_uint16 usSendSize = 0;
23574 tUpdateScanParamsEx updateScanParams = {0};
23575
23576
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023577 /*-----------------------------------------------------------------------
23578 Get message buffer
23579 -----------------------------------------------------------------------*/
23580 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23581 sizeof(updateScanParams),
23582 &pSendBuffer, &usDataOffset, &usSendSize))||
23583 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23584 {
23585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23586 "Unable to get send buffer in Update Scan Params Ex req %x",
23587 pwdiUpdateScanParams);
23588 WDI_ASSERT(0);
23589 return WDI_STATUS_E_FAILURE;
23590 }
23591
23592 //
23593 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23594 //
23595
23596 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23597 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23598
23599 updateScanParams.ucChannelCount =
23600 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23601 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
23602 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23603 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23604
23605 wpalMemoryCopy( updateScanParams.aChannels,
23606 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23607 updateScanParams.ucChannelCount);
23608
23609
23610 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23611 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23612 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23613 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23614 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23615
23616 wpalMemoryCopy( pSendBuffer+usDataOffset,
23617 &updateScanParams,
23618 sizeof(updateScanParams));
23619
23620 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23621 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23622
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023623 /*Set the output values*/
23624 *ppSendBuffer = pSendBuffer;
23625 *pSize = usSendSize;
23626
23627 return WDI_STATUS_SUCCESS;
23628}
23629
23630/**
23631 @brief Process Update Scan Params function
23632
23633 @param pWDICtx: pointer to the WLAN DAL context
23634 pEventData: pointer to the event information structure
23635
23636 @see
23637 @return Result of the function call
23638*/
23639WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023640WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023641(
Jeff Johnson295189b2012-06-20 16:38:30 -070023642 WDI_ControlBlockType* pWDICtx,
23643 WDI_EventInfoType* pEventData
23644)
23645{
23646 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23647 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023648 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023649 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023650 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023651
23652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023653 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023654 -------------------------------------------------------------------------*/
23655 if (( NULL == pEventData ) ||
23656 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23657 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23658 {
23659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023660 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023661 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023663 }
23664
23665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23666 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023667
23668 //
23669 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23670 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023671 if ( pWDICtx->wlanVersion.revision < 1 )
23672 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023673 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023674 &pSendBuffer, &usSendSize);
23675 }
23676 else
23677 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023678 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23679 &pSendBuffer, &usSendSize);
23680 }
23681
23682 if(WDI_STATUS_SUCCESS != wdiStatus)
23683 {
23684 //memory allocation failed
23685 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023686 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023687
Jeff Johnson295189b2012-06-20 16:38:30 -070023688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023689 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023690 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023691 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023692 wdiUpdateScanParamsCb, pEventData->pUserData,
23693 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023694}
23695
23696/**
23697 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023698
23699 @param pWDICtx: pointer to the WLAN DAL context
23700 pEventData: pointer to the event information structure
23701
Jeff Johnson295189b2012-06-20 16:38:30 -070023702 @see
23703 @return Result of the function call
23704*/
23705WDI_Status
23706WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023707(
Jeff Johnson295189b2012-06-20 16:38:30 -070023708 WDI_ControlBlockType* pWDICtx,
23709 WDI_EventInfoType* pEventData
23710)
23711{
23712 WDI_LowLevelIndType wdiInd;
23713 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23714
23715
23716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023717 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023718 -------------------------------------------------------------------------*/
23719 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23720 ( NULL == pEventData->pEventData ))
23721 {
23722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023723 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 }
23727
23728 /*-------------------------------------------------------------------------
23729 Extract indication and send it to UMAC
23730 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023731 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23732 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 sizeof(tPrefNetwFoundParams));
23734
23735 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023736 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023737
23738 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23739
Jeff Johnsone7245742012-09-05 17:12:55 -070023740 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023741 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023742 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023743
Jeff Johnsone7245742012-09-05 17:12:55 -070023744 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23745 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023746 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23747
23748 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23749 prefNetwFoundInd.prefNetwFoundParams.rssi;
23750
23751 // DEBUG
23752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23753 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23754 wdiInd.wdiIndicationType,
23755 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23756 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23757
ltimariu034f7d62013-01-24 18:54:33 -080023758 if ( pWDICtx->wdiLowLevelIndCB )
23759 {
23760 /*Notify UMAC*/
23761 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
23762 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023763
23764 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023765}
23766
23767/**
23768 @brief Process PNO Rsp function (called when a
23769 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023770
23771 @param pWDICtx: pointer to the WLAN DAL context
23772 pEventData: pointer to the event information structure
23773
Jeff Johnson295189b2012-06-20 16:38:30 -070023774 @see
23775 @return Result of the function call
23776*/
23777WDI_Status
23778WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023779(
Jeff Johnson295189b2012-06-20 16:38:30 -070023780 WDI_ControlBlockType* pWDICtx,
23781 WDI_EventInfoType* pEventData
23782)
23783{
23784 WDI_Status wdiStatus;
23785 eHalStatus halStatus;
23786 WDI_PNOScanCb wdiPNOScanCb = NULL;
23787 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23788
23789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 -------------------------------------------------------------------------*/
23792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23793 ( NULL == pEventData->pEventData ))
23794 {
23795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023799 }
23800
23801
Jeff Johnsone7245742012-09-05 17:12:55 -070023802 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023803
23804 /*-------------------------------------------------------------------------
23805 Extract response and send it to UMAC
23806 -------------------------------------------------------------------------*/
23807 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023808 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023809
23810 /*Notify UMAC*/
23811 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23812
Jeff Johnsone7245742012-09-05 17:12:55 -070023813 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023814}/*WDI_ProcessSetPreferredNetworkRsp*/
23815
23816/**
23817 @brief Process RSSI Filter Rsp function (called when a
23818 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023819
23820 @param pWDICtx: pointer to the WLAN DAL context
23821 pEventData: pointer to the event information structure
23822
Jeff Johnson295189b2012-06-20 16:38:30 -070023823 @see
23824 @return Result of the function call
23825*/
23826WDI_Status
23827WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023828(
Jeff Johnson295189b2012-06-20 16:38:30 -070023829 WDI_ControlBlockType* pWDICtx,
23830 WDI_EventInfoType* pEventData
23831)
23832{
23833 WDI_Status wdiStatus;
23834 eHalStatus halStatus;
23835 WDI_RssiFilterCb wdiRssiFilterCb;
23836 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23837
23838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023839 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023840 -------------------------------------------------------------------------*/
23841 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23842 ( NULL == pEventData->pEventData ))
23843 {
23844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023848 }
23849
Jeff Johnsone7245742012-09-05 17:12:55 -070023850 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023851
23852 /*-------------------------------------------------------------------------
23853 Extract response and send it to UMAC
23854 -------------------------------------------------------------------------*/
23855 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023856 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023857
23858 /*Notify UMAC*/
23859 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23860
Jeff Johnsone7245742012-09-05 17:12:55 -070023861 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023862}/*WDI_ProcessSetRssiFilterRsp*/
23863
23864/**
23865 @brief Process Update Scan Params Rsp function (called when a
23866 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023867
23868 @param pWDICtx: pointer to the WLAN DAL context
23869 pEventData: pointer to the event information structure
23870
Jeff Johnson295189b2012-06-20 16:38:30 -070023871 @see
23872 @return Result of the function call
23873*/
23874WDI_Status
23875WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023876(
Jeff Johnson295189b2012-06-20 16:38:30 -070023877 WDI_ControlBlockType* pWDICtx,
23878 WDI_EventInfoType* pEventData
23879)
23880{
23881 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023882 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023883 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023884 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23886
23887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023889 -------------------------------------------------------------------------*/
23890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23891 ( NULL == pEventData->pEventData ))
23892 {
23893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023897 }
23898
23899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023900 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023901
Jeff Johnsone7245742012-09-05 17:12:55 -070023902 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023903
23904 /*-------------------------------------------------------------------------
23905 Extract response and send it to UMAC
23906 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023907 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23908 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023909 sizeof(halUpdScanParams.status));
23910
23911 uStatus = halUpdScanParams.status;
23912
23913 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023914 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023915
23916 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023917 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023918
Jeff Johnsone7245742012-09-05 17:12:55 -070023919 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023920
23921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023922 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023923 halUpdScanParams.status);
23924
23925 /*Notify UMAC*/
23926 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23927
Jeff Johnsone7245742012-09-05 17:12:55 -070023928 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023929}
23930#endif // FEATURE_WLAN_SCAN_PNO
23931
23932#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023933WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023934WDI_8023MulticastListReq
23935(
23936 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23937 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23938 void* pUserData
23939)
23940{
23941 WDI_EventInfoType wdiEventData;
23942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23943
23944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023945 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023946
23947 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023948 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023949 ------------------------------------------------------------------------*/
23950 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23951 {
23952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23953 "WDI API call before module is initialized - Fail request");
23954
Jeff Johnsone7245742012-09-05 17:12:55 -070023955 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 }
23957
23958 /*------------------------------------------------------------------------
23959 Fill in Event data and post to the Main FSM
23960 ------------------------------------------------------------------------*/
23961 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023962 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023963 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023964 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023965 wdiEventData.pUserData = pUserData;
23966
23967 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23968}
23969
Jeff Johnsone7245742012-09-05 17:12:55 -070023970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023971WDI_ReceiveFilterSetFilterReq
23972(
23973 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23974 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23975 void* pUserData
23976)
23977{
23978 WDI_EventInfoType wdiEventData;
23979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23980
23981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023982 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023983
23984 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023985 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 ------------------------------------------------------------------------*/
23987 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23988 {
23989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23990 "WDI API call before module is initialized - Fail request");
23991
Jeff Johnsone7245742012-09-05 17:12:55 -070023992 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023993 }
23994
23995 /*------------------------------------------------------------------------
23996 Fill in Event data and post to the Main FSM
23997 ------------------------------------------------------------------------*/
23998 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023999 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
24000 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070024001 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24002 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024003 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024004 wdiEventData.pUserData = pUserData;
24005
24006
24007 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24008}
24009
Jeff Johnsone7245742012-09-05 17:12:55 -070024010WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024011WDI_FilterMatchCountReq
24012(
24013 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
24014 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
24015 void* pUserData
24016)
24017{
24018 WDI_EventInfoType wdiEventData;
24019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24020
24021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024022 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024023
24024 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024025 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024026 ------------------------------------------------------------------------*/
24027 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24028 {
24029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24030 "WDI API call before module is initialized - Fail request");
24031
Jeff Johnsone7245742012-09-05 17:12:55 -070024032 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024033 }
24034
24035 /*------------------------------------------------------------------------
24036 Fill in Event data and post to the Main FSM
24037 ------------------------------------------------------------------------*/
24038 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024039 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024041 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024042 wdiEventData.pUserData = pUserData;
24043
24044
24045 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24046}
24047
Jeff Johnsone7245742012-09-05 17:12:55 -070024048WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024049WDI_ReceiveFilterClearFilterReq
24050(
24051 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
24052 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
24053 void* pUserData
24054)
24055{
24056 WDI_EventInfoType wdiEventData;
24057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24058
24059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024060 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024061
24062 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024063 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024064 ------------------------------------------------------------------------*/
24065 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24066 {
24067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24068 "WDI API call before module is initialized - Fail request");
24069
Jeff Johnsone7245742012-09-05 17:12:55 -070024070 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024071 }
24072
24073 /*------------------------------------------------------------------------
24074 Fill in Event data and post to the Main FSM
24075 ------------------------------------------------------------------------*/
24076 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024077 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024078 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024079 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024080 wdiEventData.pUserData = pUserData;
24081
24082
24083 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24084}
24085
24086/**
24087 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024088
24089 @param pWDICtx: pointer to the WLAN DAL context
24090 pEventData: pointer to the event information structure
24091
Jeff Johnson295189b2012-06-20 16:38:30 -070024092 @see
24093 @return Result of the function call
24094*/
24095WDI_Status
24096WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024097(
Jeff Johnson295189b2012-06-20 16:38:30 -070024098 WDI_ControlBlockType* pWDICtx,
24099 WDI_EventInfoType* pEventData
24100)
24101{
24102 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
24103 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024104 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 wpt_uint16 usDataOffset = 0;
24106 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024107 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024108 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024109 wpt_uint8 ucCurrentBSSSesIdx = 0;
24110 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024111
24112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024113 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024114
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024115 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
24116 if( NULL == pRcvFltMcAddrListType )
24117 {
24118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24119 "Failed to alloc in WDI_Process8023MulticastListReq");
24120 return WDI_STATUS_E_FAILURE;
24121 }
24122
Jeff Johnson295189b2012-06-20 16:38:30 -070024123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024124 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024125 -------------------------------------------------------------------------*/
24126 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024127 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024128 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024129 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024130 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
24131 {
24132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024133 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024134 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024136 return WDI_STATUS_E_FAILURE;
24137 }
24138
24139 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24140 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
24141 &pBSSSes);
24142 if ( NULL == pBSSSes )
24143 {
24144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024145 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024146 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024147 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024148 }
24149
24150 /*-----------------------------------------------------------------------
24151 Get message buffer
24152 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024153 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24154 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024155 sizeof(tHalRcvFltMcAddrListType),
24156 &pSendBuffer, &usDataOffset, &usSendSize))||
24157 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
24158 {
24159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24160 "Unable to get send buffer in "
24161 "WDI_Process8023MulticastListReq() %x %x %x",
24162 pEventData, pwdiFltPktSetMcListReqParamsType,
24163 wdi8023MulticastListCb);
24164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024166 }
24167
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024168 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070024169 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024170 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024171 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024172 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
24174 sizeof(tSirMacAddr));
24175 }
24176
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024177 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024178 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024179 pRcvFltMcAddrListType,
24180 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070024181
24182 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024183 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024184
24185
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024186 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024188 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024189 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024190 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024191 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024192 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024193}
24194
24195/**
24196 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024197
24198 @param pWDICtx: pointer to the WLAN DAL context
24199 pEventData: pointer to the event information structure
24200
Jeff Johnson295189b2012-06-20 16:38:30 -070024201 @see
24202 @return Result of the function call
24203*/
24204WDI_Status
24205WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024206(
Jeff Johnson295189b2012-06-20 16:38:30 -070024207 WDI_ControlBlockType* pWDICtx,
24208 WDI_EventInfoType* pEventData
24209)
24210{
24211 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
24212 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024213 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024214 wpt_uint16 usDataOffset = 0;
24215 wpt_uint16 usSendSize = 0;
24216 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024217 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024218 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024219 wpt_uint8 ucCurrentBSSSesIdx = 0;
24220 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024221 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
24222 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024223
24224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024225 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024226
24227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024229 -------------------------------------------------------------------------*/
24230 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024231 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070024232 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024233 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024234 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
24235 {
24236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024239 return WDI_STATUS_E_FAILURE;
24240 }
24241
24242 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24243 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
24244 &pBSSSes);
24245 if ( NULL == pBSSSes )
24246 {
24247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024248 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024250 }
24251
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024252 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
24253 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024254
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024255 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
24256 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24257 * sizeof(tHalSessionizedRcvPktFilterCfgType));
24258
24259 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
24260 usSessRcvPktFilterCfgSize);
24261
24262 if(NULL == pSessRcvPktFilterCfg)
24263 {
24264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24265 "%s: Failed to allocate memory for "
24266 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024267 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024268 WDI_ASSERT(0);
24269 return WDI_STATUS_E_FAILURE;
24270 }
24271
24272 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
24273
24274 /*-----------------------------------------------------------------------
24275 Get message buffer
24276 -----------------------------------------------------------------------*/
24277
24278 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
24279 usSessRcvPktFilterCfgSize,
24280 &pSendBuffer, &usDataOffset, &usSendSize))||
24281 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
24282 {
24283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24284 "Unable to get send buffer in "
24285 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24286 pEventData, pwdiSetRcvPktFilterReqInfo,
24287 wdiReceiveFilterSetFilterCb);
24288 WDI_ASSERT(0);
24289 wpalMemoryFree(pSessRcvPktFilterCfg);
24290 return WDI_STATUS_E_FAILURE;
24291 }
24292
24293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24294 "UsData Off %d UsSend %d cfg %d",usDataOffset,
24295 usSendSize,pSessRcvPktFilterCfg);
24296
24297 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24298 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24299 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24300 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
24301
24302 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
24303
24304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24305 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
24306 pSessRcvPktFilterCfg->filterType);
24307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24308 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
24309 pSessRcvPktFilterCfg->coleasceTime);
24310
24311 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
24312 {
24313 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
24314 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24315 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
24316 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24317 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
24318 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24319 pSessRcvPktFilterCfg->paramsData[i].dataLength =
24320 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
24321
24322 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
24323 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24324 8);
24325 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
24326 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24327 8);
24328
24329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24330 "Out:Proto %d Comp Flag %d \n",
24331 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
24332 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
24333
24334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24335 "Data Offset %d Data Len %d\n",
24336 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
24337 pSessRcvPktFilterCfg->paramsData[i].dataLength);
24338
24339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24340 "CData: %d:%d:%d:%d:%d:%d\n",
24341 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
24342 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
24343 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
24344 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
24345 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
24346 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
24347
24348 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24349 "MData: %d:%d:%d:%d:%d:%d\n",
24350 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
24351 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
24352 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
24353 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
24354 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
24355 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
24356 }
24357
24358 wpalMemoryCopy( pSendBuffer+usDataOffset,
24359 pSessRcvPktFilterCfg,
24360 usSessRcvPktFilterCfgSize);
24361
24362
24363 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24364 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
24365
24366 wpalMemoryFree(pSessRcvPktFilterCfg);
24367
24368 }
24369 /*If SLM_SESSIONIZATION is not supported then do this */
24370 else
24371 {
24372 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
24373 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24374 * sizeof(tHalRcvPktFilterParams));
24375
24376 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 usRcvPktFilterCfgSize);
24378
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024379 if(NULL == pRcvPktFilterCfg)
24380 {
24381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24382 "%s: Failed to allocate memory for "
24383 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024384 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024385 WDI_ASSERT(0);
24386 return WDI_STATUS_E_FAILURE;
24387 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024388
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024389 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024390
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024391 /*-----------------------------------------------------------------------
24392 Get message buffer
24393 -----------------------------------------------------------------------*/
24394 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024395 usRcvPktFilterCfgSize,
24396 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024397 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
24398 {
24399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 "Unable to get send buffer in "
24401 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24402 pEventData, pwdiSetRcvPktFilterReqInfo,
24403 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024404 WDI_ASSERT(0);
24405 wpalMemoryFree(pRcvPktFilterCfg);
24406 return WDI_STATUS_E_FAILURE;
24407 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024408
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024410 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070024411 usSendSize,usRcvPktFilterCfgSize);
24412
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024413 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24414 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24415 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24416 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070024417
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024419 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024420 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024422 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070024423 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070024424
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024425 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
24426 {
24427 pRcvPktFilterCfg->paramsData[i].protocolLayer =
24428 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24429 pRcvPktFilterCfg->paramsData[i].cmpFlag =
24430 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24431 pRcvPktFilterCfg->paramsData[i].dataOffset =
24432 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24433 pRcvPktFilterCfg->paramsData[i].dataLength =
24434 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070024435
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024436 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024437 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24438 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024439 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070024440 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24441 8);
24442
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070024445 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070024446 pRcvPktFilterCfg->paramsData[i].cmpFlag);
24447
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24449 "Data Offset %d Data Len %d\n",
24450 pRcvPktFilterCfg->paramsData[i].dataOffset,
24451 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024452
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24454 "CData: %d:%d:%d:%d:%d:%d\n",
24455 pRcvPktFilterCfg->paramsData[i].compareData[0],
24456 pRcvPktFilterCfg->paramsData[i].compareData[1],
24457 pRcvPktFilterCfg->paramsData[i].compareData[2],
24458 pRcvPktFilterCfg->paramsData[i].compareData[3],
24459 pRcvPktFilterCfg->paramsData[i].compareData[4],
24460 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070024461
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24463 "MData: %d:%d:%d:%d:%d:%d\n",
24464 pRcvPktFilterCfg->paramsData[i].dataMask[0],
24465 pRcvPktFilterCfg->paramsData[i].dataMask[1],
24466 pRcvPktFilterCfg->paramsData[i].dataMask[2],
24467 pRcvPktFilterCfg->paramsData[i].dataMask[3],
24468 pRcvPktFilterCfg->paramsData[i].dataMask[4],
24469 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
24470 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024471
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024472 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070024473 pRcvPktFilterCfg,
24474 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024475
24476
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024477 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24478 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024479
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024481 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024482 wpalMemoryFree(pRcvPktFilterCfg);
24483 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024485 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024486 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024487 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024488 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024489 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024490}
24491
24492/**
24493 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024494
24495 @param pWDICtx: pointer to the WLAN DAL context
24496 pEventData: pointer to the event information structure
24497
Jeff Johnson295189b2012-06-20 16:38:30 -070024498 @see
24499 @return Result of the function call
24500*/
24501WDI_Status
24502WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024503(
Jeff Johnson295189b2012-06-20 16:38:30 -070024504 WDI_ControlBlockType* pWDICtx,
24505 WDI_EventInfoType* pEventData
24506)
24507{
24508 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
24509 NULL;
24510 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
24511 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024512 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024513 wpt_uint16 usDataOffset = 0;
24514 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024515 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
24516 wpt_uint8 ucCurrentBSSSesIdx = 0;
24517 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024518
24519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024520 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024521
24522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024524 -------------------------------------------------------------------------*/
24525 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024526 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024527 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024528 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024529 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
24530 {
24531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024535 }
24536
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024537 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24538 pwdiRcvFltPktMatchCntReqParamsType->bssId,
24539 &pBSSSes);
24540 if ( NULL == pBSSSes )
24541 {
24542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024543 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024544 return WDI_STATUS_E_FAILURE;
24545 }
24546
Jeff Johnson295189b2012-06-20 16:38:30 -070024547 /*-----------------------------------------------------------------------
24548 Get message buffer
24549 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024550 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24551 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024552 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024553 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024554 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070024555 {
24556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24557 "Unable to get send buffer in "
24558 "WDI_ProcessFilterMatchCountReq() %x %x %x",
24559 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
24560 wdiFilterMatchCountCb);
24561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024563 }
24564
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024565 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
24566 wpalMemoryCopy( pSendBuffer+usDataOffset,
24567 &rcvFltPktMatchCntReqParam,
24568 sizeof(rcvFltPktMatchCntReqParam));
24569
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 //
24571 // Don't need to fill send buffer other than header
24572 //
24573 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024574 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024575
24576
24577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024578 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024579 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024580 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24581 wdiFilterMatchCountCb,
24582 pEventData->pUserData,
24583 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024584}
24585
24586/**
24587 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024588
24589 @param pWDICtx: pointer to the WLAN DAL context
24590 pEventData: pointer to the event information structure
24591
Jeff Johnson295189b2012-06-20 16:38:30 -070024592 @see
24593 @return Result of the function call
24594*/
24595WDI_Status
24596WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024597(
Jeff Johnson295189b2012-06-20 16:38:30 -070024598 WDI_ControlBlockType* pWDICtx,
24599 WDI_EventInfoType* pEventData
24600)
Jeff Johnsone7245742012-09-05 17:12:55 -070024601{
Jeff Johnson295189b2012-06-20 16:38:30 -070024602 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24603 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024604 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024605 wpt_uint16 usDataOffset = 0;
24606 wpt_uint16 usSendSize = 0;
24607 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024608 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024609 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024610
24611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024612 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024613
24614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024616 -------------------------------------------------------------------------*/
24617 if (( NULL == pEventData ) ||
24618 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24619 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024620 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024621 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24622 {
24623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024624 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024625 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024626 return WDI_STATUS_E_FAILURE;
24627 }
24628
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024629 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024630 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24631 &pBSSSes);
24632 if ( NULL == pBSSSes )
24633 {
24634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024635 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024637 }
24638
24639 /*-----------------------------------------------------------------------
24640 Get message buffer
24641 -----------------------------------------------------------------------*/
24642 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024643 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024644 sizeof(tHalRcvFltPktClearParam),
24645 &pSendBuffer, &usDataOffset, &usSendSize))||
24646 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24647 {
24648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24649 "Unable to get send buffer in "
24650 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24651 pEventData, pwdiRcvFltPktClearReqParamsType,
24652 wdiRcvFltPktClearFilterCb);
24653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024655 }
24656
24657
24658 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024659 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024660 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024661 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024662
Jeff Johnsone7245742012-09-05 17:12:55 -070024663 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24664 wpalMemoryCopy( pSendBuffer+usDataOffset,
24665 &rcvFltPktClearParam,
24666 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024667
24668 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024669 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024670
24671
24672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024673 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024674 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024675 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024676 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024677 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024678}
24679
24680/**
24681 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024682
24683 @param pWDICtx: pointer to the WLAN DAL context
24684 pEventData: pointer to the event information structure
24685
Jeff Johnson295189b2012-06-20 16:38:30 -070024686 @see
24687 @return Result of the function call
24688*/
24689WDI_Status
24690WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024691(
Jeff Johnson295189b2012-06-20 16:38:30 -070024692 WDI_ControlBlockType* pWDICtx,
24693 WDI_EventInfoType* pEventData
24694)
24695{
Jeff Johnson295189b2012-06-20 16:38:30 -070024696 eHalStatus halStatus;
24697 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024698 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24699 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024700 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24701
24702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024703 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024704
24705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024706 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024707 -------------------------------------------------------------------------*/
24708 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24709 ( NULL == pEventData->pEventData ))
24710 {
24711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024712 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024713 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024714 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024715 }
24716
Jeff Johnsone7245742012-09-05 17:12:55 -070024717 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024718
24719 /*-------------------------------------------------------------------------
24720 Extract response and send it to UMAC
24721 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024722 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24723 {
24724 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24725 pEventData->pEventData,
24726 sizeof(halRcvFltPktSetMcListRsp));
24727
24728 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24729 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24730 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24731 halRcvFltPktSetMcListRsp.bssIdx;
24732 }
24733 else
24734 {
24735 halStatus = *((eHalStatus*)pEventData->pEventData);
24736 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24737 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024738
24739 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024740 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024741
Jeff Johnsone7245742012-09-05 17:12:55 -070024742 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024743}
24744
24745/**
24746 @brief Process Set Rsp function (called when a
24747 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024748
24749 @param pWDICtx: pointer to the WLAN DAL context
24750 pEventData: pointer to the event information structure
24751
Jeff Johnson295189b2012-06-20 16:38:30 -070024752 @see
24753 @return Result of the function call
24754*/
24755WDI_Status
24756WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024757(
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 WDI_ControlBlockType* pWDICtx,
24759 WDI_EventInfoType* pEventData
24760)
24761{
Jeff Johnson295189b2012-06-20 16:38:30 -070024762 eHalStatus halStatus;
24763 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024764 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24765 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024766 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24767
24768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024769 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024770
24771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024773 -------------------------------------------------------------------------*/
24774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24775 ( NULL == pEventData->pEventData ))
24776 {
24777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024781 }
24782
24783 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024784 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024785
24786 /*-------------------------------------------------------------------------
24787 Extract response and send it to UMAC
24788 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024789 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24790 {
24791 wpalMemoryCopy( &halSetPktFilterRspParams,
24792 pEventData->pEventData,
24793 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024794
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024795 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24796 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24797 }
24798 else
24799 {
24800 halStatus = *((eHalStatus*)pEventData->pEventData);
24801 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24802 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024803 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024804 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024805
Jeff Johnsone7245742012-09-05 17:12:55 -070024806 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024807}
24808
24809/**
24810 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024811
24812 @param pWDICtx: pointer to the WLAN DAL context
24813 pEventData: pointer to the event information structure
24814
Jeff Johnson295189b2012-06-20 16:38:30 -070024815 @see
24816 @return Result of the function call
24817*/
24818WDI_Status
24819WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024820(
Jeff Johnson295189b2012-06-20 16:38:30 -070024821 WDI_ControlBlockType* pWDICtx,
24822 WDI_EventInfoType* pEventData
24823)
24824{
Jeff Johnson295189b2012-06-20 16:38:30 -070024825 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024826 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024827 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24828 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024829
24830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24831
24832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024833 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024834
24835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024837 -------------------------------------------------------------------------*/
24838 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24839 ( NULL == pEventData->pEventData ))
24840 {
24841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024842 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024843 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024845 }
24846
Jeff Johnsone7245742012-09-05 17:12:55 -070024847 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024848
24849 /*-------------------------------------------------------------------------
24850 Extract response and send it to UMAC
24851 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024852 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24853 {
24854 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24855 pEventData->pEventData,
24856 sizeof(halRcvFltrPktMatachRsp));
24857
24858 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24859 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24860 }
24861 else
24862 {
24863 halStatus = *((eHalStatus*)pEventData->pEventData);
24864 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24865 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024866
24867 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024868 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024869
Jeff Johnsone7245742012-09-05 17:12:55 -070024870 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024871}
24872
24873/**
24874 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024875
24876 @param pWDICtx: pointer to the WLAN DAL context
24877 pEventData: pointer to the event information structure
24878
Jeff Johnson295189b2012-06-20 16:38:30 -070024879 @see
24880 @return Result of the function call
24881*/
24882WDI_Status
24883WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024884(
Jeff Johnson295189b2012-06-20 16:38:30 -070024885 WDI_ControlBlockType* pWDICtx,
24886 WDI_EventInfoType* pEventData
24887)
24888{
Jeff Johnson295189b2012-06-20 16:38:30 -070024889 eHalStatus halStatus;
24890 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024891 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24892 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24894
24895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024896 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024897
24898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024899 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024900 -------------------------------------------------------------------------*/
24901 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24902 ( NULL == pEventData->pEventData ))
24903 {
24904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024905 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024906 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024907 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024908 }
24909
24910 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024911 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024912
24913 /*-------------------------------------------------------------------------
24914 Extract response and send it to UMAC
24915 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024916 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24917 {
24918 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24919 pEventData->pEventData,
24920 sizeof(halRcvFltPktClearRspMsg));
24921
24922 wdiRcvFltPktClearRspParamsType.wdiStatus =
24923 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24924 wdiRcvFltPktClearRspParamsType.bssIdx =
24925 halRcvFltPktClearRspMsg.bssIdx;
24926 }
24927 else
24928 {
24929 halStatus = *((eHalStatus*)pEventData->pEventData);
24930 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24931 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024932
24933 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024934 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024935
Jeff Johnsone7245742012-09-05 17:12:55 -070024936 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024937}
24938#endif // WLAN_FEATURE_PACKET_FILTERING
24939
24940/**
24941 @brief Process Shutdown Rsp function
24942 There is no shutdown response comming from HAL
24943 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024944
Jeff Johnson295189b2012-06-20 16:38:30 -070024945 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024946 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024947
24948 @see
24949 @return Result of the function call
24950*/
24951WDI_Status
24952WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024953(
Jeff Johnson295189b2012-06-20 16:38:30 -070024954 WDI_ControlBlockType* pWDICtx,
24955 WDI_EventInfoType* pEventData
24956)
24957{
24958 /*There is no shutdown response comming from HAL - function just kept for
24959 simmetry */
24960 WDI_ASSERT(0);
24961 return WDI_STATUS_SUCCESS;
24962}/*WDI_ProcessShutdownRsp*/
24963
24964/**
24965 @brief WDI_SetPowerParamsReq
24966
Jeff Johnsone7245742012-09-05 17:12:55 -070024967 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024968 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024969
Jeff Johnson295189b2012-06-20 16:38:30 -070024970 wdiPowerParamsCb: callback for passing back the response
24971 of the Set Power Params operation received from the
24972 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024973
Jeff Johnson295189b2012-06-20 16:38:30 -070024974 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024975 callback
24976
Jeff Johnson295189b2012-06-20 16:38:30 -070024977 @return Result of the function call
24978*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024979WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024980WDI_SetPowerParamsReq
24981(
24982 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24983 WDI_SetPowerParamsCb wdiPowerParamsCb,
24984 void* pUserData
24985)
24986{
24987 WDI_EventInfoType wdiEventData;
24988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24989
24990 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024991 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024992 ------------------------------------------------------------------------*/
24993 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24994 {
24995 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24996 "WDI API call before module is initialized - Fail request");
24997
Jeff Johnsone7245742012-09-05 17:12:55 -070024998 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024999 }
25000
25001 /*------------------------------------------------------------------------
25002 Fill in Event data and post to the Main FSM
25003 ------------------------------------------------------------------------*/
25004 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025005 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025006 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025007 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025008 wdiEventData.pUserData = pUserData;
25009
25010 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25011}/*WDI_SetPowerParamsReq*/
25012
25013/**
25014 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025015
25016 @param pWDICtx: pointer to the WLAN DAL context
25017 pEventData: pointer to the event information structure
25018
Jeff Johnson295189b2012-06-20 16:38:30 -070025019 @see
25020 @return Result of the function call
25021*/
25022WDI_Status
25023WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025024(
Jeff Johnson295189b2012-06-20 16:38:30 -070025025 WDI_ControlBlockType* pWDICtx,
25026 WDI_EventInfoType* pEventData
25027)
25028{
25029 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
25030 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025031 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025032 wpt_uint16 usDataOffset = 0;
25033 wpt_uint16 usSendSize = 0;
25034 tSetPowerParamsType powerParams;
25035
25036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025037 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025038 -------------------------------------------------------------------------*/
25039 if (( NULL == pEventData ) ||
25040 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
25041 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
25042 {
25043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025044 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025047 }
25048
25049 /*-----------------------------------------------------------------------
25050 Get message buffer
25051 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025052 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025053 sizeof(powerParams),
25054 &pSendBuffer, &usDataOffset, &usSendSize))||
25055 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
25056 {
25057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25058 "Unable to get send buffer in Set PNO req %x %x %x",
25059 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
25060 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025061 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025062 }
25063
25064 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070025065 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070025066 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
25067
25068 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025069 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070025070 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
25071
25072 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025073 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070025074 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
25075
25076 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070025077 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070025078 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
25079
25080 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070025081 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070025082 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
25083
25084 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025085 powerParams.uBETInterval =
25086 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070025087
Jeff Johnsone7245742012-09-05 17:12:55 -070025088
25089 wpalMemoryCopy( pSendBuffer+usDataOffset,
25090 &powerParams,
25091 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025092
25093 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025094 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025095
25096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025097 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025098 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025099 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25100 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025101}
25102
25103/**
25104 @brief Process Power Params Rsp function (called when a
25105 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025106
25107 @param pWDICtx: pointer to the WLAN DAL context
25108 pEventData: pointer to the event information structure
25109
Jeff Johnson295189b2012-06-20 16:38:30 -070025110 @see
25111 @return Result of the function call
25112*/
25113WDI_Status
25114WDI_ProcessSetPowerParamsRsp
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_Status wdiStatus;
25121 eHalStatus halStatus;
25122 WDI_SetPowerParamsCb wdiPowerParamsCb;
25123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25124
25125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025127 -------------------------------------------------------------------------*/
25128 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25129 ( NULL == pEventData->pEventData ))
25130 {
25131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025135 }
25136
Jeff Johnsone7245742012-09-05 17:12:55 -070025137 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025138
25139 /*-------------------------------------------------------------------------
25140 Extract response and send it to UMAC
25141 -------------------------------------------------------------------------*/
25142 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025143 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025144
25145 /*Notify UMAC*/
25146 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25147
Jeff Johnsone7245742012-09-05 17:12:55 -070025148 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025149}/*WDI_ProcessSetPowerParamsRsp*/
25150
25151#ifdef WLAN_FEATURE_GTK_OFFLOAD
25152/**
25153 @brief WDI_GTKOffloadReq will be called when the upper MAC
25154 wants to set GTK Rekey Counter while in power save. Upon
25155 the call of this API the WLAN DAL will pack and send a
25156 HAL GTK offload request message to the lower RIVA
25157 sub-system if DAL is in state STARTED.
25158
25159 In state BUSY this request will be queued. Request won't
25160 be allowed in any other state.
25161
25162 WDI_PostAssocReq must have been called.
25163
25164 @param pwdiGtkOffloadParams: the GTK offload as specified
25165 by the Device Interface
25166
25167 wdiGtkOffloadCb: callback for passing back the response
25168 of the GTK offload operation received from the device
25169
25170 pUserData: user data will be passed back with the
25171 callback
25172
25173 @see WDI_PostAssocReq
25174 @return Result of the function call
25175*/
25176WDI_Status
25177WDI_GTKOffloadReq
25178(
25179 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
25180 WDI_GtkOffloadCb wdiGtkOffloadCb,
25181 void* pUserData
25182)
25183{
25184 WDI_EventInfoType wdiEventData = {0};
25185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25186
25187 /*------------------------------------------------------------------------
25188 Sanity Check
25189 ------------------------------------------------------------------------*/
25190 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25191 {
25192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25193 "WDI API call before module is initialized - Fail request");
25194
25195 return WDI_STATUS_E_NOT_ALLOWED;
25196 }
25197
25198 /*------------------------------------------------------------------------
25199 Fill in Event data and post to the Main FSM
25200 ------------------------------------------------------------------------*/
25201 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
25202 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070025203 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070025204 wdiEventData.pCBfnc = wdiGtkOffloadCb;
25205 wdiEventData.pUserData = pUserData;
25206
25207 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25208}
25209
25210
25211/**
25212 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
25213 MAC wants to get GTK Rekey Counter while in power save.
25214 Upon the call of this API the WLAN DAL will pack and
25215 send a HAL GTK offload request message to the lower RIVA
25216 sub-system if DAL is in state STARTED.
25217
25218 In state BUSY this request will be queued. Request won't
25219 be allowed in any other state.
25220
25221 WDI_PostAssocReq must have been called.
25222
25223 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
25224 Information Message as specified by the
25225 Device Interface
25226
25227 wdiGtkOffloadGetInfoCb: callback for passing back the
25228 response of the GTK offload operation received from the
25229 device
25230
25231 pUserData: user data will be passed back with the
25232 callback
25233
25234 @see WDI_PostAssocReq
25235 @return Result of the function call
25236*/
25237WDI_Status
25238WDI_GTKOffloadGetInfoReq
25239(
25240 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
25241 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
25242 void* pUserData
25243)
25244{
25245 WDI_EventInfoType wdiEventData = {0};
25246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25247
25248 /*------------------------------------------------------------------------
25249 Sanity Check
25250 ------------------------------------------------------------------------*/
25251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25252 {
25253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25254 "WDI API call before module is initialized - Fail request");
25255
25256 return WDI_STATUS_E_NOT_ALLOWED;
25257 }
25258
25259 /*------------------------------------------------------------------------
25260 Fill in Event data and post to the Main FSM
25261 ------------------------------------------------------------------------*/
25262 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
25263 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
25264 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
25265 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
25266 wdiEventData.pUserData = pUserData;
25267
25268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25269}
25270
25271
25272/**
25273 @brief Process set GTK Offload Request function
25274
25275 @param pWDICtx: pointer to the WLAN DAL context
25276 pEventData: pointer to the event information structure
25277
25278 @see
25279 @return Result of the function call
25280*/
25281WDI_Status
25282WDI_ProcessGTKOffloadReq
25283(
25284 WDI_ControlBlockType* pWDICtx,
25285 WDI_EventInfoType* pEventData
25286)
25287{
25288 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
25289 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
25290 wpt_uint8* pSendBuffer = NULL;
25291 wpt_uint16 usDataOffset = 0;
25292 wpt_uint16 usSendSize = 0;
25293 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025294 wpt_uint8 ucCurrentSessionId = 0;
25295 WDI_BSSSessionType* pBSSSes = NULL;
25296
Jeff Johnson295189b2012-06-20 16:38:30 -070025297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25298
25299 /*-------------------------------------------------------------------------
25300 Sanity check
25301 -------------------------------------------------------------------------*/
25302 if (( NULL == pEventData ) ||
25303 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
25304 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
25305 {
25306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025308 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025309 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025310 }
25311
25312 /*-----------------------------------------------------------------------
25313 Get message buffer
25314 -----------------------------------------------------------------------*/
25315 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
25316 sizeof(gtkOffloadReqParams),
25317 &pSendBuffer, &usDataOffset, &usSendSize))||
25318 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
25319 {
25320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25321 "Unable to get send buffer in GTK offload req %x %x %x",
25322 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
25323 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025324 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025325 }
25326
25327 //
25328 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
25329 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025330 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25331 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
25332 &pBSSSes);
25333 if ( NULL == pBSSSes )
25334 {
25335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025336 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025337 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025338 }
25339
25340 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
25341
Jeff Johnson295189b2012-06-20 16:38:30 -070025342 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
25343 // Copy KCK
25344 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
25345 // Copy KEK
25346 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
25347 // Copy KeyReplayCounter
25348 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
25349
25350 wpalMemoryCopy( pSendBuffer+usDataOffset,
25351 &gtkOffloadReqParams,
25352 sizeof(gtkOffloadReqParams));
25353
25354 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
25355 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
25356
25357 /*-------------------------------------------------------------------------
25358 Send Get STA Request to HAL
25359 -------------------------------------------------------------------------*/
25360 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25361 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025362
25363fail:
25364 // Release the message buffer so we don't leak
25365 wpalMemoryFree(pSendBuffer);
25366
25367failRequest:
25368 //WDA should have failure check to avoid the memory leak
25369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025370}
25371
25372
25373/**
25374 @brief Process GTK Offload Get Information Request function
25375
25376 @param pWDICtx: pointer to the WLAN DAL context
25377 pEventData: pointer to the event information structure
25378
25379 @see
25380 @return Result of the function call
25381*/
25382WDI_Status
25383WDI_ProcessGTKOffloadGetInfoReq
25384(
25385 WDI_ControlBlockType* pWDICtx,
25386 WDI_EventInfoType* pEventData
25387)
25388{
25389 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
25390 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
25391 wpt_uint8* pSendBuffer = NULL;
25392 wpt_uint16 usDataOffset = 0;
25393 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025394 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
25395 wpt_uint8 ucCurrentSessionId = 0;
25396 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025397
25398 /*-------------------------------------------------------------------------
25399 Sanity check
25400 -------------------------------------------------------------------------*/
25401 if (( NULL == pEventData ) ||
25402 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
25403 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
25404 {
25405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025406 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025407 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025408 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025409 }
25410
25411 /*-----------------------------------------------------------------------
25412 Get message buffer
25413 -----------------------------------------------------------------------*/
25414 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025415 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025416 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025417 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070025418 {
25419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25420 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
25421 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
25422 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025423 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025424 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025425 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25426 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
25427 &pBSSSes);
25428 if ( NULL == pBSSSes )
25429 {
25430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025431 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025432 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025433 }
25434 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025435
25436 //
25437 // Don't need to fill send buffer other than header
25438 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025439 wpalMemoryCopy( pSendBuffer+usDataOffset,
25440 &halGtkOffloadGetInfoReqParams,
25441 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025442
25443 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
25444 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
25445
25446 /*-------------------------------------------------------------------------
25447 Send Get STA Request to HAL
25448 -------------------------------------------------------------------------*/
25449 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25450 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025451fail:
25452 // Release the message buffer so we don't leak
25453 wpalMemoryFree(pSendBuffer);
25454
25455failRequest:
25456 //WDA should have failure check to avoid the memory leak
25457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025458}
25459
25460/**
25461 @brief Process host offload Rsp function (called when a
25462 response is being received over the bus from HAL)
25463
25464 @param pWDICtx: pointer to the WLAN DAL context
25465 pEventData: pointer to the event information structure
25466
25467 @see
25468 @return Result of the function call
25469*/
25470WDI_Status
25471WDI_ProcessGtkOffloadRsp
25472(
25473 WDI_ControlBlockType* pWDICtx,
25474 WDI_EventInfoType* pEventData
25475)
25476{
Jeff Johnson295189b2012-06-20 16:38:30 -070025477 eHalStatus halStatus;
25478 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025479 tHalGtkOffloadRspParams halGtkOffloadRspParams;
25480 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25482
25483 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
25484
25485 /*-------------------------------------------------------------------------
25486 Sanity check
25487 -------------------------------------------------------------------------*/
25488 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25489 ( NULL == pEventData->pEventData))
25490 {
25491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025492 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025493 WDI_ASSERT(0);
25494 return WDI_STATUS_E_FAILURE;
25495 }
25496
25497 /*-------------------------------------------------------------------------
25498 Extract response and send it to UMAC
25499 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025500 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25501 {
25502 wpalMemoryCopy( &halGtkOffloadRspParams,
25503 pEventData->pEventData,
25504 sizeof(halGtkOffloadRspParams));
25505
25506 wdiGtkOffloadRsparams.ulStatus =
25507 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
25508 wdiGtkOffloadRsparams.bssIdx =
25509 halGtkOffloadRspParams.bssIdx;
25510 }
25511 else
25512 {
25513 halStatus = *((eHalStatus*)pEventData->pEventData);
25514 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25515 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025516
25517 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025518 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025519
25520 return WDI_STATUS_SUCCESS;
25521}
25522
25523/**
25524 @brief Process GTK Offload Get Information Response function
25525
25526 @param pWDICtx: pointer to the WLAN DAL context
25527 pEventData: pointer to the event information structure
25528
25529 @see
25530 @return Result of the function call
25531*/
25532WDI_Status
25533WDI_ProcessGTKOffloadGetInfoRsp
25534(
25535 WDI_ControlBlockType* pWDICtx,
25536 WDI_EventInfoType* pEventData
25537)
25538{
Jeff Johnson295189b2012-06-20 16:38:30 -070025539 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025540 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025541 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
25542 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025543
25544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25545
25546 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
25547
25548 /*-------------------------------------------------------------------------
25549 Sanity check
25550 -------------------------------------------------------------------------*/
25551 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25552 ( NULL == pEventData->pEventData ))
25553 {
25554 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025555 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025556 WDI_ASSERT(0);
25557 return WDI_STATUS_E_FAILURE;
25558 }
25559
25560 /*-------------------------------------------------------------------------
25561 Extract response and send it to UMAC
25562 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025563 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25564 {
25565 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
25566 pEventData->pEventData,
25567 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025568
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025569 wdiGtkOffloadGetInfoRsparams.ulStatus =
25570 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
25571 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
25572 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
25573 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
25574 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
25575 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
25576 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
25577 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
25578 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
25579 wdiGtkOffloadGetInfoRsparams.bssIdx =
25580 halGtkOffloadGetInfoRspParams.bssIdx;
25581 }
25582 else
25583 {
25584 halStatus = *((eHalStatus*)pEventData->pEventData);
25585 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25586 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025587 /*Notify UMAC*/
25588 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25589 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025590 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025591
25592 return WDI_STATUS_SUCCESS;
25593}
25594#endif // WLAN_FEATURE_GTK_OFFLOAD
25595
25596#ifdef WLAN_WAKEUP_EVENTS
25597WDI_Status
25598WDI_ProcessWakeReasonInd
25599(
25600 WDI_ControlBlockType* pWDICtx,
25601 WDI_EventInfoType* pEventData
25602)
25603{
25604 WDI_LowLevelIndType *pWdiInd;
25605 tpWakeReasonParams pWakeReasonParams;
25606 wpt_uint32 allocSize = 0;
25607
25608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025609 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025610
25611 /*-------------------------------------------------------------------------
25612 Sanity check
25613 -------------------------------------------------------------------------*/
25614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25615 ( NULL == pEventData->pEventData ))
25616 {
25617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025619 WDI_ASSERT( 0 );
25620 return WDI_STATUS_E_FAILURE;
25621 }
25622
25623 /*-------------------------------------------------------------------------
25624 Extract indication and send it to UMAC
25625 -------------------------------------------------------------------------*/
25626 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25627
25628 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25629
25630 //Allocate memory for WDI_WakeReasonIndType structure
25631 pWdiInd = wpalMemoryAllocate(allocSize) ;
25632
25633 if(NULL == pWdiInd)
25634 {
25635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25636 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025637 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025638 WDI_ASSERT(0);
25639 return WDI_STATUS_E_FAILURE;
25640 }
25641
25642 wpalMemoryZero(pWdiInd, allocSize);
25643
25644 /* Fill in the indication parameters*/
25645 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25646 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25647 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25648 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25649 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25650 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25651 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25652 &(pWakeReasonParams->aDataStart[0]),
25653 pWakeReasonParams->ulStoredDataLen);
25654
ltimariu034f7d62013-01-24 18:54:33 -080025655
25656 if ( pWDICtx->wdiLowLevelIndCB )
25657 {
25658 /*Notify UMAC*/
25659 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25660 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025661
25662 //Free memory allocated for WDI_WakeReasonIndType structure
25663 wpalMemoryFree(pWdiInd);
25664
25665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025666 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025667
25668 return WDI_STATUS_SUCCESS;
25669}
25670#endif // WLAN_WAKEUP_EVENTS
25671
25672void WDI_GetWcnssCompiledApiVersion
25673(
25674 WDI_WlanVersionType *pWcnssApiVersion
25675)
25676{
25677 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25678 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25679 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25680 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25681}
25682
25683/**
25684 @brief Process Set TM Level Rsp function (called when a
25685 response is being received over the bus from HAL)
25686
25687 @param pWDICtx: pointer to the WLAN DAL context
25688 pEventData: pointer to the event information structure
25689
25690 @see
25691 @return Result of the function call
25692*/
25693WDI_Status
25694WDI_ProcessSetTmLevelRsp
25695(
25696 WDI_ControlBlockType* pWDICtx,
25697 WDI_EventInfoType* pEventData
25698)
25699{
25700 WDI_Status wdiStatus;
25701 eHalStatus halStatus;
25702 WDI_SetTmLevelCb wdiSetTmLevelCb;
25703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25704
25705 /*-------------------------------------------------------------------------
25706 Sanity check
25707 -------------------------------------------------------------------------*/
25708 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25709 ( NULL == pEventData->pEventData ))
25710 {
25711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025712 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025713 WDI_ASSERT(0);
25714 return WDI_STATUS_E_FAILURE;
25715 }
25716
25717 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25718
25719 /*-------------------------------------------------------------------------
25720 Extract response and send it to UMAC
25721 -------------------------------------------------------------------------*/
25722 halStatus = *((eHalStatus*)pEventData->pEventData);
25723 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25724
25725 /*Notify UMAC*/
25726 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25727
25728 return WDI_STATUS_SUCCESS;
25729}/*WDI_ProcessSetTmLevelRsp*/
25730
25731/**
25732 @brief Process Set Thermal Mitigation level Changed request
25733
25734 @param pWDICtx: pointer to the WLAN DAL context
25735 pEventData: pointer to the event information structure
25736
25737 @see
25738 @return Result of the function call
25739*/
25740WDI_Status
25741WDI_ProcessSetTmLevelReq
25742(
25743 WDI_ControlBlockType* pWDICtx,
25744 WDI_EventInfoType* pEventData
25745)
25746{
25747 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25748 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25749 wpt_uint8* pSendBuffer = NULL;
25750 wpt_uint16 usDataOffset = 0;
25751 wpt_uint16 usSendSize = 0;
25752 tSetThermalMitgationType halTmMsg;
25753
25754 /*-------------------------------------------------------------------------
25755 Sanity check
25756 -------------------------------------------------------------------------*/
25757 if (( NULL == pEventData ) ||
25758 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25759 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25760 {
25761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025763 WDI_ASSERT(0);
25764 return WDI_STATUS_E_FAILURE;
25765 }
25766
25767 /*-----------------------------------------------------------------------
25768 Get message buffer
25769 -----------------------------------------------------------------------*/
25770 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25771 sizeof(halTmMsg),
25772 &pSendBuffer, &usDataOffset, &usSendSize))||
25773 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25774 {
25775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25776 "Unable to get send buffer in Set PNO req %x %x %x",
25777 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25778 WDI_ASSERT(0);
25779 return WDI_STATUS_E_FAILURE;
25780 }
25781
25782 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25783 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25784
25785 wpalMemoryCopy( pSendBuffer+usDataOffset,
25786 &halTmMsg,
25787 sizeof(halTmMsg));
25788
25789 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25790 pWDICtx->pfncRspCB = NULL;
25791 /*-------------------------------------------------------------------------
25792 Send Get STA Request to HAL
25793 -------------------------------------------------------------------------*/
25794 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25795 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25796}
25797
25798/* Fill the value from the global features enabled array to the global capabilities
25799 * bitmap struct
25800 */
25801static void
25802FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25803{
25804 wpt_int8 i;
25805 for (i=0; i<len; i++)
25806 {
25807 setFeatCaps(fCaps, enabledFeat[i]);
25808 }
25809}
25810
25811/**
25812 @brief WDI_featureCapsExchangeReq
25813 Post feature capability bitmap exchange event.
25814 Host will send its own capability to FW in this req and
25815 expect FW to send its capability back as a bitmap in Response
25816
25817 @param
25818
25819 wdiFeatureCapsExchangeCb: callback called on getting the response.
25820 It is kept to mantain similarity between WDI reqs and if needed, can
25821 be used in future. Currently, It is set to NULL
25822
25823 pUserData: user data will be passed back with the
25824 callback
25825
25826 @see
25827 @return Result of the function call
25828*/
25829WDI_Status
25830WDI_featureCapsExchangeReq
25831(
25832 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25833 void* pUserData
25834)
25835{
25836 WDI_EventInfoType wdiEventData;
25837 wpt_int32 fCapsStructSize;
25838
25839 /*------------------------------------------------------------------------
25840 Sanity Check
25841 ------------------------------------------------------------------------*/
25842 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25843 {
25844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25845 "WDI API call before module is initialized - Fail request");
25846
25847 return WDI_STATUS_E_NOT_ALLOWED;
25848 }
25849
25850 /* Allocate memory separately for global variable carrying FW caps */
25851 fCapsStructSize = sizeof(tWlanFeatCaps);
25852 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25853 if ( NULL == gpHostWlanFeatCaps )
25854 {
25855 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25856 "Cannot allocate memory for host capability info\n");
25857 WDI_ASSERT(0);
25858 return WDI_STATUS_MEM_FAILURE;
25859 }
25860
25861 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25862
25863 /*------------------------------------------------------------------------
25864 Fill in Event data and post to the Main FSM
25865 ------------------------------------------------------------------------*/
25866 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25867 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25869 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025870 gpHostWlanFeatCaps->featCaps[0],
25871 gpHostWlanFeatCaps->featCaps[1],
25872 gpHostWlanFeatCaps->featCaps[2],
25873 gpHostWlanFeatCaps->featCaps[3]
25874 );
25875
25876 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25877 wdiEventData.pEventData = gpHostWlanFeatCaps;
25878 wdiEventData.uEventDataSize = fCapsStructSize;
25879 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25880 wdiEventData.pUserData = pUserData;
25881
25882 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25883}
25884
25885/**
Yathishd8713192012-12-10 14:21:35 -080025886 @brief Disable Active mode offload in Host
25887
25888 @param void
25889 @see
25890 @return void
25891*/
25892void
25893WDI_disableCapablityFeature(wpt_uint8 feature_index)
25894{
25895 supportEnabledFeatures[feature_index] = 0;
25896 return;
25897}
25898
25899/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025900 @brief Process Host-FW Capability Exchange Request function
25901
25902 @param pWDICtx: pointer to the WLAN DAL context
25903 pEventData: pointer to the event information structure
25904
25905 @see
25906 @return Result of the function call
25907*/
25908WDI_Status
25909WDI_ProcessFeatureCapsExchangeReq
25910(
25911 WDI_ControlBlockType* pWDICtx,
25912 WDI_EventInfoType* pEventData
25913)
25914{
25915 wpt_uint8* pSendBuffer = NULL;
25916 wpt_uint16 usDataOffset = 0;
25917 wpt_uint16 usSendSize = 0;
25918 wpt_uint16 usLen = 0;
25919
25920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25921
25922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025923 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025924
25925 /*-------------------------------------------------------------------------
25926 Sanity check
25927 -------------------------------------------------------------------------*/
25928 /* Call back function is NULL since not required for cap exchange req */
25929 if (( NULL == pEventData ) ||
25930 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25931 {
25932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025934 WDI_ASSERT(0);
25935 return WDI_STATUS_E_FAILURE;
25936 }
25937
25938 /*-----------------------------------------------------------------------
25939 Get message buffer
25940 -----------------------------------------------------------------------*/
25941 usLen = sizeof(tWlanFeatCaps);
25942
25943 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25944 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25945 usLen,
25946 &pSendBuffer, &usDataOffset, &usSendSize))||
25947 ( usSendSize < (usDataOffset + usLen )))
25948 {
25949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25950 "Unable to get send buffer in feat caps exchange req %x %x",
25951 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25952 WDI_ASSERT(0);
25953 return WDI_STATUS_E_FAILURE;
25954 }
25955
25956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025957 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025958 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25959 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25960 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25961 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25962 );
25963
25964 /* Copy host caps after the offset in the send buffer */
25965 wpalMemoryCopy( pSendBuffer+usDataOffset,
25966 (tWlanFeatCaps *)pEventData->pEventData,
25967 usLen);
25968
25969 /*-------------------------------------------------------------------------
25970 Send Start Request to HAL
25971 -------------------------------------------------------------------------*/
25972 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25973 (WDI_StartRspCb)pEventData->pCBfnc,
25974 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25975
25976}/*WDI_ProcessFeatureCapsExchangeReq*/
25977
25978/**
25979 @brief Process Host-FW Capability Exchange Response function
25980
25981 @param pWDICtx: pointer to the WLAN DAL context
25982 pEventData: pointer to the event information structure
25983
25984 @see
25985 @return Result of the function call
25986*/
25987WDI_Status
25988WDI_ProcessFeatureCapsExchangeRsp
25989(
25990 WDI_ControlBlockType* pWDICtx,
25991 WDI_EventInfoType* pEventData
25992)
25993{
25994 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25995 wpt_int32 fCapsStructSize;
25996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25997
25998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025999 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026000
26001 /*-------------------------------------------------------------------------
26002 Sanity check
26003 -------------------------------------------------------------------------*/
26004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26005 ( NULL == pEventData->pEventData ))
26006 {
26007 /* It will go here when riva is old (doesn't understand this msg) and host is new */
26008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026009 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026010 WDI_ASSERT(0);
26011 return WDI_STATUS_E_FAILURE;
26012 }
26013
26014 /* Allocate memory separately for global variable carrying FW caps */
26015 fCapsStructSize = sizeof(tWlanFeatCaps);
26016 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26017 if ( NULL == gpFwWlanFeatCaps )
26018 {
26019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26020 "Cannot allocate memory for host capability info\n");
26021 WDI_ASSERT(0);
26022 return WDI_STATUS_MEM_FAILURE;
26023 }
26024
26025 /*-------------------------------------------------------------------------
26026 Unpack HAL Response Message - the header was already extracted by the
26027 main Response Handling procedure
26028 -------------------------------------------------------------------------*/
26029 /*-------------------------------------------------------------------------
26030 Extract response and send it to UMAC
26031 -------------------------------------------------------------------------*/
26032
26033 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
26034 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070026035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26036 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026037 gpFwWlanFeatCaps->featCaps[0],
26038 gpFwWlanFeatCaps->featCaps[1],
26039 gpFwWlanFeatCaps->featCaps[2],
26040 gpFwWlanFeatCaps->featCaps[3]
26041 );
Jeff Johnson295189b2012-06-20 16:38:30 -070026042 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
26043
26044 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
26045 if (wdiFeatureCapsExchangeCb != NULL)
26046 wdiFeatureCapsExchangeCb(NULL, NULL);
26047
26048 return WDI_STATUS_SUCCESS;
26049}
26050
Mohit Khanna4a70d262012-09-11 16:30:12 -070026051#ifdef WLAN_FEATURE_11AC
26052WDI_Status
26053WDI_ProcessUpdateVHTOpModeRsp
26054(
26055 WDI_ControlBlockType* pWDICtx,
26056 WDI_EventInfoType* pEventData
26057)
26058{
26059 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26060 WDI_Status wdiStatus;
26061 eHalStatus halStatus;
26062
26063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26064
26065 /*-------------------------------------------------------------------------
26066 Sanity check
26067 -------------------------------------------------------------------------*/
26068 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26069 ( NULL == pEventData->pEventData))
26070 {
26071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026072 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026073 WDI_ASSERT(0);
26074 return WDI_STATUS_E_FAILURE;
26075 }
26076 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
26077
26078 /*-------------------------------------------------------------------------
26079 Extract response and send it to UMAC
26080 -------------------------------------------------------------------------*/
26081 halStatus = *((eHalStatus*)pEventData->pEventData);
26082 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26083
26084 /*Notify UMAC*/
26085 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
26086
26087 return WDI_STATUS_SUCCESS;
26088}
26089#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026090/**
26091 @brief WDI_getHostWlanFeatCaps
26092 WDI API that returns whether the feature passed to it as enum value in
26093 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
26094 variable storing host capability bitmap to find this. This can be used by
26095 other moduels to decide certain things like call different APIs based on
26096 whether a particular feature is supported.
26097
26098 @param
26099
26100 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
26101
26102 @see
26103 @return
26104 0 - if the feature is NOT supported in host
26105 any non-zero value - if the feature is SUPPORTED in host.
26106*/
26107wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
26108{
26109 wpt_uint8 featSupported = 0;
26110 if (gpHostWlanFeatCaps != NULL)
26111 {
26112 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
26113 }
26114 else
26115 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026117 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026118 }
26119 return featSupported;
26120}
26121
26122/**
26123 @brief WDI_getFwWlanFeatCaps
26124 WDI API that returns whether the feature passed to it as enum value in
26125 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
26126 variable storing host capability bitmap to find this. This can be used by
26127 other moduels to decide certain things like call different APIs based on
26128 whether a particular feature is supported.
26129
26130 @param
26131
26132 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
26133 in wlan_hal_msg.h.
26134
26135 @see
26136 @return
26137 0 - if the feature is NOT supported in FW
26138 any non-zero value - if the feature is SUPPORTED in FW.
26139*/
26140wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
26141{
26142 wpt_uint8 featSupported = 0;
26143 if (gpFwWlanFeatCaps != NULL)
26144 {
26145 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
26146 }
26147 else
26148 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026150 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026151 }
26152 return featSupported;
26153}
Mohit Khanna4a70d262012-09-11 16:30:12 -070026154
26155#ifdef WLAN_FEATURE_11AC
26156WDI_Status
26157WDI_ProcessUpdateVHTOpModeReq
26158(
26159 WDI_ControlBlockType* pWDICtx,
26160 WDI_EventInfoType* pEventData
26161)
26162{
26163 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
26164 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26165 wpt_uint8* pSendBuffer = NULL;
26166 wpt_uint16 usDataOffset = 0;
26167 wpt_uint16 usSendSize = 0;
26168
26169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26170
26171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026172 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026173
26174 /*-------------------------------------------------------------------------
26175 Sanity check
26176 -------------------------------------------------------------------------*/
26177 if (( NULL == pEventData ) ||
26178 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
26179 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
26180 {
26181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026182 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026183 WDI_ASSERT(0);
26184 return WDI_STATUS_E_FAILURE;
26185 }
26186
26187 /*-----------------------------------------------------------------------
26188 Get message buffer
26189 -----------------------------------------------------------------------*/
26190 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
26191 sizeof(WDI_UpdateVHTOpMode),
26192 &pSendBuffer, &usDataOffset, &usSendSize))||
26193 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
26194 {
26195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26196 "Unable to get send buffer in update vht opMode req");
26197 WDI_ASSERT(0);
26198 return WDI_STATUS_E_FAILURE;
26199 }
26200
26201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26202 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
26203
26204 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
26205 sizeof(WDI_UpdateVHTOpMode));
26206
26207 /*-------------------------------------------------------------------------
26208 Send Start Request to HAL
26209 -------------------------------------------------------------------------*/
26210 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26211 wdiVHTOpModeCb,
26212 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
26213
26214}
26215
26216WDI_Status
26217WDI_UpdateVHTOpModeReq
26218(
26219 WDI_UpdateVHTOpMode *pData,
26220 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
26221 void* pUserData
26222)
26223{
26224 WDI_EventInfoType wdiEventData;
26225
26226 /*------------------------------------------------------------------------
26227 Sanity Check
26228 ------------------------------------------------------------------------*/
26229 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26230 {
26231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26232 "WDI API call before module is initialized - Fail request");
26233
26234 return WDI_STATUS_E_NOT_ALLOWED;
26235 }
26236
26237 /*------------------------------------------------------------------------
26238 Fill in Event data and post to the Main FSM
26239 ------------------------------------------------------------------------*/
26240 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
26241 wdiEventData.pEventData = pData;
26242 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
26243 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
26244 wdiEventData.pUserData = pUserData;
26245
26246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26247 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
26248
26249 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26250
26251}
26252#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026253
26254/**
26255 @brief WDI_TransportChannelDebug -
26256 Display DXE Channel debugging information
26257 User may request to display DXE channel snapshot
26258 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026259
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080026260 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026261 @param enableStallDetect : Enable stall detect feature
26262 This feature will take effect to data performance
26263 Not integrate till fully verification
26264 @see
26265 @return none
26266*/
26267void WDI_TransportChannelDebug
26268(
26269 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026270 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026271)
26272{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026273 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026274 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070026275}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026276/**
26277 @brief WDI_SsrTimerCB
26278 Callback function for SSR timer, if this is called then the graceful
26279 shutdown for Riva did not happen.
26280
26281 @param pUserData : user data to timer
26282
26283 @see
26284 @return none
26285*/
26286void
26287WDI_SsrTimerCB
26288(
26289 void *pUserData
26290)
26291{
26292 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
26293 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26294
26295 if (NULL == pWDICtx )
26296 {
26297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026298 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026299 WDI_ASSERT(0);
26300 return;
26301 }
26302 wpalRivaSubystemRestart();
26303
26304 return;
26305
26306}/*WDI_SsrTimerCB*/