blob: e1ee775f0e2439f25ee864bdfd8e2655b009927b [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 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07007703 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007704 &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;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053011664 /* usP2PIeOffset should be atleast greater than timIeOffset */
11665 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
11666 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
11667 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
11668 {
11669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11670 "Invalid usP2PIeOffset %hu",
11671 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
11672 WDI_ASSERT(0);
11673 return WDI_STATUS_E_FAILURE;
11674 }
11675
Jeff Johnsone7245742012-09-05 17:12:55 -070011676 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011677 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070011678
Jeff Johnsone7245742012-09-05 17:12:55 -070011679 wpalMemoryCopy( pSendBuffer+usDataOffset,
11680 &halSendBeaconReq.sendBeaconParam,
11681 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011682
11683 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011684 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011685
11686 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011687 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011688 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11690 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011691}/*WDI_ProcessSendBeaconParamsReq*/
11692
11693/**
11694 @brief Process Update Beacon Params Request function (called when Main FSM
11695 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011696
11697 @param pWDICtx: pointer to the WLAN DAL context
11698 pEventData: pointer to the event information structure
11699
Jeff Johnson295189b2012-06-20 16:38:30 -070011700 @see
11701 @return Result of the function call
11702*/
11703WDI_Status
11704WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011705(
Jeff Johnson295189b2012-06-20 16:38:30 -070011706 WDI_ControlBlockType* pWDICtx,
11707 WDI_EventInfoType* pEventData
11708)
11709{
11710 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11711 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011712 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011713 wpt_uint16 usDataOffset = 0;
11714 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011715 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11717
11718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 -------------------------------------------------------------------------*/
11721 if (( NULL == pEventData ) ||
11722 ( NULL == pEventData->pEventData) ||
11723 ( NULL == pEventData->pCBfnc))
11724 {
11725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011726 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011729 }
11730
Jeff Johnsone7245742012-09-05 17:12:55 -070011731 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011732 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011733 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011734 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11735 /*-----------------------------------------------------------------------
11736 Get message buffer
11737 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011738 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011739 sizeof(halUpdateProbeRspTmplParams),
11740 &pSendBuffer, &usDataOffset, &usSendSize))||
11741 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11742 {
11743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11744 "Unable to get send buffer in set bss key req %x %x %x",
11745 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011748 }
11749
11750 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011751 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 WDI_MAC_ADDR_LEN);
11753
Jeff Johnsone7245742012-09-05 17:12:55 -070011754 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011755 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11756
11757 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11758 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011759 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011760
11761
11762 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11763 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11764 WDI_PROBE_REQ_BITMAP_IE_LEN);
11765
Jeff Johnsone7245742012-09-05 17:12:55 -070011766 wpalMemoryCopy( pSendBuffer+usDataOffset,
11767 &halUpdateProbeRspTmplParams,
11768 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011769
11770 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011771 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011772
11773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011774 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011775 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011776 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11777 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11778 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011779}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11780
11781/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011782 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011783 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011784
11785 @param pWDICtx: pointer to the WLAN DAL context
11786 pEventData: pointer to the event information structure
11787
Jeff Johnson295189b2012-06-20 16:38:30 -070011788 @see
11789 @return Result of the function call
11790*/
11791WDI_Status
11792WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011793(
Jeff Johnson295189b2012-06-20 16:38:30 -070011794 WDI_ControlBlockType* pWDICtx,
11795 WDI_EventInfoType* pEventData
11796)
11797{
11798
11799 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11800 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11801
11802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011803 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011804 -------------------------------------------------------------------------*/
11805 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011808 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011809 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11810 {
11811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011812 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 }
11816
11817 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011818 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011819 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11820
11821 /*cache the wdi nv request message here if the the first fragment
11822 * To issue the request to HAL for the next fragment */
11823 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11824 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011825 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11826 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011827 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11828
11829 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11830 pWDICtx->pRspCBUserData = pEventData->pUserData;
11831 }
11832
11833 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11834}
11835
11836/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011837 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011838 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011839
11840 @param pWDICtx: pointer to the WLAN DAL context
11841 pEventData: pointer to the event information structure
11842
Jeff Johnson295189b2012-06-20 16:38:30 -070011843 @see
11844 @return Result of the function call
11845*/
11846WDI_Status WDI_ProcessSetMaxTxPowerReq
11847(
11848 WDI_ControlBlockType* pWDICtx,
11849 WDI_EventInfoType* pEventData
11850)
11851{
11852 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11853 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011854 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011855 wpt_uint16 usDataOffset = 0;
11856 wpt_uint16 usSendSize = 0;
11857 tSetMaxTxPwrReq halSetMaxTxPower;
11858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11859
11860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011861 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011862 -------------------------------------------------------------------------*/
11863 if (( NULL == pEventData ) ||
11864 ( NULL == pEventData->pEventData ) ||
11865 ( NULL == pEventData->pCBfnc ))
11866 {
11867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011868 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011871 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011872 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011873 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011874 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011875 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11876
11877 /*-----------------------------------------------------------------------
11878 Get message buffer
11879 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011880if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011881 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11882 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011883 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011884)))
11885 {
11886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11887 "Unable to get Set Max Tx Power req %x %x %x",
11888 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011891 }
11892
11893 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11894 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11895 WDI_MAC_ADDR_LEN);
11896
11897 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11898 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11899 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011900 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011902
11903 wpalMemoryCopy( pSendBuffer+usDataOffset,
11904 &halSetMaxTxPower.setMaxTxPwrParams,
11905 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011906
11907 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011909
11910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011912 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11914 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11915 WDI_SET_MAX_TX_POWER_RESP);
11916
Jeff Johnson295189b2012-06-20 16:38:30 -070011917}
11918
schangd82195a2013-03-13 18:41:24 -070011919/**
11920 @brief Process Set Tx Power Request function (called when Main
11921 FSM allows it)
11922
11923 @param pWDICtx: pointer to the WLAN DAL context
11924 pEventData: pointer to the event information structure
11925
11926 @see
11927 @return Result of the function call
11928*/
11929WDI_Status WDI_ProcessSetTxPowerReq
11930(
11931 WDI_ControlBlockType* pWDICtx,
11932 WDI_EventInfoType* pEventData
11933)
11934{
11935 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
11936 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
11937 wpt_uint8* pSendBuffer = NULL;
11938 wpt_uint16 usDataOffset = 0;
11939 wpt_uint16 usSendSize = 0;
11940 tSetTxPwrReqMsg *halSetTxPower = NULL;;
11941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11942
11943 /*-------------------------------------------------------------------------
11944 Sanity check
11945 -------------------------------------------------------------------------*/
11946 if (( NULL == pEventData ) ||
11947 ( NULL == pEventData->pEventData ) ||
11948 ( NULL == pEventData->pCBfnc ))
11949 {
11950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11951 "%s: Invalid parameters", __func__);
11952 WDI_ASSERT(0);
11953 return WDI_STATUS_E_FAILURE;
11954 }
11955
11956 pwdiSetTxPowerParams =
11957 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
11958 wdiSetTxPowerRspCb =
11959 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
11960
11961 /*-----------------------------------------------------------------------
11962 Get message buffer
11963 -----------------------------------------------------------------------*/
11964 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
11965 sizeof(tSetTxPwrReqParams),
11966 &pSendBuffer, &usDataOffset, &usSendSize))||
11967 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
11968 )))
11969 {
11970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11971 "Unable to get Set Max Tx Power req %x %x %x",
11972 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
11973 WDI_ASSERT(0);
11974 return WDI_STATUS_E_FAILURE;
11975 }
11976
11977 halSetTxPower = (tSetTxPwrReqMsg *)(pSendBuffer+usDataOffset);
11978 halSetTxPower->setTxPwrReqParams.txPower =
11979 pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
11980 halSetTxPower->setTxPwrReqParams.bssIdx =
11981 pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
11982
11983 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
11984 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
11985
11986 /*-------------------------------------------------------------------------
11987 Send Set Tx Power Request to HAL
11988 -------------------------------------------------------------------------*/
11989 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11990 wdiSetTxPowerRspCb, pEventData->pUserData,
11991 WDI_SET_TX_POWER_RESP);
11992}
Jeff Johnson295189b2012-06-20 16:38:30 -070011993
11994/**
11995 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11996 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011997
11998 @param pWDICtx: pointer to the WLAN DAL context
11999 pEventData: pointer to the event information structure
12000
Jeff Johnson295189b2012-06-20 16:38:30 -070012001 @see
12002 @return Result of the function call
12003*/
12004WDI_Status
12005WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012006(
Jeff Johnson295189b2012-06-20 16:38:30 -070012007 WDI_ControlBlockType* pWDICtx,
12008 WDI_EventInfoType* pEventData
12009)
12010{
12011 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12012 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 wpt_uint16 usDataOffset = 0;
12015 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12018
12019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 -------------------------------------------------------------------------*/
12022 if (( NULL == pEventData ) ||
12023 ( NULL == pEventData->pEventData) ||
12024 ( NULL == pEventData->pCBfnc))
12025 {
12026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012030 }
12031
Jeff Johnsone7245742012-09-05 17:12:55 -070012032 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012033 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012035 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12036 /*-----------------------------------------------------------------------
12037 Get message buffer
12038 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012039 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12040 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 sizeof(halSetP2PGONOAParams),
12042 &pSendBuffer, &usDataOffset, &usSendSize))||
12043 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12044 {
12045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12046 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12047 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12048 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012049 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012050 }
12051
Jeff Johnsone7245742012-09-05 17:12:55 -070012052 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012053 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012055 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12056 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012057 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012058 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012059 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012060 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012061 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012062 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012064 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12065
Jeff Johnsone7245742012-09-05 17:12:55 -070012066 wpalMemoryCopy( pSendBuffer+usDataOffset,
12067 &halSetP2PGONOAParams,
12068 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012069
12070 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012071 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012072
12073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012074 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012075 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012076 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12077 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12078 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012079}/*WDI_ProcessP2PGONOAReq*/
12080
Jeff Johnson295189b2012-06-20 16:38:30 -070012081
12082
12083/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012086 @param None
12087
12088 @see
12089 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012090*/
12091void
12092WDI_SetPowerStateCb
12093(
12094 wpt_status status,
12095 unsigned int dxePhyAddr,
12096 void *pContext
12097)
12098{
12099 wpt_status wptStatus;
12100 WDI_ControlBlockType *pCB = NULL;
12101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12102 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12103 {
12104 //it shouldn't happen, put an error msg
12105 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012106 /*
12107 * Trigger the event to bring the Enter BMPS req function to come
12108 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012109*/
12110 if( NULL != pContext )
12111 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012112 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012113 }
12114 else
12115 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012116 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012117 pCB = &gWDICb;
12118 }
12119 pCB->dxePhyAddr = dxePhyAddr;
12120 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12121 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12122 {
12123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12124 "Failed to set an event");
12125
Jeff Johnsone7245742012-09-05 17:12:55 -070012126 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 }
12128 return;
12129}
12130
12131
12132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012133 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012134 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012135
12136 @param pWDICtx: pointer to the WLAN DAL context
12137 pEventData: pointer to the event information structure
12138
Jeff Johnson295189b2012-06-20 16:38:30 -070012139 @see
12140 @return Result of the function call
12141*/
12142WDI_Status
12143WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012144(
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 WDI_ControlBlockType* pWDICtx,
12146 WDI_EventInfoType* pEventData
12147)
12148{
Jeff Johnson43971f52012-07-17 12:26:56 -070012149 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012151 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012152 wpt_uint16 usDataOffset = 0;
12153 wpt_uint16 usSendSize = 0;
12154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12155
12156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012158 -------------------------------------------------------------------------*/
12159 if (( NULL == pEventData ) ||
12160 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12161 {
12162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012164 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012165 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 }
12167
12168 /*-----------------------------------------------------------------------
12169 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012170 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012171 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012172 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012173 0,
12174 &pSendBuffer, &usDataOffset, &usSendSize))||
12175 ( usSendSize < (usDataOffset )))
12176 {
12177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12178 "Unable to get send buffer in Enter IMPS req %x %x",
12179 pEventData, wdiEnterImpsRspCb);
12180 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012181 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012182 }
12183
12184 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012185 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12186 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012187 {
12188 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12189 "WDI Init failed to reset an event");
12190
Jeff Johnsone7245742012-09-05 17:12:55 -070012191 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012192 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012193 }
12194
12195 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012196 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12197 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12199 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12200 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012201 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012202 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012203
12204 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012205 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012207 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12208 WDI_SET_POWER_STATE_TIMEOUT);
12209 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012210 {
12211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12212 "WDI Init failed to wait on an event");
12213
Jeff Johnsone7245742012-09-05 17:12:55 -070012214 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012215 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012216 }
12217
12218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012219 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012220 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012221 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12222 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012223
12224fail:
12225 // Release the message buffer so we don't leak
12226 wpalMemoryFree(pSendBuffer);
12227
12228failRequest:
12229 //WDA should have failure check to avoid the memory leak
12230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012231}/*WDI_ProcessEnterImpsReq*/
12232
12233/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012234 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012235 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012236
12237 @param pWDICtx: pointer to the WLAN DAL context
12238 pEventData: pointer to the event information structure
12239
Jeff Johnson295189b2012-06-20 16:38:30 -070012240 @see
12241 @return Result of the function call
12242*/
12243WDI_Status
12244WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012245(
Jeff Johnson295189b2012-06-20 16:38:30 -070012246 WDI_ControlBlockType* pWDICtx,
12247 WDI_EventInfoType* pEventData
12248)
12249{
12250 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012251 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 wpt_uint16 usDataOffset = 0;
12253 wpt_uint16 usSendSize = 0;
12254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12255
12256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012257 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012258 -------------------------------------------------------------------------*/
12259 if (( NULL == pEventData ) ||
12260 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12261 {
12262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012263 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012264 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012265 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012266 }
12267
12268 /*-----------------------------------------------------------------------
12269 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012270 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012271 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012272 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 0,
12274 &pSendBuffer, &usDataOffset, &usSendSize))||
12275 ( usSendSize < (usDataOffset )))
12276 {
12277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12278 "Unable to get send buffer in Exit IMPS req %x %x",
12279 pEventData, wdiExitImpsRspCb);
12280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 }
12283
12284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012285 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012286 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012287 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12288 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012289}/*WDI_ProcessExitImpsReq*/
12290
12291/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012292 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012293 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012294
12295 @param pWDICtx: pointer to the WLAN DAL context
12296 pEventData: pointer to the event information structure
12297
Jeff Johnson295189b2012-06-20 16:38:30 -070012298 @see
12299 @return Result of the function call
12300*/
12301WDI_Status
12302WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012303(
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 WDI_ControlBlockType* pWDICtx,
12305 WDI_EventInfoType* pEventData
12306)
12307{
12308 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12309 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012310 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 wpt_uint16 usDataOffset = 0;
12312 wpt_uint16 usSendSize = 0;
12313 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012314 wpt_status wptStatus;
12315
Jeff Johnson295189b2012-06-20 16:38:30 -070012316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12317
12318 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012319 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012320 -------------------------------------------------------------------------*/
12321 if (( NULL == pEventData ) ||
12322 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12323 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12324 {
12325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012326 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012328 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012329 }
12330
12331 /*-----------------------------------------------------------------------
12332 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012333 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012334 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012335 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012336 sizeof(enterBmpsReq),
12337 &pSendBuffer, &usDataOffset, &usSendSize))||
12338 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12339 {
12340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12341 "Unable to get send buffer in Enter BMPS req %x %x %x",
12342 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12343 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012344 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012345 }
12346
12347 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012348 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12349 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012350 {
12351 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12352 "WDI Init failed to reset an event");
12353
Jeff Johnsone7245742012-09-05 17:12:55 -070012354 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012355 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012356 }
12357
12358 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012359 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12360 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12361 {
12362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12363 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12364 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012365 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012366 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012367
12368/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012369 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012370 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012371 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12372 WDI_SET_POWER_STATE_TIMEOUT);
12373 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 {
12375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12376 "WDI Init failed to wait on an event");
12377
Jeff Johnsone7245742012-09-05 17:12:55 -070012378 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012379 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012380 }
12381
12382 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12383
12384 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12385 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12386 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12387 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12388
12389 // For CCX and 11R Roaming
12390 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12391 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12392 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12393
12394 wpalMemoryCopy( pSendBuffer+usDataOffset,
12395 &enterBmpsReq,
12396 sizeof(enterBmpsReq));
12397
12398 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012400
12401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012402 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012403 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12405 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012406
12407fail:
12408 // Release the message buffer so we don't leak
12409 wpalMemoryFree(pSendBuffer);
12410
12411failRequest:
12412 //WDA should have failure check to avoid the memory leak
12413 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012414}/*WDI_ProcessEnterBmpsReq*/
12415
12416/**
12417 @brief Process Exit BMPS Request function (called when Main FSM
12418 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012419
12420 @param pWDICtx: pointer to the WLAN DAL context
12421 pEventData: pointer to the event information structure
12422
Jeff Johnson295189b2012-06-20 16:38:30 -070012423 @see
12424 @return Result of the function call
12425*/
12426WDI_Status
12427WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012428(
Jeff Johnson295189b2012-06-20 16:38:30 -070012429 WDI_ControlBlockType* pWDICtx,
12430 WDI_EventInfoType* pEventData
12431)
12432{
12433 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12434 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012436 wpt_uint16 usDataOffset = 0;
12437 wpt_uint16 usSendSize = 0;
12438 tHalExitBmpsReqParams exitBmpsReq;
12439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12440
12441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012443 -------------------------------------------------------------------------*/
12444 if (( NULL == pEventData ) ||
12445 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12446 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12447 {
12448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012452 }
12453
12454 /*-----------------------------------------------------------------------
12455 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012456 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012457 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 sizeof(exitBmpsReq),
12460 &pSendBuffer, &usDataOffset, &usSendSize))||
12461 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12462 {
12463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12464 "Unable to get send buffer in Exit BMPS req %x %x %x",
12465 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012468 }
12469 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12470
Jeff Johnsone7245742012-09-05 17:12:55 -070012471 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12472
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 wpalMemoryCopy( pSendBuffer+usDataOffset,
12474 &exitBmpsReq,
12475 sizeof(exitBmpsReq));
12476
12477 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012479
12480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012481 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012483 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12484 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012485}/*WDI_ProcessExitBmpsReq*/
12486
12487/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012488 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012490
12491 @param pWDICtx: pointer to the WLAN DAL context
12492 pEventData: pointer to the event information structure
12493
Jeff Johnson295189b2012-06-20 16:38:30 -070012494 @see
12495 @return Result of the function call
12496*/
12497WDI_Status
12498WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012499(
Jeff Johnson295189b2012-06-20 16:38:30 -070012500 WDI_ControlBlockType* pWDICtx,
12501 WDI_EventInfoType* pEventData
12502)
12503{
12504 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12505 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012506 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 wpt_uint16 usDataOffset = 0;
12508 wpt_uint16 usSendSize = 0;
12509 tUapsdReqParams enterUapsdReq;
12510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12511
12512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012513 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012514 -------------------------------------------------------------------------*/
12515 if (( NULL == pEventData ) ||
12516 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12517 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12518 {
12519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012520 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012523 }
12524
12525 /*-----------------------------------------------------------------------
12526 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012527 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012528 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012529 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012530 sizeof(enterUapsdReq),
12531 &pSendBuffer, &usDataOffset, &usSendSize))||
12532 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12533 {
12534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12535 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12536 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12537 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012538 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 }
12540
12541 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12542 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12543 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12544 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12545 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12546 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12547 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12548 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012550
Jeff Johnsone7245742012-09-05 17:12:55 -070012551 wpalMemoryCopy( pSendBuffer+usDataOffset,
12552 &enterUapsdReq,
12553 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012554
12555 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012557
12558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012559 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12562 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012563}/*WDI_ProcessEnterUapsdReq*/
12564
12565/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012566 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012567 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012568
12569 @param pWDICtx: pointer to the WLAN DAL context
12570 pEventData: pointer to the event information structure
12571
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 @see
12573 @return Result of the function call
12574*/
12575WDI_Status
12576WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012577(
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 WDI_ControlBlockType* pWDICtx,
12579 WDI_EventInfoType* pEventData
12580)
12581{
12582 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012583 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012584 wpt_uint16 usDataOffset = 0;
12585 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012586 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12587 wpt_uint8 bssIdx = 0;
12588
Jeff Johnson295189b2012-06-20 16:38:30 -070012589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12590
12591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012593 -------------------------------------------------------------------------*/
12594 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012595 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12597 {
12598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012602 }
12603
12604 /*-----------------------------------------------------------------------
12605 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012606 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012607 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012609 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012610 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012611 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 {
12613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12614 "Unable to get send buffer in Exit UAPSD req %x %x",
12615 pEventData, wdiExitUapsdRspCb);
12616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 }
12619
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012620 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12621
12622 wpalMemoryCopy( pSendBuffer+usDataOffset,
12623 &bssIdx,
12624 sizeof(wpt_uint8));
12625
12626 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12627 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12628
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012630 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012632 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12633 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012634}/*WDI_ProcessExitUapsdReq*/
12635
12636/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012637 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012639
12640 @param pWDICtx: pointer to the WLAN DAL context
12641 pEventData: pointer to the event information structure
12642
Jeff Johnson295189b2012-06-20 16:38:30 -070012643 @see
12644 @return Result of the function call
12645*/
12646WDI_Status
12647WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012648(
Jeff Johnson295189b2012-06-20 16:38:30 -070012649 WDI_ControlBlockType* pWDICtx,
12650 WDI_EventInfoType* pEventData
12651)
12652{
12653 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12654 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012655 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012656 wpt_uint16 usDataOffset = 0;
12657 wpt_uint16 usSendSize = 0;
12658 tUapsdInfo uapsdAcParamsReq;
12659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12660
12661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012662 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 -------------------------------------------------------------------------*/
12664 if (( NULL == pEventData ) ||
12665 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12666 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12667 {
12668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012672 }
12673
12674 /*-----------------------------------------------------------------------
12675 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012676 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012677 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012678 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012679 sizeof(uapsdAcParamsReq),
12680 &pSendBuffer, &usDataOffset, &usSendSize))||
12681 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12682 {
12683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12684 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12685 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12686 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012688 }
12689
12690 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12691 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12692 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12693 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12694 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12695 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12696
Jeff Johnsone7245742012-09-05 17:12:55 -070012697 wpalMemoryCopy( pSendBuffer+usDataOffset,
12698 &uapsdAcParamsReq,
12699 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012700
12701 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012702 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012703
12704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012705 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012706 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012707 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12708 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012709}/*WDI_ProcessSetUapsdAcParamsReq*/
12710
12711/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012712 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012713 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012714
12715 @param pWDICtx: pointer to the WLAN DAL context
12716 pEventData: pointer to the event information structure
12717
Jeff Johnson295189b2012-06-20 16:38:30 -070012718 @see
12719 @return Result of the function call
12720*/
12721WDI_Status
12722WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012723(
Jeff Johnson295189b2012-06-20 16:38:30 -070012724 WDI_ControlBlockType* pWDICtx,
12725 WDI_EventInfoType* pEventData
12726)
12727{
12728 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12729 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012730 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012731 wpt_uint16 usDataOffset = 0;
12732 wpt_uint16 usSendSize = 0;
12733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12734
12735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012737 -------------------------------------------------------------------------*/
12738 if (( NULL == pEventData ) ||
12739 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12740 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12741 {
12742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012746 }
12747
12748 /*-----------------------------------------------------------------------
12749 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012750 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012751 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012752 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012753 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12754 &pSendBuffer, &usDataOffset, &usSendSize))||
12755 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12756 {
12757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12758 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12759 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012762 }
12763
Jeff Johnsone7245742012-09-05 17:12:55 -070012764 wpalMemoryCopy( pSendBuffer+usDataOffset,
12765 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12766 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012767
12768 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012769 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012770
12771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012772 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012774 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12775 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012776}/*WDI_ProcessUpdateUapsdParamsReq*/
12777
12778/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012779 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012780 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012781
12782 @param pWDICtx: pointer to the WLAN DAL context
12783 pEventData: pointer to the event information structure
12784
Jeff Johnson295189b2012-06-20 16:38:30 -070012785 @see
12786 @return Result of the function call
12787*/
12788WDI_Status
12789WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012790(
Jeff Johnson295189b2012-06-20 16:38:30 -070012791 WDI_ControlBlockType* pWDICtx,
12792 WDI_EventInfoType* pEventData
12793)
12794{
12795 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12796 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012797 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012798 wpt_uint16 usDataOffset = 0;
12799 wpt_uint16 usSendSize = 0;
12800 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12801
12802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12803
12804 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012805 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012806 -------------------------------------------------------------------------*/
12807 if (( NULL == pEventData ) ||
12808 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12809 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12810 {
12811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012812 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012815 }
12816
12817 /*-----------------------------------------------------------------------
12818 Get message buffer
12819 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012820 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012821 sizeof(halRxpFilterParams),
12822 &pSendBuffer, &usDataOffset, &usSendSize))||
12823 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12824 {
12825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12826 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12827 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12828 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012830 }
12831
Jeff Johnsone7245742012-09-05 17:12:55 -070012832 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012833 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012834 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012835 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12836
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 wpalMemoryCopy( pSendBuffer+usDataOffset,
12838 &halRxpFilterParams,
12839 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012840
12841 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012842 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012843
12844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012845 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012847 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12848 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012849}/*WDI_ProcessConfigureRxpFilterReq*/
12850
12851/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012852 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012854
12855 @param pWDICtx: pointer to the WLAN DAL context
12856 pEventData: pointer to the event information structure
12857
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 @see
12859 @return Result of the function call
12860*/
12861WDI_Status
12862WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012863(
Jeff Johnson295189b2012-06-20 16:38:30 -070012864 WDI_ControlBlockType* pWDICtx,
12865 WDI_EventInfoType* pEventData
12866)
12867{
12868 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12869 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012870 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012871 wpt_uint16 usDataOffset = 0;
12872 wpt_uint16 usSendSize = 0;
12873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12874
12875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 -------------------------------------------------------------------------*/
12878 if (( NULL == pEventData ) ||
12879 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12880 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12881 {
12882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012886 }
12887
12888 /*-----------------------------------------------------------------------
12889 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012890 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012891 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012892 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012893 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12894 &pSendBuffer, &usDataOffset, &usSendSize))||
12895 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12896 {
12897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12898 "Unable to get send buffer in Set beacon filter req %x %x %x",
12899 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 }
12903
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 wpalMemoryCopy( pSendBuffer+usDataOffset,
12905 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12906 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12907 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12908 &pwdiBeaconFilterParams->aFilters[0],
12909 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012910
12911 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012913
12914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012915 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12918 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012919}/*WDI_ProcessSetBeaconFilterReq*/
12920
12921/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012922 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012923 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012924
12925 @param pWDICtx: pointer to the WLAN DAL context
12926 pEventData: pointer to the event information structure
12927
Jeff Johnson295189b2012-06-20 16:38:30 -070012928 @see
12929 @return Result of the function call
12930*/
12931WDI_Status
12932WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012933(
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 WDI_ControlBlockType* pWDICtx,
12935 WDI_EventInfoType* pEventData
12936)
12937{
12938 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12939 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012940 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 wpt_uint16 usDataOffset = 0;
12942 wpt_uint16 usSendSize = 0;
12943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12944
12945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012946 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012947 -------------------------------------------------------------------------*/
12948 if (( NULL == pEventData ) ||
12949 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12950 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12951 {
12952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012956 }
12957
12958 /*-----------------------------------------------------------------------
12959 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012960 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012961 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012962 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012963 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12964 &pSendBuffer, &usDataOffset, &usSendSize))||
12965 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12966 {
12967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12968 "Unable to get send buffer in remove beacon filter req %x %x %x",
12969 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12970 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012972 }
12973
Jeff Johnsone7245742012-09-05 17:12:55 -070012974 wpalMemoryCopy( pSendBuffer+usDataOffset,
12975 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12976 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012977
12978 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012979 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012980
12981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012982 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012984 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12985 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012986}
12987
12988/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012989 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012991
12992 @param pWDICtx: pointer to the WLAN DAL context
12993 pEventData: pointer to the event information structure
12994
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 @see
12996 @return Result of the function call
12997*/
12998WDI_Status
12999WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013000(
Jeff Johnson295189b2012-06-20 16:38:30 -070013001 WDI_ControlBlockType* pWDICtx,
13002 WDI_EventInfoType* pEventData
13003)
13004{
13005 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13006 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013007 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013008 wpt_uint16 usDataOffset = 0;
13009 wpt_uint16 usSendSize = 0;
13010 tHalRSSIThresholds rssiThresholdsReq;
13011 WDI_Status ret_status = 0;
13012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13013
13014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013015 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013016 -------------------------------------------------------------------------*/
13017 if (( NULL == pEventData ) ||
13018 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13019 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13020 {
13021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013022 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013025 }
13026
13027 /*-----------------------------------------------------------------------
13028 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013029 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013030 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013031 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013032 sizeof(rssiThresholdsReq),
13033 &pSendBuffer, &usDataOffset, &usSendSize))||
13034 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13035 {
13036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13037 "Unable to get send buffer in remove beacon filter req %x %x %x",
13038 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013041 }
13042
Jeff Johnsone7245742012-09-05 17:12:55 -070013043 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013044 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013045 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013046 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013048 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013051 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013053 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013054 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013055 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013057 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013058 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013059 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013061 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013062 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13063
Jeff Johnsone7245742012-09-05 17:12:55 -070013064 wpalMemoryCopy( pSendBuffer+usDataOffset,
13065 &rssiThresholdsReq,
13066 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013067
13068 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013069 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013070
13071 /*-------------------------------------------------------------------------
13072 Send Set threshold req to HAL
13073 -------------------------------------------------------------------------*/
13074 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13075 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13076 {
13077 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13078 // req. Then as a result of processing the threshold cross ind, we trigger
13079 // a Set threshold req, then we need to indicate to WDI that it needs to
13080 // go to busy state as a result of the indication as we sent a req in the
13081 // same WDI context.
13082 // Hence expected state transition is to busy.
13083 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13084 }
13085
13086 return ret_status;
13087}
13088
13089/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013090 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013092
13093 @param pWDICtx: pointer to the WLAN DAL context
13094 pEventData: pointer to the event information structure
13095
Jeff Johnson295189b2012-06-20 16:38:30 -070013096 @see
13097 @return Result of the function call
13098*/
13099WDI_Status
13100WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013101(
Jeff Johnson295189b2012-06-20 16:38:30 -070013102 WDI_ControlBlockType* pWDICtx,
13103 WDI_EventInfoType* pEventData
13104)
13105{
13106 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13107 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013108 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 wpt_uint16 usDataOffset = 0;
13110 wpt_uint16 usSendSize = 0;
13111 tHalHostOffloadReq hostOffloadParams;
13112 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013113 wpt_uint8 ucCurrentBSSSesIdx = 0;
13114 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013115
13116 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13117
13118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013120 -------------------------------------------------------------------------*/
13121 if (( NULL == pEventData ) ||
13122 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13123 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13124 {
13125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013128 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013129 }
13130
13131 /*-----------------------------------------------------------------------
13132 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013134 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013135 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13137 &pSendBuffer, &usDataOffset, &usSendSize))||
13138 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13139 {
13140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13141 "Unable to get send buffer in host offload req %x %x %x",
13142 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13143 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013144 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 }
13146
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013147 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13148 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13149 &pBSSSes);
13150 if ( NULL == pBSSSes )
13151 {
13152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013153 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013154 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013155 }
13156
Jeff Johnson295189b2012-06-20 16:38:30 -070013157 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13158 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013159
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13161 {
13162 // ARP Offload
13163 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13164 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13165 4);
13166 }
13167 else
13168 {
13169 // NS Offload
13170 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13171 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13172 16);
13173
13174#ifdef WLAN_NS_OFFLOAD
13175 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13176 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13177 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13178 16);
13179 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13180 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13181 16);
13182 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13183 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13184 16);
13185 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13186 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13187 16);
13188 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13189 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13190 6);
13191 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13192 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13193 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070013194
Jeff Johnson295189b2012-06-20 16:38:30 -070013195#endif // WLAN_NS_OFFLOAD
13196 }
13197
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013198 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13199
Jeff Johnson295189b2012-06-20 16:38:30 -070013200 // copy hostOffloadParams into pSendBuffer
13201 wpalMemoryCopy( pSendBuffer+usDataOffset,
13202 &hostOffloadParams,
13203 sizeof(hostOffloadParams));
13204
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013205 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013206 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013207 // copy nsOffloadParams into pSendBuffer
13208 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 &nsOffloadParams,
13210 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013211 }
13212 else
13213 {
13214#ifdef WLAN_NS_OFFLOAD
13215 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13216 {
13217 // copy nsOffloadParams into pSendBuffer
13218 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13219 &nsOffloadParams,
13220 sizeof(nsOffloadParams));
13221 }
13222#endif
13223 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013224
13225 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013226 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013227
13228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013229 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013230 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013231 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13232 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013233
13234fail:
13235 // Release the message buffer so we don't leak
13236 wpalMemoryFree(pSendBuffer);
13237
13238failRequest:
13239 //WDA should have failure check to avoid the memory leak
13240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013241}/*WDI_ProcessHostOffloadReq*/
13242
13243/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013246
13247 @param pWDICtx: pointer to the WLAN DAL context
13248 pEventData: pointer to the event information structure
13249
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 @see
13251 @return Result of the function call
13252*/
13253WDI_Status
13254WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013255(
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 WDI_ControlBlockType* pWDICtx,
13257 WDI_EventInfoType* pEventData
13258)
13259{
13260 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13261 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013262 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013263 wpt_uint16 usDataOffset = 0;
13264 wpt_uint16 usSendSize = 0;
13265 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013266 wpt_uint8 ucCurrentBSSSesIdx = 0;
13267 WDI_BSSSessionType* pBSSSes = NULL;
13268
Jeff Johnson295189b2012-06-20 16:38:30 -070013269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13270
13271 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013272 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013273 -------------------------------------------------------------------------*/
13274 if (( NULL == pEventData ) ||
13275 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13276 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13277 {
13278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13279 "Invalid parameters in Keep Alive req");
13280 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013281 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 }
13283
13284 /*-----------------------------------------------------------------------
13285 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013286 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013287 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 sizeof(keepAliveReq),
13290 &pSendBuffer, &usDataOffset, &usSendSize))||
13291 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13292 {
13293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13294 "Unable to get send buffer in keep alive req %x %x %x",
13295 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13296 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013297 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013298 }
13299
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013300 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13301 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13302 &pBSSSes);
13303 if ( NULL == pBSSSes )
13304 {
13305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013306 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013307 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013308 }
13309
Jeff Johnson295189b2012-06-20 16:38:30 -070013310 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13311 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13312
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013313 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013314
Jeff Johnson295189b2012-06-20 16:38:30 -070013315 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13316 {
13317 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13318 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13319 HAL_IPV4_ADDR_LEN);
13320 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13321 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013322 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013323 wpalMemoryCopy(keepAliveReq.destMacAddr,
13324 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13325 HAL_MAC_ADDR_LEN);
13326 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013327
13328 wpalMemoryCopy( pSendBuffer+usDataOffset,
13329 &keepAliveReq,
13330 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013331
13332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13333 "Process keep alive req %d",sizeof(keepAliveReq));
13334
13335 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13336 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13337
13338 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013339 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013340
13341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13342 "Sending keep alive req to HAL");
13343
13344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013347 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13348 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013349
13350fail:
13351 // Release the message buffer so we don't leak
13352 wpalMemoryFree(pSendBuffer);
13353
13354failRequest:
13355 //WDA should have failure check to avoid the memory leak
13356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013357}/*WDI_ProcessKeepAliveReq*/
13358
13359
13360/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013361 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013362 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013363
13364 @param pWDICtx: pointer to the WLAN DAL context
13365 pEventData: pointer to the event information structure
13366
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 @see
13368 @return Result of the function call
13369*/
13370WDI_Status
13371WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013372(
Jeff Johnson295189b2012-06-20 16:38:30 -070013373 WDI_ControlBlockType* pWDICtx,
13374 WDI_EventInfoType* pEventData
13375)
13376{
13377 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13378 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013379 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013380 wpt_uint16 usDataOffset = 0;
13381 wpt_uint16 usSendSize = 0;
13382 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013383 wpt_uint8 ucCurrentBSSSesIdx = 0;
13384 WDI_BSSSessionType* pBSSSes = NULL;
13385
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13387
13388 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013389 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013390 -------------------------------------------------------------------------*/
13391 if (( NULL == pEventData ) ||
13392 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13393 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13394 {
13395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013397 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013398 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013399 }
13400
13401 /*-----------------------------------------------------------------------
13402 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013403 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013404 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013405 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013406 sizeof(wowlAddBcPtrnReq),
13407 &pSendBuffer, &usDataOffset, &usSendSize))||
13408 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13409 {
13410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13411 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13412 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13413 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013414 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013415 }
13416
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013417 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13418 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13419 &pBSSSes);
13420 if ( NULL == pBSSSes )
13421 {
13422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013423 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013424 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013425 }
13426
Jeff Johnsone7245742012-09-05 17:12:55 -070013427 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013429 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013430 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013431 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013432 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13435
13436 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13437 {
13438 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13439 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13440 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13441 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13442 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13443 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13444 }
13445 else
13446 {
13447 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13448 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13449 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13450 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13451 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13452 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13453
13454 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13455 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13456 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13457 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13458 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13459 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13460 }
13461
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013462 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13463
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 wpalMemoryCopy( pSendBuffer+usDataOffset,
13465 &wowlAddBcPtrnReq,
13466 sizeof(wowlAddBcPtrnReq));
13467
13468 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013469 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013470
13471 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013472 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013473 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13475 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013476fail:
13477 // Release the message buffer so we don't leak
13478 wpalMemoryFree(pSendBuffer);
13479
13480failRequest:
13481 //WDA should have failure check to avoid the memory leak
13482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013483}/*WDI_ProcessWowlAddBcPtrnReq*/
13484
13485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013488
13489 @param pWDICtx: pointer to the WLAN DAL context
13490 pEventData: pointer to the event information structure
13491
Jeff Johnson295189b2012-06-20 16:38:30 -070013492 @see
13493 @return Result of the function call
13494*/
13495WDI_Status
13496WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013497(
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 WDI_ControlBlockType* pWDICtx,
13499 WDI_EventInfoType* pEventData
13500)
13501{
13502 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13503 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013504 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013505 wpt_uint16 usDataOffset = 0;
13506 wpt_uint16 usSendSize = 0;
13507 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013508 wpt_uint8 ucCurrentBSSSesIdx = 0;
13509 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13511
13512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013513 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013514 -------------------------------------------------------------------------*/
13515 if (( NULL == pEventData ) ||
13516 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13517 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13518 {
13519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013520 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013521 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013522 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 }
13524
13525 /*-----------------------------------------------------------------------
13526 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013527 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013528 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 sizeof(wowlDelBcPtrnReq),
13531 &pSendBuffer, &usDataOffset, &usSendSize))||
13532 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13533 {
13534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13535 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13536 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13537 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013538 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 }
13540
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013541 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13542 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13543 &pBSSSes);
13544 if ( NULL == pBSSSes )
13545 {
13546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013547 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013548 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013549 }
13550
Jeff Johnsone7245742012-09-05 17:12:55 -070013551 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013552 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013553
13554 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13555
Jeff Johnsone7245742012-09-05 17:12:55 -070013556 wpalMemoryCopy( pSendBuffer+usDataOffset,
13557 &wowlDelBcPtrnReq,
13558 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013559
13560 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013561 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013562
13563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013564 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13567 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013568
13569fail:
13570 // Release the message buffer so we don't leak
13571 wpalMemoryFree(pSendBuffer);
13572
13573failRequest:
13574 //WDA should have failure check to avoid the memory leak
13575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013576}/*WDI_ProcessWowlDelBcPtrnReq*/
13577
13578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013579 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013580 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013581
13582 @param pWDICtx: pointer to the WLAN DAL context
13583 pEventData: pointer to the event information structure
13584
Jeff Johnson295189b2012-06-20 16:38:30 -070013585 @see
13586 @return Result of the function call
13587*/
13588WDI_Status
13589WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013590(
Jeff Johnson295189b2012-06-20 16:38:30 -070013591 WDI_ControlBlockType* pWDICtx,
13592 WDI_EventInfoType* pEventData
13593)
13594{
13595 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13596 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013597 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013598 wpt_uint16 usDataOffset = 0;
13599 wpt_uint16 usSendSize = 0;
13600 tHalWowlEnterParams wowlEnterReq;
13601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13602
13603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013605 -------------------------------------------------------------------------*/
13606 if (( NULL == pEventData ) ||
13607 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13608 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13609 {
13610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013611 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013614 }
13615
13616 /*-----------------------------------------------------------------------
13617 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013618 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013620 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013621 sizeof(wowlEnterReq),
13622 &pSendBuffer, &usDataOffset, &usSendSize))||
13623 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13624 {
13625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13626 "Unable to get send buffer in Wowl enter req %x %x %x",
13627 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013630 }
13631
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013633 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013634 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013635 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013636 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013637 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013638 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013639 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013640 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013641 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013644 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13648
13649#ifdef WLAN_WAKEUP_EVENTS
13650 wowlEnterReq.ucWoWEAPIDRequestEnable =
13651 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13652
13653 wowlEnterReq.ucWoWEAPOL4WayEnable =
13654 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13655
13656 wowlEnterReq.ucWowNetScanOffloadMatch =
13657 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13658
13659 wowlEnterReq.ucWowGTKRekeyError =
13660 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13661
13662 wowlEnterReq.ucWoWBSSConnLoss =
13663 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13664#endif // WLAN_WAKEUP_EVENTS
13665
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013666 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13667
Jeff Johnson295189b2012-06-20 16:38:30 -070013668 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13669 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13670 sizeof(tSirMacAddr));
13671
Jeff Johnsone7245742012-09-05 17:12:55 -070013672 wpalMemoryCopy( pSendBuffer+usDataOffset,
13673 &wowlEnterReq,
13674 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013675
13676 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013677 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013678
13679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013680 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013681 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013682 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13683 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013684}/*WDI_ProcessWowlEnterReq*/
13685
13686/**
13687 @brief Process Wowl exit Request function (called when Main FSM
13688 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013689
13690 @param pWDICtx: pointer to the WLAN DAL context
13691 pEventData: pointer to the event information structure
13692
Jeff Johnson295189b2012-06-20 16:38:30 -070013693 @see
13694 @return Result of the function call
13695*/
13696WDI_Status
13697WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013698(
Jeff Johnson295189b2012-06-20 16:38:30 -070013699 WDI_ControlBlockType* pWDICtx,
13700 WDI_EventInfoType* pEventData
13701)
13702{
13703 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013704 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 wpt_uint16 usDataOffset = 0;
13707 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013708 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13710
13711 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013712 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013713 -------------------------------------------------------------------------*/
13714 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013715 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013716 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13717 {
13718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 }
13723
13724 /*-----------------------------------------------------------------------
13725 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013726 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013728 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013729 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013730 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013731 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013732 {
13733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13734 "Unable to get send buffer in Wowl Exit req %x %x",
13735 pEventData, wdiWowlExitCb);
13736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 }
13739
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013740 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13741
13742 wpalMemoryCopy( pSendBuffer+usDataOffset,
13743 &wowlExitparams,
13744 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013745 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013746 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013748 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13749 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013750}/*WDI_ProcessWowlExitReq*/
13751
13752/**
13753 @brief Process Configure Apps Cpu Wakeup State Request function
13754 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013755
13756 @param pWDICtx: pointer to the WLAN DAL context
13757 pEventData: pointer to the event information structure
13758
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 @see
13760 @return Result of the function call
13761*/
13762WDI_Status
13763WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013764(
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 WDI_ControlBlockType* pWDICtx,
13766 WDI_EventInfoType* pEventData
13767)
13768{
13769 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13770 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013772 wpt_uint16 usDataOffset = 0;
13773 wpt_uint16 usSendSize = 0;
13774 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13776
13777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013778 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013779 -------------------------------------------------------------------------*/
13780 if (( NULL == pEventData ) ||
13781 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13782 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13783 {
13784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013785 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 }
13789
13790 /*-----------------------------------------------------------------------
13791 Get message buffer
13792 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013793 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013794 sizeof(halCfgAppsCpuWakeupStateReqParams),
13795 &pSendBuffer, &usDataOffset, &usSendSize))||
13796 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13797 {
13798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13799 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13800 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013803 }
13804
Jeff Johnsone7245742012-09-05 17:12:55 -070013805 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013806 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13807
Jeff Johnsone7245742012-09-05 17:12:55 -070013808 wpalMemoryCopy( pSendBuffer+usDataOffset,
13809 &halCfgAppsCpuWakeupStateReqParams,
13810 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013811
13812 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013813 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013814
13815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013816 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013817 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013818 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13819 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13820 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013821}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13822
13823#ifdef WLAN_FEATURE_VOWIFI_11R
13824/**
13825 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13826 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013827
13828 @param pWDICtx: pointer to the WLAN DAL context
13829 pEventData: pointer to the event information structure
13830
Jeff Johnson295189b2012-06-20 16:38:30 -070013831 @see
13832 @return Result of the function call
13833*/
13834WDI_Status
13835WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013836(
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 WDI_ControlBlockType* pWDICtx,
13838 WDI_EventInfoType* pEventData
13839)
13840{
13841 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13842 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013843 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013845 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013846 wpt_uint16 usDataOffset = 0;
13847 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013848 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013849 wpt_macAddr macBSSID;
13850 tAggrAddTsReq halAggrAddTsReq;
13851 int i;
13852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13853
13854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013855 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 -------------------------------------------------------------------------*/
13857 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13858 ( NULL == pEventData->pCBfnc ))
13859 {
13860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013861 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013864 }
13865 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13866 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13867 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13868 /*-------------------------------------------------------------------------
13869 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013870 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013871 -------------------------------------------------------------------------*/
13872 wpalMutexAcquire(&pWDICtx->wptMutex);
13873
13874 /*------------------------------------------------------------------------
13875 Find the BSS for which the request is made and identify WDI session
13876 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013877 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13878 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013879 &macBSSID))
13880 {
13881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13882 "This station does not exist in the WDI Station Table %d");
13883 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013885 }
13886
Jeff Johnsone7245742012-09-05 17:12:55 -070013887 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13888 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13891 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13892 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013893
13894 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013895 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013896 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013897
Jeff Johnson295189b2012-06-20 16:38:30 -070013898 /*------------------------------------------------------------------------
13899 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013900 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013901 ------------------------------------------------------------------------*/
13902 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13903 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13905 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13906 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013907
Jeff Johnsone7245742012-09-05 17:12:55 -070013908 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013909 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013910 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013911 }
13912
13913 wpalMutexRelease(&pWDICtx->wptMutex);
13914 /*-----------------------------------------------------------------------
13915 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013916 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013919 sizeof(tAggrAddTsParams),
13920 &pSendBuffer, &usDataOffset, &usSendSize))||
13921 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13922 {
13923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13924 "Unable to get send buffer in set bss key req %x %x %x",
13925 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013928 }
13929
Jeff Johnsone7245742012-09-05 17:12:55 -070013930 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013931 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013932 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13934
13935 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13936 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013937 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013939 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013940 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013941 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013942 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13943 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13946 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013947 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013948 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13949 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013950 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013951 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13952 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013953 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13955 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013956 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13958 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013959 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013960 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13961 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013962 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13964 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013967 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013969
13970
13971 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013973 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013974 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013975 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013983 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013991 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013993 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013995 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013996 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013997 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013998 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14001 }
14002
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 wpalMemoryCopy( pSendBuffer+usDataOffset,
14004 &halAggrAddTsReq,
14005 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014006
14007 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014008 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014009
14010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014012 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014013 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014014 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014015 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014016}/*WDI_ProcessAggrAddTSpecReq*/
14017#endif /* WLAN_FEATURE_VOWIFI_11R */
14018
14019/**
14020 @brief Process Shutdown Request function (called when Main FSM
14021 allows it)
14022
14023 @param pWDICtx: pointer to the WLAN DAL context
14024 pEventData: pointer to the event information structure
14025
14026 @see
14027 @return Result of the function call
14028*/
14029WDI_Status
14030WDI_ProcessShutdownReq
14031(
14032 WDI_ControlBlockType* pWDICtx,
14033 WDI_EventInfoType* pEventData
14034 )
14035{
14036 wpt_status wptStatus;
14037
14038
14039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14040
14041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 -------------------------------------------------------------------------*/
14044 if ( NULL == pEventData )
14045 {
14046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014047 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014048 WDI_ASSERT(0);
14049 return WDI_STATUS_E_FAILURE;
14050 }
14051
14052 wpalMutexAcquire(&pWDICtx->wptMutex);
14053
14054
14055 gWDIInitialized = eWLAN_PAL_FALSE;
14056 /*! TO DO: stop the data services */
14057 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14058 {
14059 /*Stop the STA Table !UT- check this logic again
14060 It is safer to do it here than on the response - because a stop is imminent*/
14061 WDI_STATableStop(pWDICtx);
14062
14063 /* Stop Transport Driver, DXE */
14064 WDTS_Stop(pWDICtx);
14065 }
14066
14067 /*Clear all pending request*/
14068 WDI_ClearPendingRequests(pWDICtx);
14069 /* Close Data transport*/
14070 /* FTM mode does not open Data Path */
14071 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14072 {
14073 WDTS_Close(pWDICtx);
14074 }
14075 /*Close the STA Table !UT- check this logic again*/
14076 WDI_STATableClose(pWDICtx);
14077 /*close the PAL */
14078 wptStatus = wpalClose(pWDICtx->pPALContext);
14079 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14080 {
14081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14082 "Failed to wpal Close %d", wptStatus);
14083 WDI_ASSERT(0);
14084 }
14085
14086 /*Transition back to init state*/
14087 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14088
14089 wpalMutexRelease(&pWDICtx->wptMutex);
14090
14091 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014093
14094
Jeff Johnsone7245742012-09-05 17:12:55 -070014095 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014096}/*WDI_ProcessShutdownReq*/
14097
14098/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014099 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014100========================================================================*/
14101
14102/**
14103 @brief Process Start Response function (called when a response
14104 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014105
14106 @param pWDICtx: pointer to the WLAN DAL context
14107 pEventData: pointer to the event information structure
14108
Jeff Johnson295189b2012-06-20 16:38:30 -070014109 @see
14110 @return Result of the function call
14111*/
14112WDI_Status
14113WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014114(
Jeff Johnson295189b2012-06-20 16:38:30 -070014115 WDI_ControlBlockType* pWDICtx,
14116 WDI_EventInfoType* pEventData
14117)
14118{
14119 WDI_StartRspParamsType wdiRspParams;
14120 WDI_StartRspCb wdiStartRspCb = NULL;
14121
14122 tHalMacStartRspParams* startRspParams;
14123
14124#ifndef HAL_SELF_STA_PER_BSS
14125 WDI_AddStaParams wdiAddSTAParam = {0};
14126#endif
14127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14128
Jeff Johnsone7245742012-09-05 17:12:55 -070014129 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014131 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014132 -------------------------------------------------------------------------*/
14133 if (( NULL == pEventData ) ||
14134 ( NULL == pEventData->pEventData) ||
14135 ( NULL == wdiStartRspCb ))
14136 {
14137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014138 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014139 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014141 }
14142
14143 /*-------------------------------------------------------------------------
14144 Extract response and send it to UMAC
14145 -------------------------------------------------------------------------*/
14146 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14147 {
14148 // not enough data was received
14149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14150 "Invalid response length in Start Resp Expect %x Rcvd %x",
14151 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014154 }
14155
14156 /*-------------------------------------------------------------------------
14157 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014158 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014159 -------------------------------------------------------------------------*/
14160 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14161
14162 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14163 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14164 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14165 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14166 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14167 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14168 wdiRspParams.wlanReportedVersion.major =
14169 startRspParams->wcnssWlanVersion.major;
14170 wdiRspParams.wlanReportedVersion.minor =
14171 startRspParams->wcnssWlanVersion.minor;
14172 wdiRspParams.wlanReportedVersion.version =
14173 startRspParams->wcnssWlanVersion.version;
14174 wdiRspParams.wlanReportedVersion.revision =
14175 startRspParams->wcnssWlanVersion.revision;
14176 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14177 startRspParams->wcnssCrmVersionString,
14178 sizeof(wdiRspParams.wcnssSoftwareVersion));
14179 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14180 startRspParams->wcnssWlanVersionString,
14181 sizeof(wdiRspParams.wcnssHardwareVersion));
14182 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14183
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014184 /*Save the HAL Version*/
14185 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14186
Jeff Johnson295189b2012-06-20 16:38:30 -070014187 wpalMutexAcquire(&pWDICtx->wptMutex);
14188 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14189 {
14190 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14191
14192 /*Cache the start response for further use*/
14193 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014194 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014195 sizeof(pWDICtx->wdiCachedStartRspParams));
14196
14197 }
14198 else
14199 {
14200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14201 "Failed to start device with status %s(%d)",
14202 WDI_getHALStatusMsgString(startRspParams->status),
14203 startRspParams->status);
14204
14205 /*Set the expected state transition to stopped - because the start has
14206 failed*/
14207 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14208
14209 wpalMutexRelease(&pWDICtx->wptMutex);
14210
14211 /*Notify UMAC*/
14212 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014213
Jeff Johnson295189b2012-06-20 16:38:30 -070014214 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14215
14216 /*Although the response is an error - it was processed by our function
14217 so as far as the caller is concerned this is a succesful reponse processing*/
14218 return WDI_STATUS_SUCCESS;
14219 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014220
Jeff Johnson295189b2012-06-20 16:38:30 -070014221 wpalMutexRelease(&pWDICtx->wptMutex);
14222
14223 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14224 {
14225 /* FTM mode does not need to execute below */
14226 /* Notify UMAC */
14227 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14228 return WDI_STATUS_SUCCESS;
14229 }
14230
14231 /* START the Data transport */
14232 WDTS_startTransport(pWDICtx);
14233
14234 /*Start the STA Table !- check this logic again*/
14235 WDI_STATableStart(pWDICtx);
14236
14237#ifndef HAL_SELF_STA_PER_BSS
14238 /* Store the Self STA Index */
14239 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14240
14241 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14242 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14243 WDI_MAC_ADDR_LEN);
14244
14245 /* At this point add the self-STA */
14246
14247 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14248 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14249 /*! TO DO: wdiAddSTAParam.dpuSig */
14250 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14251 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14252 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14253
14254 //all DPU indices are the same for self STA
14255 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14256 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014257 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14259 WDI_MAC_ADDR_LEN);
14260 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14261 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14262
14263 /* Note: Since we don't get an explicit config STA request for self STA, we
14264 add the self STA upon receiving the Start response message. But the
14265 self STA entry in the table is deleted when WDI gets an explicit delete STA
14266 request */
14267 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14268#endif
14269
14270 /*Notify UMAC*/
14271 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14272
Jeff Johnsone7245742012-09-05 17:12:55 -070014273 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014274}/*WDI_ProcessStartRsp*/
14275
14276
14277/**
14278 @brief Process Stop Response function (called when a response
14279 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014280
14281 @param pWDICtx: pointer to the WLAN DAL context
14282 pEventData: pointer to the event information structure
14283
Jeff Johnson295189b2012-06-20 16:38:30 -070014284 @see
14285 @return Result of the function call
14286*/
14287WDI_Status
14288WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014289(
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 WDI_ControlBlockType* pWDICtx,
14291 WDI_EventInfoType* pEventData
14292)
14293{
14294 WDI_Status wdiStatus;
14295 WDI_StopRspCb wdiStopRspCb = NULL;
14296
Jeff Johnsone7245742012-09-05 17:12:55 -070014297 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14299
Jeff Johnsone7245742012-09-05 17:12:55 -070014300 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014301 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014302 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 -------------------------------------------------------------------------*/
14304 if (( NULL == pEventData ) ||
14305 ( NULL == pEventData->pEventData) ||
14306 ( NULL == wdiStopRspCb ))
14307 {
14308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014310 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 Extract response and send it to UMAC
14316 -------------------------------------------------------------------------*/
14317 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14318 {
14319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14320 "Invalid response length in Stop Resp %x %x",
14321 pEventData->uEventDataSize);
14322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 }
14325
14326 /*-------------------------------------------------------------------------
14327 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014328 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014330 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14331 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014332 sizeof(halMacStopRspMsg.stopRspParams));
14333
Jeff Johnsone7245742012-09-05 17:12:55 -070014334 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014335
14336 wpalMutexAcquire(&pWDICtx->wptMutex);
14337
14338 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 --------------------------------------------------------------------------*/
14341 if ( WDI_STATUS_SUCCESS != wdiStatus )
14342 {
14343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14344 "Failed to stop the device with status %s (%d)",
14345 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14346 halMacStopRspMsg.stopRspParams.status);
14347
Jeff Johnsone7245742012-09-05 17:12:55 -070014348 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14349
Jeff Johnson295189b2012-06-20 16:38:30 -070014350 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014353
Jeff Johnson295189b2012-06-20 16:38:30 -070014354 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14355
14356 /*Transition now as WDI may get preempted imediately after it sends
14357 up the Stop Response and it will not get to process the state transition
14358 from Main Rsp function*/
14359 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14360 wpalMutexRelease(&pWDICtx->wptMutex);
14361
14362 /*! TO DO: - STOP the Data transport */
14363
14364 /*Notify UMAC*/
14365 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14366
Jeff Johnsone7245742012-09-05 17:12:55 -070014367 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014368}/*WDI_ProcessStopRsp*/
14369
14370/**
14371 @brief Process Close Rsp function (called when a response
14372 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014373
14374 @param pWDICtx: pointer to the WLAN DAL context
14375 pEventData: pointer to the event information structure
14376
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 @see
14378 @return Result of the function call
14379*/
14380WDI_Status
14381WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014382(
Jeff Johnson295189b2012-06-20 16:38:30 -070014383 WDI_ControlBlockType* pWDICtx,
14384 WDI_EventInfoType* pEventData
14385)
14386{
14387 /*There is no close response comming from HAL - function just kept for
14388 simmetry */
14389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014390 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014391}/*WDI_ProcessCloseRsp*/
14392
14393
14394/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014395 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014396============================================================================*/
14397
14398/**
14399 @brief Process Init Scan Rsp function (called when a response
14400 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014401
14402 @param pWDICtx: pointer to the WLAN DAL context
14403 pEventData: pointer to the event information structure
14404
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 @see
14406 @return Result of the function call
14407*/
14408WDI_Status
14409WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014410(
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 WDI_ControlBlockType* pWDICtx,
14412 WDI_EventInfoType* pEventData
14413)
14414{
14415 WDI_Status wdiStatus;
14416 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014417 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014418 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14420
14421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014422 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 -------------------------------------------------------------------------*/
14424 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14425 ( NULL == pEventData->pEventData))
14426 {
14427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014428 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014431 }
14432
14433 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14434 if( NULL == wdiInitScanRspCb)
14435 {
14436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014437 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 }
14441
14442 /*-------------------------------------------------------------------------
14443 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014444 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014445 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014446 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14447 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 sizeof(halInitScanRspMsg.initScanRspParams));
14449
Jeff Johnsone7245742012-09-05 17:12:55 -070014450 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014451
14452 if ( pWDICtx->bInBmps )
14453 {
14454 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014455 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14456 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14458 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14459 WDI_ASSERT(0);
14460 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 }
14462
14463 /*Notify UMAC*/
14464 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14465
Jeff Johnsone7245742012-09-05 17:12:55 -070014466 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014467}/*WDI_ProcessInitScanRsp*/
14468
14469
14470/**
14471 @brief Process Start Scan Rsp function (called when a response
14472 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014473
14474 @param pWDICtx: pointer to the WLAN DAL context
14475 pEventData: pointer to the event information structure
14476
Jeff Johnson295189b2012-06-20 16:38:30 -070014477 @see
14478 @return Result of the function call
14479*/
14480WDI_Status
14481WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014482(
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 WDI_ControlBlockType* pWDICtx,
14484 WDI_EventInfoType* pEventData
14485)
14486{
14487 WDI_StartScanRspParamsType wdiStartScanParams;
14488 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014489
14490 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14492
14493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014494 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014495 -------------------------------------------------------------------------*/
14496 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14497 ( NULL == pEventData->pEventData))
14498 {
14499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 }
14504
14505 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14506 if( NULL == wdiStartScanRspCb)
14507 {
14508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014509 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014510 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014511 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 }
14513
14514 /*-------------------------------------------------------------------------
14515 Extract response and send it to UMAC
14516 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014517 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14518 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 sizeof(halStartScanRspMsg.startScanRspParams));
14520
14521 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14522 halStartScanRspMsg.startScanRspParams.status);
14523#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014524 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014526 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014527 halStartScanRspMsg.startScanRspParams.startTSF,
14528 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014529#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014530
14531 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14532 {
14533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14534 "Start scan failed with status %s (%d)",
14535 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14536 halStartScanRspMsg.startScanRspParams.status);
14537 /* send the status to UMAC, don't return from here*/
14538 }
14539
14540 /*Notify UMAC*/
14541 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14542
Jeff Johnsone7245742012-09-05 17:12:55 -070014543 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014544
14545}/*WDI_ProcessStartScanRsp*/
14546
14547
14548/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014549 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014551
14552 @param pWDICtx: pointer to the WLAN DAL context
14553 pEventData: pointer to the event information structure
14554
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 @see
14556 @return Result of the function call
14557*/
14558WDI_Status
14559WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014560(
Jeff Johnson295189b2012-06-20 16:38:30 -070014561 WDI_ControlBlockType* pWDICtx,
14562 WDI_EventInfoType* pEventData
14563)
14564{
14565 WDI_Status wdiStatus;
14566 tHalEndScanRspMsg halEndScanRspMsg;
14567 WDI_EndScanRspCb wdiEndScanRspCb;
14568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14569
14570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014571 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014572 -------------------------------------------------------------------------*/
14573 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14574 ( NULL == pEventData->pEventData))
14575 {
14576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014577 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014578 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 }
14581
14582 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14583
14584 /*-------------------------------------------------------------------------
14585 Extract response and send it to UMAC
14586 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14588 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 sizeof(halEndScanRspMsg.endScanRspParams));
14590
Jeff Johnsone7245742012-09-05 17:12:55 -070014591 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014592
14593 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14594 {
14595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14596 "End Scan failed with status %s (%d )",
14597 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14598 halEndScanRspMsg.endScanRspParams.status);
14599 /* send the status to UMAC, don't return from here*/
14600 }
14601
14602 /*Notify UMAC*/
14603 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14604
Jeff Johnsone7245742012-09-05 17:12:55 -070014605 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014606}/*WDI_ProcessEndScanRsp*/
14607
14608
14609/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014610 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014611 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014612
14613 @param pWDICtx: pointer to the WLAN DAL context
14614 pEventData: pointer to the event information structure
14615
Jeff Johnson295189b2012-06-20 16:38:30 -070014616 @see
14617 @return Result of the function call
14618*/
14619WDI_Status
14620WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014621(
Jeff Johnson295189b2012-06-20 16:38:30 -070014622 WDI_ControlBlockType* pWDICtx,
14623 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014624)
Jeff Johnson295189b2012-06-20 16:38:30 -070014625{
14626 WDI_Status wdiStatus;
14627 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014628
14629 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14631
14632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014634 -------------------------------------------------------------------------*/
14635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14636 ( NULL == pEventData->pEventData))
14637 {
14638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014642 }
14643
14644 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14645
14646 /*-------------------------------------------------------------------------
14647 Extract response and send it to UMAC
14648 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014649 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14650 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14652
Jeff Johnsone7245742012-09-05 17:12:55 -070014653 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014654
14655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014656 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 halFinishScanRspMsg.finishScanRspParams.status);
14658
14659 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14660 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14661 {
14662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14663 "Finish Scan failed with status %s (%d)",
14664 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14665 halFinishScanRspMsg.finishScanRspParams.status);
14666 /* send the status to UMAC, don't return from here*/
14667 }
14668
14669 /*Notify UMAC*/
14670 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14671
Jeff Johnsone7245742012-09-05 17:12:55 -070014672 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014673}/*WDI_ProcessFinishScanRsp*/
14674
14675/**
14676 @brief Process Join Response function (called when a response
14677 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014678
14679 @param pWDICtx: pointer to the WLAN DAL context
14680 pEventData: pointer to the event information structure
14681
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 @see
14683 @return Result of the function call
14684*/
14685WDI_Status
14686WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014687(
Jeff Johnson295189b2012-06-20 16:38:30 -070014688 WDI_ControlBlockType* pWDICtx,
14689 WDI_EventInfoType* pEventData
14690)
14691{
14692 WDI_Status wdiStatus;
14693 WDI_JoinRspCb wdiJoinRspCb;
14694 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014695
14696 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14698
14699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014700 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014701 -------------------------------------------------------------------------*/
14702 if (( NULL == pWDICtx ) ||
14703 ( NULL == pWDICtx->pfncRspCB ) ||
14704 ( NULL == pEventData ) ||
14705 ( NULL == pEventData->pEventData))
14706 {
14707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 }
14712
14713 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14714
14715 /*-------------------------------------------------------------------------
14716 Extract response and send it to UMAC
14717 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014718 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14719 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 sizeof(halJoinRspMsg.joinRspParams));
14721
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014723
14724 wpalMutexAcquire(&pWDICtx->wptMutex);
14725
14726 /*-----------------------------------------------------------------------
14727 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014728 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014729 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014730 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14732 {
14733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014734 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14735 "association no longer in progress %d - mysterious HAL response",
14736 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014737
Jeff Johnsone7245742012-09-05 17:12:55 -070014738 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014740 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014741 }
14742
14743 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14744
14745 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014746 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014747 -----------------------------------------------------------------------*/
14748 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14749 {
14750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14751 "Join only allowed in Joining state - failure state is %d "
14752 "strange HAL response", pBSSSes->wdiAssocState);
14753
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14755
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014757 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014758 }
14759
14760
14761 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 -----------------------------------------------------------------------*/
14764 if ( WDI_STATUS_SUCCESS != wdiStatus )
14765 {
14766 /*Association was failed by HAL - remove session*/
14767 WDI_DeleteSession(pWDICtx, pBSSSes);
14768
14769 /*Association no longer in progress */
14770 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14771
14772 /*Association no longer in progress - prepare pending assoc for processing*/
14773 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014774
Jeff Johnson295189b2012-06-20 16:38:30 -070014775 }
14776 else
14777 {
14778 /*Transition to state Joining - this may be redundant as we are supposed
14779 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014780 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 }
14782
14783 wpalMutexRelease(&pWDICtx->wptMutex);
14784
14785 /*Notify UMAC*/
14786 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14787
Jeff Johnsone7245742012-09-05 17:12:55 -070014788 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014789}/*WDI_ProcessJoinRsp*/
14790
14791
14792/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014795
14796 @param pWDICtx: pointer to the WLAN DAL context
14797 pEventData: pointer to the event information structure
14798
Jeff Johnson295189b2012-06-20 16:38:30 -070014799 @see
14800 @return Result of the function call
14801*/
14802WDI_Status
14803WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014804(
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 WDI_ControlBlockType* pWDICtx,
14806 WDI_EventInfoType* pEventData
14807)
14808{
14809 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14810 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014811 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014812 WDI_BSSSessionType* pBSSSes = NULL;
14813
Jeff Johnsone7245742012-09-05 17:12:55 -070014814 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014815 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14816 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014817
Jeff Johnson295189b2012-06-20 16:38:30 -070014818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14819
14820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014821 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014822 -------------------------------------------------------------------------*/
14823 if (( NULL == pEventData ) ||
14824 ( NULL == pEventData->pEventData))
14825 {
14826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014827 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014830 }
14831
14832 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14833
14834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014835 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014836 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14838 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014839 sizeof(halConfigBssRspMsg.configBssRspParams));
14840
14841 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14842 halConfigBssRspMsg.configBssRspParams.status);
14843 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14844 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014845 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014846 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14847 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014848
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014850
14851 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014852 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014853
14854 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014856
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014858
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014860 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014861 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14862 #endif
14863 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14864 halConfigBssRspMsg.configBssRspParams.staMac,
14865 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014866
Jeff Johnson295189b2012-06-20 16:38:30 -070014867 wpalMutexAcquire(&pWDICtx->wptMutex);
14868 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014869 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014870 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14872 wdiConfigBSSParams.macBSSID,
14873 &pBSSSes);
14874
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 /*-----------------------------------------------------------------------
14876 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 -----------------------------------------------------------------------*/
14879 if ( NULL == pBSSSes )
14880 {
14881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14882 "Association sequence for this BSS does not yet exist "
14883 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014884
14885 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14886
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014890
Jeff Johnson295189b2012-06-20 16:38:30 -070014891 /*Save data for this BSS*/
14892 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14893 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014897 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014898 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014899 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014902 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014903 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14904 pBSSSes->bcastStaIdx =
14905 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014906
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014908
Jeff Johnson295189b2012-06-20 16:38:30 -070014909 /*-------------------------------------------------------------------------
14910 Add Peer STA
14911 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14914 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014915
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014919 wdiAddSTAParam.ucHTCapable =
14920 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14921 wdiAddSTAParam.ucStaType =
14922 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14923
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014925 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14926 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014928
14929 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14930 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14931 WDI_MAC_ADDR_LEN);
14932
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014934 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014936 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014937 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014938 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014942 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014944 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014946
Jeff Johnson295189b2012-06-20 16:38:30 -070014947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14948 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014949
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14951 /*-------------------------------------------------------------------------
14952 Add Broadcast STA only in AP mode
14953 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014954 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014955 WDI_BSS_OPERATIONAL_MODE_AP )
14956 {
14957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14958 "Add BCAST STA to table for index: %d",
14959 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014960
14961 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014962 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014963
Jeff Johnson295189b2012-06-20 16:38:30 -070014964 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14965 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14966 }
14967 wpalMutexRelease(&pWDICtx->wptMutex);
14968 }
14969 else
14970 {
14971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14972 "Config BSS RSP failed with status : %s(%d)",
14973 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014974 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 halConfigBssRspMsg.configBssRspParams.status);
14976
Jeff Johnsone7245742012-09-05 17:12:55 -070014977
Jeff Johnson295189b2012-06-20 16:38:30 -070014978 /*Association was failed by HAL - remove session*/
14979 WDI_DeleteSession(pWDICtx, pBSSSes);
14980
14981 /*Association no longer in progress */
14982 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14983
14984 /*Association no longer in progress - prepare pending assoc for processing*/
14985 WDI_DequeueAssocRequest(pWDICtx);
14986
14987 }
14988
14989 /*Notify UMAC*/
14990 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14991
Jeff Johnsone7245742012-09-05 17:12:55 -070014992 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014993}/*WDI_ProcessConfigBSSRsp*/
14994
14995
14996/**
14997 @brief Process Del BSS Response function (called when a response
14998 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014999
15000 @param pWDICtx: pointer to the WLAN DAL context
15001 pEventData: pointer to the event information structure
15002
Jeff Johnson295189b2012-06-20 16:38:30 -070015003 @see
15004 @return Result of the function call
15005*/
15006WDI_Status
15007WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015008(
Jeff Johnson295189b2012-06-20 16:38:30 -070015009 WDI_ControlBlockType* pWDICtx,
15010 WDI_EventInfoType* pEventData
15011)
15012{
15013 WDI_DelBSSRspParamsType wdiDelBSSParams;
15014 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015015 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 WDI_BSSSessionType* pBSSSes = NULL;
15017
Jeff Johnsone7245742012-09-05 17:12:55 -070015018 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15020
15021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015022 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015023 -------------------------------------------------------------------------*/
15024 if (( NULL == pEventData ) ||
15025 ( NULL == pEventData->pEventData))
15026 {
15027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015028 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015031 }
15032
15033 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15034
15035 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015036 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015037 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015038 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15039 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015040 sizeof(halDelBssRspMsg.deleteBssRspParams));
15041
15042
15043 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015045
15046 wpalMutexAcquire(&pWDICtx->wptMutex);
15047
15048 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015049 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015050 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015051 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15052 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15053 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015054
15055 /*-----------------------------------------------------------------------
15056 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015057 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 -----------------------------------------------------------------------*/
15059 if ( NULL == pBSSSes )
15060 {
15061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15062 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015063 "association no longer in progress - mysterious HAL response");
15064
15065 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15066
15067 wpalMutexRelease(&pWDICtx->wptMutex);
15068 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015070
15071 /*Extract BSSID for the response to UMAC*/
15072 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15073 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15074
15075 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15076
15077 /*-----------------------------------------------------------------------
15078 The current session will be deleted
15079 -----------------------------------------------------------------------*/
15080 WDI_DeleteSession(pWDICtx, pBSSSes);
15081
15082
15083 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15084 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015085 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015086 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015087 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015088
15089 /* Delete the STA's in this BSS */
15090 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15091
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 wpalMutexRelease(&pWDICtx->wptMutex);
15093
15094 /*Notify UMAC*/
15095 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15096
Jeff Johnsone7245742012-09-05 17:12:55 -070015097 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015098}/*WDI_ProcessDelBSSRsp*/
15099
15100/**
15101 @brief Process Post Assoc Rsp function (called when a response
15102 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015103
15104 @param pWDICtx: pointer to the WLAN DAL context
15105 pEventData: pointer to the event information structure
15106
Jeff Johnson295189b2012-06-20 16:38:30 -070015107 @see
15108 @return Result of the function call
15109*/
15110WDI_Status
15111WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015112(
Jeff Johnson295189b2012-06-20 16:38:30 -070015113 WDI_ControlBlockType* pWDICtx,
15114 WDI_EventInfoType* pEventData
15115)
15116{
15117 WDI_PostAssocRspParamsType wdiPostAssocParams;
15118 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015119 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015120 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015121 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15123
15124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015125 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015126 -------------------------------------------------------------------------*/
15127 if (( NULL == pEventData ) ||
15128 ( NULL == pEventData->pEventData))
15129 {
15130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015131 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015132 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015133 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015134 }
15135
15136 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15137
15138 /*-------------------------------------------------------------------------
15139 Extract response and send it to UMAC
15140 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015141 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15142 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015143 sizeof(halPostAssocRspMsg.postAssocRspParams));
15144
15145 /*Extract the Post Assoc STA Params */
15146
Jeff Johnsone7245742012-09-05 17:12:55 -070015147 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015148 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015149 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015150 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015151 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015152 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15153
Jeff Johnsone7245742012-09-05 17:12:55 -070015154 wdiPostAssocParams.wdiStatus =
15155 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
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.staParams.macSTA,
15160 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 WDI_MAC_ADDR_LEN);
15162
15163 /* Extract Post Assoc BSS Params */
15164
Jeff Johnsone7245742012-09-05 17:12:55 -070015165 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15166 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15167 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015168
15169 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15170 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015172 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15173 .macSTA, WDI_MAC_ADDR_LEN);
15174
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15177
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15180
15181 wdiPostAssocParams.bssParams.ucBSSIdx =
15182 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15183
Jeff Johnsone7245742012-09-05 17:12:55 -070015184 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015185 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15186
15187 wpalMutexAcquire(&pWDICtx->wptMutex);
15188
15189 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015190 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015191 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015192 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015193 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015194 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015195
15196 /*-----------------------------------------------------------------------
15197 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015198 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015199 -----------------------------------------------------------------------*/
15200 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015201 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015202 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15203 {
15204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15205 "Association sequence for this BSS does not yet exist or "
15206 "association no longer in progress - mysterious HAL response");
15207
Jeff Johnsone7245742012-09-05 17:12:55 -070015208 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15209
Jeff Johnson295189b2012-06-20 16:38:30 -070015210 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 }
15213
15214 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015215 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 -----------------------------------------------------------------------*/
15217 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15218 {
15219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15220 "Post Assoc not allowed before JOIN - failing request "
15221 "strange HAL response");
15222
Jeff Johnsone7245742012-09-05 17:12:55 -070015223 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15224
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015226 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015227 }
15228
15229 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015230 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015231 -----------------------------------------------------------------------*/
15232 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15233 {
15234 /*Association was failed by HAL - remove session*/
15235 WDI_DeleteSession(pWDICtx, pBSSSes);
15236 }
15237 else
15238 {
15239 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015240 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015241
15242 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015243 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015244 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015246 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015247 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015248 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15251
Jeff Johnsone7245742012-09-05 17:12:55 -070015252 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015253 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15254 }
15255
15256 /*Association no longer in progress */
15257 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15258
15259 /*Association no longer in progress - prepare pending assoc for processing*/
15260 WDI_DequeueAssocRequest(pWDICtx);
15261
15262 wpalMutexRelease(&pWDICtx->wptMutex);
15263
15264 /*Notify UMAC*/
15265 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15266
Jeff Johnsone7245742012-09-05 17:12:55 -070015267 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015268}/*WDI_ProcessPostAssocRsp*/
15269
15270/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015271 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015272 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015273
15274 @param pWDICtx: pointer to the WLAN DAL context
15275 pEventData: pointer to the event information structure
15276
Jeff Johnson295189b2012-06-20 16:38:30 -070015277 @see
15278 @return Result of the function call
15279*/
15280WDI_Status
15281WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015282(
Jeff Johnson295189b2012-06-20 16:38:30 -070015283 WDI_ControlBlockType* pWDICtx,
15284 WDI_EventInfoType* pEventData
15285)
15286{
15287 WDI_DelSTARspParamsType wdiDelSTARsp;
15288 WDI_DelSTARspCb wdiDelSTARspCb;
15289 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15292
15293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015295 -------------------------------------------------------------------------*/
15296 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15297 ( NULL == pEventData->pEventData))
15298 {
15299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 }
15304
15305 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15306
15307 /*-------------------------------------------------------------------------
15308 Extract response and send it to UMAC
15309 -------------------------------------------------------------------------*/
15310 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015311 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015312 sizeof(halDelStaRspMsg.delStaRspParams));
15313
15314 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015315 wdiDelSTARsp.wdiStatus =
15316 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015317
15318 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15319
15320 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15321 if(staType == WDI_STA_ENTRY_SELF)
15322 {
15323 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15324
15325 /* At this point add the self-STA */
15326
15327 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15328 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15329 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15330
15331#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15332#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15333
15334 //all DPU indices are the same for self STA
15335 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15336 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15337 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15338 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15339 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15340 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015341
15342 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 }
15344 else
15345 {
15346 //Delete the station in the table
15347 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15348 }
15349
15350 /*Notify UMAC*/
15351 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15352
Jeff Johnsone7245742012-09-05 17:12:55 -070015353 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015354}/*WDI_ProcessDelSTARsp*/
15355
15356
15357/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015358 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015359==========================================================================*/
15360
15361/**
15362 @brief Process Set BSS Key Rsp function (called when a response
15363 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015364
15365 @param pWDICtx: pointer to the WLAN DAL context
15366 pEventData: pointer to the event information structure
15367
Jeff Johnson295189b2012-06-20 16:38:30 -070015368 @see
15369 @return Result of the function call
15370*/
15371WDI_Status
15372WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015373(
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 WDI_ControlBlockType* pWDICtx,
15375 WDI_EventInfoType* pEventData
15376)
15377{
15378 WDI_Status wdiStatus;
15379 eHalStatus halStatus;
15380 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15382
15383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015384 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015385 -------------------------------------------------------------------------*/
15386 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15387 ( NULL == pEventData->pEventData))
15388 {
15389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015390 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015391 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015393 }
15394
15395 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15396
15397 /*-------------------------------------------------------------------------
15398 Extract response and send it to UMAC
15399 -------------------------------------------------------------------------*/
15400 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015401 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015402
15403 if ( eHAL_STATUS_SUCCESS != halStatus )
15404 {
15405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15406 "Set BSS Key failed with status %s (%d)",
15407 WDI_getHALStatusMsgString(halStatus),
15408 halStatus);
15409 /* send the status to UMAC, don't return from here*/
15410 }
15411
15412 /*Notify UMAC*/
15413 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15414
Jeff Johnsone7245742012-09-05 17:12:55 -070015415 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015416}/*WDI_ProcessSetBssKeyRsp*/
15417
15418/**
15419 @brief Process Remove BSS Key Rsp function (called when a response
15420 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015421
15422 @param pWDICtx: pointer to the WLAN DAL context
15423 pEventData: pointer to the event information structure
15424
Jeff Johnson295189b2012-06-20 16:38:30 -070015425 @see
15426 @return Result of the function call
15427*/
15428WDI_Status
15429WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015430(
Jeff Johnson295189b2012-06-20 16:38:30 -070015431 WDI_ControlBlockType* pWDICtx,
15432 WDI_EventInfoType* pEventData
15433)
15434{
15435 WDI_Status wdiStatus;
15436 eHalStatus halStatus;
15437 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15439
15440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015442 -------------------------------------------------------------------------*/
15443 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15444 ( NULL == pEventData->pEventData))
15445 {
15446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015450 }
15451
15452 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15453
15454 /*-------------------------------------------------------------------------
15455 Extract response and send it to UMAC
15456 -------------------------------------------------------------------------*/
15457 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015458 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015459
15460 if ( eHAL_STATUS_SUCCESS != halStatus )
15461 {
15462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15463 "Remove BSS Key failed with status %s (%d )",
15464 WDI_getHALStatusMsgString(halStatus),
15465 halStatus);
15466 /* send the status to UMAC, don't return from here*/
15467 }
15468
15469 /*Notify UMAC*/
15470 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15471
Jeff Johnsone7245742012-09-05 17:12:55 -070015472 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015473}/*WDI_ProcessSetBssKeyRsp*/
15474
15475
15476/**
15477 @brief Process Set STA Key Rsp function (called when a response
15478 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015479
15480 @param pWDICtx: pointer to the WLAN DAL context
15481 pEventData: pointer to the event information structure
15482
Jeff Johnson295189b2012-06-20 16:38:30 -070015483 @see
15484 @return Result of the function call
15485*/
15486WDI_Status
15487WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015488(
Jeff Johnson295189b2012-06-20 16:38:30 -070015489 WDI_ControlBlockType* pWDICtx,
15490 WDI_EventInfoType* pEventData
15491)
15492{
15493 WDI_Status wdiStatus;
15494 eHalStatus halStatus;
15495 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15497
15498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015499 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 -------------------------------------------------------------------------*/
15501 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15502 ( NULL == pEventData->pEventData))
15503 {
15504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015505 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 }
15509
15510 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15511
15512 /*-------------------------------------------------------------------------
15513 Extract response and send it to UMAC
15514 -------------------------------------------------------------------------*/
15515 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015516 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015517
15518 if ( eHAL_STATUS_SUCCESS != halStatus )
15519 {
15520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15521 "Set STA Key failed with status %s (%d)",
15522 WDI_getHALStatusMsgString(halStatus),
15523 halStatus);
15524 /* send the status to UMAC, don't return from here*/
15525 }
15526
15527 /*Notify UMAC*/
15528 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15529
Jeff Johnsone7245742012-09-05 17:12:55 -070015530 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015531}/*WDI_ProcessSetSTAKeyRsp*/
15532
15533/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015534 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015535 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015536
15537 @param pWDICtx: pointer to the WLAN DAL context
15538 pEventData: pointer to the event information structure
15539
Jeff Johnson295189b2012-06-20 16:38:30 -070015540 @see
15541 @return Result of the function call
15542*/
15543WDI_Status
15544WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015545(
Jeff Johnson295189b2012-06-20 16:38:30 -070015546 WDI_ControlBlockType* pWDICtx,
15547 WDI_EventInfoType* pEventData
15548)
15549{
15550 WDI_Status wdiStatus;
15551 eHalStatus halStatus;
15552 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15554
15555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 -------------------------------------------------------------------------*/
15558 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15559 ( NULL == pEventData->pEventData))
15560 {
15561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 }
15566
15567 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15568
15569 /*-------------------------------------------------------------------------
15570 Extract response and send it to UMAC
15571 -------------------------------------------------------------------------*/
15572 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015573 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015574
15575 if ( eHAL_STATUS_SUCCESS != halStatus )
15576 {
15577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15578 "Remove STA Key failed with status %s (%d)",
15579 WDI_getHALStatusMsgString(halStatus),
15580 halStatus);
15581 /* send the status to UMAC, don't return from here*/
15582 }
15583
15584 /*Notify UMAC*/
15585 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15586
Jeff Johnsone7245742012-09-05 17:12:55 -070015587 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015588}/*WDI_ProcessRemoveStaKeyRsp*/
15589
15590/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015591 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015593
15594 @param pWDICtx: pointer to the WLAN DAL context
15595 pEventData: pointer to the event information structure
15596
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 @see
15598 @return Result of the function call
15599*/
15600WDI_Status
15601WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015602(
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 WDI_ControlBlockType* pWDICtx,
15604 WDI_EventInfoType* pEventData
15605)
15606{
15607 WDI_Status wdiStatus;
15608 eHalStatus halStatus;
15609 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15611
15612 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015613 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015614 -------------------------------------------------------------------------*/
15615 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15616 ( NULL == pEventData->pEventData))
15617 {
15618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015622 }
15623
15624 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15625
15626 /*-------------------------------------------------------------------------
15627 Extract response and send it to UMAC
15628 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015629 wpalMemoryCopy( &halStatus,
15630 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015631 sizeof(halStatus));
15632
Jeff Johnsone7245742012-09-05 17:12:55 -070015633 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015634
15635 if ( eHAL_STATUS_SUCCESS != halStatus )
15636 {
15637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15638 "Set STA Key failed with status %s (%d)",
15639 WDI_getHALStatusMsgString(halStatus),
15640 halStatus);
15641 /* send the status to UMAC, don't return from here*/
15642 }
15643
15644 /*Notify UMAC*/
15645 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15646
Jeff Johnsone7245742012-09-05 17:12:55 -070015647 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015648}/*WDI_ProcessSetSTABcastKeyRsp*/
15649
15650/**
15651 @brief Process Remove STA Bcast Key Rsp function (called when a
15652 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015653
15654 @param pWDICtx: pointer to the WLAN DAL context
15655 pEventData: pointer to the event information structure
15656
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 @see
15658 @return Result of the function call
15659*/
15660WDI_Status
15661WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015662(
Jeff Johnson295189b2012-06-20 16:38:30 -070015663 WDI_ControlBlockType* pWDICtx,
15664 WDI_EventInfoType* pEventData
15665)
15666{
15667 WDI_Status wdiStatus;
15668 eHalStatus halStatus;
15669 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15671
15672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015674 -------------------------------------------------------------------------*/
15675 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15676 ( NULL == pEventData->pEventData))
15677 {
15678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015679 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015680 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 }
15683
15684 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15685
15686 /*-------------------------------------------------------------------------
15687 Extract response and send it to UMAC
15688 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015689 wpalMemoryCopy( &halStatus,
15690 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015691 sizeof(halStatus));
15692
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015694
15695 if ( eHAL_STATUS_SUCCESS != halStatus )
15696 {
15697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15698 "Remove STA Key failed with status %s (%d)",
15699 WDI_getHALStatusMsgString(halStatus),
15700 halStatus);
15701 /* send the status to UMAC, don't return from here*/
15702 }
15703
15704 /*Notify UMAC*/
15705 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15706
Jeff Johnsone7245742012-09-05 17:12:55 -070015707 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015708}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15709
15710
15711/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015712 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015713==========================================================================*/
15714
15715/**
15716 @brief Process Add TSpec Rsp function (called when a response
15717 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015718
15719 @param pWDICtx: pointer to the WLAN DAL context
15720 pEventData: pointer to the event information structure
15721
Jeff Johnson295189b2012-06-20 16:38:30 -070015722 @see
15723 @return Result of the function call
15724*/
15725WDI_Status
15726WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015727(
Jeff Johnson295189b2012-06-20 16:38:30 -070015728 WDI_ControlBlockType* pWDICtx,
15729 WDI_EventInfoType* pEventData
15730)
15731{
15732 WDI_Status wdiStatus;
15733 eHalStatus halStatus;
15734 WDI_AddTsRspCb wdiAddTsRspCb;
15735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15736
15737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015738 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015739 -------------------------------------------------------------------------*/
15740 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15741 ( NULL == pEventData->pEventData))
15742 {
15743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015744 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015745 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015746 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 }
15748
15749 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15750
15751 /*-------------------------------------------------------------------------
15752 Extract response and send it to UMAC
15753 -------------------------------------------------------------------------*/
15754 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015755 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015756
15757 /*Notify UMAC*/
15758 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15759
Jeff Johnsone7245742012-09-05 17:12:55 -070015760 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015761}/*WDI_ProcessAddTSpecRsp*/
15762
15763
15764/**
15765 @brief Process Del TSpec Rsp function (called when a response
15766 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015767
15768 @param pWDICtx: pointer to the WLAN DAL context
15769 pEventData: pointer to the event information structure
15770
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 @see
15772 @return Result of the function call
15773*/
15774WDI_Status
15775WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015776(
Jeff Johnson295189b2012-06-20 16:38:30 -070015777 WDI_ControlBlockType* pWDICtx,
15778 WDI_EventInfoType* pEventData
15779)
15780{
15781 WDI_Status wdiStatus;
15782 eHalStatus halStatus;
15783 WDI_DelTsRspCb wdiDelTsRspCb;
15784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15785
15786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015788 -------------------------------------------------------------------------*/
15789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15790 ( NULL == pEventData->pEventData))
15791 {
15792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015796 }
15797
15798 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15799
15800 /*-------------------------------------------------------------------------
15801 Extract response and send it to UMAC
15802 -------------------------------------------------------------------------*/
15803 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015804 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015805
15806 /*Notify UMAC*/
15807 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15808
Jeff Johnsone7245742012-09-05 17:12:55 -070015809 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015810}/*WDI_ProcessDelTSpecRsp*/
15811
15812/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015813 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015814 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015815
15816 @param pWDICtx: pointer to the WLAN DAL context
15817 pEventData: pointer to the event information structure
15818
Jeff Johnson295189b2012-06-20 16:38:30 -070015819 @see
15820 @return Result of the function call
15821*/
15822WDI_Status
15823WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015824(
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 WDI_ControlBlockType* pWDICtx,
15826 WDI_EventInfoType* pEventData
15827)
15828{
15829 WDI_Status wdiStatus;
15830 eHalStatus halStatus;
15831 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15833
15834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015835 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 -------------------------------------------------------------------------*/
15837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15838 ( NULL == pEventData->pEventData))
15839 {
15840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015841 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015844 }
15845
15846 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15847
15848 /*-------------------------------------------------------------------------
15849 Extract response and send it to UMAC
15850 -------------------------------------------------------------------------*/
15851 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015853
15854 /*Notify UMAC*/
15855 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15856
Jeff Johnsone7245742012-09-05 17:12:55 -070015857 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015858}/*WDI_ProcessUpdateEDCAParamsRsp*/
15859
15860
15861/**
15862 @brief Process Add BA Rsp function (called when a response
15863 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015864
15865 @param pWDICtx: pointer to the WLAN DAL context
15866 pEventData: pointer to the event information structure
15867
Jeff Johnson295189b2012-06-20 16:38:30 -070015868 @see
15869 @return Result of the function call
15870*/
15871WDI_Status
15872WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015873(
Jeff Johnson295189b2012-06-20 16:38:30 -070015874 WDI_ControlBlockType* pWDICtx,
15875 WDI_EventInfoType* pEventData
15876)
15877{
15878 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15879
15880 tAddBASessionRspParams halBASessionRsp;
15881 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15882
Jeff Johnsone7245742012-09-05 17:12:55 -070015883
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15885
15886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015888 -------------------------------------------------------------------------*/
15889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15890 ( NULL == pEventData->pEventData))
15891 {
15892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015893 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015896 }
15897
15898 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15899
15900 /*-------------------------------------------------------------------------
15901 Extract response and send it to UMAC
15902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015903 wpalMemoryCopy( &halBASessionRsp,
15904 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015905 sizeof(halBASessionRsp));
15906
15907 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15908
Jeff Johnson43971f52012-07-17 12:26:56 -070015909 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 {
15911 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15912 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15913 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15914 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15915 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15916 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15917 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15918 }
15919
15920 /*Notify UMAC*/
15921 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15922
Jeff Johnsone7245742012-09-05 17:12:55 -070015923 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015924}/*WDI_ProcessAddSessionBARsp*/
15925
15926
15927/**
15928 @brief Process Del BA Rsp function (called when a response
15929 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015930
15931 @param pWDICtx: pointer to the WLAN DAL context
15932 pEventData: pointer to the event information structure
15933
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 @see
15935 @return Result of the function call
15936*/
15937WDI_Status
15938WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015939(
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 WDI_ControlBlockType* pWDICtx,
15941 WDI_EventInfoType* pEventData
15942)
15943{
15944 WDI_Status wdiStatus;
15945 eHalStatus halStatus;
15946 WDI_DelBARspCb wdiDelBARspCb;
15947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15948
15949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 -------------------------------------------------------------------------*/
15952 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15953 ( NULL == pEventData->pEventData))
15954 {
15955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 }
15960
15961 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15962
15963 /*-------------------------------------------------------------------------
15964 Extract response and send it to UMAC
15965 -------------------------------------------------------------------------*/
15966 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015967 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015968
15969 if ( eHAL_STATUS_SUCCESS == halStatus )
15970 {
15971 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15972 }
15973
15974 /*Notify UMAC*/
15975 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15976
Jeff Johnsone7245742012-09-05 17:12:55 -070015977 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015978}/*WDI_ProcessDelBARsp*/
15979
15980#ifdef FEATURE_WLAN_CCX
15981/**
15982 @brief Process TSM Stats Rsp function (called when a response
15983 is being received over the bus from HAL)
15984
15985 @param pWDICtx: pointer to the WLAN DAL context
15986 pEventData: pointer to the event information structure
15987
15988 @see
15989 @return Result of the function call
15990*/
15991WDI_Status
15992WDI_ProcessTsmStatsRsp
15993(
15994 WDI_ControlBlockType* pWDICtx,
15995 WDI_EventInfoType* pEventData
15996)
15997{
15998 WDI_TsmRspCb wdiTsmStatsRspCb;
15999 tTsmStatsRspMsg halTsmStatsRspMsg;
16000 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16002
16003 /*-------------------------------------------------------------------------
16004 Sanity check
16005 -------------------------------------------------------------------------*/
16006 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16007 ( NULL == pEventData->pEventData))
16008 {
16009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016010 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016011 WDI_ASSERT(0);
16012 return WDI_STATUS_E_FAILURE;
16013 }
16014
16015 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16016
16017 /*-------------------------------------------------------------------------
16018 Unpack HAL Response Message - the header was already extracted by the
16019 main Response Handling procedure
16020 -------------------------------------------------------------------------*/
16021 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16022 pEventData->pEventData,
16023 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16024
16025 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16026 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16027 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16028 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16029 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16030 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16031 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16032 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16033 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16034 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16035 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16036 halTsmStatsRspMsg.tsmStatsRspParams.status);
16037
16038 /*Notify UMAC*/
16039 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16040
16041 return WDI_STATUS_SUCCESS;
16042}/*WDI_ProcessTsmStatsRsp*/
16043
16044#endif
16045
16046
16047
16048/**
16049 @brief Process Flush AC Rsp function (called when a response
16050 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016051
16052 @param pWDICtx: pointer to the WLAN DAL context
16053 pEventData: pointer to the event information structure
16054
Jeff Johnson295189b2012-06-20 16:38:30 -070016055 @see
16056 @return Result of the function call
16057*/
16058WDI_Status
16059WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016060(
Jeff Johnson295189b2012-06-20 16:38:30 -070016061 WDI_ControlBlockType* pWDICtx,
16062 WDI_EventInfoType* pEventData
16063)
16064{
16065 WDI_Status wdiStatus;
16066 eHalStatus halStatus;
16067 WDI_FlushAcRspCb wdiFlushAcRspCb;
16068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16069
16070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016072 -------------------------------------------------------------------------*/
16073 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16074 ( NULL == pEventData->pEventData))
16075 {
16076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 }
16081
16082 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16083
16084 /*-------------------------------------------------------------------------
16085 Extract response and send it to UMAC
16086 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016087 wpalMemoryCopy( &halStatus,
16088 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 sizeof(halStatus));
16090
Jeff Johnsone7245742012-09-05 17:12:55 -070016091 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016092
16093 /*Notify UMAC*/
16094 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16095
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016097}/*WDI_ProcessFlushAcRsp*/
16098
16099/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016100 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016101 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016102
16103 @param pWDICtx: pointer to the WLAN DAL context
16104 pEventData: pointer to the event information structure
16105
Jeff Johnson295189b2012-06-20 16:38:30 -070016106 @see
16107 @return Result of the function call
16108*/
16109WDI_Status
16110WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016111(
Jeff Johnson295189b2012-06-20 16:38:30 -070016112 WDI_ControlBlockType* pWDICtx,
16113 WDI_EventInfoType* pEventData
16114)
16115{
16116 WDI_Status wdiStatus;
16117 eHalStatus halStatus;
16118 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16120
16121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016122 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 -------------------------------------------------------------------------*/
16124 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16125 ( NULL == pEventData->pEventData))
16126 {
16127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016128 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016129 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016130 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016131 }
16132
16133 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16134
16135 /*-------------------------------------------------------------------------
16136 Extract response and send it to UMAC
16137 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 wpalMemoryCopy( &halStatus,
16139 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016140 sizeof(halStatus));
16141
Jeff Johnsone7245742012-09-05 17:12:55 -070016142 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016143
16144 /*Notify UMAC*/
16145 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16146
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016148}/*WDI_ProcessBtAmpEventRsp*/
16149
16150
16151/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016152 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016154
16155 @param pWDICtx: pointer to the WLAN DAL context
16156 pEventData: pointer to the event information structure
16157
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 @see
16159 @return Result of the function call
16160*/
16161WDI_Status
16162WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016163(
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 WDI_ControlBlockType* pWDICtx,
16165 WDI_EventInfoType* pEventData
16166)
16167{
16168 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16169 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16170 tAddStaSelfRspMsg halAddStaSelfRsp;
16171 WDI_AddStaParams wdiAddSTAParam = {0};
16172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16173
16174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 -------------------------------------------------------------------------*/
16177 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16178 ( NULL == pEventData->pEventData))
16179 {
16180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016181 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016184 }
16185
Jeff Johnsone7245742012-09-05 17:12:55 -070016186 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016187 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16188
16189 /*-------------------------------------------------------------------------
16190 Extract response and send it to UMAC
16191 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016192 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16193 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16195
16196
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 wdiAddSTASelfParams.wdiStatus =
16198 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016199
Jeff Johnsone7245742012-09-05 17:12:55 -070016200 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016201 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016202 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016203 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16206
16207 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16208 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16209 WDI_MAC_ADDR_LEN);
16210
16211
16212#ifdef HAL_SELF_STA_PER_BSS
16213
16214 /* At this point add the self-STA */
16215
16216 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16217 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16218 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16219
16220 //all DPU indices are the same for self STA
16221
16222 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016223 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016224 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16225 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16226 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16227 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16228 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16229
16230 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16231 WDI_MAC_ADDR_LEN);
16232
16233 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16234 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16235
Jeff Johnsone7245742012-09-05 17:12:55 -070016236 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16238 {
16239 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16240 }
16241#endif
16242
16243 /*Notify UMAC*/
16244 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16245
Jeff Johnsone7245742012-09-05 17:12:55 -070016246 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016247}/*WDI_ProcessAddSTASelfRsp*/
16248
16249
16250
16251/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016252 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016253 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016254
16255 @param pWDICtx: pointer to the WLAN DAL context
16256 pEventData: pointer to the event information structure
16257
Jeff Johnson295189b2012-06-20 16:38:30 -070016258 @see
16259 @return Result of the function call
16260*/
16261WDI_Status
16262WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016263(
Jeff Johnson295189b2012-06-20 16:38:30 -070016264 WDI_ControlBlockType* pWDICtx,
16265 WDI_EventInfoType* pEventData
16266)
16267{
16268 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16269 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16270 tDelStaSelfRspParams delStaSelfRspParams;
16271 wpt_uint8 ucStaIdx;
16272
16273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16274
16275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016277 -------------------------------------------------------------------------*/
16278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16279 ( NULL == pEventData->pEventData))
16280 {
16281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016285 }
16286
16287 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16288
16289 /*-------------------------------------------------------------------------
16290 Extract response and send it to UMAC
16291 -------------------------------------------------------------------------*/
16292
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 (wpt_uint8*)pEventData->pEventData,
16295 sizeof(tDelStaSelfRspParams));
16296
Jeff Johnsone7245742012-09-05 17:12:55 -070016297 wdiDelStaSelfRspParams.wdiStatus =
16298 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016299
Jeff Johnsone7245742012-09-05 17:12:55 -070016300 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016301 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16302 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16303 {
16304 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016305 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016306 delStaSelfRspParams.selfMacAddr,
16307 &ucStaIdx);
16308 if(WDI_STATUS_E_FAILURE == wdiStatus)
16309 {
16310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016311 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016314 }
16315 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16316 }
16317
16318 /*Notify UMAC*/
16319 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16320
16321 return WDI_STATUS_SUCCESS;
16322}
16323
Jeff Johnsone7245742012-09-05 17:12:55 -070016324#ifdef FEATURE_OEM_DATA_SUPPORT
16325/**
16326 @brief Start Oem Data Rsp function (called when a
16327 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016328
Jeff Johnsone7245742012-09-05 17:12:55 -070016329 @param pWDICtx: pointer to the WLAN DAL context
16330 pEventData: pointer to the event information structure
16331
16332 @see
16333 @return Result of the function call
16334*/
16335#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16336
16337WDI_Status
16338WDI_ProcessStartOemDataRsp
16339(
16340 WDI_ControlBlockType* pWDICtx,
16341 WDI_EventInfoType* pEventData
16342)
16343{
16344 WDI_oemDataRspCb wdiOemDataRspCb;
16345 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16346 tStartOemDataRspParams* halStartOemDataRspParams;
16347
16348 /*-------------------------------------------------------------------------
16349 Sanity check
16350 -------------------------------------------------------------------------*/
16351 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16352 ( NULL == pEventData->pEventData))
16353 {
16354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016355 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016356 WDI_ASSERT(0);
16357 return WDI_STATUS_E_FAILURE;
16358 }
16359
16360 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16361
16362 /*-------------------------------------------------------------------------
16363 Extract response and send it to UMAC
16364 -------------------------------------------------------------------------*/
16365 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16366
16367
16368 //It is the responsibility of the application code to check for failure
16369 //conditions!
16370
16371 //Allocate memory for WDI OEM DATA RSP structure
16372 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16373
16374 if(NULL == wdiOemDataRspParams)
16375 {
16376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16377 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16378 pWDICtx, pEventData, pEventData->pEventData);
16379 WDI_ASSERT(0);
16380 return WDI_STATUS_E_FAILURE;
16381 }
16382
16383 /* Populate WDI structure members */
16384 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16385
16386 /*Notify UMAC*/
16387 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16388
16389 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16390 wpalMemoryFree(wdiOemDataRspParams);
16391
16392 return WDI_STATUS_SUCCESS;
16393}/*WDI_PrcoessStartOemDataRsp*/
16394#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016395
16396/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016397 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016398===========================================================================*/
16399
16400/**
16401 @brief Process Channel Switch Rsp function (called when a response
16402 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016403
16404 @param pWDICtx: pointer to the WLAN DAL context
16405 pEventData: pointer to the event information structure
16406
Jeff Johnson295189b2012-06-20 16:38:30 -070016407 @see
16408 @return Result of the function call
16409*/
16410WDI_Status
16411WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016412(
Jeff Johnson295189b2012-06-20 16:38:30 -070016413 WDI_ControlBlockType* pWDICtx,
16414 WDI_EventInfoType* pEventData
16415)
16416{
16417 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16418 WDI_SwitchChRspCb wdiChSwitchRspCb;
16419 tSwitchChannelRspParams halSwitchChannelRsp;
16420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16421
16422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016424 -------------------------------------------------------------------------*/
16425 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16426 ( NULL == pEventData->pEventData))
16427 {
16428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016429 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016432 }
16433
16434 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16435
16436 /*-------------------------------------------------------------------------
16437 Extract response and send it to UMAC
16438 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016439 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016440 (wpt_uint8*)pEventData->pEventData,
16441 sizeof(halSwitchChannelRsp));
16442
Jeff Johnsone7245742012-09-05 17:12:55 -070016443 wdiSwitchChRsp.wdiStatus =
16444 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016445 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16446
16447#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016448 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016449#endif
16450
16451 /*Notify UMAC*/
16452 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16453
Jeff Johnsone7245742012-09-05 17:12:55 -070016454 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016455}/*WDI_ProcessChannelSwitchRsp*/
16456
16457
16458/**
16459 @brief Process Config STA Rsp function (called when a response
16460 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016461
16462 @param pWDICtx: pointer to the WLAN DAL context
16463 pEventData: pointer to the event information structure
16464
Jeff Johnson295189b2012-06-20 16:38:30 -070016465 @see
16466 @return Result of the function call
16467*/
16468WDI_Status
16469WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016470(
Jeff Johnson295189b2012-06-20 16:38:30 -070016471 WDI_ControlBlockType* pWDICtx,
16472 WDI_EventInfoType* pEventData
16473)
16474{
16475 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16476 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16477 WDI_AddStaParams wdiAddSTAParam;
16478
16479 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016480 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016481
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016483 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16484
16485 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016486 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016487 -------------------------------------------------------------------------*/
16488 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16489 ( NULL == pEventData->pEventData))
16490 {
16491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016492 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016493 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016494 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016495 }
16496
16497 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16498
16499 /*-------------------------------------------------------------------------
16500 Extract response and send it to UMAC
16501 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016502 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16503 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016504 sizeof(halConfigStaRsp.configStaRspParams));
16505
16506
16507 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16508 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16509 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16510 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16511 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16512
16513 /* MAC Address of STA - take from cache as it does not come back in the
16514 response*/
16515 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016516 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016517 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016518
16519 wdiCfgSTAParams.wdiStatus =
16520 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016521
16522 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16523 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16524 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16525
16526 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16527 {
16528 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16529 {
16530 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016531 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016532 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16533 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016534
Jeff Johnson295189b2012-06-20 16:38:30 -070016535 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016536 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016537 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016538 wdiAddSTAParam.ucHTCapable =
16539 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16540 wdiAddSTAParam.ucStaType =
16541 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16542
Jeff Johnson295189b2012-06-20 16:38:30 -070016543 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016544 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16545 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016546 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016547
16548 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16549 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16550 WDI_MAC_ADDR_LEN);
16551
16552 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16553 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16554 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016555
16556 if ( NULL == pBSSSes )
16557 {
16558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16559 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016560
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016562 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 }
16564
16565 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016566 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016567 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016572 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016573 halConfigStaRsp.configStaRspParams.ucBcastSig;
16574 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16575 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016576
Jeff Johnson295189b2012-06-20 16:38:30 -070016577 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16578 }
16579 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16580 {
16581 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16582
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016585 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016586 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016587 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016588 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016590 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016591 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016592 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016595 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016596 halConfigStaRsp.configStaRspParams.ucUcastSig;
16597 }
16598 }
16599
16600 /*Notify UMAC*/
16601 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16602
Jeff Johnsone7245742012-09-05 17:12:55 -070016603 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016604}/*WDI_ProcessConfigStaRsp*/
16605
16606
16607/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016608 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016609 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016610
16611 @param pWDICtx: pointer to the WLAN DAL context
16612 pEventData: pointer to the event information structure
16613
Jeff Johnson295189b2012-06-20 16:38:30 -070016614 @see
16615 @return Result of the function call
16616*/
16617WDI_Status
16618WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016619(
Jeff Johnson295189b2012-06-20 16:38:30 -070016620 WDI_ControlBlockType* pWDICtx,
16621 WDI_EventInfoType* pEventData
16622)
16623{
16624 WDI_Status wdiStatus;
16625 eHalStatus halStatus;
16626 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16627
16628 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016629 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16631
16632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 -------------------------------------------------------------------------*/
16635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16636 ( NULL == pEventData->pEventData))
16637 {
16638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016642 }
16643
16644 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16645
16646 wpalMutexAcquire(&pWDICtx->wptMutex);
16647
16648 /*If the link is being transitioned to idle - the BSS is to be deleted
16649 - this type of ending a session is possible when UMAC has failed an
16650 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016651 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16653 {
16654 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016656 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016657 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16658 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16659 &pBSSSes);
16660
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 /*-----------------------------------------------------------------------
16662 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016664 -----------------------------------------------------------------------*/
16665 if ( NULL == pBSSSes )
16666 {
16667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16668 "Set link response received outside association session");
16669 }
16670 else
16671 {
16672 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16673 will be del BSS coming after this to stop the beaconing & cleaning up the
16674 sessions*/
16675 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16676 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16677 {
16678 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016679 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 -----------------------------------------------------------------------*/
16681 WDI_DeleteSession(pWDICtx, pBSSSes);
16682
16683 /*-----------------------------------------------------------------------
16684 Check to see if this association is in progress - if so disable the
16685 flag as this has ended
16686 -----------------------------------------------------------------------*/
16687 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016688 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016689 /*Association no longer in progress */
16690 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16691 /*Association no longer in progress - prepare pending assoc for processing*/
16692 WDI_DequeueAssocRequest(pWDICtx);
16693 }
16694 }
16695 }
16696 }
16697 /* If the link state has been set to POST ASSOC, reset the "association in
16698 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016699 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016700 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16701 {
16702 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16703 WDI_DequeueAssocRequest(pWDICtx);
16704 }
16705
16706 wpalMutexRelease(&pWDICtx->wptMutex);
16707
16708 /*-------------------------------------------------------------------------
16709 Extract response and send it to UMAC
16710 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016711 wpalMemoryCopy( &halStatus,
16712 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016713 sizeof(halStatus));
16714
Jeff Johnsone7245742012-09-05 17:12:55 -070016715 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016716
16717 /*Notify UMAC*/
16718 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16719
Jeff Johnsone7245742012-09-05 17:12:55 -070016720 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016721}/*WDI_ProcessSetLinkStateRsp*/
16722
16723/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016724 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016725 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016726
16727 @param pWDICtx: pointer to the WLAN DAL context
16728 pEventData: pointer to the event information structure
16729
Jeff Johnson295189b2012-06-20 16:38:30 -070016730 @see
16731 @return Result of the function call
16732*/
16733WDI_Status
16734WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016735(
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 WDI_ControlBlockType* pWDICtx,
16737 WDI_EventInfoType* pEventData
16738)
16739{
16740 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16741 WDI_GetStatsRspCb wdiGetStatsRspCb;
16742 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016743
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16745
16746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016748 -------------------------------------------------------------------------*/
16749 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16750 ( NULL == pEventData->pEventData))
16751 {
16752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016756 }
16757
16758 /*-------------------------------------------------------------------------
16759 Extract response and send it to UMAC
16760 -------------------------------------------------------------------------*/
16761 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16762
16763 /*allocate the stats response buffer */
16764 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16765 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16766 + sizeof(WDI_GetStatsRspParamsType));
16767
16768 if(NULL == wdiGetStatsRsp)
16769 {
16770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16771 "Failed to allocate memory in Get Stats Response %x %x %x ",
16772 pWDICtx, pEventData, pEventData->pEventData);
16773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016775 }
16776
16777 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16778
16779 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16780 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16781 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16782 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16783 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16784 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16785
16786 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16787 wpalMemoryCopy(wdiGetStatsRsp + 1,
16788 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16789 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16790
16791 /*Notify UMAC*/
16792 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16793
16794 wpalMemoryFree(wdiGetStatsRsp);
16795
Jeff Johnsone7245742012-09-05 17:12:55 -070016796 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016797}/*WDI_ProcessGetStatsRsp*/
16798
Srinivas Girigowda2471d832013-01-25 13:33:11 -080016799#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
16800/**
16801 @brief Process Get Roam Rssi Rsp function (called when a response is
16802 being received over the bus from HAL)
16803
16804 @param pWDICtx: pointer to the WLAN DAL context
16805 pEventData: pointer to the event information structure
16806
16807 @see
16808 @return Result of the function call
16809*/
16810WDI_Status
16811WDI_ProcessGetRoamRssiRsp
16812(
16813 WDI_ControlBlockType* pWDICtx,
16814 WDI_EventInfoType* pEventData
16815)
16816{
16817 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
16818 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
16819 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
16820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16821
16822 /*-------------------------------------------------------------------------
16823 Sanity check
16824 -------------------------------------------------------------------------*/
16825 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16826 ( NULL == pEventData->pEventData))
16827 {
16828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16829 "%s: Invalid parameters", __func__);
16830 WDI_ASSERT(0);
16831 return WDI_STATUS_E_FAILURE;
16832 }
16833
16834 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
16835 if(NULL == wdiGetRoamRssiRspCb)
16836 {
16837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16838 "%s: call back function is NULL", __func__);
16839 WDI_ASSERT(0);
16840 return WDI_STATUS_E_FAILURE;
16841 }
16842
16843 /*-------------------------------------------------------------------------
16844 Extract response and send it to UMAC
16845 -------------------------------------------------------------------------*/
16846 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
16847 pEventData->pEventData,
16848 sizeof(halRoamRssiRspParams.roamRssiRspParams));
16849
16850 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
16851 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
16852 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
16853
16854 /*Notify UMAC*/
16855 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
16856
16857 return WDI_STATUS_SUCCESS;
16858}/*WDI_ProcessGetRoamRssiRsp*/
16859#endif
16860
Jeff Johnson295189b2012-06-20 16:38:30 -070016861
16862/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016865
16866 @param pWDICtx: pointer to the WLAN DAL context
16867 pEventData: pointer to the event information structure
16868
Jeff Johnson295189b2012-06-20 16:38:30 -070016869 @see
16870 @return Result of the function call
16871*/
16872WDI_Status
16873WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016874(
Jeff Johnson295189b2012-06-20 16:38:30 -070016875 WDI_ControlBlockType* pWDICtx,
16876 WDI_EventInfoType* pEventData
16877)
16878{
16879 WDI_Status wdiStatus;
16880 eHalStatus halStatus;
16881 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16883
16884 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016885 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016886 -------------------------------------------------------------------------*/
16887 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16888 ( NULL == pEventData->pEventData))
16889 {
16890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016891 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016894 }
16895
16896 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16897
16898 /*-------------------------------------------------------------------------
16899 Extract response and send it to UMAC
16900 -------------------------------------------------------------------------*/
16901 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016902 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016903
16904 /*Notify UMAC*/
16905 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16906
Jeff Johnsone7245742012-09-05 17:12:55 -070016907 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016908}/*WDI_ProcessUpdateCfgRsp*/
16909
16910
16911
16912/**
16913 @brief Process Add BA Rsp function (called when a response
16914 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016915
16916 @param pWDICtx: pointer to the WLAN DAL context
16917 pEventData: pointer to the event information structure
16918
Jeff Johnson295189b2012-06-20 16:38:30 -070016919 @see
16920 @return Result of the function call
16921*/
16922WDI_Status
16923WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016924(
Jeff Johnson295189b2012-06-20 16:38:30 -070016925 WDI_ControlBlockType* pWDICtx,
16926 WDI_EventInfoType* pEventData
16927)
16928{
16929 WDI_AddBARspCb wdiAddBARspCb;
16930
16931 tAddBARspParams halAddBARsp;
16932 WDI_AddBARspinfoType wdiAddBARsp;
16933
16934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16935
16936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016938 -------------------------------------------------------------------------*/
16939 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16940 ( NULL == pEventData->pEventData))
16941 {
16942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016943 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 }
16947
16948 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16949
16950 /*-------------------------------------------------------------------------
16951 Extract response and send it to UMAC
16952 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016953 wpalMemoryCopy( &halAddBARsp,
16954 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016955 sizeof(halAddBARsp));
16956
16957 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16958
Jeff Johnson43971f52012-07-17 12:26:56 -070016959 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016960 {
16961 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16962 }
16963
16964 /*Notify UMAC*/
16965 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16966
Jeff Johnsone7245742012-09-05 17:12:55 -070016967 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016968}/*WDI_ProcessAddSessionBARsp*/
16969
16970/**
16971 @brief Process Add BA Rsp function (called when a response
16972 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016973
16974 @param pWDICtx: pointer to the WLAN DAL context
16975 pEventData: pointer to the event information structure
16976
Jeff Johnson295189b2012-06-20 16:38:30 -070016977 @see
16978 @return Result of the function call
16979*/
16980WDI_Status
16981WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016982(
Jeff Johnson295189b2012-06-20 16:38:30 -070016983 WDI_ControlBlockType* pWDICtx,
16984 WDI_EventInfoType* pEventData
16985)
16986{
16987 WDI_TriggerBARspCb wdiTriggerBARspCb;
16988
16989 tTriggerBARspParams* halTriggerBARsp;
16990 tTriggerBaRspCandidate* halBaCandidate;
16991 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16992 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16993 wpt_uint16 index;
16994 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070016995 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16997
16998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017000 -------------------------------------------------------------------------*/
17001 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17002 ( NULL == pEventData->pEventData))
17003 {
17004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017008 }
17009
17010 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17011
17012 /*-------------------------------------------------------------------------
17013 Extract response and send it to UMAC
17014 -------------------------------------------------------------------------*/
17015 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17016
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017017 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17018
17019 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17020 {
17021 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017022 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017024
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017025 if(NULL == wdiTriggerBARsp)
17026 {
17027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17028 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17029 pWDICtx, pEventData, pEventData->pEventData);
17030 WDI_ASSERT(0);
17031 return WDI_STATUS_E_FAILURE;
17032 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017033
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017034 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17035
Jeff Johnson295189b2012-06-20 16:38:30 -070017036 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017038 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17039
17040 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17041 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17042
17043 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17044 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17047 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17048 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017049 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017050 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17053 }
17054 wdiTriggerBARspCandidate++;
17055 halBaCandidate++;
17056 }
17057 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017058 else
17059 {
17060 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17061
17062 if(NULL == wdiTriggerBARsp)
17063 {
17064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17065 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17066 pWDICtx, pEventData, pEventData->pEventData);
17067 WDI_ASSERT(0);
17068 return WDI_STATUS_E_FAILURE;
17069 }
17070
17071 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17072
17073 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017074
17075 /*Notify UMAC*/
17076 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17077
17078 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017079 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017080}/*WDI_ProcessAddSessionBARsp*/
17081
17082/**
17083 @brief Process Update Beacon Params Rsp function (called when a response
17084 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017085
17086 @param pWDICtx: pointer to the WLAN DAL context
17087 pEventData: pointer to the event information structure
17088
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 @see
17090 @return Result of the function call
17091*/
17092WDI_Status
17093WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017094(
Jeff Johnson295189b2012-06-20 16:38:30 -070017095 WDI_ControlBlockType* pWDICtx,
17096 WDI_EventInfoType* pEventData
17097)
17098{
17099 WDI_Status wdiStatus;
17100 eHalStatus halStatus;
17101 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17103
17104 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017105 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 -------------------------------------------------------------------------*/
17107 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17108 ( NULL == pEventData->pEventData))
17109 {
17110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017111 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017112 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017113 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017114 }
17115
17116 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17117
17118 /*-------------------------------------------------------------------------
17119 Extract response and send it to UMAC
17120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017121 wpalMemoryCopy( &halStatus,
17122 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017123 sizeof(halStatus));
17124
Jeff Johnsone7245742012-09-05 17:12:55 -070017125 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017126
17127 /*Notify UMAC*/
17128 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17129
Jeff Johnsone7245742012-09-05 17:12:55 -070017130 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017131}/*WDI_ProcessUpdateBeaconParamsRsp*/
17132
17133/**
17134 @brief Process Send Beacon template Rsp function (called when a response
17135 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017136
17137 @param pWDICtx: pointer to the WLAN DAL context
17138 pEventData: pointer to the event information structure
17139
Jeff Johnson295189b2012-06-20 16:38:30 -070017140 @see
17141 @return Result of the function call
17142*/
17143WDI_Status
17144WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017145(
Jeff Johnson295189b2012-06-20 16:38:30 -070017146 WDI_ControlBlockType* pWDICtx,
17147 WDI_EventInfoType* pEventData
17148)
17149{
17150 WDI_Status wdiStatus;
17151 eHalStatus halStatus;
17152 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17154
17155 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017156 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017157 -------------------------------------------------------------------------*/
17158 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17159 ( NULL == pEventData->pEventData))
17160 {
17161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017162 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017165 }
17166
17167 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17168
17169 /*-------------------------------------------------------------------------
17170 Extract response and send it to UMAC
17171 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017172 wpalMemoryCopy( &halStatus,
17173 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017174 sizeof(halStatus));
17175
Jeff Johnsone7245742012-09-05 17:12:55 -070017176 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017177
17178 /*Notify UMAC*/
17179 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17180
Jeff Johnsone7245742012-09-05 17:12:55 -070017181 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017182}/*WDI_ProcessSendBeaconParamsRsp*/
17183
Jeff Johnsone7245742012-09-05 17:12:55 -070017184
Jeff Johnson295189b2012-06-20 16:38:30 -070017185/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017186 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017188
17189 @param pWDICtx: pointer to the WLAN DAL context
17190 pEventData: pointer to the event information structure
17191
Jeff Johnson295189b2012-06-20 16:38:30 -070017192 @see
17193 @return Result of the function call
17194*/
17195WDI_Status
17196WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017197(
Jeff Johnson295189b2012-06-20 16:38:30 -070017198 WDI_ControlBlockType* pWDICtx,
17199 WDI_EventInfoType* pEventData
17200)
17201{
17202 WDI_Status wdiStatus;
17203 eHalStatus halStatus;
17204 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17206
17207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017208 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017209 -------------------------------------------------------------------------*/
17210 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17211 ( NULL == pEventData->pEventData))
17212 {
17213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017214 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017216 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017217 }
17218
17219 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17220
17221 /*-------------------------------------------------------------------------
17222 Extract response and send it to UMAC
17223 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017224 wpalMemoryCopy( &halStatus,
17225 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017226 sizeof(halStatus));
17227
Jeff Johnsone7245742012-09-05 17:12:55 -070017228 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017229
17230 /*Notify UMAC*/
17231 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17232
Jeff Johnsone7245742012-09-05 17:12:55 -070017233 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017234}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17235
17236 /**
17237 @brief Process Set Max Tx Power Rsp function (called when a response
17238 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017239
17240 @param pWDICtx: pointer to the WLAN DAL context
17241 pEventData: pointer to the event information structure
17242
Jeff Johnson295189b2012-06-20 16:38:30 -070017243 @see
17244 @return Result of the function call
17245*/
17246WDI_Status
17247WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017248(
Jeff Johnson295189b2012-06-20 16:38:30 -070017249 WDI_ControlBlockType* pWDICtx,
17250 WDI_EventInfoType* pEventData
17251)
17252{
17253 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017254
Jeff Johnson295189b2012-06-20 16:38:30 -070017255 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017256
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17258 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17259
17260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017261 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017262 -------------------------------------------------------------------------*/
17263 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17264 ( NULL == pEventData->pEventData))
17265 {
17266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017267 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017270 }
17271
17272 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17273
17274 /*-------------------------------------------------------------------------
17275 Extract response and send it to UMAC
17276 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17278 pEventData->pEventData,
17279 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017280
17281 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17282 {
17283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17284 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017285 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017287 }
17288
Jeff Johnsone7245742012-09-05 17:12:55 -070017289 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017290 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017291 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017292
17293 /*Notify UMAC*/
17294 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17295
Jeff Johnsone7245742012-09-05 17:12:55 -070017296 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017297}
17298
schangd82195a2013-03-13 18:41:24 -070017299 /**
17300 @brief Process Set Tx Power Rsp function (called when a response
17301 is being received over the bus from HAL)
17302
17303 @param pWDICtx: pointer to the WLAN DAL context
17304 pEventData: pointer to the event information structure
17305
17306 @see
17307 @return Result of the function call
17308*/
17309WDI_Status
17310WDI_ProcessSetTxPowerRsp
17311(
17312 WDI_ControlBlockType* pWDICtx,
17313 WDI_EventInfoType* pEventData
17314)
17315{
17316 tSetTxPwrRspMsg halTxpowerrsp;
17317 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17318 WDA_SetTxPowerRspCb wdiReqStatusCb;
17319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17320
17321 /*-------------------------------------------------------------------------
17322 Sanity check
17323 -------------------------------------------------------------------------*/
17324 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17325 ( NULL == pEventData->pEventData))
17326 {
17327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17328 "%s: Invalid parameters", __func__);
17329 WDI_ASSERT(0);
17330 return WDI_STATUS_E_FAILURE;
17331 }
17332
17333 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17334
17335 /*-------------------------------------------------------------------------
17336 Extract response and send it to UMAC
17337 -------------------------------------------------------------------------*/
17338 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17339 pEventData->pEventData,
17340 sizeof(halTxpowerrsp.setTxPwrRspParams));
17341
17342 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17343 {
17344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17345 "Error status returned in Set Tx Power Response ");
17346 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17347 return WDI_STATUS_E_FAILURE;
17348 }
17349
17350 wdiSetTxPowerRspMsg.wdiStatus =
17351 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17352
17353 /*Notify UMAC*/
17354 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17355
17356 return WDI_STATUS_SUCCESS;
17357}
17358
Jeff Johnson295189b2012-06-20 16:38:30 -070017359/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017360 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017362
17363 @param pWDICtx: pointer to the WLAN DAL context
17364 pEventData: pointer to the event information structure
17365
Jeff Johnson295189b2012-06-20 16:38:30 -070017366 @see
17367 @return Result of the function call
17368*/
17369WDI_Status
17370WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017371(
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 WDI_ControlBlockType* pWDICtx,
17373 WDI_EventInfoType* pEventData
17374)
17375{
17376 WDI_Status wdiStatus;
17377 eHalStatus halStatus;
17378 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17380
17381 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017382 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017383 -------------------------------------------------------------------------*/
17384 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17385 ( NULL == pEventData->pEventData))
17386 {
17387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017388 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017391 }
17392
17393 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17394
17395 /*-------------------------------------------------------------------------
17396 Extract response and send it to UMAC
17397 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017398 wpalMemoryCopy( &halStatus,
17399 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017400 sizeof(halStatus));
17401
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017403
17404 /*Notify UMAC*/
17405 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17406
Jeff Johnsone7245742012-09-05 17:12:55 -070017407 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017408}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017409/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017410 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017411 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017412
17413 @param pWDICtx: pointer to the WLAN DAL context
17414 pEventData: pointer to the event information structure
17415
Jeff Johnson295189b2012-06-20 16:38:30 -070017416 @see
17417 @return Result of the function call
17418*/
17419WDI_Status
17420WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017421(
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 WDI_ControlBlockType* pWDICtx,
17423 WDI_EventInfoType* pEventData
17424)
17425{
17426 WDI_Status wdiStatus;
17427 eHalStatus halStatus;
17428 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017429 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17431
17432 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017433 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017434 -------------------------------------------------------------------------*/
17435 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17436 ( NULL == pEventData->pEventData))
17437 {
17438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017441 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017442 }
17443
17444 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17445
17446 /*-------------------------------------------------------------------------
17447 Extract response and send it to UMAC
17448 -------------------------------------------------------------------------*/
17449 halStatus = *((eHalStatus*)pEventData->pEventData);
17450
Jeff Johnsone7245742012-09-05 17:12:55 -070017451 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017452
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017453 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17454 * Other module states are taken care by PMC.
17455 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17456 */
17457 if (wdiStatus != WDI_STATUS_SUCCESS) {
17458
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17460 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17461 halStatus);
17462 /* Call Back is not required as we are putting the DXE in FULL
17463 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017464 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17465
17466 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17468 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17469 WDI_ASSERT(0);
17470 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017471 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017472 /*Notify UMAC*/
17473 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17474
Jeff Johnsone7245742012-09-05 17:12:55 -070017475 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017476}/*WDI_ProcessEnterImpsRsp*/
17477
17478/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017479 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017480 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017481
17482 @param pWDICtx: pointer to the WLAN DAL context
17483 pEventData: pointer to the event information structure
17484
Jeff Johnson295189b2012-06-20 16:38:30 -070017485 @see
17486 @return Result of the function call
17487*/
17488WDI_Status
17489WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017490(
Jeff Johnson295189b2012-06-20 16:38:30 -070017491 WDI_ControlBlockType* pWDICtx,
17492 WDI_EventInfoType* pEventData
17493)
17494{
17495 WDI_Status wdiStatus;
17496 eHalStatus halStatus;
17497 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017498 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17500
17501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017502 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017503 -------------------------------------------------------------------------*/
17504 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17505 ( NULL == pEventData->pEventData))
17506 {
17507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017511 }
17512
17513 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17514
17515 /*-------------------------------------------------------------------------
17516 Extract response and send it to UMAC
17517 -------------------------------------------------------------------------*/
17518 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017520
17521 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017522 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17523 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17524 {
17525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17526 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17527 WDI_ASSERT(0);
17528 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017529 /*Notify UMAC*/
17530 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17531
Jeff Johnsone7245742012-09-05 17:12:55 -070017532 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017533}/*WDI_ProcessExitImpsRsp*/
17534
17535/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017536 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017537 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017538
17539 @param pWDICtx: pointer to the WLAN DAL context
17540 pEventData: pointer to the event information structure
17541
Jeff Johnson295189b2012-06-20 16:38:30 -070017542 @see
17543 @return Result of the function call
17544*/
17545WDI_Status
17546WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017547(
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 WDI_ControlBlockType* pWDICtx,
17549 WDI_EventInfoType* pEventData
17550)
17551{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017552 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17553 tHalEnterBmpsRspParams halEnterBmpsRsp;
17554 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17555 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017556 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17558
17559 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017560 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017561 -------------------------------------------------------------------------*/
17562 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17563 ( NULL == pEventData->pEventData))
17564 {
17565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017566 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017569 }
17570
Jeff Johnson295189b2012-06-20 16:38:30 -070017571 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017572 Extract response and send it to UMAC
17573 -------------------------------------------------------------------------*/
17574 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17575 {
17576 wpalMemoryCopy( &halEnterBmpsRsp,
17577 pEventData->pEventData,
17578 sizeof(halEnterBmpsRsp));
17579
17580 //Used to print debug message
17581 halStatus = halEnterBmpsRsp.status;
17582 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17583 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17584 }
17585 else
17586 {
17587 halStatus = *((eHalStatus*)pEventData->pEventData);
17588 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17589 }
17590
17591 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017592
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017593 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17594 * Other module states are taken care by PMC.
17595 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17596 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017597 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17598 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017599
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017601 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17602 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017603 /* Call Back is not required as we are putting the DXE in FULL
17604 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017605 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17606 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17607 {
17608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17609 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17610 WDI_ASSERT(0);
17611 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017612 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017613 }
17614
Jeff Johnson295189b2012-06-20 16:38:30 -070017615 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017616 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017617
Jeff Johnsone7245742012-09-05 17:12:55 -070017618 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017619}/*WDI_ProcessEnterBmpsRsp*/
17620
17621/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017622 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017623 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017624
17625 @param pWDICtx: pointer to the WLAN DAL context
17626 pEventData: pointer to the event information structure
17627
Jeff Johnson295189b2012-06-20 16:38:30 -070017628 @see
17629 @return Result of the function call
17630*/
17631WDI_Status
17632WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017633(
Jeff Johnson295189b2012-06-20 16:38:30 -070017634 WDI_ControlBlockType* pWDICtx,
17635 WDI_EventInfoType* pEventData
17636)
17637{
Jeff Johnson295189b2012-06-20 16:38:30 -070017638 eHalStatus halStatus;
17639 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017640 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017641 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17642 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17644
17645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017647 -------------------------------------------------------------------------*/
17648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17649 ( NULL == pEventData->pEventData))
17650 {
17651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017655 }
17656
17657 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17658
17659 /*-------------------------------------------------------------------------
17660 Extract response and send it to UMAC
17661 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017662
17663 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17664 {
17665 wpalMemoryCopy( &halExitBmpsRsp,
17666 pEventData->pEventData,
17667 sizeof(halExitBmpsRsp));
17668
17669 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17670 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17671 }
17672 else
17673 {
17674 halStatus = *((eHalStatus*)pEventData->pEventData);
17675 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17676 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017677
17678 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017679 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17680 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17681 {
17682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17683 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17684 WDI_ASSERT(0);
17685 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17687
17688 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017689 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017690
Jeff Johnsone7245742012-09-05 17:12:55 -070017691 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017692}/*WDI_ProcessExitBmpsRsp*/
17693
17694/**
17695 @brief Process Enter UAPSD Rsp function (called when a response
17696 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017697
17698 @param pWDICtx: pointer to the WLAN DAL context
17699 pEventData: pointer to the event information structure
17700
Jeff Johnson295189b2012-06-20 16:38:30 -070017701 @see
17702 @return Result of the function call
17703*/
17704WDI_Status
17705WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017706(
Jeff Johnson295189b2012-06-20 16:38:30 -070017707 WDI_ControlBlockType* pWDICtx,
17708 WDI_EventInfoType* pEventData
17709)
17710{
Jeff Johnson295189b2012-06-20 16:38:30 -070017711 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017712 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017713 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017714 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17715
Jeff Johnson295189b2012-06-20 16:38:30 -070017716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17717
17718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017720 -------------------------------------------------------------------------*/
17721 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17722 ( NULL == pEventData->pEventData))
17723 {
17724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017728 }
17729
17730 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17731
17732 /*-------------------------------------------------------------------------
17733 Extract response and send it to UMAC
17734 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017735 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17736 {
17737 wpalMemoryCopy( &halEnterUapsdRsp,
17738 pEventData->pEventData,
17739 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017740
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017741 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17742 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17743 }
17744 else
17745 {
17746 halStatus = *((eHalStatus*)pEventData->pEventData);
17747 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17748 }
17749
17750 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017751 {
17752 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17753 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17754 // the traffic to decide when to suspend the trigger frames when there is no traffic
17755 // activity on the trigger enabled ACs
17756 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17757
17758#ifdef WLAN_PERF
17759 // Increment the BD signature to refresh the fast path BD utilization
17760 pWDICtx->uBdSigSerialNum++;
17761#endif
17762 }
17763
17764 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017765 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017766
Jeff Johnsone7245742012-09-05 17:12:55 -070017767 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017768}/*WDI_ProcessEnterUapsdRsp*/
17769
17770/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017771 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017772 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017773
17774 @param pWDICtx: pointer to the WLAN DAL context
17775 pEventData: pointer to the event information structure
17776
Jeff Johnson295189b2012-06-20 16:38:30 -070017777 @see
17778 @return Result of the function call
17779*/
17780WDI_Status
17781WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017782(
Jeff Johnson295189b2012-06-20 16:38:30 -070017783 WDI_ControlBlockType* pWDICtx,
17784 WDI_EventInfoType* pEventData
17785)
17786{
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 eHalStatus halStatus;
17788 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017789 tHalExitUapsdRspParams halExitUapsdRsp;
17790 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017791 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17792
17793 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017794 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017795 -------------------------------------------------------------------------*/
17796 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17797 ( NULL == pEventData->pEventData))
17798 {
17799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017800 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017803 }
17804
17805 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17806
17807 /*-------------------------------------------------------------------------
17808 Extract response and send it to UMAC
17809 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017810 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17811 {
17812 wpalMemoryCopy( &halExitUapsdRsp,
17813 pEventData->pEventData,
17814 sizeof(halExitUapsdRsp));
17815
17816 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17817 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17818 }
17819 else
17820 {
17821 halStatus = *((eHalStatus*)pEventData->pEventData);
17822 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17823 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17825 // directly instead of the FW WQ.
17826 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17827
17828#ifdef WLAN_PERF
17829 // Increment the BD signature to refresh the fast path BD utilization
17830 pWDICtx->uBdSigSerialNum++;
17831#endif
17832
17833 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017834 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017835
Jeff Johnsone7245742012-09-05 17:12:55 -070017836 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017837}/*WDI_ProcessExitUapsdRsp*/
17838
17839/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017840 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017842
17843 @param pWDICtx: pointer to the WLAN DAL context
17844 pEventData: pointer to the event information structure
17845
Jeff Johnson295189b2012-06-20 16:38:30 -070017846 @see
17847 @return Result of the function call
17848*/
17849WDI_Status
17850WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017851(
Jeff Johnson295189b2012-06-20 16:38:30 -070017852 WDI_ControlBlockType* pWDICtx,
17853 WDI_EventInfoType* pEventData
17854)
17855{
17856 WDI_Status wdiStatus;
17857 eHalStatus halStatus;
17858 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17860
17861 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017862 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017863 -------------------------------------------------------------------------*/
17864 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17865 ( NULL == pEventData->pEventData))
17866 {
17867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017868 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 }
17872
17873 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17874
17875 /*-------------------------------------------------------------------------
17876 Extract response and send it to UMAC
17877 -------------------------------------------------------------------------*/
17878 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017879 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017880
17881 /*Notify UMAC*/
17882 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17883
Jeff Johnsone7245742012-09-05 17:12:55 -070017884 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017885}/*WDI_ProcessSetUapsdAcParamsRsp*/
17886
17887/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017888 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017889 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017890
17891 @param pWDICtx: pointer to the WLAN DAL context
17892 pEventData: pointer to the event information structure
17893
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 @see
17895 @return Result of the function call
17896*/
17897WDI_Status
17898WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017899(
Jeff Johnson295189b2012-06-20 16:38:30 -070017900 WDI_ControlBlockType* pWDICtx,
17901 WDI_EventInfoType* pEventData
17902)
17903{
17904 WDI_Status wdiStatus;
17905 eHalStatus halStatus;
17906 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17908
17909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 -------------------------------------------------------------------------*/
17912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17913 ( NULL == pEventData->pEventData))
17914 {
17915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017919 }
17920
17921 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17922
17923 /*-------------------------------------------------------------------------
17924 Extract response and send it to UMAC
17925 -------------------------------------------------------------------------*/
17926 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017927 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017928
17929 /*Notify UMAC*/
17930 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17931
Jeff Johnsone7245742012-09-05 17:12:55 -070017932 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017933}/*WDI_ProcessUpdateUapsdParamsRsp*/
17934
17935/**
17936 @brief Process Configure RXP filter Rsp function (called when a
17937 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017938
17939 @param pWDICtx: pointer to the WLAN DAL context
17940 pEventData: pointer to the event information structure
17941
Jeff Johnson295189b2012-06-20 16:38:30 -070017942 @see
17943 @return Result of the function call
17944*/
17945WDI_Status
17946WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017947(
Jeff Johnson295189b2012-06-20 16:38:30 -070017948 WDI_ControlBlockType* pWDICtx,
17949 WDI_EventInfoType* pEventData
17950)
17951{
17952 WDI_Status wdiStatus;
17953 eHalStatus halStatus;
17954 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17956
17957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017959 -------------------------------------------------------------------------*/
17960 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17961 ( NULL == pEventData->pEventData))
17962 {
17963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017964 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017965 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017967 }
17968
17969 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17970
17971 /*-------------------------------------------------------------------------
17972 Extract response and send it to UMAC
17973 -------------------------------------------------------------------------*/
17974 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017975 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017976
17977 /*Notify UMAC*/
17978 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17979
Jeff Johnsone7245742012-09-05 17:12:55 -070017980 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017981}/*WDI_ProcessConfigureRxpFilterRsp*/
17982
17983/**
17984 @brief Process Set beacon filter Rsp function (called when a
17985 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017986
17987 @param pWDICtx: pointer to the WLAN DAL context
17988 pEventData: pointer to the event information structure
17989
Jeff Johnson295189b2012-06-20 16:38:30 -070017990 @see
17991 @return Result of the function call
17992*/
17993WDI_Status
17994WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017995(
Jeff Johnson295189b2012-06-20 16:38:30 -070017996 WDI_ControlBlockType* pWDICtx,
17997 WDI_EventInfoType* pEventData
17998)
17999{
18000 WDI_Status wdiStatus;
18001 eHalStatus halStatus;
18002 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18004
18005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018006 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018007 -------------------------------------------------------------------------*/
18008 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18009 ( NULL == pEventData->pEventData))
18010 {
18011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018012 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018013 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018014 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018015 }
18016
18017 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18018
18019 /*-------------------------------------------------------------------------
18020 Extract response and send it to UMAC
18021 -------------------------------------------------------------------------*/
18022 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018023 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018024
18025 /*Notify UMAC*/
18026 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18027
Jeff Johnsone7245742012-09-05 17:12:55 -070018028 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018029}/*WDI_ProcessSetBeaconFilterRsp*/
18030
18031/**
18032 @brief Process remove beacon filter Rsp function (called when a
18033 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018034
18035 @param pWDICtx: pointer to the WLAN DAL context
18036 pEventData: pointer to the event information structure
18037
Jeff Johnson295189b2012-06-20 16:38:30 -070018038 @see
18039 @return Result of the function call
18040*/
18041WDI_Status
18042WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018043(
Jeff Johnson295189b2012-06-20 16:38:30 -070018044 WDI_ControlBlockType* pWDICtx,
18045 WDI_EventInfoType* pEventData
18046)
18047{
18048 WDI_Status wdiStatus;
18049 eHalStatus halStatus;
18050 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18052
18053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 -------------------------------------------------------------------------*/
18056 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18057 ( NULL == pEventData->pEventData))
18058 {
18059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018063 }
18064
18065 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18066
18067 /*-------------------------------------------------------------------------
18068 Extract response and send it to UMAC
18069 -------------------------------------------------------------------------*/
18070 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018071 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018072
18073 /*Notify UMAC*/
18074 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18075
Jeff Johnsone7245742012-09-05 17:12:55 -070018076 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018077}/*WDI_ProcessRemBeaconFilterRsp*/
18078
18079/**
18080 @brief Process set RSSI thresholds Rsp function (called when a
18081 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018082
18083 @param pWDICtx: pointer to the WLAN DAL context
18084 pEventData: pointer to the event information structure
18085
Jeff Johnson295189b2012-06-20 16:38:30 -070018086 @see
18087 @return Result of the function call
18088*/
18089WDI_Status
18090WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018091(
Jeff Johnson295189b2012-06-20 16:38:30 -070018092 WDI_ControlBlockType* pWDICtx,
18093 WDI_EventInfoType* pEventData
18094)
18095{
18096 WDI_Status wdiStatus;
18097 eHalStatus halStatus;
18098 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18100
18101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018102 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018103 -------------------------------------------------------------------------*/
18104 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18105 ( NULL == pEventData->pEventData))
18106 {
18107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018111 }
18112
18113 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18114
18115 /*-------------------------------------------------------------------------
18116 Extract response and send it to UMAC
18117 -------------------------------------------------------------------------*/
18118 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018119 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018120
18121 /*Notify UMAC*/
18122 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18123
Jeff Johnsone7245742012-09-05 17:12:55 -070018124 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018125}/*WDI_ProcessSetRSSIThresoldsRsp*/
18126
18127/**
18128 @brief Process host offload Rsp function (called when a
18129 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018130
18131 @param pWDICtx: pointer to the WLAN DAL context
18132 pEventData: pointer to the event information structure
18133
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 @see
18135 @return Result of the function call
18136*/
18137WDI_Status
18138WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018139(
Jeff Johnson295189b2012-06-20 16:38:30 -070018140 WDI_ControlBlockType* pWDICtx,
18141 WDI_EventInfoType* pEventData
18142)
18143{
18144 WDI_Status wdiStatus;
18145 eHalStatus halStatus;
18146 WDI_HostOffloadCb wdiHostOffloadCb;
18147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18148
18149 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018150 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018151 -------------------------------------------------------------------------*/
18152 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18153 ( NULL == pEventData->pEventData))
18154 {
18155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018156 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 }
18160
18161 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18162
18163 /*-------------------------------------------------------------------------
18164 Extract response and send it to UMAC
18165 -------------------------------------------------------------------------*/
18166 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018167 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018168
18169 /*Notify UMAC*/
18170 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18171
Jeff Johnsone7245742012-09-05 17:12:55 -070018172 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018173}/*WDI_ProcessHostOffloadRsp*/
18174
18175/**
18176 @brief Process keep alive Rsp function (called when a
18177 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018178
18179 @param pWDICtx: pointer to the WLAN DAL context
18180 pEventData: pointer to the event information structure
18181
Jeff Johnson295189b2012-06-20 16:38:30 -070018182 @see
18183 @return Result of the function call
18184*/
18185WDI_Status
18186WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018187(
Jeff Johnson295189b2012-06-20 16:38:30 -070018188 WDI_ControlBlockType* pWDICtx,
18189 WDI_EventInfoType* pEventData
18190)
18191{
18192 WDI_Status wdiStatus;
18193 eHalStatus halStatus;
18194 WDI_KeepAliveCb wdiKeepAliveCb;
18195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18197 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18198
18199
18200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018202 -------------------------------------------------------------------------*/
18203 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18204 ( NULL == pEventData->pEventData))
18205 {
18206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018210 }
18211
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18213
Jeff Johnson295189b2012-06-20 16:38:30 -070018214 /*-------------------------------------------------------------------------
18215 Extract response and send it to UMAC
18216 -------------------------------------------------------------------------*/
18217 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018219
18220 /*Notify UMAC*/
18221 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18222
Jeff Johnsone7245742012-09-05 17:12:55 -070018223 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018224}/*WDI_ProcessKeepAliveRsp*/
18225
18226/**
18227 @brief Process wowl add ptrn Rsp function (called when a
18228 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018229
18230 @param pWDICtx: pointer to the WLAN DAL context
18231 pEventData: pointer to the event information structure
18232
Jeff Johnson295189b2012-06-20 16:38:30 -070018233 @see
18234 @return Result of the function call
18235*/
18236WDI_Status
18237WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018238(
Jeff Johnson295189b2012-06-20 16:38:30 -070018239 WDI_ControlBlockType* pWDICtx,
18240 WDI_EventInfoType* pEventData
18241)
18242{
Jeff Johnson295189b2012-06-20 16:38:30 -070018243 eHalStatus halStatus;
18244 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018245 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18246 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18247
Jeff Johnson295189b2012-06-20 16:38:30 -070018248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18249
18250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018252 -------------------------------------------------------------------------*/
18253 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18254 ( NULL == pEventData->pEventData))
18255 {
18256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 }
18261
18262 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18263
18264 /*-------------------------------------------------------------------------
18265 Extract response and send it to UMAC
18266 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018267 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18268 {
18269 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18270 pEventData->pEventData,
18271 sizeof(halAddWowlBcastPtrRsp));
18272
18273 wdiWowlAddBcPtrRsp.wdiStatus =
18274 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18275 }
18276 else
18277 {
18278 halStatus = *((eHalStatus*)pEventData->pEventData);
18279 wdiWowlAddBcPtrRsp.wdiStatus =
18280 WDI_HAL_2_WDI_STATUS(halStatus);
18281 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018282
18283 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018284 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018285
Jeff Johnsone7245742012-09-05 17:12:55 -070018286 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018287}/*WDI_ProcessWowlAddBcPtrnRsp*/
18288
18289/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018290 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018291 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018292
18293 @param pWDICtx: pointer to the WLAN DAL context
18294 pEventData: pointer to the event information structure
18295
Jeff Johnson295189b2012-06-20 16:38:30 -070018296 @see
18297 @return Result of the function call
18298*/
18299WDI_Status
18300WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018301(
Jeff Johnson295189b2012-06-20 16:38:30 -070018302 WDI_ControlBlockType* pWDICtx,
18303 WDI_EventInfoType* pEventData
18304)
18305{
Jeff Johnson295189b2012-06-20 16:38:30 -070018306 eHalStatus halStatus;
18307 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018308 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18309 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18311
18312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018314 -------------------------------------------------------------------------*/
18315 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18316 ( NULL == pEventData->pEventData))
18317 {
18318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018322 }
18323
18324 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18325
18326 /*-------------------------------------------------------------------------
18327 Extract response and send it to UMAC
18328 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018329 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18330 {
18331 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18332 pEventData->pEventData,
18333 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018334
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018335 wdiWowlDelBcstPtrRsp.wdiStatus =
18336 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18337 }
18338 else
18339 {
18340 halStatus = *((eHalStatus*)pEventData->pEventData);
18341 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18342 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018343 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018344 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018345
Jeff Johnsone7245742012-09-05 17:12:55 -070018346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018347}/*WDI_ProcessWowlDelBcPtrnRsp*/
18348
18349/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018350 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018351 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018352
18353 @param pWDICtx: pointer to the WLAN DAL context
18354 pEventData: pointer to the event information structure
18355
Jeff Johnson295189b2012-06-20 16:38:30 -070018356 @see
18357 @return Result of the function call
18358*/
18359WDI_Status
18360WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018361(
Jeff Johnson295189b2012-06-20 16:38:30 -070018362 WDI_ControlBlockType* pWDICtx,
18363 WDI_EventInfoType* pEventData
18364)
18365{
Jeff Johnson295189b2012-06-20 16:38:30 -070018366 eHalStatus halStatus;
18367 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018368 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18369 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18371
18372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018374 -------------------------------------------------------------------------*/
18375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18376 ( NULL == pEventData->pEventData))
18377 {
18378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 }
18383
18384 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18385
18386 /*-------------------------------------------------------------------------
18387 Extract response and send it to UMAC
18388 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018389 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18390 {
18391 wpalMemoryCopy( &halEnterWowlRspParams,
18392 (wpt_uint8*)pEventData->pEventData,
18393 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018394
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018395 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18396 wdiwowlEnterRsp.status =
18397 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18398 }
18399 else
18400 {
18401 halStatus = *((eHalStatus*)pEventData->pEventData);
18402 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18403 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018404 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018405 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018406
Jeff Johnsone7245742012-09-05 17:12:55 -070018407 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018408}/*WDI_ProcessWowlEnterRsp*/
18409
18410/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018411 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018412 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018413
18414 @param pWDICtx: pointer to the WLAN DAL context
18415 pEventData: pointer to the event information structure
18416
Jeff Johnson295189b2012-06-20 16:38:30 -070018417 @see
18418 @return Result of the function call
18419*/
18420WDI_Status
18421WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018422(
Jeff Johnson295189b2012-06-20 16:38:30 -070018423 WDI_ControlBlockType* pWDICtx,
18424 WDI_EventInfoType* pEventData
18425)
18426{
Jeff Johnson295189b2012-06-20 16:38:30 -070018427 eHalStatus halStatus;
18428 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018429 tHalExitWowlRspParams halExitWowlRspParams;
18430 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18431
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18433
18434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018436 -------------------------------------------------------------------------*/
18437 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18438 ( NULL == pEventData->pEventData))
18439 {
18440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018444 }
18445
18446 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18447
18448 /*-------------------------------------------------------------------------
18449 Extract response and send it to UMAC
18450 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018451 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18452 {
18453 wpalMemoryCopy( &halExitWowlRspParams,
18454 pEventData->pEventData,
18455 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018456
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018457 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18458 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18459
18460 }
18461 else
18462 {
18463 halStatus = *((eHalStatus*)pEventData->pEventData);
18464 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18465 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018466 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018467 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018468
Jeff Johnsone7245742012-09-05 17:12:55 -070018469 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018470}/*WDI_ProcessWowlExitRsp*/
18471
18472/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018473 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018474 (called when a response is being received over the bus
18475 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018476
18477 @param pWDICtx: pointer to the WLAN DAL context
18478 pEventData: pointer to the event information structure
18479
Jeff Johnson295189b2012-06-20 16:38:30 -070018480 @see
18481 @return Result of the function call
18482*/
18483WDI_Status
18484WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018485(
Jeff Johnson295189b2012-06-20 16:38:30 -070018486 WDI_ControlBlockType* pWDICtx,
18487 WDI_EventInfoType* pEventData
18488)
18489{
18490 WDI_Status wdiStatus;
18491 eHalStatus halStatus;
18492 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18494
18495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018497 -------------------------------------------------------------------------*/
18498 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18499 ( NULL == pEventData->pEventData))
18500 {
18501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018505 }
18506
18507 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18508
18509 /*-------------------------------------------------------------------------
18510 Extract response and send it to UMAC
18511 -------------------------------------------------------------------------*/
18512 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018513 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018514
18515 /*Notify UMAC*/
18516 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18517
Jeff Johnsone7245742012-09-05 17:12:55 -070018518 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018519}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18520
18521
18522/**
18523 @brief Process Nv download(called when a response
18524 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018525
18526 @param pWDICtx: pointer to the WLAN DAL context
18527 pEventData: pointer to the event information structure
18528
Jeff Johnson295189b2012-06-20 16:38:30 -070018529 @see
18530 @return Result of the function call
18531*/
18532WDI_Status
18533WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018534(
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 WDI_ControlBlockType* pWDICtx,
18536 WDI_EventInfoType* pEventData
18537)
18538{
18539
18540 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18541 tHalNvImgDownloadRspParams halNvDownloadRsp;
18542 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18543
18544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018546 -------------------------------------------------------------------------*/
18547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18548 ( NULL == pEventData->pEventData))
18549 {
18550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018554 }
18555
18556 /*-------------------------------------------------------------------------
18557 Extract response and send it to UMAC
18558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018559 wpalMemoryCopy( &halNvDownloadRsp,
18560 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018561 sizeof(halNvDownloadRsp));
18562
18563 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18564
18565 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018566 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18567 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018568 {
18569 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018570 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 }
18572 else
18573 {
18574 /*Reset the Nv related global information in WDI context information */
18575 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18576 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18577 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18578 /*call WDA callback function for last fragment */
18579 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18580 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18581 }
18582
Jeff Johnsone7245742012-09-05 17:12:55 -070018583 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018584}
18585#ifdef WLAN_FEATURE_VOWIFI_11R
18586/**
18587 @brief Process Add TSpec Rsp function (called when a response
18588 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018589
18590 @param pWDICtx: pointer to the WLAN DAL context
18591 pEventData: pointer to the event information structure
18592
Jeff Johnson295189b2012-06-20 16:38:30 -070018593 @see
18594 @return Result of the function call
18595*/
18596WDI_Status
18597WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018598(
Jeff Johnson295189b2012-06-20 16:38:30 -070018599 WDI_ControlBlockType* pWDICtx,
18600 WDI_EventInfoType* pEventData
18601)
18602{
18603 WDI_Status wdiStatus;
18604 tAggrAddTsRspParams aggrAddTsRsp;
18605 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18607
18608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018609 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018610 -------------------------------------------------------------------------*/
18611 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18612 ( NULL == pEventData->pEventData))
18613 {
18614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018618 }
18619
18620 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18621
18622 /*-------------------------------------------------------------------------
18623 Extract response and send it to UMAC
18624 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018625 wpalMemoryCopy( &aggrAddTsRsp,
18626 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018627 sizeof(aggrAddTsRsp));
18628
18629 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018630 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018631
18632 /*Notify UMAC*/
18633 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18634
Jeff Johnsone7245742012-09-05 17:12:55 -070018635 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018636}/*WDI_ProcessAddTSpecRsp*/
18637#endif /* WLAN_FEATURE_VOWIFI_11R */
18638
18639/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018640 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018641 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018642
18643 @param pWDICtx: pointer to the WLAN DAL context
18644 pEventData: pointer to the event information structure
18645
Jeff Johnson295189b2012-06-20 16:38:30 -070018646 @see
18647 @return Result of the function call
18648*/
18649WDI_Status
18650WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018651(
Jeff Johnson295189b2012-06-20 16:38:30 -070018652 WDI_ControlBlockType* pWDICtx,
18653 WDI_EventInfoType* pEventData
18654)
18655{
18656 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18657 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18658 tHalHostResumeRspParams hostResumeRspMsg;
18659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18660
18661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018662 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018663 -------------------------------------------------------------------------*/
18664 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18665 ( NULL == pEventData->pEventData))
18666 {
18667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018671 }
18672
18673 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18674
18675 /*-------------------------------------------------------------------------
18676 Extract response and send it to UMAC
18677 -------------------------------------------------------------------------*/
18678
Jeff Johnsone7245742012-09-05 17:12:55 -070018679 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018680 (wpt_uint8*)pEventData->pEventData,
18681 sizeof(hostResumeRspMsg));
18682
Jeff Johnsone7245742012-09-05 17:12:55 -070018683 wdiResumeRspParams.wdiStatus =
18684 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018685
18686 /*Notify UMAC*/
18687 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18688
18689 return WDI_STATUS_SUCCESS;
18690}
18691
18692/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018693 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018694 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018695
18696 @param pWDICtx: pointer to the WLAN DAL context
18697 pEventData: pointer to the event information structure
18698
Jeff Johnson295189b2012-06-20 16:38:30 -070018699 @see
18700 @return Result of the function call
18701*/
18702WDI_Status
18703WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018704(
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 WDI_ControlBlockType* pWDICtx,
18706 WDI_EventInfoType* pEventData
18707)
18708{
18709 WDI_Status wdiStatus;
18710 eHalStatus halStatus;
18711 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18713
18714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018716 -------------------------------------------------------------------------*/
18717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18718 ( NULL == pEventData->pEventData))
18719 {
18720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018725
18726 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018727
18728 /*-------------------------------------------------------------------------
18729 Extract response and send it to UMAC
18730 -------------------------------------------------------------------------*/
18731 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018732 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018733
18734 /*Notify UMAC*/
18735 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18736
Jeff Johnsone7245742012-09-05 17:12:55 -070018737 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018738}/*WDI_ProcessSetTxPerTrackingRsp*/
18739
18740/*==========================================================================
18741 Indications from HAL
18742 ==========================================================================*/
18743/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018744 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018745 indication of this kind is being received over the bus
18746 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018747
18748 @param pWDICtx: pointer to the WLAN DAL context
18749 pEventData: pointer to the event information structure
18750
Jeff Johnson295189b2012-06-20 16:38:30 -070018751 @see
18752 @return Result of the function call
18753*/
18754WDI_Status
18755WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018756(
Jeff Johnson295189b2012-06-20 16:38:30 -070018757 WDI_ControlBlockType* pWDICtx,
18758 WDI_EventInfoType* pEventData
18759)
18760{
18761 WDI_LowLevelIndType wdiInd;
18762 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18764
18765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018766 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018767 -------------------------------------------------------------------------*/
18768 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18769 ( NULL == pEventData->pEventData))
18770 {
18771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018772 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018775 }
18776
18777 /*-------------------------------------------------------------------------
18778 Extract indication and send it to UMAC
18779 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018780 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18781 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018782 sizeof(tHalRSSINotification));
18783
18784 /*Fill in the indication parameters*/
18785 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18786 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18787 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18788 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18789 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18790 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18791 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18792 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18793 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18794 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18795 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18796 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18797 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018798 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18799 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018800
ltimariu034f7d62013-01-24 18:54:33 -080018801 if ( pWDICtx->wdiLowLevelIndCB )
18802 {
18803 /*Notify UMAC of indication*/
18804 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18805 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018806
18807 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018808}/*WDI_ProcessLowRSSIInd*/
18809
18810
18811/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018812 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018813 an indication of this kind is being received over the
18814 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018815
18816 @param pWDICtx: pointer to the WLAN DAL context
18817 pEventData: pointer to the event information structure
18818
Jeff Johnson295189b2012-06-20 16:38:30 -070018819 @see
18820 @return Result of the function call
18821*/
18822WDI_Status
18823WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018824(
Jeff Johnson295189b2012-06-20 16:38:30 -070018825 WDI_ControlBlockType* pWDICtx,
18826 WDI_EventInfoType* pEventData
18827)
18828{
18829 WDI_Status wdiStatus;
18830 eHalStatus halStatus;
18831 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018832 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18834
18835 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018836 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018837 -------------------------------------------------------------------------*/
18838 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18839 ( NULL == pEventData->pEventData))
18840 {
18841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018842 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018843 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018845 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018846 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018847 /*-------------------------------------------------------------------------
18848 Extract indication and send it to UMAC
18849 -------------------------------------------------------------------------*/
18850 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18851 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018852 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018853
18854 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018855 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018856 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
18857 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080018858 if ( pWDICtx->wdiLowLevelIndCB )
18859 {
18860 /*Notify UMAC*/
18861 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18862 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018863
18864 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018865}/*WDI_ProcessMissedBeaconInd*/
18866
18867
18868/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018869 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018870 an indication of this kind is being received over the
18871 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018872
18873 @param pWDICtx: pointer to the WLAN DAL context
18874 pEventData: pointer to the event information structure
18875
Jeff Johnson295189b2012-06-20 16:38:30 -070018876 @see
18877 @return Result of the function call
18878*/
18879WDI_Status
18880WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018881(
Jeff Johnson295189b2012-06-20 16:38:30 -070018882 WDI_ControlBlockType* pWDICtx,
18883 WDI_EventInfoType* pEventData
18884)
18885{
18886 WDI_Status wdiStatus;
18887 eHalStatus halStatus;
18888 WDI_LowLevelIndType wdiInd;
18889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18890
18891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018893 -------------------------------------------------------------------------*/
18894 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18895 ( NULL == pEventData->pEventData))
18896 {
18897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018901 }
18902
18903 /*-------------------------------------------------------------------------
18904 Extract indication and send it to UMAC
18905 -------------------------------------------------------------------------*/
18906 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18907 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018908 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018909
18910 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018911 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018912 /* ! TO DO - fill in from HAL struct:
18913 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18914
ltimariu034f7d62013-01-24 18:54:33 -080018915 if ( pWDICtx->wdiLowLevelIndCB )
18916 {
18917 /*Notify UMAC*/
18918 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18919 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018920
18921 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018922}/*WDI_ProcessUnkAddrFrameInd*/
18923
18924
18925/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018926 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018927 indication of this kind is being received over the bus
18928 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018929
18930 @param pWDICtx: pointer to the WLAN DAL context
18931 pEventData: pointer to the event information structure
18932
Jeff Johnson295189b2012-06-20 16:38:30 -070018933 @see
18934 @return Result of the function call
18935*/
18936WDI_Status
18937WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018938(
Jeff Johnson295189b2012-06-20 16:38:30 -070018939 WDI_ControlBlockType* pWDICtx,
18940 WDI_EventInfoType* pEventData
18941)
18942{
18943 WDI_LowLevelIndType wdiInd;
18944 tpSirMicFailureInd pHalMicFailureInd;
18945
18946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18947
18948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018950 -------------------------------------------------------------------------*/
18951 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18952 ( NULL == pEventData->pEventData))
18953 {
18954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018958 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018959
Jeff Johnson295189b2012-06-20 16:38:30 -070018960 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18961 /*-------------------------------------------------------------------------
18962 Extract indication and send it to UMAC
18963 -------------------------------------------------------------------------*/
18964
18965 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018966 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018967 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18968 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18969 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18970 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18971 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18972 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18973 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18974 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018975 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018977 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018978 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018979 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018980 pHalMicFailureInd->info.keyId;
18981 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18982 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18983 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18984 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080018985
18986 if ( pWDICtx->wdiLowLevelIndCB )
18987 {
18988 /*Notify UMAC*/
18989 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18990 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018991
18992 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018993}/*WDI_ProcessMicFailureInd*/
18994
18995
18996/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018997 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018998 an indication of this kind is being received over the
18999 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019000
19001 @param pWDICtx: pointer to the WLAN DAL context
19002 pEventData: pointer to the event information structure
19003
Jeff Johnson295189b2012-06-20 16:38:30 -070019004 @see
19005 @return Result of the function call
19006*/
19007WDI_Status
19008WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019009(
Jeff Johnson295189b2012-06-20 16:38:30 -070019010 WDI_ControlBlockType* pWDICtx,
19011 WDI_EventInfoType* pEventData
19012)
19013{
19014 WDI_Status wdiStatus;
19015 eHalStatus halStatus;
19016 WDI_LowLevelIndType wdiInd;
19017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19018
19019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019021 -------------------------------------------------------------------------*/
19022 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19023 ( NULL == pEventData->pEventData))
19024 {
19025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019029 }
19030
19031 /*-------------------------------------------------------------------------
19032 Extract indication and send it to UMAC
19033 -------------------------------------------------------------------------*/
19034
19035 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19036 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019037 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019038
19039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19040 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019041
Jeff Johnson295189b2012-06-20 16:38:30 -070019042 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019043 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19044 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019045
ltimariu034f7d62013-01-24 18:54:33 -080019046 if ( pWDICtx->wdiLowLevelIndCB )
19047 {
19048 /*Notify UMAC*/
19049 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19050 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019051
19052 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019053}/*WDI_ProcessFatalErrorInd*/
19054
19055/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019056 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019057 an indication of this kind is being received over the
19058 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019059
19060 @param pWDICtx: pointer to the WLAN DAL context
19061 pEventData: pointer to the event information structure
19062
Jeff Johnson295189b2012-06-20 16:38:30 -070019063 @see
19064 @return Result of the function call
19065*/
19066WDI_Status
19067WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019068(
Jeff Johnson295189b2012-06-20 16:38:30 -070019069 WDI_ControlBlockType* pWDICtx,
19070 WDI_EventInfoType* pEventData
19071)
19072{
19073 tDeleteStaContextParams halDelSTACtx;
19074 WDI_LowLevelIndType wdiInd;
19075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19076
19077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019079 -------------------------------------------------------------------------*/
19080 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19081 ( NULL == pEventData->pEventData))
19082 {
19083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019084 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019087 }
19088
19089 /*-------------------------------------------------------------------------
19090 Extract indication and send it to UMAC
19091 -------------------------------------------------------------------------*/
19092
19093 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019094 wpalMemoryCopy( &halDelSTACtx,
19095 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019096 sizeof(halDelSTACtx));
19097
19098 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019099 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019100
19101 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19102 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19103 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19104 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19105
Jeff Johnsone7245742012-09-05 17:12:55 -070019106 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019107 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019108 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019109 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019110 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19111 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019112
ltimariu034f7d62013-01-24 18:54:33 -080019113 if ( pWDICtx->wdiLowLevelIndCB )
19114 {
19115 /*Notify UMAC*/
19116 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19117 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019118
19119 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019120}/*WDI_ProcessDelSTAInd*/
19121
19122/**
19123*@brief Process Coex Indication function (called when
19124 an indication of this kind is being received over the
19125 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019126
19127 @param pWDICtx: pointer to the WLAN DAL context
19128 pEventData: pointer to the event information structure
19129
Jeff Johnson295189b2012-06-20 16:38:30 -070019130 @see
19131 @return Result of the function call
19132*/
19133WDI_Status
19134WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019135(
Jeff Johnson295189b2012-06-20 16:38:30 -070019136 WDI_ControlBlockType* pWDICtx,
19137 WDI_EventInfoType* pEventData
19138)
19139{
19140 WDI_LowLevelIndType wdiInd;
19141 tCoexIndMsg halCoexIndMsg;
19142 wpt_uint32 index;
19143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19144
19145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019147 -------------------------------------------------------------------------*/
19148 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19149 ( NULL == pEventData->pEventData ))
19150 {
19151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019152 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019153 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019155 }
19156
19157 /*-------------------------------------------------------------------------
19158 Extract indication and send it to UMAC
19159 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019160 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19161 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019162 sizeof(halCoexIndMsg.coexIndParams) );
19163
19164 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019165 wdiInd.wdiIndicationType = WDI_COEX_IND;
19166 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019167 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19168 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019169 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019170 }
19171
19172 // DEBUG
19173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19174 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019175 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19176 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19177 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19178 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19179 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019180
ltimariu034f7d62013-01-24 18:54:33 -080019181 if ( pWDICtx->wdiLowLevelIndCB )
19182 {
19183 /*Notify UMAC*/
19184 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19185 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019186
19187 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019188}/*WDI_ProcessCoexInd*/
19189
19190/**
19191*@brief Process Tx Complete Indication function (called when
19192 an indication of this kind is being received over the
19193 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019194
19195 @param pWDICtx: pointer to the WLAN DAL context
19196 pEventData: pointer to the event information structure
19197
Jeff Johnson295189b2012-06-20 16:38:30 -070019198 @see
19199 @return Result of the function call
19200*/
19201WDI_Status
19202WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019203(
Jeff Johnson295189b2012-06-20 16:38:30 -070019204 WDI_ControlBlockType* pWDICtx,
19205 WDI_EventInfoType* pEventData
19206)
19207{
19208 WDI_LowLevelIndType wdiInd;
19209 tTxComplIndMsg halTxComplIndMsg;
19210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19211
19212 /*-------------------------------------------------------------------------
19213 Sanity check
19214 -------------------------------------------------------------------------*/
19215 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19216 ( NULL == pEventData->pEventData ))
19217 {
19218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019219 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019220 WDI_ASSERT( 0 );
19221 return WDI_STATUS_E_FAILURE;
19222 }
19223
19224 /*-------------------------------------------------------------------------
19225 Extract indication and send it to UMAC
19226 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019227 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19228 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019229 sizeof(halTxComplIndMsg.txComplParams) );
19230
19231 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019232 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19233 wdiInd.wdiIndicationData.tx_complete_status
19234 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019235
ltimariu034f7d62013-01-24 18:54:33 -080019236 if ( pWDICtx->wdiLowLevelIndCB )
19237 {
19238 /*Notify UMAC*/
19239 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19240 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019241
19242 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019243}/*WDI_ProcessTxCompleteInd*/
19244
Jeff Johnson295189b2012-06-20 16:38:30 -070019245/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019246*@brief Process Noa Start Indication function (called when
19247 an indication of this kind is being received over the
19248 bus from HAL)
19249
19250 @param pWDICtx: pointer to the WLAN DAL context
19251 pEventData: pointer to the event information structure
19252
19253 @see
19254 @return Result of the function call
19255*/
19256WDI_Status
19257WDI_ProcessP2pNoaStartInd
19258(
19259 WDI_ControlBlockType* pWDICtx,
19260 WDI_EventInfoType* pEventData
19261)
19262{
19263 WDI_LowLevelIndType wdiInd;
19264 tNoaStartIndMsg halNoaStartIndMsg;
19265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19266
19267 /*-------------------------------------------------------------------------
19268 Sanity check
19269 -------------------------------------------------------------------------*/
19270 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19271 ( NULL == pEventData->pEventData ))
19272 {
19273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19274 "%s: Invalid parameters", __func__);
19275 WDI_ASSERT( 0 );
19276 return WDI_STATUS_E_FAILURE;
19277 }
19278
19279 /*-------------------------------------------------------------------------
19280 Extract indication and send it to UMAC
19281 -------------------------------------------------------------------------*/
19282 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19283 pEventData->pEventData,
19284 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19285
19286 /*Fill in the indication parameters*/
19287 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19288
19289 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19290 = halNoaStartIndMsg.noaStartIndParams.status;
19291
19292 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19293 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19294
19295 /*Notify UMAC*/
19296 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19297
19298 return WDI_STATUS_SUCCESS;
19299}/*WDI_ProcessNoaAttrInd*/
19300
19301/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019302*@brief Process Noa Attr Indication function (called when
19303 an indication of this kind is being received over the
19304 bus from HAL)
19305
19306 @param pWDICtx: pointer to the WLAN DAL context
19307 pEventData: pointer to the event information structure
19308
19309 @see
19310 @return Result of the function call
19311*/
19312WDI_Status
19313WDI_ProcessP2pNoaAttrInd
19314(
19315 WDI_ControlBlockType* pWDICtx,
19316 WDI_EventInfoType* pEventData
19317)
19318{
19319 WDI_LowLevelIndType wdiInd;
19320 tNoaAttrIndMsg halNoaAttrIndMsg;
19321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19322
19323 /*-------------------------------------------------------------------------
19324 Sanity check
19325 -------------------------------------------------------------------------*/
19326 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19327 ( NULL == pEventData->pEventData ))
19328 {
19329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019330 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019331 WDI_ASSERT( 0 );
19332 return WDI_STATUS_E_FAILURE;
19333 }
19334
19335 /*-------------------------------------------------------------------------
19336 Extract indication and send it to UMAC
19337 -------------------------------------------------------------------------*/
19338 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19339 pEventData->pEventData,
19340 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19341
19342 /*Fill in the indication parameters*/
19343 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019344
Jeff Johnson295189b2012-06-20 16:38:30 -070019345 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19346 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019347
Jeff Johnson295189b2012-06-20 16:38:30 -070019348 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19349 = halNoaAttrIndMsg.noaAttrIndParams.index;
19350 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19351 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19352 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19353 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019354
Jeff Johnson295189b2012-06-20 16:38:30 -070019355 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19356 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19357 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19358 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19359 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19360 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19361 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19362 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019363
Jeff Johnson295189b2012-06-20 16:38:30 -070019364 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19365 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19366 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19367 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19368 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19369 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19370 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19371 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19372
ltimariu034f7d62013-01-24 18:54:33 -080019373 if ( pWDICtx->wdiLowLevelIndCB )
19374 {
19375 /*Notify UMAC*/
19376 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19377 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019378
19379 return WDI_STATUS_SUCCESS;
19380}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019381
19382/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019383 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019384 an indication of this kind is being received over the
19385 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019386
19387 @param pWDICtx: pointer to the WLAN DAL context
19388 pEventData: pointer to the event information structure
19389
Jeff Johnson295189b2012-06-20 16:38:30 -070019390 @see
19391 @return Result of the function call
19392*/
19393WDI_Status
19394WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019395(
Jeff Johnson295189b2012-06-20 16:38:30 -070019396 WDI_ControlBlockType* pWDICtx,
19397 WDI_EventInfoType* pEventData
19398)
19399{
19400 WDI_LowLevelIndType wdiInd;
19401 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019402
Jeff Johnson295189b2012-06-20 16:38:30 -070019403 /*-------------------------------------------------------------------------
19404 Extract indication and send it to UMAC
19405 -------------------------------------------------------------------------*/
19406 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019407 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19408
ltimariu034f7d62013-01-24 18:54:33 -080019409 if ( pWDICtx->wdiLowLevelIndCB )
19410 {
19411 /*Notify UMAC*/
19412 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19413 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019414
Jeff Johnsone7245742012-09-05 17:12:55 -070019415 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019416}/*WDI_ProcessTxPerHitInd*/
19417
Jeff Johnson295189b2012-06-20 16:38:30 -070019418/**
19419 @brief WDI_ProcessFTMCommandReq
19420 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019421
19422 @param pWDICtx: pointer to the WLAN DAL context
19423 pEventData: pointer to the event information structure
19424
Jeff Johnson295189b2012-06-20 16:38:30 -070019425 @see
19426 @return Result of the function call
19427*/
19428WDI_Status
19429WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019430(
Jeff Johnson295189b2012-06-20 16:38:30 -070019431 WDI_ControlBlockType* pWDICtx,
19432 WDI_EventInfoType* pEventData
19433)
19434{
19435 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19436 wpt_uint8 *ftmCommandBuffer = NULL;
19437 wpt_uint16 dataOffset;
19438 wpt_uint16 bufferSize;
19439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019441 -------------------------------------------------------------------------*/
19442 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19443 ( NULL == pEventData->pEventData))
19444
19445 {
19446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019450 }
19451
19452 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19453
19454 /* Get MSG Buffer */
19455 WDI_GetMessageBuffer(pWDICtx,
19456 WDI_FTM_CMD_REQ,
19457 ftmCommandReq->bodyLength,
19458 &ftmCommandBuffer,
19459 &dataOffset,
19460 &bufferSize);
19461
19462 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19463 ftmCommandReq->FTMCommandBody,
19464 ftmCommandReq->bodyLength);
19465
19466 /* Send MSG */
19467 return WDI_SendMsg(pWDICtx,
19468 ftmCommandBuffer,
19469 bufferSize,
19470 pEventData->pCBfnc,
19471 pEventData->pUserData,
19472 WDI_FTM_CMD_RESP);
19473}
19474
19475/**
19476 @brief WDI_ProcessFTMCommandRsp
19477 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019478
19479 @param pWDICtx: pointer to the WLAN DAL context
19480 pEventData: pointer to the event information structure
19481
Jeff Johnson295189b2012-06-20 16:38:30 -070019482 @see
19483 @return Result of the function call
19484*/
19485WDI_Status
19486WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019487(
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 WDI_ControlBlockType* pWDICtx,
19489 WDI_EventInfoType* pEventData
19490)
19491{
19492 WDI_FTMCommandRspCb ftmCMDRspCb;
19493 tProcessPttRspParams *ftmCMDRspData = NULL;
19494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19495
19496 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019497 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019498 -------------------------------------------------------------------------*/
19499 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19500 ( NULL == pEventData->pEventData))
19501 {
19502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019506 }
19507
19508 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19509
19510 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19511
Jeff Johnsone7245742012-09-05 17:12:55 -070019512 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19513 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019514 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19515
19516 /*Notify UMAC*/
19517 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19518
Jeff Johnsone7245742012-09-05 17:12:55 -070019519 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019520}
Jeff Johnson295189b2012-06-20 16:38:30 -070019521/**
19522 @brief WDI_ProcessHalDumpCmdReq
19523 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019524
19525 @param pWDICtx: pointer to the WLAN DAL context
19526 pEventData: pointer to the event information structure
19527
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 @see
19529 @return Result of the function call
19530*/
19531WDI_Status
19532WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019533(
Jeff Johnson295189b2012-06-20 16:38:30 -070019534 WDI_ControlBlockType* pWDICtx,
19535 WDI_EventInfoType* pEventData
19536)
19537{
19538 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19539 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19540 wpt_uint16 usDataOffset = 0;
19541 wpt_uint16 usSendSize = 0;
19542 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019543 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019544
19545 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019546 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019547 -------------------------------------------------------------------------*/
19548 if (( NULL == pEventData ) ||
19549 ( NULL == pEventData->pEventData) ||
19550 ( NULL == pEventData->pCBfnc ))
19551 {
19552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019553 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019554 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019556 }
19557
19558 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19559 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19560
19561 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019562 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019563 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019564 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019565 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019566 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019567 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019568 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019569 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019570 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019571 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019572
Jeff Johnson295189b2012-06-20 16:38:30 -070019573 /*-----------------------------------------------------------------------
19574 Get message buffer
19575 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019576 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019577 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19578 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019579 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019580 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19581 {
19582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19583 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19584 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 }
19588
Jeff Johnsone7245742012-09-05 17:12:55 -070019589 wpalMemoryCopy( pSendBuffer+usDataOffset,
19590 &halDumpCmdReqMsg.dumpCmdReqParams,
19591 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019592
19593 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019594 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019595
19596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019597 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019598 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019599 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19600 wdiHALDumpCmdRspCb, pEventData->pUserData,
19601 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019602}
19603
19604/**
19605 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019606 Process hal Dump Command Response from HAL, simply route to HDD
19607
19608 @param pWDICtx: pointer to the WLAN DAL context
19609 pEventData: pointer to the event information structure
19610
Jeff Johnson295189b2012-06-20 16:38:30 -070019611 @see
19612 @return Result of the function call
19613*/
19614WDI_Status
19615WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019616(
Jeff Johnson295189b2012-06-20 16:38:30 -070019617 WDI_ControlBlockType* pWDICtx,
19618 WDI_EventInfoType* pEventData
19619)
19620{
19621 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019622 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19624
19625 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019626 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019627 -------------------------------------------------------------------------*/
19628 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19629 ( NULL == pEventData->pEventData))
19630 {
19631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019635 }
19636
Jeff Johnsone7245742012-09-05 17:12:55 -070019637 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019638
19639 /*Initialize the WDI Response structure */
19640 wdiHALDumpCmdRsp.usBufferLen = 0;
19641 wdiHALDumpCmdRsp.pBuffer = NULL;
19642
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019643 wpalMemoryCopy( &halDumpCmdRspParams,
19644 pEventData->pEventData,
19645 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019646
19647 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019648 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019649
19650 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019651 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019652 {
19653 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019654 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19655 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19656
19657 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19658 &halDumpCmdRspParams.rspBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019659 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19660 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019661
Jeff Johnson295189b2012-06-20 16:38:30 -070019662 /*Notify UMAC*/
19663 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19664
19665 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19666 {
19667 /* Free the allocated buffer */
19668 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19669 }
19670 return WDI_STATUS_SUCCESS;
19671}
19672
19673/*==========================================================================
19674 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019675
Jeff Johnson295189b2012-06-20 16:38:30 -070019676 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019677 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019678==========================================================================*/
19679/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019680 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019681 when it wishes to send up a notification like the ones
19682 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019683
Jeff Johnson295189b2012-06-20 16:38:30 -070019684 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019685
19686 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019687 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019688 wctsNotifyCBData: the callback data of the user
19689
Jeff Johnson295189b2012-06-20 16:38:30 -070019690 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019691
19692 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019693*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019694void
Jeff Johnson295189b2012-06-20 16:38:30 -070019695WDI_NotifyMsgCTSCB
19696(
Jeff Johnsone7245742012-09-05 17:12:55 -070019697 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019698 WCTS_NotifyEventType wctsEvent,
19699 void* wctsNotifyCBData
19700)
19701{
Jeff Johnsone7245742012-09-05 17:12:55 -070019702 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19704
19705 if (NULL == pWDICtx )
19706 {
19707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019710 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019711 }
19712
19713 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19714 {
19715 /* callback presumably occurred after close */
19716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019717 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019718 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019719 }
19720
19721 if ( WCTS_EVENT_OPEN == wctsEvent )
19722 {
19723 /*Flag must be set atomically as it is checked from incoming request
19724 functions*/
19725 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019726 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019727
19728 /*Nothing to do - so try to dequeue any pending request that may have
19729 occurred while we were trying to establish this*/
19730 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019731 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019732 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019733 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019734 {
19735 /*Flag must be set atomically as it is checked from incoming request
19736 functions*/
19737 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019738 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019739
19740 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019741 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019742 wpalMutexRelease(&pWDICtx->wptMutex);
19743
19744 /*Notify that the Control Channel is closed */
19745 wpalEventSet(&pWDICtx->wctsActionEvent);
19746 }
19747
19748}/*WDI_NotifyMsgCTSCB*/
19749
19750
19751/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019752 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019753 when it wishes to send up a packet received over the
19754 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019755
Jeff Johnson295189b2012-06-20 16:38:30 -070019756 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019757
19758 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 pMsg: the packet
19760 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019761 wctsRxMsgCBData: the callback data of the user
19762
Jeff Johnson295189b2012-06-20 16:38:30 -070019763 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019764
19765 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019766*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019767void
19768WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019769(
Jeff Johnsone7245742012-09-05 17:12:55 -070019770 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 void* pMsg,
19772 wpt_uint32 uLen,
19773 void* wctsRxMsgCBData
19774)
19775{
Jeff Johnsone7245742012-09-05 17:12:55 -070019776 tHalMsgHeader *pHalMsgHeader;
19777 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019778 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19780
19781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019783 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019784 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019785 ( uLen < sizeof(tHalMsgHeader)))
19786 {
19787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019790 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019791 }
19792
19793 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19794 {
19795 /* callback presumably occurred after close */
19796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019797 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019798 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 }
19800
Jeff Johnsone7245742012-09-05 17:12:55 -070019801 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019802 context - so no serialization is necessary here
19803 ! - revisit this assumption */
19804
19805 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19806
19807 if ( uLen != pHalMsgHeader->msgLen )
19808 {
19809 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19810 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019811 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19812 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019813 }
19814
19815 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19816
19817 /*The message itself starts after the header*/
19818 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19819 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19820 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19821 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19822
19823
19824 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19825 {
19826 /*Stop the timer as the response was received */
19827 /*!UT - check for potential race conditions between stop and response */
19828 wpalTimerStop(&pWDICtx->wptResponseTimer);
19829 }
19830 /* Check if we receive a response message which is not expected */
19831 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19832 {
19833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19834 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19835 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019836 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019837 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19838 pWDICtx->wdiExpectedResponse);
19839 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19840 return;
19841 }
19842
19843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19844 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19845
19846 /*Post response event to the state machine*/
19847 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19848
19849}/*WDI_RXMsgCTSCB*/
19850
19851
19852/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019853 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019854========================================================================*/
19855
19856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019857 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019858 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019859
Jeff Johnson295189b2012-06-20 16:38:30 -070019860 @param pWDICtx - pointer to the control block
19861
19862 @return Result of the function call
19863*/
19864WPT_INLINE WDI_Status
19865WDI_CleanCB
19866(
19867 WDI_ControlBlockType* pWDICtx
19868)
19869{
19870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19871
19872 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019873 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019874
Jeff Johnsone7245742012-09-05 17:12:55 -070019875 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019876 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19877 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19878
19879 WDI_ResetAssocSessions( pWDICtx );
19880
19881 return WDI_STATUS_SUCCESS;
19882}/*WDI_CleanCB*/
19883
19884
19885/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019886 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019887
Jeff Johnsone7245742012-09-05 17:12:55 -070019888
19889 @param pWDICtx: pointer to the WLAN DAL context
19890 pEventData: pointer to the event information structure
19891
Jeff Johnson295189b2012-06-20 16:38:30 -070019892 @see
19893 @return Result of the function call
19894*/
19895WPT_INLINE WDI_Status
19896WDI_ProcessRequest
19897(
19898 WDI_ControlBlockType* pWDICtx,
19899 WDI_EventInfoType* pEventData
19900)
19901{
19902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19903
Jeff Johnsone7245742012-09-05 17:12:55 -070019904 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019905 already checked these pointers*/
19906
19907 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19908 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019909 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19911 "Calling request processing function for req %s (%d) %x",
19912 WDI_getReqMsgString(pEventData->wdiRequest),
19913 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19914 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19915 }
19916 else
19917 {
19918 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019919 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019920 pEventData->wdiRequest);
19921 return WDI_STATUS_E_NOT_IMPLEMENT;
19922 }
19923}/*WDI_ProcessRequest*/
19924
19925
19926/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019927 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019928 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019929 prefixes it with a send message header
19930
19931 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 wdiReqType: type of the request being sent
19933 uBufferLen: message buffer len
19934 pMsgBuffer: resulting allocated buffer
19935 pusDataOffset: offset in the buffer where the caller
19936 can start copying its message data
19937 puBufferSize: the resulting buffer size (offset+buff
19938 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019939
Jeff Johnson295189b2012-06-20 16:38:30 -070019940 @see
19941 @return Result of the function call
19942*/
19943WDI_Status
19944WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019945(
19946 WDI_ControlBlockType* pWDICtx,
19947 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019948 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019949 wpt_uint8** pMsgBuffer,
19950 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019951 wpt_uint16* pusBufferSize
19952)
19953{
19954 tHalMsgHeader halMsgHeader;
19955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19956
Jeff Johnsone7245742012-09-05 17:12:55 -070019957 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019958 again*/
19959
19960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019961 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019963 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019964 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19965 if ( NULL == *pMsgBuffer )
19966 {
19967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19968 "Unable to allocate message buffer for req %s (%d)",
19969 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019970 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019971 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019972 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019973 }
19974
19975 /*-------------------------------------------------------------------------
19976 Fill in the message header
19977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019978 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19979 /* Fill msgVersion */
19980#ifdef WLAN_FEATURE_11AC
19981 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019982 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019983 else
19984#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019985 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019986
Jeff Johnsone7245742012-09-05 17:12:55 -070019987 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19988 *pusDataOffset = sizeof(halMsgHeader);
19989 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19990
19991 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019992}/*WDI_GetMessageBuffer*/
19993
19994
19995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019996 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019997 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019998 the CB
19999
20000 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020001 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020002
Jeff Johnson295189b2012-06-20 16:38:30 -070020003 usSendSize size of the buffer to be sent
20004 pRspCb: response callback - save in the WDI
20005 CB
20006 pUserData: user data associated with the
20007 callback
20008 wdiExpectedResponse: the code of the response that is
20009 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020010
Jeff Johnson295189b2012-06-20 16:38:30 -070020011 @see
20012 @return Result of the function call
20013*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020014WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020015WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020016(
20017 WDI_ControlBlockType* pWDICtx,
20018 wpt_uint8* pSendBuffer,
20019 wpt_uint32 usSendSize,
20020 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020021 void* pUserData,
20022 WDI_ResponseEnumType wdiExpectedResponse
20023)
20024{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020025 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020026 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20028
20029 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020030 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020031 ------------------------------------------------------------------------*/
20032 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020033 pWDICtx->pfncRspCB = pRspCb;
20034 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020035
20036 /*-----------------------------------------------------------------------
20037 Call the CTS to send this message over - free message afterwards
20038 - notify transport failure
20039 Note: CTS is reponsible for freeing the message buffer.
20040 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020041 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20042 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20043 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020044 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020046 "Failed to send message over the bus - catastrophic failure");
20047
Jeff Johnsond13512a2012-07-17 11:42:19 -070020048 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020049 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020050 else
20051 {
20052 /* even when message was placed in CTS deferred Q, we will treat it
20053 success but log this info
20054 */
20055 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20056 {
20057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20058 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20059 "response %s (%d)",
20060 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20061 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020062 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020063 }
20064 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020065
Jeff Johnsond13512a2012-07-17 11:42:19 -070020066 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020067 if ( NULL != pWDICtx->wdiReqStatusCB )
20068 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020069 /*Inform originator whether request went through or not*/
20070 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20071 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 pWDICtx->wdiReqStatusCB = NULL;
20073 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020074 callback(wdiStatus, callbackContext);
20075
20076 /*For WDI requests which have registered a request callback,
20077 inform the WDA caller of the same via setting the return value
20078 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20079 end up repeating the functonality in the req callback for the
20080 WDI_STATUS_E_FAILURE case*/
20081 if (wdiStatus == WDI_STATUS_E_FAILURE)
20082 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020083 }
20084
Jeff Johnsond13512a2012-07-17 11:42:19 -070020085 if ( wdiStatus == WDI_STATUS_SUCCESS )
20086 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020087 /*Start timer for the expected response */
20088 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020089
20090 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020091 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020092 }
20093 else
20094 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020095 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020096 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20097 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020098
Jeff Johnsond13512a2012-07-17 11:42:19 -070020099 return wdiStatus;
20100
Jeff Johnson295189b2012-06-20 16:38:30 -070020101}/*WDI_SendMsg*/
20102
20103
20104
20105/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020106 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020107 the bus using the control transport and saves some info
20108 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020109
20110 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 pSendBuffer: buffer to be sent
20112 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020113
Jeff Johnson295189b2012-06-20 16:38:30 -070020114 @see
20115 @return Result of the function call
20116*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020117WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020118WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020119(
20120 WDI_ControlBlockType* pWDICtx,
20121 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020122 wpt_uint32 usSendSize
20123)
20124{
20125 wpt_uint32 uStatus ;
20126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20127
20128 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020129 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020130 Note: CTS is reponsible for freeing the message buffer.
20131 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020132 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020133 (void*)pSendBuffer, usSendSize );
20134
20135 /*Inform Upper MAC about the outcome of the request*/
20136 if ( NULL != pWDICtx->wdiReqStatusCB )
20137 {
20138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20139 "Send indication status : %d", uStatus);
20140
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020141 /* even if CTS placed indication into its deferred Q, we treat it
20142 * as success and let CTS drain its queue as per smd interrupt to CTS
20143 */
20144 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 -070020145 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020146 }
20147
20148 /*If sending of the message failed - it is considered catastrophic and
20149 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020150 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20151 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20152
Jeff Johnson295189b2012-06-20 16:38:30 -070020153 {
20154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020155 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020156
20157 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20158 return WDI_STATUS_E_FAILURE;
20159 }
20160
Jeff Johnsone7245742012-09-05 17:12:55 -070020161 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020162}/*WDI_SendIndication*/
20163
20164
20165/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020166 @brief WDI_DetectedDeviceError - called internally by DAL when
20167 it has detected a failure in the device
20168
20169 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 usErrorCode: error code detected by WDI or received
20171 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020172
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020174 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020175*/
20176void
20177WDI_DetectedDeviceError
20178(
20179 WDI_ControlBlockType* pWDICtx,
20180 wpt_uint16 usErrorCode
20181)
20182{
20183 WDI_LowLevelIndType wdiInd;
20184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20185
20186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20187 "Device Error detected code: %d - transitioning to stopped state",
20188 usErrorCode);
20189
20190 wpalMutexAcquire(&pWDICtx->wptMutex);
20191
20192 WDI_STATableStop(pWDICtx);
20193
20194 WDI_ResetAssocSessions(pWDICtx);
20195
20196 /*Set the expected state transition to stopped - because the device
20197 experienced a failure*/
20198 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20199
20200 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020201 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020202
Jeff Johnsone7245742012-09-05 17:12:55 -070020203 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020204
20205 /*TO DO: - there should be an attempt to reset the device here*/
20206
20207 wpalMutexRelease(&pWDICtx->wptMutex);
20208
20209 /*------------------------------------------------------------------------
20210 Notify UMAC if a handler is registered
20211 ------------------------------------------------------------------------*/
20212 if (pWDICtx->wdiLowLevelIndCB)
20213 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020214 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20215 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020216
20217 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20218 }
20219}/*WDI_DetectedDeviceError*/
20220
20221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020222 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020223 we started on send message has expire - this should
20224 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020225 reply - trigger catastrophic failure
20226 @param
20227
Jeff Johnson295189b2012-06-20 16:38:30 -070020228 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020229
20230 @see
20231 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020232*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020233void
Jeff Johnson295189b2012-06-20 16:38:30 -070020234WDI_ResponseTimerCB
20235(
20236 void *pUserData
20237)
20238{
20239 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20240 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20241
20242 if (NULL == pWDICtx )
20243 {
20244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020245 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020247 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020248 }
20249
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020250 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020251 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020252
20253 /* If response timer is running at this time that means this timer
20254 * event is not for the last request but rather last-to-last request and
20255 * this timer event has come after we recevied respone for last-to-last
20256 * message
20257 */
20258 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20259 {
20260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20261 "WDI_ResponseTimerCB: timer in running state on timer event, "
20262 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20263 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20264 return;
20265 }
20266
Jeff Johnson295189b2012-06-20 16:38:30 -070020267 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
20268 {
20269
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053020270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020271 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020272 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020273 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020274 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20275 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020276 /* WDI timeout means Riva is not responding or SMD communication to Riva
20277 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020278 * is to initiate SSR from APPS
20279 * There is also an option to re-enable wifi, which will eventually
20280 * trigger SSR
20281 */
20282#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070020283 wpalWcnssResetIntr();
20284 /* if this timer fires, it means Riva did not receive the FIQ */
20285 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020286#else
20287 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20288 wpalWlanReload();
20289#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020290 }
20291 else
20292 {
20293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020294 "Timeout occurred but not waiting for any response %d "
20295 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20296 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20297 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020298 }
20299
20300 return;
20301
20302}/*WDI_ResponseTimerCB*/
20303
20304
20305/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020306 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020307
Jeff Johnsone7245742012-09-05 17:12:55 -070020308
20309 @param pWDICtx: pointer to the WLAN DAL context
20310 pEventData: pointer to the event information structure
20311
Jeff Johnson295189b2012-06-20 16:38:30 -070020312 @see
20313 @return Result of the function call
20314*/
20315WPT_INLINE WDI_Status
20316WDI_ProcessResponse
20317(
20318 WDI_ControlBlockType* pWDICtx,
20319 WDI_EventInfoType* pEventData
20320)
20321{
20322 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20323
Jeff Johnsone7245742012-09-05 17:12:55 -070020324 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020325 already checked these pointers
20326 ! - revisit this assumption */
20327 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20328 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020329 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020331 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020332 WDI_getRespMsgString(pEventData->wdiResponse),
20333 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20334 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20335 }
20336 else
20337 {
20338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020339 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020340 pEventData->wdiResponse);
20341 return WDI_STATUS_E_NOT_IMPLEMENT;
20342 }
20343}/*WDI_ProcessResponse*/
20344
20345
20346/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020347 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020348=========================================================================*/
20349
20350/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020351 @brief Utility function used by the DAL Core to help queue a
20352 request that cannot be processed right away.
20353 @param
20354
Jeff Johnson295189b2012-06-20 16:38:30 -070020355 pWDICtx: - pointer to the WDI control block
20356 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020357 queued
20358
20359 @see
20360 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020361*/
20362WDI_Status
20363WDI_QueuePendingReq
20364(
20365 WDI_ControlBlockType* pWDICtx,
20366 WDI_EventInfoType* pEventData
20367)
20368{
Jeff Johnsone7245742012-09-05 17:12:55 -070020369 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020370 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020371 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20373
20374 if ( NULL == pEventDataQueue )
20375 {
20376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020377 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020378 WDI_ASSERT(0);
20379 return WDI_STATUS_MEM_FAILURE;
20380 }
20381
20382 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20383 pEventDataQueue->pUserData = pEventData->pUserData;
20384 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20385 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020386 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020387
20388 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20389 {
20390 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020391
Jeff Johnson295189b2012-06-20 16:38:30 -070020392 if ( NULL == pEventInfo )
20393 {
20394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020395 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020396 WDI_ASSERT(0);
20397 wpalMemoryFree(pEventDataQueue);
20398 return WDI_STATUS_MEM_FAILURE;
20399 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020400
Jeff Johnson295189b2012-06-20 16:38:30 -070020401 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20402
20403 }
20404 pEventDataQueue->pEventData = pEventInfo;
20405
20406 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020407 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020408
Jeff Johnsone7245742012-09-05 17:12:55 -070020409 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020410
20411 return WDI_STATUS_SUCCESS;
20412}/*WDI_QueuePendingReq*/
20413
20414/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020415 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020416 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020417 @param
20418
20419 pMsg - pointer to the message
20420
20421 @see
20422 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020423*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020424void
Jeff Johnson295189b2012-06-20 16:38:30 -070020425WDI_PALCtrlMsgCB
20426(
20427 wpt_msg *pMsg
20428)
20429{
20430 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020431 WDI_ControlBlockType* pWDICtx = NULL;
20432 WDI_Status wdiStatus;
20433 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020434 void* pUserData;
20435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20436
20437 if (( NULL == pMsg )||
20438 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20439 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20440 {
20441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020442 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020444 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020445 }
20446
20447 /*Transition back to the state that we had before serialization
20448 - serialization transitions us to BUSY to stop any incomming requests
20449 ! TO DO L: possible race condition here if a request comes in between the
20450 state transition and the post function*/
20451
Jeff Johnsone7245742012-09-05 17:12:55 -070020452 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020453
20454 /*-----------------------------------------------------------------------
20455 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020456 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020457 -----------------------------------------------------------------------*/
20458 switch ( pEventData->wdiRequest )
20459 {
20460
Jeff Johnsone7245742012-09-05 17:12:55 -070020461 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020462 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20463 break;
20464
Jeff Johnson295189b2012-06-20 16:38:30 -070020465 case WDI_NV_DOWNLOAD_REQ:
20466 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20467 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20468 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20469 {
20470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020471 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020472 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20473 }
20474 else
20475 {
20476 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20477 }
20478
20479 break;
20480
20481 default:
20482 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20483 break;
20484 }/*switch ( pEventData->wdiRequest )*/
20485
20486 if ( WDI_STATUS_SUCCESS != wdiStatus )
20487 {
20488 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20489
20490 if ( NULL != pfnReqStatusCB )
20491 {
20492 /*Fail the request*/
20493 pfnReqStatusCB( wdiStatus, pUserData);
20494 }
20495 }
20496
20497 /* Free data - that was allocated when queueing*/
20498 if( pEventData != NULL )
20499 {
20500 if( pEventData->pEventData != NULL )
20501 {
20502 wpalMemoryFree(pEventData->pEventData);
20503 }
20504 wpalMemoryFree(pEventData);
20505 }
20506
20507 if( pMsg != NULL )
20508 {
20509 wpalMemoryFree(pMsg);
20510 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020511
Jeff Johnson295189b2012-06-20 16:38:30 -070020512}/*WDI_PALCtrlMsgCB*/
20513
20514/**
20515 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020516 and schedule for execution a pending request
20517 @param
20518
Jeff Johnson295189b2012-06-20 16:38:30 -070020519 pWDICtx: - pointer to the WDI control block
20520 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020521 queued
20522
20523 @see
20524 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020525*/
20526WDI_Status
20527WDI_DequeuePendingReq
20528(
20529 WDI_ControlBlockType* pWDICtx
20530)
20531{
Jeff Johnsone7245742012-09-05 17:12:55 -070020532 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020533 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020534 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20536
Jeff Johnsone7245742012-09-05 17:12:55 -070020537 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020538
20539 if ( NULL == pNode )
20540 {
20541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020542 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020543 return WDI_STATUS_SUCCESS;
20544 }
20545
20546 /*The node actually points to the 1st element inside the Event Data struct -
20547 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020549
20550 /*Serialize processing in the control thread
20551 !TO DO: - check to see if these are all the messages params that need
20552 to be filled in*/
20553 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20554
20555 if ( NULL == palMsg )
20556 {
20557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020558 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020560 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020561 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020562 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 palMsg->callback = WDI_PALCtrlMsgCB;
20564 palMsg->ptr = pEventData;
20565
20566 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020567 palMsg->val = pWDICtx->uGlobalState;
20568
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 /*Transition back to BUSY as we need to handle a queued request*/
20570 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020571
Jeff Johnson295189b2012-06-20 16:38:30 -070020572 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20573
20574 return WDI_STATUS_PENDING;
20575}/*WDI_DequeuePendingReq*/
20576
20577
20578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020579 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020581 away.- The assoc requests will be queued by BSSID
20582 @param
20583
Jeff Johnson295189b2012-06-20 16:38:30 -070020584 pWDICtx: - pointer to the WDI control block
20585 pEventData: pointer to the evnt info that needs to be queued
20586 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020587
20588 @see
20589 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020590*/
20591WDI_Status
20592WDI_QueueNewAssocRequest
20593(
20594 WDI_ControlBlockType* pWDICtx,
20595 WDI_EventInfoType* pEventData,
20596 wpt_macAddr macBSSID
20597)
20598{
Jeff Johnsone7245742012-09-05 17:12:55 -070020599 wpt_uint8 i;
20600 WDI_BSSSessionType* pSession = NULL;
20601 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020602 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020603 void* pEventInfo;
20604 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020606
Jeff Johnsone7245742012-09-05 17:12:55 -070020607
20608 /*------------------------------------------------------------------------
20609 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020610 ------------------------------------------------------------------------*/
20611 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20612 {
20613 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20614 {
20615 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020616 pSession = &pWDICtx->aBSSSessions[i];
20617 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020618 }
20619 }
20620
20621 if ( i >= WDI_MAX_BSS_SESSIONS )
20622 {
20623 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020625 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020626
Jeff Johnson295189b2012-06-20 16:38:30 -070020627 /*------------------------------------------------------------------------
20628 Fill in the BSSID for this session and set the usage flag
20629 ------------------------------------------------------------------------*/
20630 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020631 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020632
20633 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020634 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020635 ------------------------------------------------------------------------*/
20636 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20637 if ( NULL == pEventDataQueue )
20638 {
20639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020640 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020641 WDI_ASSERT(0);
20642 return WDI_STATUS_MEM_FAILURE;
20643 }
20644
20645 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20646 if ( NULL == pSessionIdElement )
20647 {
20648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020649 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020650 WDI_ASSERT(0);
20651 wpalMemoryFree(pEventDataQueue);
20652 return WDI_STATUS_MEM_FAILURE;
20653 }
20654
20655 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20656 if ( NULL == pEventInfo )
20657 {
20658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020659 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020660 WDI_ASSERT(0);
20661 wpalMemoryFree(pSessionIdElement);
20662 wpalMemoryFree(pEventDataQueue);
20663 return WDI_STATUS_MEM_FAILURE;
20664 }
20665
20666 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20667 pEventDataQueue->pUserData = pEventData->pUserData;
20668 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20669 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020670 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020671
20672 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20673 pEventDataQueue->pEventData = pEventInfo;
20674
20675 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020676 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020677
20678 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020679 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020680
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020682
20683 /*We need to maintain a separate list that keeps track of the order in which
20684 the new assoc requests are being queued such that we can start processing
20685 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020686 pSessionIdElement->ucIndex = i;
20687 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020688
20689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20690 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020691 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020692
20693 /*Return pending as this is what the status of the request is since it has
20694 been queued*/
20695 return WDI_STATUS_PENDING;
20696}/*WDI_QueueNewAssocRequest*/
20697
20698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020699 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020700 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 away.- The assoc requests will be queued by BSSID
20702 @param
20703
Jeff Johnson295189b2012-06-20 16:38:30 -070020704 pWDICtx: - pointer to the WDI control block
20705 pSession: - session in which to queue
20706 pEventData: pointer to the event info that needs to be
20707 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020708
20709 @see
20710 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020711*/
20712WDI_Status
20713WDI_QueueAssocRequest
20714(
20715 WDI_ControlBlockType* pWDICtx,
20716 WDI_BSSSessionType* pSession,
20717 WDI_EventInfoType* pEventData
20718)
20719{
Jeff Johnsone7245742012-09-05 17:12:55 -070020720 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020721 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020722 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020724
20725 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 Sanity check
20727 ------------------------------------------------------------------------*/
20728 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20729 {
20730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020732
Jeff Johnsone7245742012-09-05 17:12:55 -070020733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020734 }
20735
20736 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 ------------------------------------------------------------------------*/
20739 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20740 if ( NULL == pEventDataQueue )
20741 {
20742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020743 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 WDI_ASSERT(0);
20745 return WDI_STATUS_MEM_FAILURE;
20746 }
20747
20748 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20749 if ( NULL == pEventInfo )
20750 {
20751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20752 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020753 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 WDI_ASSERT(0);
20755 wpalMemoryFree(pEventDataQueue);
20756 return WDI_STATUS_MEM_FAILURE;
20757 }
20758
20759 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20760 pEventDataQueue->pUserData = pEventData->pUserData;
20761 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20762 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020763 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020764 pEventDataQueue->pEventData = pEventInfo;
20765
20766 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20767
20768 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020769 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020770
20771 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020772 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020773
Jeff Johnsone7245742012-09-05 17:12:55 -070020774 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020775
20776 /*The result of this operation is pending because the request has been
20777 queued and it will be processed at a later moment in time */
20778 return WDI_STATUS_PENDING;
20779}/*WDI_QueueAssocRequest*/
20780
20781/**
20782 @brief Utility function used by the DAL Core to help dequeue
20783 an association request that was pending
20784 The request will be queued up in front of the main
20785 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020786 @param
20787
Jeff Johnson295189b2012-06-20 16:38:30 -070020788 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020789
20790
20791 @see
20792 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020793*/
20794WDI_Status
20795WDI_DequeueAssocRequest
20796(
20797 WDI_ControlBlockType* pWDICtx
20798)
20799{
Jeff Johnsone7245742012-09-05 17:12:55 -070020800 wpt_list_node* pNode = NULL;
20801 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020802 WDI_BSSSessionType* pSession;
20803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020804
20805 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020806 Sanity check
20807 ------------------------------------------------------------------------*/
20808 if ( NULL == pWDICtx )
20809 {
20810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020812
Jeff Johnsone7245742012-09-05 17:12:55 -070020813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020814 }
20815
20816 /*------------------------------------------------------------------------
20817 An association has been completed => a new association can occur
20818 Check to see if there are any pending associations ->
20819 If so , transfer all the pending requests into the busy queue for
20820 processing
20821 These requests have arrived prior to the requests in the busy queue
20822 (bc they needed to be processed in order to be placed in this queue)
20823 => they will be placed at the front of the busy queue
20824 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020825 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020826
20827 if ( NULL == pNode )
20828 {
20829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020830 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 return WDI_STATUS_SUCCESS;
20832 }
20833
20834 /*The node actually points to the 1st element inside the Session Id struct -
20835 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020836 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020837
20838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20839 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20840
20841 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20842 {
20843 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020844
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020846 the front of the main waiting queue for subsequent execution*/
20847 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 while ( NULL != pNode )
20849 {
20850 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020851 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20852 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020854 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020855 }
20856 else
20857 {
20858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020859 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 WPAL_ASSERT(0);
20861 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020864
Jeff Johnson295189b2012-06-20 16:38:30 -070020865 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20866 wpalMemoryFree(pSessionIdElement);
20867 return WDI_STATUS_SUCCESS;
20868}/*WDI_DequeueAssocRequest*/
20869
20870/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020871 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020872 pending requests - all req cb will be called with
20873 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 @param
20875
Jeff Johnson295189b2012-06-20 16:38:30 -070020876 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020877
20878 @see
20879 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020880*/
20881WDI_Status
20882WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020883(
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 WDI_ControlBlockType* pWDICtx
20885)
20886{
Jeff Johnsone7245742012-09-05 17:12:55 -070020887 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020889 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 void* pUserData;
20891 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20892
Jeff Johnsone7245742012-09-05 17:12:55 -070020893 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020894
20895 /*------------------------------------------------------------------------
20896 Go through all the requests and fail them - this will only be called
20897 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020899 ------------------------------------------------------------------------*/
20900 while( pNode )
20901 {
20902 /*The node actually points to the 1st element inside the Event Data struct -
20903 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020904 pEventDataQueue = (WDI_EventInfoType*)pNode;
20905
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20907 if ( NULL != pfnReqStatusCB )
20908 {
20909 /*Fail the request*/
20910 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20911 }
20912 /* Free data - that was allocated when queueing */
20913 if ( pEventDataQueue->pEventData != NULL )
20914 {
20915 wpalMemoryFree(pEventDataQueue->pEventData);
20916 }
20917 wpalMemoryFree(pEventDataQueue);
20918
20919 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20920 {
20921 break;
20922 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020923 }
20924
Jeff Johnson295189b2012-06-20 16:38:30 -070020925 return WDI_STATUS_SUCCESS;
20926}/*WDI_ClearPendingRequests*/
20927
20928/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020929 @brief Helper routine used to init the BSS Sessions in the WDI control block
20930
20931
20932 @param pWDICtx: pointer to the WLAN DAL context
20933
Jeff Johnson295189b2012-06-20 16:38:30 -070020934 @see
20935*/
20936void
20937WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020938(
Jeff Johnson295189b2012-06-20 16:38:30 -070020939 WDI_ControlBlockType* pWDICtx
20940)
20941{
Jeff Johnsone7245742012-09-05 17:12:55 -070020942 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20944
20945 /*-------------------------------------------------------------------------
20946 No Sanity check
20947 -------------------------------------------------------------------------*/
20948 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20949 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020950 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020951 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20952 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20953 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20954 }
20955}/*WDI_ResetAssocSessions*/
20956
20957/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020958 @brief Helper routine used to find a session based on the BSSID
20959
20960
20961 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020962 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020963 pSession: pointer to the session (if found)
20964
Jeff Johnson295189b2012-06-20 16:38:30 -070020965 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020966 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020967*/
20968wpt_uint8
20969WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020970(
Jeff Johnson295189b2012-06-20 16:38:30 -070020971 WDI_ControlBlockType* pWDICtx,
20972 wpt_macAddr macBSSID,
20973 WDI_BSSSessionType** ppSession
20974)
20975{
Jeff Johnsone7245742012-09-05 17:12:55 -070020976 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20978
20979 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020980 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020981 -------------------------------------------------------------------------*/
20982 if ( NULL == ppSession )
20983 {
20984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020985 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020986 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 }
20988
Jeff Johnsone7245742012-09-05 17:12:55 -070020989 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020990
Jeff Johnsone7245742012-09-05 17:12:55 -070020991 /*------------------------------------------------------------------------
20992 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020993 ------------------------------------------------------------------------*/
20994 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20995 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020996 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20997 (eWLAN_PAL_TRUE ==
20998 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20999 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 {
21001 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021002 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021003 return i;
21004 }
21005 }
21006
Jeff Johnsone7245742012-09-05 17:12:55 -070021007 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021008}/*WDI_FindAssocSession*/
21009
21010/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021011 @brief Helper routine used to find a session based on the BSSID
21012
21013
21014 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021015 ucBSSIdx: BSS Index of the session
21016 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021017
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021019 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021020*/
21021wpt_uint8
21022WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021023(
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 WDI_ControlBlockType* pWDICtx,
21025 wpt_uint16 ucBSSIdx,
21026 WDI_BSSSessionType** ppSession
21027)
21028{
Jeff Johnsone7245742012-09-05 17:12:55 -070021029 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21031
21032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021034 -------------------------------------------------------------------------*/
21035 if ( NULL == ppSession )
21036 {
21037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021038 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021039 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021040 }
21041
Jeff Johnsone7245742012-09-05 17:12:55 -070021042 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021043
Jeff Johnsone7245742012-09-05 17:12:55 -070021044 /*------------------------------------------------------------------------
21045 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021046 ------------------------------------------------------------------------*/
21047 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21048 {
21049 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21050 {
21051 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021052 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 return i;
21054 }
21055 }
21056
Jeff Johnsone7245742012-09-05 17:12:55 -070021057 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021058}/*WDI_FindAssocSessionByBSSIdx*/
21059
21060/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021061 @brief Helper routine used to find a session based on the BSSID
21062
21063
21064 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021065 ucBSSIdx: BSS Index of the session
21066 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021067
Jeff Johnson295189b2012-06-20 16:38:30 -070021068 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021069 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021070*/
21071wpt_uint8
21072WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021073(
Jeff Johnson295189b2012-06-20 16:38:30 -070021074 WDI_ControlBlockType* pWDICtx,
21075 wpt_uint16 usIdx,
21076 WDI_BSSSessionType** ppSession
21077)
21078{
21079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21080
21081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021083 -------------------------------------------------------------------------*/
21084 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21085 {
21086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021087 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021089 }
21090
21091 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021092 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021093
21094 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021095
Jeff Johnson295189b2012-06-20 16:38:30 -070021096}/*WDI_FindAssocSessionByBSSIdx*/
21097
21098/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021099 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021100 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021101
21102
21103 @param pWDICtx: pointer to the WLAN DAL context
21104 pSession: pointer to the session (if found)
21105
Jeff Johnson295189b2012-06-20 16:38:30 -070021106 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021107 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021108*/
21109wpt_uint8
21110WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021111(
Jeff Johnson295189b2012-06-20 16:38:30 -070021112 WDI_ControlBlockType* pWDICtx,
21113 WDI_BSSSessionType** ppSession
21114)
21115{
Jeff Johnsone7245742012-09-05 17:12:55 -070021116 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021120 -------------------------------------------------------------------------*/
21121 if ( NULL == ppSession )
21122 {
21123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021124 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021126 }
21127
Jeff Johnsone7245742012-09-05 17:12:55 -070021128 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021129
Jeff Johnsone7245742012-09-05 17:12:55 -070021130 /*------------------------------------------------------------------------
21131 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021132 ------------------------------------------------------------------------*/
21133 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21134 {
21135 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21136 {
21137 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021138 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021139 return i;
21140 }
21141 }
21142
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021144}/*WDI_FindEmptySession*/
21145
21146
21147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021149 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021150
21151
21152 @param pWDICtx: pointer to the WLAN DAL context
21153
Jeff Johnson295189b2012-06-20 16:38:30 -070021154 @see
21155 @return Number of sessions in use
21156*/
21157wpt_uint8
21158WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021159(
Jeff Johnson295189b2012-06-20 16:38:30 -070021160 WDI_ControlBlockType* pWDICtx
21161)
21162{
Jeff Johnsone7245742012-09-05 17:12:55 -070021163 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021164 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021165
21166 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021167 Count all sessions in use
21168 ------------------------------------------------------------------------*/
21169 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21170 {
21171 if ( pWDICtx->aBSSSessions[i].bInUse )
21172 {
21173 ucCount++;
21174 }
21175 }
21176
Jeff Johnsone7245742012-09-05 17:12:55 -070021177 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021178}/*WDI_GetActiveSessionsCount*/
21179
21180/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021181 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021182 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021183
21184
21185 @param pWDICtx: pointer to the WLAN DAL context
21186 pSession: pointer to the session (if found)
21187
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021189 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021190*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021191void
Jeff Johnson295189b2012-06-20 16:38:30 -070021192WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021193(
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 WDI_ControlBlockType* pWDICtx,
21195 WDI_BSSSessionType* ppSession
21196)
21197{
21198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021200 -------------------------------------------------------------------------*/
21201 if ( NULL == ppSession )
21202 {
21203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021204 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021205 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021206 }
21207
Jeff Johnsone7245742012-09-05 17:12:55 -070021208 /*------------------------------------------------------------------------
21209 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021210 ------------------------------------------------------------------------*/
21211 wpal_list_destroy(&ppSession->wptPendingQueue);
21212 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021213 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21214 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021215 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21216 wpal_list_init(&ppSession->wptPendingQueue);
21217
21218}/*WDI_DeleteSession*/
21219
21220/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021221 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021222 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021223 @param
21224
Jeff Johnson295189b2012-06-20 16:38:30 -070021225 WDI_AddStaParams: - pointer to the WDI Add STA params
21226 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021227
21228 @see
21229 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021230*/
21231void
21232WDI_AddBcastSTAtoSTATable
21233(
21234 WDI_ControlBlockType* pWDICtx,
21235 WDI_AddStaParams * staParams,
21236 wpt_uint16 usBcastStaIdx
21237)
21238{
21239 WDI_AddStaParams wdiAddSTAParam = {0};
21240 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21242
21243 /*---------------------------------------------------------------------
21244 Sanity check
21245 ---------------------------------------------------------------------*/
21246 if ( NULL == staParams )
21247 {
21248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021250
Jeff Johnsone7245742012-09-05 17:12:55 -070021251 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 }
21253
21254 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21255 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21256 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21257 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21258 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21259 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21260 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21261 WDI_MAC_ADDR_LEN );
21262 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21263 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21264 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21265 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21266 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21267 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21268 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021269
Jeff Johnson295189b2012-06-20 16:38:30 -070021270 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21271}
21272
21273/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021274 @brief NV blob will be divided into fragments of size 4kb and
21275 Sent to HAL
21276
21277 @param pWDICtx: pointer to the WLAN DAL context
21278 pEventData: pointer to the event information structure
21279
Jeff Johnson295189b2012-06-20 16:38:30 -070021280 @see
21281 @return Result of the function call
21282 */
21283
21284WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021285(
Jeff Johnson295189b2012-06-20 16:38:30 -070021286 WDI_ControlBlockType* pWDICtx,
21287 WDI_EventInfoType* pEventData
21288)
21289{
21290
21291 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21292 wpt_uint8* pSendBuffer = NULL;
21293 wpt_uint16 usDataOffset = 0;
21294 wpt_uint16 usSendSize = 0;
21295 wpt_uint16 usCurrentFragmentSize =0;
21296 wpt_uint8* pSrcBuffer = NULL;
21297 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21298 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21299
21300 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21301 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21302 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21303
Jeff Johnsone7245742012-09-05 17:12:55 -070021304 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021305 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21306
21307 /* Update the current Fragment Number */
21308 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21309
21310 /*Update the HAL REQ structure */
21311 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21312 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21313 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21314
21315 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021316 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021317 image will be sent to HAL*/
21318
Jeff Johnsone7245742012-09-05 17:12:55 -070021319 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021320 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021321 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021322 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021323 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21325 usCurrentFragmentSize = FRAGMENT_SIZE;
21326
21327 /*Update the HAL REQ structure */
21328 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21329 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21330
21331 }
21332 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021333 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021334 usCurrentFragmentSize = FRAGMENT_SIZE;
21335
21336 /*Update the HAL REQ structure */
21337 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21338 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21339 }
21340
21341 /*-----------------------------------------------------------------------
21342 Get message buffer
21343 -----------------------------------------------------------------------*/
21344 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21345 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21346 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021347 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021348 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21349 {
21350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21351 "Unable to get send buffer in NV Download req %x %x ",
21352 pEventData, pwdiNvDownloadReqParams);
21353 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021354 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 }
21356
21357 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021358 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021359 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21360
21361 /* Appending the NV image fragment */
21362 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21363 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21364 usCurrentFragmentSize);
21365
21366 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021367 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021368
Jeff Johnsone7245742012-09-05 17:12:55 -070021369 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21370 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021371 WDI_NV_DOWNLOAD_RESP);
21372
21373}
Jeff Johnsone7245742012-09-05 17:12:55 -070021374/*============================================================================
21375 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021376 ============================================================================*/
21377/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021378 @brief Helper routine used to find a session based on the BSSID
21379 @param pContext: pointer to the WLAN DAL context
21380 @param pDPContext: pointer to the Datapath context
21381
Jeff Johnson295189b2012-06-20 16:38:30 -070021382 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021383 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021384*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021385WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021386WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21387{
21388 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21389
21390 pCB->pDPContext = pDPContext;
21391 return;
21392}
21393
21394/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021395 @brief Helper routine used to find a session based on the BSSID
21396
21397
21398 @param pContext: pointer to the WLAN DAL context
21399
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 @see
21401 @return pointer to Datapath context
21402*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021403WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021404WDI_DS_GetDatapathContext (void *pContext)
21405{
21406 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21407 return pCB->pDPContext;
21408}
21409/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021410 @brief Helper routine used to find a session based on the BSSID
21411
21412
21413 @param pContext: pointer to the WLAN DAL context
21414 @param pDTDriverContext: pointer to the Transport Driver context
21415
Jeff Johnson295189b2012-06-20 16:38:30 -070021416 @see
21417 @return void
21418*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021419WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021420WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21421{
21422 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21423
21424 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021425 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021426}
21427
21428/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021429 @brief Helper routine used to find a session based on the BSSID
21430
21431
21432 @param pWDICtx: pointer to the WLAN DAL context
21433
Jeff Johnson295189b2012-06-20 16:38:30 -070021434 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021435 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021436*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021437WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021438WDT_GetTransportDriverContext (void *pContext)
21439{
21440 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021441 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021442}
21443
Jeff Johnsone7245742012-09-05 17:12:55 -070021444/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 Helper inline converters
21446 ============================================================================*/
21447/*Convert WDI driver type into HAL driver type*/
21448WPT_STATIC WPT_INLINE WDI_Status
21449WDI_HAL_2_WDI_STATUS
21450(
21451 eHalStatus halStatus
21452)
21453{
Jeff Johnsone7245742012-09-05 17:12:55 -070021454 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021455 the chances of getting inlined*/
21456 switch( halStatus )
21457 {
21458 case eHAL_STATUS_SUCCESS:
21459 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21460 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21461 return WDI_STATUS_SUCCESS;
21462 case eHAL_STATUS_FAILURE:
21463 return WDI_STATUS_E_FAILURE;
21464 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021465 return WDI_STATUS_MEM_FAILURE;
21466 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021467 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021468 default:
21469 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21470 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021471
Jeff Johnsone7245742012-09-05 17:12:55 -070021472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021473}/*WDI_HAL_2_WDI_STATUS*/
21474
21475/*Convert WDI request type into HAL request type*/
21476WPT_STATIC WPT_INLINE tHalHostMsgType
21477WDI_2_HAL_REQ_TYPE
21478(
21479 WDI_RequestEnumType wdiReqType
21480)
21481{
Jeff Johnsone7245742012-09-05 17:12:55 -070021482 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021483 the chances of getting inlined*/
21484 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021485 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021486 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021488 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021489 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021490 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021491 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021492 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021493 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021494 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021496 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021497 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021498 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021499 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021500 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021501 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021502 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021503 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021504 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021505 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021506 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021507 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021508 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021509 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021510 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021511 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021512 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021513 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021514 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021515 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021516 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021517 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021518 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021519 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021520 return WLAN_HAL_RMV_STAKEY_REQ;
21521 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021522 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021524 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021525 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021527 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021528 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 case WDI_DEL_BA_REQ:
21530 return WLAN_HAL_DEL_BA_REQ;
21531#ifdef FEATURE_WLAN_CCX
21532 case WDI_TSM_STATS_REQ:
21533 return WLAN_HAL_TSM_STATS_REQ;
21534#endif
21535 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021537 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021538 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021539 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021540 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021542 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021543 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021544 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021545 case WDI_ADD_BA_SESSION_REQ:
21546 return WLAN_HAL_ADD_BA_SESSION_REQ;
21547 case WDI_TRIGGER_BA_REQ:
21548 return WLAN_HAL_TRIGGER_BA_REQ;
21549 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021550 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021552 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021553 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21554 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21555 case WDI_SET_MAX_TX_POWER_REQ:
21556 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070021557 case WDI_SET_TX_POWER_REQ:
21558 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021559 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21560 return WLAN_HAL_SET_P2P_GONOA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021561 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021562 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021564 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021565 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021566 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021567 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021568 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021570 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021571 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021572 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021573 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021574 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021575 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021576 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021577 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021578 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021579 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021580 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021581 case WDI_REM_BEACON_FILTER_REQ:
21582 return WLAN_HAL_REM_BCN_FILTER_REQ;
21583 case WDI_SET_RSSI_THRESHOLDS_REQ:
21584 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21585 case WDI_HOST_OFFLOAD_REQ:
21586 return WLAN_HAL_HOST_OFFLOAD_REQ;
21587 case WDI_WOWL_ADD_BC_PTRN_REQ:
21588 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21589 case WDI_WOWL_DEL_BC_PTRN_REQ:
21590 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21591 case WDI_WOWL_ENTER_REQ:
21592 return WLAN_HAL_ENTER_WOWL_REQ;
21593 case WDI_WOWL_EXIT_REQ:
21594 return WLAN_HAL_EXIT_WOWL_REQ;
21595 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21596 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21597 case WDI_NV_DOWNLOAD_REQ:
21598 return WLAN_HAL_DOWNLOAD_NV_REQ;
21599 case WDI_FLUSH_AC_REQ:
21600 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21601 case WDI_BTAMP_EVENT_REQ:
21602 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21603#ifdef WLAN_FEATURE_VOWIFI_11R
21604 case WDI_AGGR_ADD_TS_REQ:
21605 return WLAN_HAL_AGGR_ADD_TS_REQ;
21606#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070021607 case WDI_FTM_CMD_REQ:
21608 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021609 case WDI_ADD_STA_SELF_REQ:
21610 return WLAN_HAL_ADD_STA_SELF_REQ;
21611 case WDI_DEL_STA_SELF_REQ:
21612 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021613#ifdef FEATURE_OEM_DATA_SUPPORT
21614 case WDI_START_OEM_DATA_REQ:
21615 return WLAN_HAL_START_OEM_DATA_REQ;
21616#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021617 case WDI_HOST_RESUME_REQ:
21618 return WLAN_HAL_HOST_RESUME_REQ;
21619 case WDI_HOST_SUSPEND_IND:
21620 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080021621 case WDI_TRAFFIC_STATS_IND:
21622 return WLAN_HAL_CLASS_B_STATS_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021623 case WDI_KEEP_ALIVE_REQ:
21624 return WLAN_HAL_KEEP_ALIVE_REQ;
21625
21626#ifdef FEATURE_WLAN_SCAN_PNO
21627 case WDI_SET_PREF_NETWORK_REQ:
21628 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21629 case WDI_SET_RSSI_FILTER_REQ:
21630 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21631 case WDI_UPDATE_SCAN_PARAMS_REQ:
21632 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21633#endif // FEATURE_WLAN_SCAN_PNO
21634 case WDI_SET_TX_PER_TRACKING_REQ:
21635 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21636#ifdef WLAN_FEATURE_PACKET_FILTERING
21637 case WDI_8023_MULTICAST_LIST_REQ:
21638 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21639 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021640 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021641 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21642 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21643 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21644 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21645#endif // WLAN_FEATURE_PACKET_FILTERING
21646 case WDI_HAL_DUMP_CMD_REQ:
21647 return WLAN_HAL_DUMP_COMMAND_REQ;
21648#ifdef WLAN_FEATURE_GTK_OFFLOAD
21649 case WDI_GTK_OFFLOAD_REQ:
21650 return WLAN_HAL_GTK_OFFLOAD_REQ;
21651 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21652 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21653#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21654
21655 case WDI_INIT_SCAN_CON_REQ:
21656 return WLAN_HAL_INIT_SCAN_CON_REQ;
21657 case WDI_SET_POWER_PARAMS_REQ:
21658 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21659 case WDI_SET_TM_LEVEL_REQ:
21660 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21661 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21662 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021663#ifdef WLAN_FEATURE_11AC
21664 case WDI_UPDATE_VHT_OP_MODE_REQ:
21665 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21666#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021667 case WDI_GET_ROAM_RSSI_REQ:
21668 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021670 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021671 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021672
Jeff Johnson295189b2012-06-20 16:38:30 -070021673}/*WDI_2_HAL_REQ_TYPE*/
21674
21675/*Convert WDI response type into HAL response type*/
21676WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21677HAL_2_WDI_RSP_TYPE
21678(
21679 tHalHostMsgType halMsg
21680)
21681{
Jeff Johnsone7245742012-09-05 17:12:55 -070021682 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021683 the chances of getting inlined*/
21684 switch( halMsg )
21685 {
21686 case WLAN_HAL_START_RSP:
21687 return WDI_START_RESP;
21688 case WLAN_HAL_STOP_RSP:
21689 return WDI_STOP_RESP;
21690 case WLAN_HAL_INIT_SCAN_RSP:
21691 return WDI_INIT_SCAN_RESP;
21692 case WLAN_HAL_START_SCAN_RSP:
21693 return WDI_START_SCAN_RESP;
21694 case WLAN_HAL_END_SCAN_RSP:
21695 return WDI_END_SCAN_RESP;
21696 case WLAN_HAL_FINISH_SCAN_RSP:
21697 return WDI_FINISH_SCAN_RESP;
21698 case WLAN_HAL_CONFIG_STA_RSP:
21699 return WDI_CONFIG_STA_RESP;
21700 case WLAN_HAL_DELETE_STA_RSP:
21701 return WDI_DEL_STA_RESP;
21702 case WLAN_HAL_CONFIG_BSS_RSP:
21703 return WDI_CONFIG_BSS_RESP;
21704 case WLAN_HAL_DELETE_BSS_RSP:
21705 return WDI_DEL_BSS_RESP;
21706 case WLAN_HAL_JOIN_RSP:
21707 return WDI_JOIN_RESP;
21708 case WLAN_HAL_POST_ASSOC_RSP:
21709 return WDI_POST_ASSOC_RESP;
21710 case WLAN_HAL_SET_BSSKEY_RSP:
21711 return WDI_SET_BSS_KEY_RESP;
21712 case WLAN_HAL_SET_STAKEY_RSP:
21713 return WDI_SET_STA_KEY_RESP;
21714 case WLAN_HAL_RMV_BSSKEY_RSP:
21715 return WDI_RMV_BSS_KEY_RESP;
21716 case WLAN_HAL_RMV_STAKEY_RSP:
21717 return WDI_RMV_STA_KEY_RESP;
21718 case WLAN_HAL_SET_BCASTKEY_RSP:
21719 return WDI_SET_STA_BCAST_KEY_RESP;
21720 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21721 // return WDI_RMV_STA_BCAST_KEY_RESP;
21722 case WLAN_HAL_ADD_TS_RSP:
21723 return WDI_ADD_TS_RESP;
21724 case WLAN_HAL_DEL_TS_RSP:
21725 return WDI_DEL_TS_RESP;
21726 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21727 return WDI_UPD_EDCA_PRMS_RESP;
21728 case WLAN_HAL_ADD_BA_RSP:
21729 return WDI_ADD_BA_RESP;
21730 case WLAN_HAL_DEL_BA_RSP:
21731 return WDI_DEL_BA_RESP;
21732#ifdef FEATURE_WLAN_CCX
21733 case WLAN_HAL_TSM_STATS_RSP:
21734 return WDI_TSM_STATS_RESP;
21735#endif
21736 case WLAN_HAL_CH_SWITCH_RSP:
21737 return WDI_CH_SWITCH_RESP;
21738 case WLAN_HAL_SET_LINK_ST_RSP:
21739 return WDI_SET_LINK_ST_RESP;
21740 case WLAN_HAL_GET_STATS_RSP:
21741 return WDI_GET_STATS_RESP;
21742 case WLAN_HAL_UPDATE_CFG_RSP:
21743 return WDI_UPDATE_CFG_RESP;
21744 case WLAN_HAL_ADD_BA_SESSION_RSP:
21745 return WDI_ADD_BA_SESSION_RESP;
21746 case WLAN_HAL_TRIGGER_BA_RSP:
21747 return WDI_TRIGGER_BA_RESP;
21748 case WLAN_HAL_UPDATE_BEACON_RSP:
21749 return WDI_UPD_BCON_PRMS_RESP;
21750 case WLAN_HAL_SEND_BEACON_RSP:
21751 return WDI_SND_BCON_RESP;
21752 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21753 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21754 /*Indications*/
21755 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21756 return WDI_HAL_RSSI_NOTIFICATION_IND;
21757 case WLAN_HAL_MISSED_BEACON_IND:
21758 return WDI_HAL_MISSED_BEACON_IND;
21759 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21760 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21761 case WLAN_HAL_MIC_FAILURE_IND:
21762 return WDI_HAL_MIC_FAILURE_IND;
21763 case WLAN_HAL_FATAL_ERROR_IND:
21764 return WDI_HAL_FATAL_ERROR_IND;
21765 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21766 return WDI_HAL_DEL_STA_IND;
21767 case WLAN_HAL_COEX_IND:
21768 return WDI_HAL_COEX_IND;
21769 case WLAN_HAL_OTA_TX_COMPL_IND:
21770 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021771 case WLAN_HAL_P2P_NOA_ATTR_IND:
21772 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021773 case WLAN_HAL_P2P_NOA_START_IND:
21774 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021775 case WLAN_HAL_TX_PER_HIT_IND:
21776 return WDI_HAL_TX_PER_HIT_IND;
21777 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21778 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070021779 case WLAN_HAL_SET_TX_POWER_RSP:
21780 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021781 case WLAN_HAL_SET_P2P_GONOA_RSP:
21782 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021784 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021785 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021786 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021787 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021788 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021789 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021790 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021791 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021792 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021793 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021794 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021795 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021796 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021797 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021798 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021799 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021800 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021801 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21802 return WDI_SET_BEACON_FILTER_RESP;
21803 case WLAN_HAL_REM_BCN_FILTER_RSP:
21804 return WDI_REM_BEACON_FILTER_RESP;
21805 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21806 return WDI_SET_RSSI_THRESHOLDS_RESP;
21807 case WLAN_HAL_HOST_OFFLOAD_RSP:
21808 return WDI_HOST_OFFLOAD_RESP;
21809 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21810 return WDI_WOWL_ADD_BC_PTRN_RESP;
21811 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21812 return WDI_WOWL_DEL_BC_PTRN_RESP;
21813 case WLAN_HAL_ENTER_WOWL_RSP:
21814 return WDI_WOWL_ENTER_RESP;
21815 case WLAN_HAL_EXIT_WOWL_RSP:
21816 return WDI_WOWL_EXIT_RESP;
21817 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21818 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21819 case WLAN_HAL_DOWNLOAD_NV_RSP:
21820 return WDI_NV_DOWNLOAD_RESP;
21821 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21822 return WDI_FLUSH_AC_RESP;
21823 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21824 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021825 case WLAN_HAL_PROCESS_PTT_RSP:
21826 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021827 case WLAN_HAL_ADD_STA_SELF_RSP:
21828 return WDI_ADD_STA_SELF_RESP;
21829case WLAN_HAL_DEL_STA_SELF_RSP:
21830 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021831#ifdef FEATURE_OEM_DATA_SUPPORT
21832 case WLAN_HAL_START_OEM_DATA_RSP:
21833 return WDI_START_OEM_DATA_RESP;
21834#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021835 case WLAN_HAL_HOST_RESUME_RSP:
21836 return WDI_HOST_RESUME_RESP;
21837 case WLAN_HAL_KEEP_ALIVE_RSP:
21838 return WDI_KEEP_ALIVE_RESP;
21839#ifdef FEATURE_WLAN_SCAN_PNO
21840 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21841 return WDI_SET_PREF_NETWORK_RESP;
21842 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021843 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021844 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21845 return WDI_UPDATE_SCAN_PARAMS_RESP;
21846 case WLAN_HAL_PREF_NETW_FOUND_IND:
21847 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21848#endif // FEATURE_WLAN_SCAN_PNO
21849 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21850 return WDI_SET_TX_PER_TRACKING_RESP;
21851#ifdef WLAN_FEATURE_PACKET_FILTERING
21852 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21853 return WDI_8023_MULTICAST_LIST_RESP;
21854 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21855 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21856 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21857 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21858 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21859 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21860#endif // WLAN_FEATURE_PACKET_FILTERING
21861
21862 case WLAN_HAL_DUMP_COMMAND_RSP:
21863 return WDI_HAL_DUMP_CMD_RESP;
21864 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21865 return WDI_SET_POWER_PARAMS_RESP;
21866#ifdef WLAN_FEATURE_VOWIFI_11R
21867 case WLAN_HAL_AGGR_ADD_TS_RSP:
21868 return WDI_AGGR_ADD_TS_RESP;
21869#endif
21870
21871#ifdef WLAN_FEATURE_GTK_OFFLOAD
21872 case WLAN_HAL_GTK_OFFLOAD_RSP:
21873 return WDI_GTK_OFFLOAD_RESP;
21874 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21875 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21876#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21877#ifdef WLAN_WAKEUP_EVENTS
21878 case WLAN_HAL_WAKE_REASON_IND:
21879 return WDI_HAL_WAKE_REASON_IND;
21880#endif // WLAN_WAKEUP_EVENTS
21881
21882 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21883 return WDI_SET_TM_LEVEL_RESP;
21884 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21885 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021886#ifdef WLAN_FEATURE_11AC
21887 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21888 return WDI_UPDATE_VHT_OP_MODE_RESP;
21889#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021890#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
21891 case WLAN_HAL_GET_ROAM_RSSI_RSP:
21892 return WDI_GET_ROAM_RSSI_RESP;
21893#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021894 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021895 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021896 }
21897
21898}/*HAL_2_WDI_RSP_TYPE*/
21899
21900
21901/*Convert WDI driver type into HAL driver type*/
21902WPT_STATIC WPT_INLINE tDriverType
21903WDI_2_HAL_DRV_TYPE
21904(
21905 WDI_DriverType wdiDriverType
21906)
21907{
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021909 the chances of getting inlined*/
21910 switch( wdiDriverType )
21911 {
21912 case WDI_DRIVER_TYPE_PRODUCTION:
21913 return eDRIVER_TYPE_PRODUCTION;
21914 case WDI_DRIVER_TYPE_MFG:
21915 return eDRIVER_TYPE_MFG;
21916 case WDI_DRIVER_TYPE_DVT:
21917 return eDRIVER_TYPE_DVT;
21918 }
21919
Jeff Johnsone7245742012-09-05 17:12:55 -070021920 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021921}/*WDI_2_HAL_DRV_TYPE*/
21922
21923
21924/*Convert WDI stop reason into HAL stop reason*/
21925WPT_STATIC WPT_INLINE tHalStopType
21926WDI_2_HAL_STOP_REASON
21927(
21928 WDI_StopType wdiDriverType
21929)
21930{
Jeff Johnsone7245742012-09-05 17:12:55 -070021931 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021932 the chances of getting inlined*/
21933 switch( wdiDriverType )
21934 {
21935 case WDI_STOP_TYPE_SYS_RESET:
21936 return HAL_STOP_TYPE_SYS_RESET;
21937 case WDI_DRIVER_TYPE_MFG:
21938 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21939 case WDI_STOP_TYPE_RF_KILL:
21940 return HAL_STOP_TYPE_RF_KILL;
21941 }
21942
Jeff Johnsone7245742012-09-05 17:12:55 -070021943 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021944}/*WDI_2_HAL_STOP_REASON*/
21945
21946
21947/*Convert WDI scan mode type into HAL scan mode type*/
21948WPT_STATIC WPT_INLINE eHalSysMode
21949WDI_2_HAL_SCAN_MODE
21950(
21951 WDI_ScanMode wdiScanMode
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( wdiScanMode )
21957 {
21958 case WDI_SCAN_MODE_NORMAL:
21959 return eHAL_SYS_MODE_NORMAL;
21960 case WDI_SCAN_MODE_LEARN:
21961 return eHAL_SYS_MODE_LEARN;
21962 case WDI_SCAN_MODE_SCAN:
21963 return eHAL_SYS_MODE_SCAN;
21964 case WDI_SCAN_MODE_PROMISC:
21965 return eHAL_SYS_MODE_PROMISC;
21966 case WDI_SCAN_MODE_SUSPEND_LINK:
21967 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021968 case WDI_SCAN_MODE_ROAM_SCAN:
21969 return eHAL_SYS_MODE_ROAM_SCAN;
21970 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21971 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021972 }
21973
Jeff Johnsone7245742012-09-05 17:12:55 -070021974 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021975}/*WDI_2_HAL_SCAN_MODE*/
21976
21977/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021978WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021979WDI_2_HAL_SEC_CH_OFFSET
21980(
21981 WDI_HTSecondaryChannelOffset wdiSecChOffset
21982)
21983{
Jeff Johnsone7245742012-09-05 17:12:55 -070021984 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 the chances of getting inlined*/
21986 switch( wdiSecChOffset )
21987 {
21988 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021989 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021990 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021991 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021992 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021993 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21994#ifdef WLAN_FEATURE_11AC
21995 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21996 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21997 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21998 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21999 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22000 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22001 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22002 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22003 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22004 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22005 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22006 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22007 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22008 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22009#endif
22010 default:
22011 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022012 }
22013
Jeff Johnsone7245742012-09-05 17:12:55 -070022014 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022015}/*WDI_2_HAL_SEC_CH_OFFSET*/
22016
22017/*Convert WDI BSS type into HAL BSS type*/
22018WPT_STATIC WPT_INLINE tSirBssType
22019WDI_2_HAL_BSS_TYPE
22020(
22021 WDI_BssType wdiBSSType
22022)
22023{
Jeff Johnsone7245742012-09-05 17:12:55 -070022024 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022025 the chances of getting inlined*/
22026 switch( wdiBSSType )
22027 {
22028 case WDI_INFRASTRUCTURE_MODE:
22029 return eSIR_INFRASTRUCTURE_MODE;
22030 case WDI_INFRA_AP_MODE:
22031 return eSIR_INFRA_AP_MODE;
22032 case WDI_IBSS_MODE:
22033 return eSIR_IBSS_MODE;
22034 case WDI_BTAMP_STA_MODE:
22035 return eSIR_BTAMP_STA_MODE;
22036 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 case WDI_BSS_AUTO_MODE:
22039 return eSIR_AUTO_MODE;
22040 }
22041
Jeff Johnsone7245742012-09-05 17:12:55 -070022042 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022043}/*WDI_2_HAL_BSS_TYPE*/
22044
22045/*Convert WDI NW type into HAL NW type*/
22046WPT_STATIC WPT_INLINE tSirNwType
22047WDI_2_HAL_NW_TYPE
22048(
22049 WDI_NwType wdiNWType
22050)
22051{
Jeff Johnsone7245742012-09-05 17:12:55 -070022052 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022053 the chances of getting inlined*/
22054 switch( wdiNWType )
22055 {
22056 case WDI_11A_NW_TYPE:
22057 return eSIR_11A_NW_TYPE;
22058 case WDI_11B_NW_TYPE:
22059 return eSIR_11B_NW_TYPE;
22060 case WDI_11G_NW_TYPE:
22061 return eSIR_11G_NW_TYPE;
22062 case WDI_11N_NW_TYPE:
22063 return eSIR_11N_NW_TYPE;
22064 }
22065
Jeff Johnsone7245742012-09-05 17:12:55 -070022066 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022067}/*WDI_2_HAL_NW_TYPE*/
22068
22069/*Convert WDI chanel bonding type into HAL cb type*/
22070WPT_STATIC WPT_INLINE ePhyChanBondState
22071WDI_2_HAL_CB_STATE
22072(
22073 WDI_PhyChanBondState wdiCbState
22074)
22075{
Jeff Johnsone7245742012-09-05 17:12:55 -070022076 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022077 the chances of getting inlined*/
22078 switch ( wdiCbState )
22079 {
22080 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22081 return PHY_SINGLE_CHANNEL_CENTERED;
22082 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22083 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22084 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22085 return PHY_DOUBLE_CHANNEL_CENTERED;
22086 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22087 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022088#ifdef WLAN_FEATURE_11AC
22089 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22090 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22091 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22092 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22093 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22094 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22095 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22096 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22097 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22098 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22099 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22100 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22101 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22102 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22103#endif
22104 case WDI_MAX_CB_STATE:
22105 default:
22106 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022107 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022108
Jeff Johnson295189b2012-06-20 16:38:30 -070022109 return PHY_CHANNEL_BONDING_STATE_MAX;
22110}/*WDI_2_HAL_CB_STATE*/
22111
22112/*Convert WDI chanel bonding type into HAL cb type*/
22113WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22114WDI_2_HAL_HT_OPER_MODE
22115(
22116 WDI_HTOperatingMode wdiHTOperMode
22117)
22118{
Jeff Johnsone7245742012-09-05 17:12:55 -070022119 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 the chances of getting inlined*/
22121 switch ( wdiHTOperMode )
22122 {
22123 case WDI_HT_OP_MODE_PURE:
22124 return eSIR_HT_OP_MODE_PURE;
22125 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22126 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22127 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22128 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22129 case WDI_HT_OP_MODE_MIXED:
22130 return eSIR_HT_OP_MODE_MIXED;
22131 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022132
Jeff Johnson295189b2012-06-20 16:38:30 -070022133 return eSIR_HT_OP_MODE_MAX;
22134}/*WDI_2_HAL_HT_OPER_MODE*/
22135
22136/*Convert WDI mimo PS type into HAL mimo PS type*/
22137WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22138WDI_2_HAL_MIMO_PS
22139(
22140 WDI_HTMIMOPowerSaveState wdiHTOperMode
22141)
22142{
Jeff Johnsone7245742012-09-05 17:12:55 -070022143 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022144 the chances of getting inlined*/
22145 switch ( wdiHTOperMode )
22146 {
22147 case WDI_HT_MIMO_PS_STATIC:
22148 return eSIR_HT_MIMO_PS_STATIC;
22149 case WDI_HT_MIMO_PS_DYNAMIC:
22150 return eSIR_HT_MIMO_PS_DYNAMIC;
22151 case WDI_HT_MIMO_PS_NA:
22152 return eSIR_HT_MIMO_PS_NA;
22153 case WDI_HT_MIMO_PS_NO_LIMIT:
22154 return eSIR_HT_MIMO_PS_NO_LIMIT;
22155 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022156
Jeff Johnson295189b2012-06-20 16:38:30 -070022157 return eSIR_HT_MIMO_PS_MAX;
22158}/*WDI_2_HAL_MIMO_PS*/
22159
22160/*Convert WDI ENC type into HAL ENC type*/
22161WPT_STATIC WPT_INLINE tAniEdType
22162WDI_2_HAL_ENC_TYPE
22163(
22164 WDI_EncryptType wdiEncType
22165)
22166{
Jeff Johnsone7245742012-09-05 17:12:55 -070022167 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022168 the chances of getting inlined*/
22169 switch ( wdiEncType )
22170 {
22171 case WDI_ENCR_NONE:
22172 return eSIR_ED_NONE;
22173
22174 case WDI_ENCR_WEP40:
22175 return eSIR_ED_WEP40;
22176
22177 case WDI_ENCR_WEP104:
22178 return eSIR_ED_WEP104;
22179
22180 case WDI_ENCR_TKIP:
22181 return eSIR_ED_TKIP;
22182
22183 case WDI_ENCR_CCMP:
22184 return eSIR_ED_CCMP;
22185
22186 case WDI_ENCR_AES_128_CMAC:
22187 return eSIR_ED_AES_128_CMAC;
22188#if defined(FEATURE_WLAN_WAPI)
22189 case WDI_ENCR_WPI:
22190 return eSIR_ED_WPI;
22191#endif
22192 default:
22193 return eSIR_ED_NOT_IMPLEMENTED;
22194 }
22195
22196}/*WDI_2_HAL_ENC_TYPE*/
22197
22198/*Convert WDI WEP type into HAL WEP type*/
22199WPT_STATIC WPT_INLINE tAniWepType
22200WDI_2_HAL_WEP_TYPE
22201(
22202 WDI_WepType wdiWEPType
22203)
22204{
Jeff Johnsone7245742012-09-05 17:12:55 -070022205 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022206 the chances of getting inlined*/
22207 switch ( wdiWEPType )
22208 {
22209 case WDI_WEP_STATIC:
22210 return eSIR_WEP_STATIC;
22211
22212 case WDI_WEP_DYNAMIC:
22213 return eSIR_WEP_DYNAMIC;
22214 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022215
Jeff Johnson295189b2012-06-20 16:38:30 -070022216 return eSIR_WEP_MAX;
22217}/*WDI_2_HAL_WEP_TYPE*/
22218
22219WPT_STATIC WPT_INLINE tSirLinkState
22220WDI_2_HAL_LINK_STATE
22221(
22222 WDI_LinkStateType wdiLinkState
22223)
22224{
Jeff Johnsone7245742012-09-05 17:12:55 -070022225 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022226 the chances of getting inlined*/
22227 switch ( wdiLinkState )
22228 {
22229 case WDI_LINK_IDLE_STATE:
22230 return eSIR_LINK_IDLE_STATE;
22231
22232 case WDI_LINK_PREASSOC_STATE:
22233 return eSIR_LINK_PREASSOC_STATE;
22234
22235 case WDI_LINK_POSTASSOC_STATE:
22236 return eSIR_LINK_POSTASSOC_STATE;
22237
22238 case WDI_LINK_AP_STATE:
22239 return eSIR_LINK_AP_STATE;
22240
22241 case WDI_LINK_IBSS_STATE:
22242 return eSIR_LINK_IBSS_STATE;
22243
22244 case WDI_LINK_BTAMP_PREASSOC_STATE:
22245 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22246
22247 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22248 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22249
22250 case WDI_LINK_BTAMP_AP_STATE:
22251 return eSIR_LINK_BTAMP_AP_STATE;
22252
22253 case WDI_LINK_BTAMP_STA_STATE:
22254 return eSIR_LINK_BTAMP_STA_STATE;
22255
22256 case WDI_LINK_LEARN_STATE:
22257 return eSIR_LINK_LEARN_STATE;
22258
22259 case WDI_LINK_SCAN_STATE:
22260 return eSIR_LINK_SCAN_STATE;
22261
22262 case WDI_LINK_FINISH_SCAN_STATE:
22263 return eSIR_LINK_FINISH_SCAN_STATE;
22264
22265 case WDI_LINK_INIT_CAL_STATE:
22266 return eSIR_LINK_INIT_CAL_STATE;
22267
22268 case WDI_LINK_FINISH_CAL_STATE:
22269 return eSIR_LINK_FINISH_CAL_STATE;
22270
Jeff Johnson295189b2012-06-20 16:38:30 -070022271 case WDI_LINK_LISTEN_STATE:
22272 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022273
22274 default:
22275 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022276 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022277}
22278
Jeff Johnsone7245742012-09-05 17:12:55 -070022279/*Translate a STA Context from WDI into HAL*/
22280WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022281void
22282WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022283(
Jeff Johnson295189b2012-06-20 16:38:30 -070022284 tConfigStaParams* phalConfigSta,
22285 WDI_ConfigStaReqInfoType* pwdiConfigSta
22286)
22287{
22288 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022289#ifdef WLAN_FEATURE_11AC
22290 /* Get the Version 1 Handler */
22291 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22292 if (WDI_getFwWlanFeatCaps(DOT11AC))
22293 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022294 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022295 }
22296#endif
22297 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022298 the chances of getting inlined*/
22299
Jeff Johnsone7245742012-09-05 17:12:55 -070022300 wpalMemoryCopy(phalConfigSta->bssId,
22301 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22302
22303 wpalMemoryCopy(phalConfigSta->staMac,
22304 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022305
22306 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22307 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22308 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22309 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22310 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22311 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22312 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22313 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22314 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22315 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22316 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22317 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22318 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22319 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22320 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22321 phalConfigSta->action = pwdiConfigSta->wdiAction;
22322 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22323 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22324 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22325 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22326 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22327 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22328 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022329
Jeff Johnson295189b2012-06-20 16:38:30 -070022330 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22331
Jeff Johnsone7245742012-09-05 17:12:55 -070022332 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022333 pwdiConfigSta->wdiSupportedRates.opRateMode;
22334 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22335 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022336 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022337 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22338 }
22339 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22340 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022341 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022342 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22343 }
22344 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22345 {
22346 phalConfigSta->supportedRates.aniLegacyRates[i] =
22347 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22348 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022349 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022350 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22351 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22352 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022353 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022354 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22355 }
22356 phalConfigSta->supportedRates.rxHighestDataRate =
22357 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22358
Jeff Johnsone7245742012-09-05 17:12:55 -070022359#ifdef WLAN_FEATURE_11AC
22360 if(phalConfigSta_V1 != NULL)
22361 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022362 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22363 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22364 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22365 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022366 }
22367#endif
22368
Jeff Johnson295189b2012-06-20 16:38:30 -070022369 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022370
Jeff Johnsone7245742012-09-05 17:12:55 -070022371#ifdef WLAN_FEATURE_11AC
22372 if(phalConfigSta_V1 != NULL)
22373 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022374 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22375 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022376 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022377 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22378 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22379
Jeff Johnsone7245742012-09-05 17:12:55 -070022380 }
22381#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022382}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022383
22384/*Translate a Rate set info from WDI into HAL*/
22385WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022386WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022387(
Jeff Johnson295189b2012-06-20 16:38:30 -070022388 tSirMacRateSet* pHalRateSet,
22389 WDI_RateSet* pwdiRateSet
22390)
22391{
Jeff Johnsone7245742012-09-05 17:12:55 -070022392 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22394
22395 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22396 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22397
22398 for ( i = 0; i < pHalRateSet->numRates; i++ )
22399 {
22400 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22401 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022402
Jeff Johnson295189b2012-06-20 16:38:30 -070022403}/*WDI_CopyWDIRateSetToHALRateSet*/
22404
22405
22406/*Translate an EDCA Parameter Record from WDI into HAL*/
22407WPT_STATIC WPT_INLINE void
22408WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022409(
Jeff Johnson295189b2012-06-20 16:38:30 -070022410 tSirMacEdcaParamRecord* phalEdcaParam,
22411 WDI_EdcaParamRecord* pWDIEdcaParam
22412)
22413{
Jeff Johnsone7245742012-09-05 17:12:55 -070022414 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 the chances of getting inlined*/
22416
22417 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22418 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22419 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22420 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22421
22422 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22423 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22424 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22425}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22426
22427
22428/*Copy a management frame header from WDI fmt into HAL fmt*/
22429WPT_STATIC WPT_INLINE void
22430WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22431(
22432 tSirMacMgmtHdr* pmacMgmtHdr,
22433 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22434)
22435{
22436 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22437 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22438 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22439 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22440 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22441 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22442 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22443 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22444 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22445 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22446 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22447
22448 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22449 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22450
Jeff Johnsone7245742012-09-05 17:12:55 -070022451 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022452 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022453 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022454 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022455 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 pwdiMacMgmtHdr->bssId, 6);
22457
22458 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22459 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22460 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22461
22462}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22463
22464
22465/*Copy config bss parameters from WDI fmt into HAL fmt*/
22466WPT_STATIC WPT_INLINE void
22467WDI_CopyWDIConfigBSSToHALConfigBSS
22468(
22469 tConfigBssParams* phalConfigBSS,
22470 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22471)
22472{
22473
22474 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022475#ifdef WLAN_FEATURE_11AC
22476 /* Get the Version 1 Handler */
22477 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22478 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022479 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022480#endif
22481
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 wpalMemoryCopy( phalConfigBSS->bssId,
22483 pwdiConfigBSS->macBSSID,
22484 WDI_MAC_ADDR_LEN);
22485
22486#ifdef HAL_SELF_STA_PER_BSS
22487 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22488 pwdiConfigBSS->macSelfAddr,
22489 WDI_MAC_ADDR_LEN);
22490#endif
22491
22492 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22493
22494 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22495 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22496
Jeff Johnsone7245742012-09-05 17:12:55 -070022497 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022498 pwdiConfigBSS->ucShortSlotTimeSupported;
22499 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22500 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22501 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22502 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22503 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22506 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22507 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22508 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22509 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22510 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22511 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22512 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22513 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22514 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22515 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22516
Jeff Johnsone7245742012-09-05 17:12:55 -070022517 phalConfigBSS->htOperMode =
22518 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022519
22520 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22521 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22522 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22523 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22524
22525#ifdef WLAN_FEATURE_VOWIFI
22526 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22527#endif
22528
22529 /*! Used 32 as magic number because that is how the ssid is declared inside the
22530 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022531 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022532 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22533 pwdiConfigBSS->wdiSSID.ucLength : 32;
22534 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022535 pwdiConfigBSS->wdiSSID.sSSID,
22536 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022537
22538 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22539 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022540
Jeff Johnson295189b2012-06-20 16:38:30 -070022541 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22542 &pwdiConfigBSS->wdiRateSet);
22543
22544 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22545
22546 if(phalConfigBSS->edcaParamsValid)
22547 {
22548 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22549 &pwdiConfigBSS->wdiBEEDCAParams);
22550 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22551 &pwdiConfigBSS->wdiBKEDCAParams);
22552 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22553 &pwdiConfigBSS->wdiVIEDCAParams);
22554 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22555 &pwdiConfigBSS->wdiVOEDCAParams);
22556 }
22557
Jeff Johnsone7245742012-09-05 17:12:55 -070022558 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022559
22560 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22561
22562#ifdef WLAN_FEATURE_VOWIFI_11R
22563
Jeff Johnsone7245742012-09-05 17:12:55 -070022564 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022565 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022566
Jeff Johnson295189b2012-06-20 16:38:30 -070022567 if( phalConfigBSS->extSetStaKeyParamValid )
22568 {
22569 /*-----------------------------------------------------------------------
22570 Copy the STA Key parameters into the HAL message
22571 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022572 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022573 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22574
Jeff Johnsone7245742012-09-05 17:12:55 -070022575 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022576 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22577
22578 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22579
22580 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22581
22582 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22583
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22585 keyIndex++)
22586 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022587 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022588 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22589 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22590 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22591 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22592 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22593 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022594 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022595 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022596 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022597 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022598 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022599 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22600 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022601 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022602 WDI_MAX_KEY_LENGTH);
22603 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022604 }
22605 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22606 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022607 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022608 sizeof(phalConfigBSS->extSetStaKeyParam) );
22609 }
22610
22611#endif /*WLAN_FEATURE_VOWIFI_11R*/
22612
Jeff Johnsone7245742012-09-05 17:12:55 -070022613#ifdef WLAN_FEATURE_11AC
22614 if(phalConfigBSS_V1 != NULL)
22615 {
22616 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22617 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22618 }
22619#endif
22620
Jeff Johnson295189b2012-06-20 16:38:30 -070022621}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22622
22623
Jeff Johnsone7245742012-09-05 17:12:55 -070022624/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022625 pointed to by user data */
22626WPT_STATIC WPT_INLINE void
22627WDI_ExtractRequestCBFromEvent
22628(
22629 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 void** ppUserData
22632)
22633{
22634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22635 switch ( pEvent->wdiRequest )
22636 {
22637 case WDI_START_REQ:
22638 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22639 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22640 break;
22641 case WDI_STOP_REQ:
22642 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22643 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22644 break;
22645 case WDI_INIT_SCAN_REQ:
22646 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22647 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22648 break;
22649 case WDI_START_SCAN_REQ:
22650 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22651 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22652 break;
22653 case WDI_END_SCAN_REQ:
22654 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22655 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22656 break;
22657 case WDI_FINISH_SCAN_REQ:
22658 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22659 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22660 break;
22661 case WDI_JOIN_REQ:
22662 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22663 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22664 break;
22665 case WDI_CONFIG_BSS_REQ:
22666 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22667 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22668 break;
22669 case WDI_DEL_BSS_REQ:
22670 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22671 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22672 break;
22673 case WDI_POST_ASSOC_REQ:
22674 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22675 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22676 break;
22677 case WDI_DEL_STA_REQ:
22678 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22679 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22680 break;
22681 case WDI_DEL_STA_SELF_REQ:
22682 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22683 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22684 break;
22685
22686 case WDI_SET_BSS_KEY_REQ:
22687 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22688 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22689 break;
22690 case WDI_RMV_BSS_KEY_REQ:
22691 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22692 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22693 break;
22694 case WDI_SET_STA_KEY_REQ:
22695 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22696 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22697 break;
22698 case WDI_RMV_STA_KEY_REQ:
22699 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22700 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22701 break;
22702 case WDI_ADD_TS_REQ:
22703 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22704 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22705 break;
22706 case WDI_DEL_TS_REQ:
22707 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22708 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22709 break;
22710 case WDI_UPD_EDCA_PRMS_REQ:
22711 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22712 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22713 break;
22714 case WDI_ADD_BA_SESSION_REQ:
22715 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22716 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22717 break;
22718 case WDI_DEL_BA_REQ:
22719 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22720 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22721 break;
22722#ifdef FEATURE_WLAN_CCX
22723 case WDI_TSM_STATS_REQ:
22724 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22725 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22726 break;
22727#endif
22728 case WDI_CH_SWITCH_REQ:
22729 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22730 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22731 break;
22732 case WDI_CONFIG_STA_REQ:
22733 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22734 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22735 break;
22736 case WDI_SET_LINK_ST_REQ:
22737 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22738 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22739 break;
22740 case WDI_GET_STATS_REQ:
22741 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22742 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22743 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022744#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22745 case WDI_GET_ROAM_RSSI_REQ:
22746 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22747 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
22748 break;
22749#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022750 case WDI_UPDATE_CFG_REQ:
22751 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22752 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22753 break;
22754 case WDI_ADD_BA_REQ:
22755 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22756 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22757 break;
22758 case WDI_TRIGGER_BA_REQ:
22759 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22760 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22761 break;
22762 case WDI_UPD_BCON_PRMS_REQ:
22763 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22764 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22765 break;
22766 case WDI_SND_BCON_REQ:
22767 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22768 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22769 break;
22770 case WDI_ENTER_BMPS_REQ:
22771 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22772 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22773 break;
22774 case WDI_EXIT_BMPS_REQ:
22775 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22776 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22777 break;
22778 case WDI_ENTER_UAPSD_REQ:
22779 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22780 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22781 break;
22782 case WDI_UPDATE_UAPSD_PARAM_REQ:
22783 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22784 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22785 break;
22786 case WDI_CONFIGURE_RXP_FILTER_REQ:
22787 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22788 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22789 break;
22790 case WDI_SET_BEACON_FILTER_REQ:
22791 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22792 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22793 break;
22794 case WDI_REM_BEACON_FILTER_REQ:
22795 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22796 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022797 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022798 case WDI_SET_RSSI_THRESHOLDS_REQ:
22799 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22800 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22801 break;
22802 case WDI_HOST_OFFLOAD_REQ:
22803 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22804 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22805 break;
22806 case WDI_WOWL_ADD_BC_PTRN_REQ:
22807 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22808 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22809 break;
22810 case WDI_WOWL_DEL_BC_PTRN_REQ:
22811 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22812 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22813 break;
22814 case WDI_WOWL_ENTER_REQ:
22815 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22816 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22817 break;
22818 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22819 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22820 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22821 break;
22822 case WDI_FLUSH_AC_REQ:
22823 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22824 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22825 break;
22826 case WDI_BTAMP_EVENT_REQ:
22827 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22828 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22829 break;
22830 case WDI_KEEP_ALIVE_REQ:
22831 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22832 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22833 break;
22834 case WDI_SET_TX_PER_TRACKING_REQ:
22835 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22836 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080022837 break;
22838 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
22839 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22840 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
22841 break;
22842 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22843 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22844 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
22845 break;
22846 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22847 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22848 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
22849 break;
22850
Jeff Johnson295189b2012-06-20 16:38:30 -070022851 default:
22852 *ppfnReqCB = NULL;
22853 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022854 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022855 }
22856}/*WDI_ExtractRequestCBFromEvent*/
22857
22858
22859/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022860 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022861 frame xtl is enabled for a particular STA.
22862
22863 WDI_PostAssocReq must have been called.
22864
Jeff Johnsone7245742012-09-05 17:12:55 -070022865 @param uSTAIdx: STA index
22866
Jeff Johnson295189b2012-06-20 16:38:30 -070022867 @see WDI_PostAssocReq
22868 @return Result of the function call
22869*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022870wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022871WDI_IsHwFrameTxTranslationCapable
22872(
22873 wpt_uint8 uSTAIdx
22874)
22875{
Jeff Johnsone7245742012-09-05 17:12:55 -070022876 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022877 uma value*/
22878 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022879 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022880 ------------------------------------------------------------------------*/
22881 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22882 {
22883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22884 "WDI API call before module is initialized - Fail request");
22885
Jeff Johnsone7245742012-09-05 17:12:55 -070022886 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022887 }
22888
Gopichand Nakkalaba261272013-01-03 15:45:56 -080022889#ifdef WLAN_SOFTAP_VSTA_FEATURE
22890 if (IS_VSTA_IDX(uSTAIdx))
22891 {
22892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22893 "STA %d is a Virtual STA, "
22894 "HW frame translation disabled", uSTAIdx);
22895 return eWLAN_PAL_FALSE;
22896 }
22897#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070022898
Jeff Johnson295189b2012-06-20 16:38:30 -070022899 return gWDICb.bFrameTransEnabled;
22900}/*WDI_IsHwFrameTxTranslationCapable*/
22901
22902#ifdef FEATURE_WLAN_SCAN_PNO
22903/**
22904 @brief WDI_SetPreferredNetworkList
22905
Jeff Johnsone7245742012-09-05 17:12:55 -070022906 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022907 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022908
Jeff Johnson295189b2012-06-20 16:38:30 -070022909 wdiPNOScanCb: callback for passing back the response
22910 of the Set PNO operation received from the
22911 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022912
Jeff Johnson295189b2012-06-20 16:38:30 -070022913 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022914 callback
22915
Jeff Johnson295189b2012-06-20 16:38:30 -070022916 @return Result of the function call
22917*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022918WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022919WDI_SetPreferredNetworkReq
22920(
22921 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22922 WDI_PNOScanCb wdiPNOScanCb,
22923 void* pUserData
22924)
22925{
22926 WDI_EventInfoType wdiEventData = {{0}};
22927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22928
22929 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022930 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022931 ------------------------------------------------------------------------*/
22932 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22933 {
22934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22935 "WDI API call before module is initialized - Fail request");
22936
Jeff Johnsone7245742012-09-05 17:12:55 -070022937 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022938 }
22939
22940 /*------------------------------------------------------------------------
22941 Fill in Event data and post to the Main FSM
22942 ------------------------------------------------------------------------*/
22943 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022944 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022945 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022946 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022947 wdiEventData.pUserData = pUserData;
22948
22949 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22950}
22951
22952
22953/**
22954 @brief WDI_SetRssiFilterReq
22955
Jeff Johnsone7245742012-09-05 17:12:55 -070022956 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022957 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022958
Jeff Johnson295189b2012-06-20 16:38:30 -070022959 wdiRssiFilterCb: callback for passing back the response
22960 of the Set RSSI Filter operation received from the
22961 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022962
Jeff Johnson295189b2012-06-20 16:38:30 -070022963 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022964 callback
22965
Jeff Johnson295189b2012-06-20 16:38:30 -070022966 @return Result of the function call
22967*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022968WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022969WDI_SetRssiFilterReq
22970(
22971 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22972 WDI_RssiFilterCb wdiRssiFilterCb,
22973 void* pUserData
22974)
22975{
22976 WDI_EventInfoType wdiEventData = {{0}};
22977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22978
22979 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022980 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022981 ------------------------------------------------------------------------*/
22982 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22983 {
22984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22985 "WDI API call before module is initialized - Fail request");
22986
Jeff Johnsone7245742012-09-05 17:12:55 -070022987 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022988 }
22989
22990 /*------------------------------------------------------------------------
22991 Fill in Event data and post to the Main FSM
22992 ------------------------------------------------------------------------*/
22993 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022994 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022995 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022996 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022997 wdiEventData.pUserData = pUserData;
22998
22999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23000}/*WDI_SetRssiFilterReq*/
23001
23002/**
23003 @brief WDI_UpdateScanParamsReq
23004
Jeff Johnsone7245742012-09-05 17:12:55 -070023005 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023006 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023007
Jeff Johnson295189b2012-06-20 16:38:30 -070023008 wdiUpdateScanParamsCb: callback for passing back the response
23009 of the Set PNO operation received from the
23010 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023011
Jeff Johnson295189b2012-06-20 16:38:30 -070023012 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023013 callback
23014
Jeff Johnson295189b2012-06-20 16:38:30 -070023015 @return Result of the function call
23016*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023017WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023018WDI_UpdateScanParamsReq
23019(
23020 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23021 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23022 void* pUserData
23023)
23024{
23025 WDI_EventInfoType wdiEventData = {{0}};
23026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23027
23028 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023029 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023030 ------------------------------------------------------------------------*/
23031 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23032 {
23033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23034 "WDI API call before module is initialized - Fail request");
23035
Jeff Johnsone7245742012-09-05 17:12:55 -070023036 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023037 }
23038
23039 /*------------------------------------------------------------------------
23040 Fill in Event data and post to the Main FSM
23041 ------------------------------------------------------------------------*/
23042 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023043 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023044 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023045 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023046 wdiEventData.pUserData = pUserData;
23047
23048 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23049}
23050
23051/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023052 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023053 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023054
23055 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023056 pwdiPNOScanReqParams: pointer to the info received
23057 from upper layers
23058 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023059 and its size
23060
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 @return Result of the function call
23062*/
23063
23064WDI_Status
23065WDI_PackPreferredNetworkList
23066(
23067 WDI_ControlBlockType* pWDICtx,
23068 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23069 wpt_uint8** ppSendBuffer,
23070 wpt_uint16* pSize
23071)
23072{
Jeff Johnsone7245742012-09-05 17:12:55 -070023073 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023074 wpt_uint16 usDataOffset = 0;
23075 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023076 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023078 /*-----------------------------------------------------------------------
23079 Get message buffer
23080 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023081 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023082 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023083 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023084 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 {
23086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23087 "Unable to get send buffer in Set PNO req %x ",
23088 pwdiPNOScanReqParams);
23089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023091 }
23092
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023093 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23094
Jeff Johnson295189b2012-06-20 16:38:30 -070023095 /*-------------------------------------------------------------------------
23096 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23097 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023098 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023099 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023100 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023101 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23102
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023103 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023104 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023105 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023106 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023107 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23108
23109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023110 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023111 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23112 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23113 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23114
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023115 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023116 {
23117 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023118 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023119 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23120
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023121 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023122 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023123 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023124
23125 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023126 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023127 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023128
23129 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023130 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023131 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023132
Jeff Johnsone7245742012-09-05 17:12:55 -070023133 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023134 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023135 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023136 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23137 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23138 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23139 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023140
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023141 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023142 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023143 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023144
23145 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023146 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023147 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23148
23149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023150 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023151 pPrefNetwListParams->aNetworks[i].ssId.length,
23152 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023153 }
23154
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023155 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023156 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023157 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23158 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23159 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23160
23161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023162 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023163 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23165 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23166
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023167 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023168 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023169 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023170 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023171 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023172 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23173 }
23174
23175 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023176 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023177 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23178 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23179 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023180 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023181
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023182 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023183 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023184 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023185
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023186 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023187 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23188 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23189 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023190 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023191
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023192 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023193 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023194 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023195
23196 /*Set the output values*/
23197 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023198 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023199
23200 return WDI_STATUS_SUCCESS;
23201}/*WDI_PackPreferredNetworkList*/
23202
23203/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023204 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023205 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023206
23207 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023208 pwdiPNOScanReqParams: pointer to the info received
23209 from upper layers
23210 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023211 and its size
23212
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 @return Result of the function call
23214*/
23215
23216WDI_Status
23217WDI_PackPreferredNetworkListNew
23218(
23219 WDI_ControlBlockType* pWDICtx,
23220 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23221 wpt_uint8** ppSendBuffer,
23222 wpt_uint16* pSize
23223)
23224{
Jeff Johnsone7245742012-09-05 17:12:55 -070023225 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 wpt_uint16 usDataOffset = 0;
23227 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023228 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023229 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023230
23231 /*-----------------------------------------------------------------------
23232 Get message buffer
23233 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023234 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023235 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023237 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023238 {
23239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23240 "Unable to get send buffer in Set PNO req %x ",
23241 pwdiPNOScanReqParams);
23242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023244 }
23245
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023246 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23247
Jeff Johnson295189b2012-06-20 16:38:30 -070023248 /*-------------------------------------------------------------------------
23249 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23250 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023251 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023252 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023253 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023254 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23255
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023256 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023257 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023258 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023259 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023260 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23261
23262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023263 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023264 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23265 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23266 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23267
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023268 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023269 {
23270 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023271 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023272 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23273
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023274 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023275 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023276 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023277
23278 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023279 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023281
23282 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023283 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023284 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023285
23286 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023287 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023288 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023289
Jeff Johnsone7245742012-09-05 17:12:55 -070023290 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023291 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023292 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023293 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23294
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023295 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023296 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023297 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023298
23299 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023300 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023301 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23302
23303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023305 pPrefNetwListParams->aNetworks[i].ssId.length,
23306 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023307 }
23308
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023309 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023310 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023311 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23312 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23313 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23314
23315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023316 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023317 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023318 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23319 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23320
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023321 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023322 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023323 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023324 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023325 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023326 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23327 }
23328
23329 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023330 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023331 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23332 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23333 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023334 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023335
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023336 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023337 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023338 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023339
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023340 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023341 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23342 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23343 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023344 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023345
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023346 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023347 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023348 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023349
Jeff Johnson295189b2012-06-20 16:38:30 -070023350
23351 /*Set the output values*/
23352 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023353 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023354
23355 return WDI_STATUS_SUCCESS;
23356}/*WDI_PackPreferredNetworkListNew*/
23357
23358/**
23359 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023360
23361 @param pWDICtx: pointer to the WLAN DAL context
23362 pEventData: pointer to the event information structure
23363
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 @return Result of the function call
23365*/
23366WDI_Status
23367WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023368(
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 WDI_ControlBlockType* pWDICtx,
23370 WDI_EventInfoType* pEventData
23371)
23372{
23373 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23374 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023375 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378
23379 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023380 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023381 -------------------------------------------------------------------------*/
23382 if (( NULL == pEventData ) ||
23383 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23384 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23385 {
23386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 }
23391
23392 /*-------------------------------------------------------------------------
23393 Pack the PNO request structure based on version
23394 -------------------------------------------------------------------------*/
23395 if ( pWDICtx->wdiPNOVersion > 0 )
23396 {
23397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023398 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023399 pWDICtx->wdiPNOVersion);
23400
23401 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23402 &pSendBuffer, &usSendSize);
23403 }
23404 else
23405 {
23406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023407 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023408 pWDICtx->wdiPNOVersion);
23409
23410 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23411 &pSendBuffer, &usSendSize);
23412 }
23413
23414 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23415 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23416 {
23417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023418 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023419 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023420 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023421 }
23422
23423 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023424 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023425
23426 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023427 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023428 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023429 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23430 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023431}
23432
23433/**
23434 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023435
23436 @param pWDICtx: pointer to the WLAN DAL context
23437 pEventData: pointer to the event information structure
23438
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 @see
23440 @return Result of the function call
23441*/
23442WDI_Status
23443WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023444(
Jeff Johnson295189b2012-06-20 16:38:30 -070023445 WDI_ControlBlockType* pWDICtx,
23446 WDI_EventInfoType* pEventData
23447)
23448{
23449 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23450 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023451 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 wpt_uint16 usDataOffset = 0;
23453 wpt_uint16 usSendSize = 0;
23454 wpt_uint8 ucRssiThreshold;
23455
23456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023458 -------------------------------------------------------------------------*/
23459 if (( NULL == pEventData ) ||
23460 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
23461 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
23462 {
23463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023467 }
23468
23469 /*-----------------------------------------------------------------------
23470 Get message buffer
23471 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023472 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023473 sizeof(ucRssiThreshold),
23474 &pSendBuffer, &usDataOffset, &usSendSize))||
23475 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
23476 {
23477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23478 "Unable to get send buffer in Set PNO req %x %x %x",
23479 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
23480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023482 }
23483
23484 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
23485
Jeff Johnsone7245742012-09-05 17:12:55 -070023486 wpalMemoryCopy( pSendBuffer+usDataOffset,
23487 &ucRssiThreshold,
23488 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070023489
23490 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023491 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023492
23493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023494 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023495 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023496 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23497 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023498}
23499
23500
23501/**
23502 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070023503
23504 @param pWDICtx: pointer to the WLAN DAL context
23505 pEventData: pointer to the event information structure
23506
Jeff Johnson295189b2012-06-20 16:38:30 -070023507 @see
23508 @return Result of the function call
23509*/
23510WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023511WDI_PackUpdateScanParamsReq
23512(
23513 WDI_ControlBlockType* pWDICtx,
23514 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23515 wpt_uint8** ppSendBuffer,
23516 wpt_uint16* pSize
23517)
23518{
23519 wpt_uint8* pSendBuffer = NULL;
23520 wpt_uint16 usDataOffset = 0;
23521 wpt_uint16 usSendSize = 0;
23522 tUpdateScanParams updateScanParams = {0};
23523
23524
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023526 "Begin WDI Update Scan Parameters Old Style Params");
23527 /*-----------------------------------------------------------------------
23528 Get message buffer
23529 -----------------------------------------------------------------------*/
23530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23531 sizeof(updateScanParams),
23532 &pSendBuffer, &usDataOffset, &usSendSize))||
23533 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23534 {
23535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23536 "Unable to get send buffer in Update Scan Params req %x",
23537 pwdiUpdateScanParams);
23538 WDI_ASSERT(0);
23539 return WDI_STATUS_E_FAILURE;
23540 }
23541
23542 //
23543 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23544 //
23545
23546 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23547 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23548
23549 updateScanParams.ucChannelCount =
23550 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23551 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23552 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23553 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
23554
23555 wpalMemoryCopy( updateScanParams.aChannels,
23556 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23557 updateScanParams.ucChannelCount);
23558
23559
23560 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23561 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23562 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23563 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23564 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23565
23566 wpalMemoryCopy( pSendBuffer+usDataOffset,
23567 &updateScanParams,
23568 sizeof(updateScanParams));
23569
23570 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23571 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23572
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023574 "End Update Scan Parameters Old Style");
23575
23576 /*Set the output values*/
23577 *ppSendBuffer = pSendBuffer;
23578 *pSize = usSendSize;
23579
23580 return WDI_STATUS_SUCCESS;
23581}
23582
23583/**
23584 @brief Process Update Scan Params function
23585
23586 @param pWDICtx: pointer to the WLAN DAL context
23587 pEventData: pointer to the event information structure
23588
23589 @see
23590 @return Result of the function call
23591*/
23592WDI_Status
23593WDI_PackUpdateScanParamsReqEx
23594(
23595 WDI_ControlBlockType* pWDICtx,
23596 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23597 wpt_uint8** ppSendBuffer,
23598 wpt_uint16* pSize
23599)
23600{
23601 wpt_uint8* pSendBuffer = NULL;
23602 wpt_uint16 usDataOffset = 0;
23603 wpt_uint16 usSendSize = 0;
23604 tUpdateScanParamsEx updateScanParams = {0};
23605
23606
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023607 /*-----------------------------------------------------------------------
23608 Get message buffer
23609 -----------------------------------------------------------------------*/
23610 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23611 sizeof(updateScanParams),
23612 &pSendBuffer, &usDataOffset, &usSendSize))||
23613 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23614 {
23615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23616 "Unable to get send buffer in Update Scan Params Ex req %x",
23617 pwdiUpdateScanParams);
23618 WDI_ASSERT(0);
23619 return WDI_STATUS_E_FAILURE;
23620 }
23621
23622 //
23623 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23624 //
23625
23626 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23627 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23628
23629 updateScanParams.ucChannelCount =
23630 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23631 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
23632 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23633 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23634
23635 wpalMemoryCopy( updateScanParams.aChannels,
23636 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23637 updateScanParams.ucChannelCount);
23638
23639
23640 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23641 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23642 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23643 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23644 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23645
23646 wpalMemoryCopy( pSendBuffer+usDataOffset,
23647 &updateScanParams,
23648 sizeof(updateScanParams));
23649
23650 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23651 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23652
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023653 /*Set the output values*/
23654 *ppSendBuffer = pSendBuffer;
23655 *pSize = usSendSize;
23656
23657 return WDI_STATUS_SUCCESS;
23658}
23659
23660/**
23661 @brief Process Update Scan Params function
23662
23663 @param pWDICtx: pointer to the WLAN DAL context
23664 pEventData: pointer to the event information structure
23665
23666 @see
23667 @return Result of the function call
23668*/
23669WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023670WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023671(
Jeff Johnson295189b2012-06-20 16:38:30 -070023672 WDI_ControlBlockType* pWDICtx,
23673 WDI_EventInfoType* pEventData
23674)
23675{
23676 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23677 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023678 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023679 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023680 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023681
23682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023683 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023684 -------------------------------------------------------------------------*/
23685 if (( NULL == pEventData ) ||
23686 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23687 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23688 {
23689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023690 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 }
23694
23695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23696 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023697
23698 //
23699 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23700 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023701 if ( pWDICtx->wlanVersion.revision < 1 )
23702 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023703 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023704 &pSendBuffer, &usSendSize);
23705 }
23706 else
23707 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023708 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23709 &pSendBuffer, &usSendSize);
23710 }
23711
23712 if(WDI_STATUS_SUCCESS != wdiStatus)
23713 {
23714 //memory allocation failed
23715 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023716 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023717
Jeff Johnson295189b2012-06-20 16:38:30 -070023718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023719 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023720 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023721 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023722 wdiUpdateScanParamsCb, pEventData->pUserData,
23723 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023724}
23725
23726/**
23727 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023728
23729 @param pWDICtx: pointer to the WLAN DAL context
23730 pEventData: pointer to the event information structure
23731
Jeff Johnson295189b2012-06-20 16:38:30 -070023732 @see
23733 @return Result of the function call
23734*/
23735WDI_Status
23736WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023737(
Jeff Johnson295189b2012-06-20 16:38:30 -070023738 WDI_ControlBlockType* pWDICtx,
23739 WDI_EventInfoType* pEventData
23740)
23741{
23742 WDI_LowLevelIndType wdiInd;
23743 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23744
23745
23746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023748 -------------------------------------------------------------------------*/
23749 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23750 ( NULL == pEventData->pEventData ))
23751 {
23752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023754 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023756 }
23757
23758 /*-------------------------------------------------------------------------
23759 Extract indication and send it to UMAC
23760 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023761 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23762 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023763 sizeof(tPrefNetwFoundParams));
23764
23765 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023766 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023767
23768 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23769
Jeff Johnsone7245742012-09-05 17:12:55 -070023770 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023771 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023772 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023773
Jeff Johnsone7245742012-09-05 17:12:55 -070023774 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23775 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023776 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23777
23778 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23779 prefNetwFoundInd.prefNetwFoundParams.rssi;
23780
23781 // DEBUG
23782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23783 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23784 wdiInd.wdiIndicationType,
23785 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23786 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23787
ltimariu034f7d62013-01-24 18:54:33 -080023788 if ( pWDICtx->wdiLowLevelIndCB )
23789 {
23790 /*Notify UMAC*/
23791 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
23792 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023793
23794 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023795}
23796
23797/**
23798 @brief Process PNO Rsp function (called when a
23799 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023800
23801 @param pWDICtx: pointer to the WLAN DAL context
23802 pEventData: pointer to the event information structure
23803
Jeff Johnson295189b2012-06-20 16:38:30 -070023804 @see
23805 @return Result of the function call
23806*/
23807WDI_Status
23808WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023809(
Jeff Johnson295189b2012-06-20 16:38:30 -070023810 WDI_ControlBlockType* pWDICtx,
23811 WDI_EventInfoType* pEventData
23812)
23813{
23814 WDI_Status wdiStatus;
23815 eHalStatus halStatus;
23816 WDI_PNOScanCb wdiPNOScanCb = NULL;
23817 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23818
23819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023821 -------------------------------------------------------------------------*/
23822 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23823 ( NULL == pEventData->pEventData ))
23824 {
23825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023829 }
23830
23831
Jeff Johnsone7245742012-09-05 17:12:55 -070023832 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023833
23834 /*-------------------------------------------------------------------------
23835 Extract response and send it to UMAC
23836 -------------------------------------------------------------------------*/
23837 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023838 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023839
23840 /*Notify UMAC*/
23841 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23842
Jeff Johnsone7245742012-09-05 17:12:55 -070023843 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023844}/*WDI_ProcessSetPreferredNetworkRsp*/
23845
23846/**
23847 @brief Process RSSI Filter Rsp function (called when a
23848 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023849
23850 @param pWDICtx: pointer to the WLAN DAL context
23851 pEventData: pointer to the event information structure
23852
Jeff Johnson295189b2012-06-20 16:38:30 -070023853 @see
23854 @return Result of the function call
23855*/
23856WDI_Status
23857WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023858(
Jeff Johnson295189b2012-06-20 16:38:30 -070023859 WDI_ControlBlockType* pWDICtx,
23860 WDI_EventInfoType* pEventData
23861)
23862{
23863 WDI_Status wdiStatus;
23864 eHalStatus halStatus;
23865 WDI_RssiFilterCb wdiRssiFilterCb;
23866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23867
23868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023869 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023870 -------------------------------------------------------------------------*/
23871 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23872 ( NULL == pEventData->pEventData ))
23873 {
23874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023875 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023878 }
23879
Jeff Johnsone7245742012-09-05 17:12:55 -070023880 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023881
23882 /*-------------------------------------------------------------------------
23883 Extract response and send it to UMAC
23884 -------------------------------------------------------------------------*/
23885 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023886 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023887
23888 /*Notify UMAC*/
23889 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23890
Jeff Johnsone7245742012-09-05 17:12:55 -070023891 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023892}/*WDI_ProcessSetRssiFilterRsp*/
23893
23894/**
23895 @brief Process Update Scan Params Rsp function (called when a
23896 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023897
23898 @param pWDICtx: pointer to the WLAN DAL context
23899 pEventData: pointer to the event information structure
23900
Jeff Johnson295189b2012-06-20 16:38:30 -070023901 @see
23902 @return Result of the function call
23903*/
23904WDI_Status
23905WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023906(
Jeff Johnson295189b2012-06-20 16:38:30 -070023907 WDI_ControlBlockType* pWDICtx,
23908 WDI_EventInfoType* pEventData
23909)
23910{
23911 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023912 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023913 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023914 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23916
23917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023919 -------------------------------------------------------------------------*/
23920 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23921 ( NULL == pEventData->pEventData ))
23922 {
23923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023927 }
23928
23929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023930 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023931
Jeff Johnsone7245742012-09-05 17:12:55 -070023932 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023933
23934 /*-------------------------------------------------------------------------
23935 Extract response and send it to UMAC
23936 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23938 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023939 sizeof(halUpdScanParams.status));
23940
23941 uStatus = halUpdScanParams.status;
23942
23943 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023944 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023945
23946 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023947 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023948
Jeff Johnsone7245742012-09-05 17:12:55 -070023949 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023950
23951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023952 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023953 halUpdScanParams.status);
23954
23955 /*Notify UMAC*/
23956 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23957
Jeff Johnsone7245742012-09-05 17:12:55 -070023958 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023959}
23960#endif // FEATURE_WLAN_SCAN_PNO
23961
23962#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023963WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023964WDI_8023MulticastListReq
23965(
23966 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23967 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23968 void* pUserData
23969)
23970{
23971 WDI_EventInfoType wdiEventData;
23972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23973
23974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023975 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023976
23977 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023978 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023979 ------------------------------------------------------------------------*/
23980 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23981 {
23982 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23983 "WDI API call before module is initialized - Fail request");
23984
Jeff Johnsone7245742012-09-05 17:12:55 -070023985 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 }
23987
23988 /*------------------------------------------------------------------------
23989 Fill in Event data and post to the Main FSM
23990 ------------------------------------------------------------------------*/
23991 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023992 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023993 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 wdiEventData.pUserData = pUserData;
23996
23997 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23998}
23999
Jeff Johnsone7245742012-09-05 17:12:55 -070024000WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024001WDI_ReceiveFilterSetFilterReq
24002(
24003 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
24004 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
24005 void* pUserData
24006)
24007{
24008 WDI_EventInfoType wdiEventData;
24009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24010
24011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024012 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024013
24014 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024015 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024016 ------------------------------------------------------------------------*/
24017 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24018 {
24019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24020 "WDI API call before module is initialized - Fail request");
24021
Jeff Johnsone7245742012-09-05 17:12:55 -070024022 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024023 }
24024
24025 /*------------------------------------------------------------------------
24026 Fill in Event data and post to the Main FSM
24027 ------------------------------------------------------------------------*/
24028 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024029 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
24030 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070024031 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24032 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024033 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024034 wdiEventData.pUserData = pUserData;
24035
24036
24037 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24038}
24039
Jeff Johnsone7245742012-09-05 17:12:55 -070024040WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024041WDI_FilterMatchCountReq
24042(
24043 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
24044 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
24045 void* pUserData
24046)
24047{
24048 WDI_EventInfoType wdiEventData;
24049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24050
24051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024052 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024053
24054 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024055 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024056 ------------------------------------------------------------------------*/
24057 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24058 {
24059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24060 "WDI API call before module is initialized - Fail request");
24061
Jeff Johnsone7245742012-09-05 17:12:55 -070024062 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024063 }
24064
24065 /*------------------------------------------------------------------------
24066 Fill in Event data and post to the Main FSM
24067 ------------------------------------------------------------------------*/
24068 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024069 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024070 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024071 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024072 wdiEventData.pUserData = pUserData;
24073
24074
24075 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24076}
24077
Jeff Johnsone7245742012-09-05 17:12:55 -070024078WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024079WDI_ReceiveFilterClearFilterReq
24080(
24081 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
24082 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
24083 void* pUserData
24084)
24085{
24086 WDI_EventInfoType wdiEventData;
24087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24088
24089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024090 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024091
24092 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024093 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024094 ------------------------------------------------------------------------*/
24095 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24096 {
24097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24098 "WDI API call before module is initialized - Fail request");
24099
Jeff Johnsone7245742012-09-05 17:12:55 -070024100 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024101 }
24102
24103 /*------------------------------------------------------------------------
24104 Fill in Event data and post to the Main FSM
24105 ------------------------------------------------------------------------*/
24106 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024107 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024108 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024109 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024110 wdiEventData.pUserData = pUserData;
24111
24112
24113 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24114}
24115
24116/**
24117 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024118
24119 @param pWDICtx: pointer to the WLAN DAL context
24120 pEventData: pointer to the event information structure
24121
Jeff Johnson295189b2012-06-20 16:38:30 -070024122 @see
24123 @return Result of the function call
24124*/
24125WDI_Status
24126WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024127(
Jeff Johnson295189b2012-06-20 16:38:30 -070024128 WDI_ControlBlockType* pWDICtx,
24129 WDI_EventInfoType* pEventData
24130)
24131{
24132 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
24133 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024134 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024135 wpt_uint16 usDataOffset = 0;
24136 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024137 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024138 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024139 wpt_uint8 ucCurrentBSSSesIdx = 0;
24140 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024141
24142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024143 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024144
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024145 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
24146 if( NULL == pRcvFltMcAddrListType )
24147 {
24148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24149 "Failed to alloc in WDI_Process8023MulticastListReq");
24150 return WDI_STATUS_E_FAILURE;
24151 }
24152
Jeff Johnson295189b2012-06-20 16:38:30 -070024153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024155 -------------------------------------------------------------------------*/
24156 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024157 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024158 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024159 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024160 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
24161 {
24162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024163 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024164 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024166 return WDI_STATUS_E_FAILURE;
24167 }
24168
24169 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24170 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
24171 &pBSSSes);
24172 if ( NULL == pBSSSes )
24173 {
24174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024175 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024176 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024178 }
24179
24180 /*-----------------------------------------------------------------------
24181 Get message buffer
24182 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024183 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24184 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024185 sizeof(tHalRcvFltMcAddrListType),
24186 &pSendBuffer, &usDataOffset, &usSendSize))||
24187 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
24188 {
24189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24190 "Unable to get send buffer in "
24191 "WDI_Process8023MulticastListReq() %x %x %x",
24192 pEventData, pwdiFltPktSetMcListReqParamsType,
24193 wdi8023MulticastListCb);
24194 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024195 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024196 }
24197
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024198 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070024199 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024200 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024201 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024202 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070024203 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
24204 sizeof(tSirMacAddr));
24205 }
24206
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024207 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024208 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024209 pRcvFltMcAddrListType,
24210 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070024211
24212 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024213 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024214
24215
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024216 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024217 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024218 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024219 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024220 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024221 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024222 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024223}
24224
24225/**
24226 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024227
24228 @param pWDICtx: pointer to the WLAN DAL context
24229 pEventData: pointer to the event information structure
24230
Jeff Johnson295189b2012-06-20 16:38:30 -070024231 @see
24232 @return Result of the function call
24233*/
24234WDI_Status
24235WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024236(
Jeff Johnson295189b2012-06-20 16:38:30 -070024237 WDI_ControlBlockType* pWDICtx,
24238 WDI_EventInfoType* pEventData
24239)
24240{
24241 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
24242 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024243 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024244 wpt_uint16 usDataOffset = 0;
24245 wpt_uint16 usSendSize = 0;
24246 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024247 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024248 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024249 wpt_uint8 ucCurrentBSSSesIdx = 0;
24250 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024251 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
24252 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024253
24254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024255 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024256
24257 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024258 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024259 -------------------------------------------------------------------------*/
24260 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024261 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070024262 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024263 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024264 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
24265 {
24266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024267 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024269 return WDI_STATUS_E_FAILURE;
24270 }
24271
24272 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24273 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
24274 &pBSSSes);
24275 if ( NULL == pBSSSes )
24276 {
24277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024278 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 }
24281
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024282 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
24283 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024284
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024285 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
24286 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24287 * sizeof(tHalSessionizedRcvPktFilterCfgType));
24288
24289 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
24290 usSessRcvPktFilterCfgSize);
24291
24292 if(NULL == pSessRcvPktFilterCfg)
24293 {
24294 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24295 "%s: Failed to allocate memory for "
24296 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024297 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024298 WDI_ASSERT(0);
24299 return WDI_STATUS_E_FAILURE;
24300 }
24301
24302 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
24303
24304 /*-----------------------------------------------------------------------
24305 Get message buffer
24306 -----------------------------------------------------------------------*/
24307
24308 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
24309 usSessRcvPktFilterCfgSize,
24310 &pSendBuffer, &usDataOffset, &usSendSize))||
24311 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
24312 {
24313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24314 "Unable to get send buffer in "
24315 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24316 pEventData, pwdiSetRcvPktFilterReqInfo,
24317 wdiReceiveFilterSetFilterCb);
24318 WDI_ASSERT(0);
24319 wpalMemoryFree(pSessRcvPktFilterCfg);
24320 return WDI_STATUS_E_FAILURE;
24321 }
24322
24323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24324 "UsData Off %d UsSend %d cfg %d",usDataOffset,
24325 usSendSize,pSessRcvPktFilterCfg);
24326
24327 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24328 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24329 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24330 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
24331
24332 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
24333
24334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24335 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
24336 pSessRcvPktFilterCfg->filterType);
24337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24338 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
24339 pSessRcvPktFilterCfg->coleasceTime);
24340
24341 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
24342 {
24343 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
24344 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24345 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
24346 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24347 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
24348 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24349 pSessRcvPktFilterCfg->paramsData[i].dataLength =
24350 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
24351
24352 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
24353 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24354 8);
24355 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
24356 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24357 8);
24358
24359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24360 "Out:Proto %d Comp Flag %d \n",
24361 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
24362 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
24363
24364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24365 "Data Offset %d Data Len %d\n",
24366 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
24367 pSessRcvPktFilterCfg->paramsData[i].dataLength);
24368
24369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24370 "CData: %d:%d:%d:%d:%d:%d\n",
24371 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
24372 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
24373 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
24374 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
24375 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
24376 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
24377
24378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24379 "MData: %d:%d:%d:%d:%d:%d\n",
24380 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
24381 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
24382 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
24383 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
24384 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
24385 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
24386 }
24387
24388 wpalMemoryCopy( pSendBuffer+usDataOffset,
24389 pSessRcvPktFilterCfg,
24390 usSessRcvPktFilterCfgSize);
24391
24392
24393 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24394 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
24395
24396 wpalMemoryFree(pSessRcvPktFilterCfg);
24397
24398 }
24399 /*If SLM_SESSIONIZATION is not supported then do this */
24400 else
24401 {
24402 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
24403 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24404 * sizeof(tHalRcvPktFilterParams));
24405
24406 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070024407 usRcvPktFilterCfgSize);
24408
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024409 if(NULL == pRcvPktFilterCfg)
24410 {
24411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24412 "%s: Failed to allocate memory for "
24413 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024414 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024415 WDI_ASSERT(0);
24416 return WDI_STATUS_E_FAILURE;
24417 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024418
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024419 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024420
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024421 /*-----------------------------------------------------------------------
24422 Get message buffer
24423 -----------------------------------------------------------------------*/
24424 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024425 usRcvPktFilterCfgSize,
24426 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024427 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
24428 {
24429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070024430 "Unable to get send buffer in "
24431 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24432 pEventData, pwdiSetRcvPktFilterReqInfo,
24433 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024434 WDI_ASSERT(0);
24435 wpalMemoryFree(pRcvPktFilterCfg);
24436 return WDI_STATUS_E_FAILURE;
24437 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024438
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024440 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070024441 usSendSize,usRcvPktFilterCfgSize);
24442
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024443 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24444 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24445 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24446 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070024447
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024449 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024450 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024451 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024452 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070024453 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070024454
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024455 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
24456 {
24457 pRcvPktFilterCfg->paramsData[i].protocolLayer =
24458 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24459 pRcvPktFilterCfg->paramsData[i].cmpFlag =
24460 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24461 pRcvPktFilterCfg->paramsData[i].dataOffset =
24462 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24463 pRcvPktFilterCfg->paramsData[i].dataLength =
24464 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070024465
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024466 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024467 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24468 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024469 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070024470 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24471 8);
24472
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024474 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070024475 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070024476 pRcvPktFilterCfg->paramsData[i].cmpFlag);
24477
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24479 "Data Offset %d Data Len %d\n",
24480 pRcvPktFilterCfg->paramsData[i].dataOffset,
24481 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024482
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24484 "CData: %d:%d:%d:%d:%d:%d\n",
24485 pRcvPktFilterCfg->paramsData[i].compareData[0],
24486 pRcvPktFilterCfg->paramsData[i].compareData[1],
24487 pRcvPktFilterCfg->paramsData[i].compareData[2],
24488 pRcvPktFilterCfg->paramsData[i].compareData[3],
24489 pRcvPktFilterCfg->paramsData[i].compareData[4],
24490 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070024491
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24493 "MData: %d:%d:%d:%d:%d:%d\n",
24494 pRcvPktFilterCfg->paramsData[i].dataMask[0],
24495 pRcvPktFilterCfg->paramsData[i].dataMask[1],
24496 pRcvPktFilterCfg->paramsData[i].dataMask[2],
24497 pRcvPktFilterCfg->paramsData[i].dataMask[3],
24498 pRcvPktFilterCfg->paramsData[i].dataMask[4],
24499 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
24500 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024501
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024502 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070024503 pRcvPktFilterCfg,
24504 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024505
24506
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024507 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24508 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024509
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024511 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024512 wpalMemoryFree(pRcvPktFilterCfg);
24513 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024515 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024516 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024517 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024518 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024519 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024520}
24521
24522/**
24523 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024524
24525 @param pWDICtx: pointer to the WLAN DAL context
24526 pEventData: pointer to the event information structure
24527
Jeff Johnson295189b2012-06-20 16:38:30 -070024528 @see
24529 @return Result of the function call
24530*/
24531WDI_Status
24532WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024533(
Jeff Johnson295189b2012-06-20 16:38:30 -070024534 WDI_ControlBlockType* pWDICtx,
24535 WDI_EventInfoType* pEventData
24536)
24537{
24538 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
24539 NULL;
24540 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
24541 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024542 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024543 wpt_uint16 usDataOffset = 0;
24544 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024545 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
24546 wpt_uint8 ucCurrentBSSSesIdx = 0;
24547 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024548
24549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024550 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024551
24552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024553 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024554 -------------------------------------------------------------------------*/
24555 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024556 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024557 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024558 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024559 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
24560 {
24561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024565 }
24566
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024567 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24568 pwdiRcvFltPktMatchCntReqParamsType->bssId,
24569 &pBSSSes);
24570 if ( NULL == pBSSSes )
24571 {
24572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024573 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024574 return WDI_STATUS_E_FAILURE;
24575 }
24576
Jeff Johnson295189b2012-06-20 16:38:30 -070024577 /*-----------------------------------------------------------------------
24578 Get message buffer
24579 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024580 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24581 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024582 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024583 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024584 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070024585 {
24586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24587 "Unable to get send buffer in "
24588 "WDI_ProcessFilterMatchCountReq() %x %x %x",
24589 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
24590 wdiFilterMatchCountCb);
24591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024593 }
24594
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024595 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
24596 wpalMemoryCopy( pSendBuffer+usDataOffset,
24597 &rcvFltPktMatchCntReqParam,
24598 sizeof(rcvFltPktMatchCntReqParam));
24599
Jeff Johnson295189b2012-06-20 16:38:30 -070024600 //
24601 // Don't need to fill send buffer other than header
24602 //
24603 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024604 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024605
24606
24607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024608 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024609 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024610 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24611 wdiFilterMatchCountCb,
24612 pEventData->pUserData,
24613 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024614}
24615
24616/**
24617 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024618
24619 @param pWDICtx: pointer to the WLAN DAL context
24620 pEventData: pointer to the event information structure
24621
Jeff Johnson295189b2012-06-20 16:38:30 -070024622 @see
24623 @return Result of the function call
24624*/
24625WDI_Status
24626WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024627(
Jeff Johnson295189b2012-06-20 16:38:30 -070024628 WDI_ControlBlockType* pWDICtx,
24629 WDI_EventInfoType* pEventData
24630)
Jeff Johnsone7245742012-09-05 17:12:55 -070024631{
Jeff Johnson295189b2012-06-20 16:38:30 -070024632 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24633 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024634 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024635 wpt_uint16 usDataOffset = 0;
24636 wpt_uint16 usSendSize = 0;
24637 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024638 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024639 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024640
24641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024642 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024643
24644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024645 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024646 -------------------------------------------------------------------------*/
24647 if (( NULL == pEventData ) ||
24648 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24649 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024650 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024651 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24652 {
24653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024654 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024655 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024656 return WDI_STATUS_E_FAILURE;
24657 }
24658
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024659 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024660 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24661 &pBSSSes);
24662 if ( NULL == pBSSSes )
24663 {
24664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024665 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024666 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024667 }
24668
24669 /*-----------------------------------------------------------------------
24670 Get message buffer
24671 -----------------------------------------------------------------------*/
24672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024673 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024674 sizeof(tHalRcvFltPktClearParam),
24675 &pSendBuffer, &usDataOffset, &usSendSize))||
24676 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24677 {
24678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24679 "Unable to get send buffer in "
24680 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24681 pEventData, pwdiRcvFltPktClearReqParamsType,
24682 wdiRcvFltPktClearFilterCb);
24683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024685 }
24686
24687
24688 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024689 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024690 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024691 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024692
Jeff Johnsone7245742012-09-05 17:12:55 -070024693 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24694 wpalMemoryCopy( pSendBuffer+usDataOffset,
24695 &rcvFltPktClearParam,
24696 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024697
24698 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024699 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024700
24701
24702 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024703 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024704 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024705 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024706 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024707 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024708}
24709
24710/**
24711 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024712
24713 @param pWDICtx: pointer to the WLAN DAL context
24714 pEventData: pointer to the event information structure
24715
Jeff Johnson295189b2012-06-20 16:38:30 -070024716 @see
24717 @return Result of the function call
24718*/
24719WDI_Status
24720WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024721(
Jeff Johnson295189b2012-06-20 16:38:30 -070024722 WDI_ControlBlockType* pWDICtx,
24723 WDI_EventInfoType* pEventData
24724)
24725{
Jeff Johnson295189b2012-06-20 16:38:30 -070024726 eHalStatus halStatus;
24727 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024728 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24729 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24731
24732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024733 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024734
24735 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024736 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024737 -------------------------------------------------------------------------*/
24738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24739 ( NULL == pEventData->pEventData ))
24740 {
24741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024744 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024745 }
24746
Jeff Johnsone7245742012-09-05 17:12:55 -070024747 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024748
24749 /*-------------------------------------------------------------------------
24750 Extract response and send it to UMAC
24751 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024752 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24753 {
24754 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24755 pEventData->pEventData,
24756 sizeof(halRcvFltPktSetMcListRsp));
24757
24758 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24759 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24760 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24761 halRcvFltPktSetMcListRsp.bssIdx;
24762 }
24763 else
24764 {
24765 halStatus = *((eHalStatus*)pEventData->pEventData);
24766 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24767 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024768
24769 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024770 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024771
Jeff Johnsone7245742012-09-05 17:12:55 -070024772 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024773}
24774
24775/**
24776 @brief Process Set Rsp function (called when a
24777 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024778
24779 @param pWDICtx: pointer to the WLAN DAL context
24780 pEventData: pointer to the event information structure
24781
Jeff Johnson295189b2012-06-20 16:38:30 -070024782 @see
24783 @return Result of the function call
24784*/
24785WDI_Status
24786WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024787(
Jeff Johnson295189b2012-06-20 16:38:30 -070024788 WDI_ControlBlockType* pWDICtx,
24789 WDI_EventInfoType* pEventData
24790)
24791{
Jeff Johnson295189b2012-06-20 16:38:30 -070024792 eHalStatus halStatus;
24793 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024794 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24795 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24797
24798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024799 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024800
24801 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024802 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024803 -------------------------------------------------------------------------*/
24804 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24805 ( NULL == pEventData->pEventData ))
24806 {
24807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024811 }
24812
24813 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024814 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024815
24816 /*-------------------------------------------------------------------------
24817 Extract response and send it to UMAC
24818 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024819 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24820 {
24821 wpalMemoryCopy( &halSetPktFilterRspParams,
24822 pEventData->pEventData,
24823 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024824
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024825 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24826 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24827 }
24828 else
24829 {
24830 halStatus = *((eHalStatus*)pEventData->pEventData);
24831 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24832 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024833 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024834 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024835
Jeff Johnsone7245742012-09-05 17:12:55 -070024836 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024837}
24838
24839/**
24840 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024841
24842 @param pWDICtx: pointer to the WLAN DAL context
24843 pEventData: pointer to the event information structure
24844
Jeff Johnson295189b2012-06-20 16:38:30 -070024845 @see
24846 @return Result of the function call
24847*/
24848WDI_Status
24849WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024850(
Jeff Johnson295189b2012-06-20 16:38:30 -070024851 WDI_ControlBlockType* pWDICtx,
24852 WDI_EventInfoType* pEventData
24853)
24854{
Jeff Johnson295189b2012-06-20 16:38:30 -070024855 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024856 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024857 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24858 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024859
24860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24861
24862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024863 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024864
24865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024867 -------------------------------------------------------------------------*/
24868 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24869 ( NULL == pEventData->pEventData ))
24870 {
24871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024875 }
24876
Jeff Johnsone7245742012-09-05 17:12:55 -070024877 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024878
24879 /*-------------------------------------------------------------------------
24880 Extract response and send it to UMAC
24881 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024882 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24883 {
24884 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24885 pEventData->pEventData,
24886 sizeof(halRcvFltrPktMatachRsp));
24887
24888 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24889 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24890 }
24891 else
24892 {
24893 halStatus = *((eHalStatus*)pEventData->pEventData);
24894 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24895 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024896
24897 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024898 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024899
Jeff Johnsone7245742012-09-05 17:12:55 -070024900 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024901}
24902
24903/**
24904 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024905
24906 @param pWDICtx: pointer to the WLAN DAL context
24907 pEventData: pointer to the event information structure
24908
Jeff Johnson295189b2012-06-20 16:38:30 -070024909 @see
24910 @return Result of the function call
24911*/
24912WDI_Status
24913WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024914(
Jeff Johnson295189b2012-06-20 16:38:30 -070024915 WDI_ControlBlockType* pWDICtx,
24916 WDI_EventInfoType* pEventData
24917)
24918{
Jeff Johnson295189b2012-06-20 16:38:30 -070024919 eHalStatus halStatus;
24920 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024921 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24922 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24924
24925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024926 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024927
24928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024930 -------------------------------------------------------------------------*/
24931 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24932 ( NULL == pEventData->pEventData ))
24933 {
24934 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024938 }
24939
24940 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024941 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024942
24943 /*-------------------------------------------------------------------------
24944 Extract response and send it to UMAC
24945 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024946 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24947 {
24948 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24949 pEventData->pEventData,
24950 sizeof(halRcvFltPktClearRspMsg));
24951
24952 wdiRcvFltPktClearRspParamsType.wdiStatus =
24953 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24954 wdiRcvFltPktClearRspParamsType.bssIdx =
24955 halRcvFltPktClearRspMsg.bssIdx;
24956 }
24957 else
24958 {
24959 halStatus = *((eHalStatus*)pEventData->pEventData);
24960 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24961 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024962
24963 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024964 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024965
Jeff Johnsone7245742012-09-05 17:12:55 -070024966 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024967}
24968#endif // WLAN_FEATURE_PACKET_FILTERING
24969
24970/**
24971 @brief Process Shutdown Rsp function
24972 There is no shutdown response comming from HAL
24973 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024974
Jeff Johnson295189b2012-06-20 16:38:30 -070024975 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024976 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024977
24978 @see
24979 @return Result of the function call
24980*/
24981WDI_Status
24982WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024983(
Jeff Johnson295189b2012-06-20 16:38:30 -070024984 WDI_ControlBlockType* pWDICtx,
24985 WDI_EventInfoType* pEventData
24986)
24987{
24988 /*There is no shutdown response comming from HAL - function just kept for
24989 simmetry */
24990 WDI_ASSERT(0);
24991 return WDI_STATUS_SUCCESS;
24992}/*WDI_ProcessShutdownRsp*/
24993
24994/**
24995 @brief WDI_SetPowerParamsReq
24996
Jeff Johnsone7245742012-09-05 17:12:55 -070024997 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024998 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024999
Jeff Johnson295189b2012-06-20 16:38:30 -070025000 wdiPowerParamsCb: callback for passing back the response
25001 of the Set Power Params operation received from the
25002 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025003
Jeff Johnson295189b2012-06-20 16:38:30 -070025004 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025005 callback
25006
Jeff Johnson295189b2012-06-20 16:38:30 -070025007 @return Result of the function call
25008*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025009WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025010WDI_SetPowerParamsReq
25011(
25012 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
25013 WDI_SetPowerParamsCb wdiPowerParamsCb,
25014 void* pUserData
25015)
25016{
25017 WDI_EventInfoType wdiEventData;
25018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25019
25020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025021 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025022 ------------------------------------------------------------------------*/
25023 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25024 {
25025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25026 "WDI API call before module is initialized - Fail request");
25027
Jeff Johnsone7245742012-09-05 17:12:55 -070025028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025029 }
25030
25031 /*------------------------------------------------------------------------
25032 Fill in Event data and post to the Main FSM
25033 ------------------------------------------------------------------------*/
25034 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025035 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025036 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025037 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025038 wdiEventData.pUserData = pUserData;
25039
25040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25041}/*WDI_SetPowerParamsReq*/
25042
25043/**
25044 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025045
25046 @param pWDICtx: pointer to the WLAN DAL context
25047 pEventData: pointer to the event information structure
25048
Jeff Johnson295189b2012-06-20 16:38:30 -070025049 @see
25050 @return Result of the function call
25051*/
25052WDI_Status
25053WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025054(
Jeff Johnson295189b2012-06-20 16:38:30 -070025055 WDI_ControlBlockType* pWDICtx,
25056 WDI_EventInfoType* pEventData
25057)
25058{
25059 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
25060 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025061 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025062 wpt_uint16 usDataOffset = 0;
25063 wpt_uint16 usSendSize = 0;
25064 tSetPowerParamsType powerParams;
25065
25066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025067 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025068 -------------------------------------------------------------------------*/
25069 if (( NULL == pEventData ) ||
25070 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
25071 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
25072 {
25073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025074 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025075 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025077 }
25078
25079 /*-----------------------------------------------------------------------
25080 Get message buffer
25081 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025082 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025083 sizeof(powerParams),
25084 &pSendBuffer, &usDataOffset, &usSendSize))||
25085 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
25086 {
25087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25088 "Unable to get send buffer in Set PNO req %x %x %x",
25089 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
25090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025092 }
25093
25094 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070025095 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070025096 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
25097
25098 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025099 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070025100 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
25101
25102 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025103 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070025104 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
25105
25106 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070025107 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070025108 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
25109
25110 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070025111 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
25113
25114 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025115 powerParams.uBETInterval =
25116 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070025117
Jeff Johnsone7245742012-09-05 17:12:55 -070025118
25119 wpalMemoryCopy( pSendBuffer+usDataOffset,
25120 &powerParams,
25121 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025122
25123 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025124 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025125
25126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025127 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025128 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025129 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25130 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025131}
25132
25133/**
25134 @brief Process Power Params Rsp function (called when a
25135 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025136
25137 @param pWDICtx: pointer to the WLAN DAL context
25138 pEventData: pointer to the event information structure
25139
Jeff Johnson295189b2012-06-20 16:38:30 -070025140 @see
25141 @return Result of the function call
25142*/
25143WDI_Status
25144WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025145(
Jeff Johnson295189b2012-06-20 16:38:30 -070025146 WDI_ControlBlockType* pWDICtx,
25147 WDI_EventInfoType* pEventData
25148)
25149{
25150 WDI_Status wdiStatus;
25151 eHalStatus halStatus;
25152 WDI_SetPowerParamsCb wdiPowerParamsCb;
25153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25154
25155 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025156 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025157 -------------------------------------------------------------------------*/
25158 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25159 ( NULL == pEventData->pEventData ))
25160 {
25161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025162 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025163 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025165 }
25166
Jeff Johnsone7245742012-09-05 17:12:55 -070025167 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025168
25169 /*-------------------------------------------------------------------------
25170 Extract response and send it to UMAC
25171 -------------------------------------------------------------------------*/
25172 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025173 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025174
25175 /*Notify UMAC*/
25176 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25177
Jeff Johnsone7245742012-09-05 17:12:55 -070025178 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025179}/*WDI_ProcessSetPowerParamsRsp*/
25180
25181#ifdef WLAN_FEATURE_GTK_OFFLOAD
25182/**
25183 @brief WDI_GTKOffloadReq will be called when the upper MAC
25184 wants to set GTK Rekey Counter while in power save. Upon
25185 the call of this API the WLAN DAL will pack and send a
25186 HAL GTK offload request message to the lower RIVA
25187 sub-system if DAL is in state STARTED.
25188
25189 In state BUSY this request will be queued. Request won't
25190 be allowed in any other state.
25191
25192 WDI_PostAssocReq must have been called.
25193
25194 @param pwdiGtkOffloadParams: the GTK offload as specified
25195 by the Device Interface
25196
25197 wdiGtkOffloadCb: callback for passing back the response
25198 of the GTK offload operation received from the device
25199
25200 pUserData: user data will be passed back with the
25201 callback
25202
25203 @see WDI_PostAssocReq
25204 @return Result of the function call
25205*/
25206WDI_Status
25207WDI_GTKOffloadReq
25208(
25209 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
25210 WDI_GtkOffloadCb wdiGtkOffloadCb,
25211 void* pUserData
25212)
25213{
25214 WDI_EventInfoType wdiEventData = {0};
25215 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25216
25217 /*------------------------------------------------------------------------
25218 Sanity Check
25219 ------------------------------------------------------------------------*/
25220 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25221 {
25222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25223 "WDI API call before module is initialized - Fail request");
25224
25225 return WDI_STATUS_E_NOT_ALLOWED;
25226 }
25227
25228 /*------------------------------------------------------------------------
25229 Fill in Event data and post to the Main FSM
25230 ------------------------------------------------------------------------*/
25231 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
25232 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070025233 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070025234 wdiEventData.pCBfnc = wdiGtkOffloadCb;
25235 wdiEventData.pUserData = pUserData;
25236
25237 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25238}
25239
25240
25241/**
25242 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
25243 MAC wants to get GTK Rekey Counter while in power save.
25244 Upon the call of this API the WLAN DAL will pack and
25245 send a HAL GTK offload request message to the lower RIVA
25246 sub-system if DAL is in state STARTED.
25247
25248 In state BUSY this request will be queued. Request won't
25249 be allowed in any other state.
25250
25251 WDI_PostAssocReq must have been called.
25252
25253 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
25254 Information Message as specified by the
25255 Device Interface
25256
25257 wdiGtkOffloadGetInfoCb: callback for passing back the
25258 response of the GTK offload operation received from the
25259 device
25260
25261 pUserData: user data will be passed back with the
25262 callback
25263
25264 @see WDI_PostAssocReq
25265 @return Result of the function call
25266*/
25267WDI_Status
25268WDI_GTKOffloadGetInfoReq
25269(
25270 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
25271 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
25272 void* pUserData
25273)
25274{
25275 WDI_EventInfoType wdiEventData = {0};
25276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25277
25278 /*------------------------------------------------------------------------
25279 Sanity Check
25280 ------------------------------------------------------------------------*/
25281 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25282 {
25283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25284 "WDI API call before module is initialized - Fail request");
25285
25286 return WDI_STATUS_E_NOT_ALLOWED;
25287 }
25288
25289 /*------------------------------------------------------------------------
25290 Fill in Event data and post to the Main FSM
25291 ------------------------------------------------------------------------*/
25292 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
25293 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
25294 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
25295 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
25296 wdiEventData.pUserData = pUserData;
25297
25298 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25299}
25300
25301
25302/**
25303 @brief Process set GTK Offload Request function
25304
25305 @param pWDICtx: pointer to the WLAN DAL context
25306 pEventData: pointer to the event information structure
25307
25308 @see
25309 @return Result of the function call
25310*/
25311WDI_Status
25312WDI_ProcessGTKOffloadReq
25313(
25314 WDI_ControlBlockType* pWDICtx,
25315 WDI_EventInfoType* pEventData
25316)
25317{
25318 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
25319 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
25320 wpt_uint8* pSendBuffer = NULL;
25321 wpt_uint16 usDataOffset = 0;
25322 wpt_uint16 usSendSize = 0;
25323 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025324 wpt_uint8 ucCurrentSessionId = 0;
25325 WDI_BSSSessionType* pBSSSes = NULL;
25326
Jeff Johnson295189b2012-06-20 16:38:30 -070025327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25328
25329 /*-------------------------------------------------------------------------
25330 Sanity check
25331 -------------------------------------------------------------------------*/
25332 if (( NULL == pEventData ) ||
25333 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
25334 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
25335 {
25336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025337 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025338 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025339 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025340 }
25341
25342 /*-----------------------------------------------------------------------
25343 Get message buffer
25344 -----------------------------------------------------------------------*/
25345 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
25346 sizeof(gtkOffloadReqParams),
25347 &pSendBuffer, &usDataOffset, &usSendSize))||
25348 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
25349 {
25350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25351 "Unable to get send buffer in GTK offload req %x %x %x",
25352 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
25353 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025354 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025355 }
25356
25357 //
25358 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
25359 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025360 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25361 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
25362 &pBSSSes);
25363 if ( NULL == pBSSSes )
25364 {
25365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025366 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025367 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025368 }
25369
25370 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
25371
Jeff Johnson295189b2012-06-20 16:38:30 -070025372 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
25373 // Copy KCK
25374 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
25375 // Copy KEK
25376 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
25377 // Copy KeyReplayCounter
25378 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
25379
25380 wpalMemoryCopy( pSendBuffer+usDataOffset,
25381 &gtkOffloadReqParams,
25382 sizeof(gtkOffloadReqParams));
25383
25384 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
25385 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
25386
25387 /*-------------------------------------------------------------------------
25388 Send Get STA Request to HAL
25389 -------------------------------------------------------------------------*/
25390 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25391 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025392
25393fail:
25394 // Release the message buffer so we don't leak
25395 wpalMemoryFree(pSendBuffer);
25396
25397failRequest:
25398 //WDA should have failure check to avoid the memory leak
25399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025400}
25401
25402
25403/**
25404 @brief Process GTK Offload Get Information Request function
25405
25406 @param pWDICtx: pointer to the WLAN DAL context
25407 pEventData: pointer to the event information structure
25408
25409 @see
25410 @return Result of the function call
25411*/
25412WDI_Status
25413WDI_ProcessGTKOffloadGetInfoReq
25414(
25415 WDI_ControlBlockType* pWDICtx,
25416 WDI_EventInfoType* pEventData
25417)
25418{
25419 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
25420 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
25421 wpt_uint8* pSendBuffer = NULL;
25422 wpt_uint16 usDataOffset = 0;
25423 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025424 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
25425 wpt_uint8 ucCurrentSessionId = 0;
25426 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025427
25428 /*-------------------------------------------------------------------------
25429 Sanity check
25430 -------------------------------------------------------------------------*/
25431 if (( NULL == pEventData ) ||
25432 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
25433 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
25434 {
25435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025437 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025438 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025439 }
25440
25441 /*-----------------------------------------------------------------------
25442 Get message buffer
25443 -----------------------------------------------------------------------*/
25444 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025445 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025446 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025447 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070025448 {
25449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25450 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
25451 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
25452 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025453 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025454 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025455 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25456 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
25457 &pBSSSes);
25458 if ( NULL == pBSSSes )
25459 {
25460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025461 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025462 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025463 }
25464 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025465
25466 //
25467 // Don't need to fill send buffer other than header
25468 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025469 wpalMemoryCopy( pSendBuffer+usDataOffset,
25470 &halGtkOffloadGetInfoReqParams,
25471 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025472
25473 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
25474 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
25475
25476 /*-------------------------------------------------------------------------
25477 Send Get STA Request to HAL
25478 -------------------------------------------------------------------------*/
25479 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25480 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025481fail:
25482 // Release the message buffer so we don't leak
25483 wpalMemoryFree(pSendBuffer);
25484
25485failRequest:
25486 //WDA should have failure check to avoid the memory leak
25487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025488}
25489
25490/**
25491 @brief Process host offload Rsp function (called when a
25492 response is being received over the bus from HAL)
25493
25494 @param pWDICtx: pointer to the WLAN DAL context
25495 pEventData: pointer to the event information structure
25496
25497 @see
25498 @return Result of the function call
25499*/
25500WDI_Status
25501WDI_ProcessGtkOffloadRsp
25502(
25503 WDI_ControlBlockType* pWDICtx,
25504 WDI_EventInfoType* pEventData
25505)
25506{
Jeff Johnson295189b2012-06-20 16:38:30 -070025507 eHalStatus halStatus;
25508 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025509 tHalGtkOffloadRspParams halGtkOffloadRspParams;
25510 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25512
25513 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
25514
25515 /*-------------------------------------------------------------------------
25516 Sanity check
25517 -------------------------------------------------------------------------*/
25518 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25519 ( NULL == pEventData->pEventData))
25520 {
25521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025522 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025523 WDI_ASSERT(0);
25524 return WDI_STATUS_E_FAILURE;
25525 }
25526
25527 /*-------------------------------------------------------------------------
25528 Extract response and send it to UMAC
25529 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025530 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25531 {
25532 wpalMemoryCopy( &halGtkOffloadRspParams,
25533 pEventData->pEventData,
25534 sizeof(halGtkOffloadRspParams));
25535
25536 wdiGtkOffloadRsparams.ulStatus =
25537 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
25538 wdiGtkOffloadRsparams.bssIdx =
25539 halGtkOffloadRspParams.bssIdx;
25540 }
25541 else
25542 {
25543 halStatus = *((eHalStatus*)pEventData->pEventData);
25544 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25545 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025546
25547 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025548 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025549
25550 return WDI_STATUS_SUCCESS;
25551}
25552
25553/**
25554 @brief Process GTK Offload Get Information Response function
25555
25556 @param pWDICtx: pointer to the WLAN DAL context
25557 pEventData: pointer to the event information structure
25558
25559 @see
25560 @return Result of the function call
25561*/
25562WDI_Status
25563WDI_ProcessGTKOffloadGetInfoRsp
25564(
25565 WDI_ControlBlockType* pWDICtx,
25566 WDI_EventInfoType* pEventData
25567)
25568{
Jeff Johnson295189b2012-06-20 16:38:30 -070025569 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025570 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025571 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
25572 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025573
25574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25575
25576 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
25577
25578 /*-------------------------------------------------------------------------
25579 Sanity check
25580 -------------------------------------------------------------------------*/
25581 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25582 ( NULL == pEventData->pEventData ))
25583 {
25584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025585 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025586 WDI_ASSERT(0);
25587 return WDI_STATUS_E_FAILURE;
25588 }
25589
25590 /*-------------------------------------------------------------------------
25591 Extract response and send it to UMAC
25592 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025593 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25594 {
25595 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
25596 pEventData->pEventData,
25597 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025598
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025599 wdiGtkOffloadGetInfoRsparams.ulStatus =
25600 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
25601 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
25602 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
25603 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
25604 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
25605 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
25606 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
25607 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
25608 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
25609 wdiGtkOffloadGetInfoRsparams.bssIdx =
25610 halGtkOffloadGetInfoRspParams.bssIdx;
25611 }
25612 else
25613 {
25614 halStatus = *((eHalStatus*)pEventData->pEventData);
25615 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25616 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025617 /*Notify UMAC*/
25618 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25619 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025620 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025621
25622 return WDI_STATUS_SUCCESS;
25623}
25624#endif // WLAN_FEATURE_GTK_OFFLOAD
25625
25626#ifdef WLAN_WAKEUP_EVENTS
25627WDI_Status
25628WDI_ProcessWakeReasonInd
25629(
25630 WDI_ControlBlockType* pWDICtx,
25631 WDI_EventInfoType* pEventData
25632)
25633{
25634 WDI_LowLevelIndType *pWdiInd;
25635 tpWakeReasonParams pWakeReasonParams;
25636 wpt_uint32 allocSize = 0;
25637
25638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025639 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025640
25641 /*-------------------------------------------------------------------------
25642 Sanity check
25643 -------------------------------------------------------------------------*/
25644 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25645 ( NULL == pEventData->pEventData ))
25646 {
25647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025649 WDI_ASSERT( 0 );
25650 return WDI_STATUS_E_FAILURE;
25651 }
25652
25653 /*-------------------------------------------------------------------------
25654 Extract indication and send it to UMAC
25655 -------------------------------------------------------------------------*/
25656 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25657
25658 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25659
25660 //Allocate memory for WDI_WakeReasonIndType structure
25661 pWdiInd = wpalMemoryAllocate(allocSize) ;
25662
25663 if(NULL == pWdiInd)
25664 {
25665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25666 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025667 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025668 WDI_ASSERT(0);
25669 return WDI_STATUS_E_FAILURE;
25670 }
25671
25672 wpalMemoryZero(pWdiInd, allocSize);
25673
25674 /* Fill in the indication parameters*/
25675 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25676 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25677 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25678 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25679 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25680 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25681 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25682 &(pWakeReasonParams->aDataStart[0]),
25683 pWakeReasonParams->ulStoredDataLen);
25684
ltimariu034f7d62013-01-24 18:54:33 -080025685
25686 if ( pWDICtx->wdiLowLevelIndCB )
25687 {
25688 /*Notify UMAC*/
25689 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25690 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025691
25692 //Free memory allocated for WDI_WakeReasonIndType structure
25693 wpalMemoryFree(pWdiInd);
25694
25695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025696 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025697
25698 return WDI_STATUS_SUCCESS;
25699}
25700#endif // WLAN_WAKEUP_EVENTS
25701
25702void WDI_GetWcnssCompiledApiVersion
25703(
25704 WDI_WlanVersionType *pWcnssApiVersion
25705)
25706{
25707 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25708 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25709 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25710 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25711}
25712
25713/**
25714 @brief Process Set TM Level Rsp function (called when a
25715 response is being received over the bus from HAL)
25716
25717 @param pWDICtx: pointer to the WLAN DAL context
25718 pEventData: pointer to the event information structure
25719
25720 @see
25721 @return Result of the function call
25722*/
25723WDI_Status
25724WDI_ProcessSetTmLevelRsp
25725(
25726 WDI_ControlBlockType* pWDICtx,
25727 WDI_EventInfoType* pEventData
25728)
25729{
25730 WDI_Status wdiStatus;
25731 eHalStatus halStatus;
25732 WDI_SetTmLevelCb wdiSetTmLevelCb;
25733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25734
25735 /*-------------------------------------------------------------------------
25736 Sanity check
25737 -------------------------------------------------------------------------*/
25738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25739 ( NULL == pEventData->pEventData ))
25740 {
25741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025742 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025743 WDI_ASSERT(0);
25744 return WDI_STATUS_E_FAILURE;
25745 }
25746
25747 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25748
25749 /*-------------------------------------------------------------------------
25750 Extract response and send it to UMAC
25751 -------------------------------------------------------------------------*/
25752 halStatus = *((eHalStatus*)pEventData->pEventData);
25753 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25754
25755 /*Notify UMAC*/
25756 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25757
25758 return WDI_STATUS_SUCCESS;
25759}/*WDI_ProcessSetTmLevelRsp*/
25760
25761/**
25762 @brief Process Set Thermal Mitigation level Changed request
25763
25764 @param pWDICtx: pointer to the WLAN DAL context
25765 pEventData: pointer to the event information structure
25766
25767 @see
25768 @return Result of the function call
25769*/
25770WDI_Status
25771WDI_ProcessSetTmLevelReq
25772(
25773 WDI_ControlBlockType* pWDICtx,
25774 WDI_EventInfoType* pEventData
25775)
25776{
25777 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25778 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25779 wpt_uint8* pSendBuffer = NULL;
25780 wpt_uint16 usDataOffset = 0;
25781 wpt_uint16 usSendSize = 0;
25782 tSetThermalMitgationType halTmMsg;
25783
25784 /*-------------------------------------------------------------------------
25785 Sanity check
25786 -------------------------------------------------------------------------*/
25787 if (( NULL == pEventData ) ||
25788 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25789 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25790 {
25791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025793 WDI_ASSERT(0);
25794 return WDI_STATUS_E_FAILURE;
25795 }
25796
25797 /*-----------------------------------------------------------------------
25798 Get message buffer
25799 -----------------------------------------------------------------------*/
25800 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25801 sizeof(halTmMsg),
25802 &pSendBuffer, &usDataOffset, &usSendSize))||
25803 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25804 {
25805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25806 "Unable to get send buffer in Set PNO req %x %x %x",
25807 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25808 WDI_ASSERT(0);
25809 return WDI_STATUS_E_FAILURE;
25810 }
25811
25812 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25813 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25814
25815 wpalMemoryCopy( pSendBuffer+usDataOffset,
25816 &halTmMsg,
25817 sizeof(halTmMsg));
25818
25819 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25820 pWDICtx->pfncRspCB = NULL;
25821 /*-------------------------------------------------------------------------
25822 Send Get STA Request to HAL
25823 -------------------------------------------------------------------------*/
25824 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25825 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25826}
25827
25828/* Fill the value from the global features enabled array to the global capabilities
25829 * bitmap struct
25830 */
25831static void
25832FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25833{
25834 wpt_int8 i;
25835 for (i=0; i<len; i++)
25836 {
25837 setFeatCaps(fCaps, enabledFeat[i]);
25838 }
25839}
25840
25841/**
25842 @brief WDI_featureCapsExchangeReq
25843 Post feature capability bitmap exchange event.
25844 Host will send its own capability to FW in this req and
25845 expect FW to send its capability back as a bitmap in Response
25846
25847 @param
25848
25849 wdiFeatureCapsExchangeCb: callback called on getting the response.
25850 It is kept to mantain similarity between WDI reqs and if needed, can
25851 be used in future. Currently, It is set to NULL
25852
25853 pUserData: user data will be passed back with the
25854 callback
25855
25856 @see
25857 @return Result of the function call
25858*/
25859WDI_Status
25860WDI_featureCapsExchangeReq
25861(
25862 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25863 void* pUserData
25864)
25865{
25866 WDI_EventInfoType wdiEventData;
25867 wpt_int32 fCapsStructSize;
25868
25869 /*------------------------------------------------------------------------
25870 Sanity Check
25871 ------------------------------------------------------------------------*/
25872 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25873 {
25874 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25875 "WDI API call before module is initialized - Fail request");
25876
25877 return WDI_STATUS_E_NOT_ALLOWED;
25878 }
25879
25880 /* Allocate memory separately for global variable carrying FW caps */
25881 fCapsStructSize = sizeof(tWlanFeatCaps);
25882 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25883 if ( NULL == gpHostWlanFeatCaps )
25884 {
25885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25886 "Cannot allocate memory for host capability info\n");
25887 WDI_ASSERT(0);
25888 return WDI_STATUS_MEM_FAILURE;
25889 }
25890
25891 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25892
25893 /*------------------------------------------------------------------------
25894 Fill in Event data and post to the Main FSM
25895 ------------------------------------------------------------------------*/
25896 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25897 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25899 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025900 gpHostWlanFeatCaps->featCaps[0],
25901 gpHostWlanFeatCaps->featCaps[1],
25902 gpHostWlanFeatCaps->featCaps[2],
25903 gpHostWlanFeatCaps->featCaps[3]
25904 );
25905
25906 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25907 wdiEventData.pEventData = gpHostWlanFeatCaps;
25908 wdiEventData.uEventDataSize = fCapsStructSize;
25909 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25910 wdiEventData.pUserData = pUserData;
25911
25912 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25913}
25914
25915/**
Yathishd8713192012-12-10 14:21:35 -080025916 @brief Disable Active mode offload in Host
25917
25918 @param void
25919 @see
25920 @return void
25921*/
25922void
25923WDI_disableCapablityFeature(wpt_uint8 feature_index)
25924{
25925 supportEnabledFeatures[feature_index] = 0;
25926 return;
25927}
25928
25929/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025930 @brief Process Host-FW Capability Exchange Request function
25931
25932 @param pWDICtx: pointer to the WLAN DAL context
25933 pEventData: pointer to the event information structure
25934
25935 @see
25936 @return Result of the function call
25937*/
25938WDI_Status
25939WDI_ProcessFeatureCapsExchangeReq
25940(
25941 WDI_ControlBlockType* pWDICtx,
25942 WDI_EventInfoType* pEventData
25943)
25944{
25945 wpt_uint8* pSendBuffer = NULL;
25946 wpt_uint16 usDataOffset = 0;
25947 wpt_uint16 usSendSize = 0;
25948 wpt_uint16 usLen = 0;
25949
25950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25951
25952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025953 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025954
25955 /*-------------------------------------------------------------------------
25956 Sanity check
25957 -------------------------------------------------------------------------*/
25958 /* Call back function is NULL since not required for cap exchange req */
25959 if (( NULL == pEventData ) ||
25960 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25961 {
25962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025964 WDI_ASSERT(0);
25965 return WDI_STATUS_E_FAILURE;
25966 }
25967
25968 /*-----------------------------------------------------------------------
25969 Get message buffer
25970 -----------------------------------------------------------------------*/
25971 usLen = sizeof(tWlanFeatCaps);
25972
25973 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25974 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25975 usLen,
25976 &pSendBuffer, &usDataOffset, &usSendSize))||
25977 ( usSendSize < (usDataOffset + usLen )))
25978 {
25979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25980 "Unable to get send buffer in feat caps exchange req %x %x",
25981 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25982 WDI_ASSERT(0);
25983 return WDI_STATUS_E_FAILURE;
25984 }
25985
25986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025987 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025988 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25989 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25990 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25991 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25992 );
25993
25994 /* Copy host caps after the offset in the send buffer */
25995 wpalMemoryCopy( pSendBuffer+usDataOffset,
25996 (tWlanFeatCaps *)pEventData->pEventData,
25997 usLen);
25998
25999 /*-------------------------------------------------------------------------
26000 Send Start Request to HAL
26001 -------------------------------------------------------------------------*/
26002 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26003 (WDI_StartRspCb)pEventData->pCBfnc,
26004 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
26005
26006}/*WDI_ProcessFeatureCapsExchangeReq*/
26007
26008/**
26009 @brief Process Host-FW Capability Exchange Response function
26010
26011 @param pWDICtx: pointer to the WLAN DAL context
26012 pEventData: pointer to the event information structure
26013
26014 @see
26015 @return Result of the function call
26016*/
26017WDI_Status
26018WDI_ProcessFeatureCapsExchangeRsp
26019(
26020 WDI_ControlBlockType* pWDICtx,
26021 WDI_EventInfoType* pEventData
26022)
26023{
26024 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
26025 wpt_int32 fCapsStructSize;
26026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26027
26028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026029 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026030
26031 /*-------------------------------------------------------------------------
26032 Sanity check
26033 -------------------------------------------------------------------------*/
26034 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26035 ( NULL == pEventData->pEventData ))
26036 {
26037 /* It will go here when riva is old (doesn't understand this msg) and host is new */
26038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026040 WDI_ASSERT(0);
26041 return WDI_STATUS_E_FAILURE;
26042 }
26043
26044 /* Allocate memory separately for global variable carrying FW caps */
26045 fCapsStructSize = sizeof(tWlanFeatCaps);
26046 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26047 if ( NULL == gpFwWlanFeatCaps )
26048 {
26049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26050 "Cannot allocate memory for host capability info\n");
26051 WDI_ASSERT(0);
26052 return WDI_STATUS_MEM_FAILURE;
26053 }
26054
26055 /*-------------------------------------------------------------------------
26056 Unpack HAL Response Message - the header was already extracted by the
26057 main Response Handling procedure
26058 -------------------------------------------------------------------------*/
26059 /*-------------------------------------------------------------------------
26060 Extract response and send it to UMAC
26061 -------------------------------------------------------------------------*/
26062
26063 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
26064 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070026065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26066 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026067 gpFwWlanFeatCaps->featCaps[0],
26068 gpFwWlanFeatCaps->featCaps[1],
26069 gpFwWlanFeatCaps->featCaps[2],
26070 gpFwWlanFeatCaps->featCaps[3]
26071 );
Jeff Johnson295189b2012-06-20 16:38:30 -070026072 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
26073
26074 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
26075 if (wdiFeatureCapsExchangeCb != NULL)
26076 wdiFeatureCapsExchangeCb(NULL, NULL);
26077
26078 return WDI_STATUS_SUCCESS;
26079}
26080
Mohit Khanna4a70d262012-09-11 16:30:12 -070026081#ifdef WLAN_FEATURE_11AC
26082WDI_Status
26083WDI_ProcessUpdateVHTOpModeRsp
26084(
26085 WDI_ControlBlockType* pWDICtx,
26086 WDI_EventInfoType* pEventData
26087)
26088{
26089 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26090 WDI_Status wdiStatus;
26091 eHalStatus halStatus;
26092
26093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26094
26095 /*-------------------------------------------------------------------------
26096 Sanity check
26097 -------------------------------------------------------------------------*/
26098 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26099 ( NULL == pEventData->pEventData))
26100 {
26101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026102 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026103 WDI_ASSERT(0);
26104 return WDI_STATUS_E_FAILURE;
26105 }
26106 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
26107
26108 /*-------------------------------------------------------------------------
26109 Extract response and send it to UMAC
26110 -------------------------------------------------------------------------*/
26111 halStatus = *((eHalStatus*)pEventData->pEventData);
26112 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26113
26114 /*Notify UMAC*/
26115 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
26116
26117 return WDI_STATUS_SUCCESS;
26118}
26119#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026120/**
26121 @brief WDI_getHostWlanFeatCaps
26122 WDI API that returns whether the feature passed to it as enum value in
26123 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
26124 variable storing host capability bitmap to find this. This can be used by
26125 other moduels to decide certain things like call different APIs based on
26126 whether a particular feature is supported.
26127
26128 @param
26129
26130 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
26131
26132 @see
26133 @return
26134 0 - if the feature is NOT supported in host
26135 any non-zero value - if the feature is SUPPORTED in host.
26136*/
26137wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
26138{
26139 wpt_uint8 featSupported = 0;
26140 if (gpHostWlanFeatCaps != NULL)
26141 {
26142 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
26143 }
26144 else
26145 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026147 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026148 }
26149 return featSupported;
26150}
26151
26152/**
26153 @brief WDI_getFwWlanFeatCaps
26154 WDI API that returns whether the feature passed to it as enum value in
26155 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
26156 variable storing host capability bitmap to find this. This can be used by
26157 other moduels to decide certain things like call different APIs based on
26158 whether a particular feature is supported.
26159
26160 @param
26161
26162 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
26163 in wlan_hal_msg.h.
26164
26165 @see
26166 @return
26167 0 - if the feature is NOT supported in FW
26168 any non-zero value - if the feature is SUPPORTED in FW.
26169*/
26170wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
26171{
26172 wpt_uint8 featSupported = 0;
26173 if (gpFwWlanFeatCaps != NULL)
26174 {
26175 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
26176 }
26177 else
26178 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026180 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026181 }
26182 return featSupported;
26183}
Mohit Khanna4a70d262012-09-11 16:30:12 -070026184
26185#ifdef WLAN_FEATURE_11AC
26186WDI_Status
26187WDI_ProcessUpdateVHTOpModeReq
26188(
26189 WDI_ControlBlockType* pWDICtx,
26190 WDI_EventInfoType* pEventData
26191)
26192{
26193 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
26194 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26195 wpt_uint8* pSendBuffer = NULL;
26196 wpt_uint16 usDataOffset = 0;
26197 wpt_uint16 usSendSize = 0;
26198
26199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26200
26201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026202 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026203
26204 /*-------------------------------------------------------------------------
26205 Sanity check
26206 -------------------------------------------------------------------------*/
26207 if (( NULL == pEventData ) ||
26208 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
26209 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
26210 {
26211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026212 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026213 WDI_ASSERT(0);
26214 return WDI_STATUS_E_FAILURE;
26215 }
26216
26217 /*-----------------------------------------------------------------------
26218 Get message buffer
26219 -----------------------------------------------------------------------*/
26220 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
26221 sizeof(WDI_UpdateVHTOpMode),
26222 &pSendBuffer, &usDataOffset, &usSendSize))||
26223 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
26224 {
26225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26226 "Unable to get send buffer in update vht opMode req");
26227 WDI_ASSERT(0);
26228 return WDI_STATUS_E_FAILURE;
26229 }
26230
26231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26232 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
26233
26234 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
26235 sizeof(WDI_UpdateVHTOpMode));
26236
26237 /*-------------------------------------------------------------------------
26238 Send Start Request to HAL
26239 -------------------------------------------------------------------------*/
26240 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26241 wdiVHTOpModeCb,
26242 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
26243
26244}
26245
26246WDI_Status
26247WDI_UpdateVHTOpModeReq
26248(
26249 WDI_UpdateVHTOpMode *pData,
26250 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
26251 void* pUserData
26252)
26253{
26254 WDI_EventInfoType wdiEventData;
26255
26256 /*------------------------------------------------------------------------
26257 Sanity Check
26258 ------------------------------------------------------------------------*/
26259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26260 {
26261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26262 "WDI API call before module is initialized - Fail request");
26263
26264 return WDI_STATUS_E_NOT_ALLOWED;
26265 }
26266
26267 /*------------------------------------------------------------------------
26268 Fill in Event data and post to the Main FSM
26269 ------------------------------------------------------------------------*/
26270 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
26271 wdiEventData.pEventData = pData;
26272 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
26273 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
26274 wdiEventData.pUserData = pUserData;
26275
26276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26277 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
26278
26279 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26280
26281}
26282#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026283
26284/**
26285 @brief WDI_TransportChannelDebug -
26286 Display DXE Channel debugging information
26287 User may request to display DXE channel snapshot
26288 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026289
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080026290 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026291 @param enableStallDetect : Enable stall detect feature
26292 This feature will take effect to data performance
26293 Not integrate till fully verification
26294 @see
26295 @return none
26296*/
26297void WDI_TransportChannelDebug
26298(
26299 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026300 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026301)
26302{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026303 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026304 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070026305}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026306/**
26307 @brief WDI_SsrTimerCB
26308 Callback function for SSR timer, if this is called then the graceful
26309 shutdown for Riva did not happen.
26310
26311 @param pUserData : user data to timer
26312
26313 @see
26314 @return none
26315*/
26316void
26317WDI_SsrTimerCB
26318(
26319 void *pUserData
26320)
26321{
26322 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
26323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26324
26325 if (NULL == pWDICtx )
26326 {
26327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026328 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026329 WDI_ASSERT(0);
26330 return;
26331 }
26332 wpalRivaSubystemRestart();
26333
26334 return;
26335
26336}/*WDI_SsrTimerCB*/