blob: 0a3da4739d1dcdf7410c0978eb46c7bcdb1d582d [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
Jeff Johnsone7245742012-09-05 17:12:55 -07007700 wpalMemoryCopy( pSendBuffer+usDataOffset,
7701 &halConfigBssReqMsg.uBssParams.configBssParams,
7702 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -07007703
7704 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007706
7707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007708 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007709 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007710 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7711 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007712 WDI_CONFIG_BSS_RESP);
7713
7714}/*WDI_ProcessConfigBSSReq*/
7715
7716
7717/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007718 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007719 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007720
7721 @param pWDICtx: pointer to the WLAN DAL context
7722 pEventData: pointer to the event information structure
7723
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 @see
7725 @return Result of the function call
7726*/
7727WDI_Status
7728WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007729(
Jeff Johnson295189b2012-06-20 16:38:30 -07007730 WDI_ControlBlockType* pWDICtx,
7731 WDI_EventInfoType* pEventData
7732)
7733{
7734 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7735 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007736 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007737 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007738 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007739 wpt_uint16 usDataOffset = 0;
7740 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007741 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007742
Jeff Johnsone7245742012-09-05 17:12:55 -07007743 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7745
7746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 -------------------------------------------------------------------------*/
7749 if (( NULL == pEventData ) ||
7750 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7751 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7752 {
7753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007754 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007755 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 }
7758
7759 /*-------------------------------------------------------------------------
7760 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007761 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007762 -------------------------------------------------------------------------*/
7763 wpalMutexAcquire(&pWDICtx->wptMutex);
7764
7765 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007766 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007767 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007768 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7769 pwdiDelBSSParams->ucBssIdx,
7770 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007771
Jeff Johnsone7245742012-09-05 17:12:55 -07007772 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 {
7774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007775 "%s: BSS does not yet exist. ucBssIdx %d",
7776 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007777
7778 wpalMutexRelease(&pWDICtx->wptMutex);
7779
7780 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007781 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007782
7783 /*------------------------------------------------------------------------
7784 Check if this BSS is being currently processed or queued,
7785 if queued - queue the new request as well
7786 ------------------------------------------------------------------------*/
7787 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7790 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7791 __func__, pwdiDelBSSParams->ucBssIdx);
7792
7793 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7794
7795 wpalMutexRelease(&pWDICtx->wptMutex);
7796
7797 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007798 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007799
Jeff Johnson295189b2012-06-20 16:38:30 -07007800 /*-----------------------------------------------------------------------
7801 If we receive a Del BSS request for an association that is already in
7802 progress, it indicates that the assoc has failed => we no longer have
7803 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007804 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007805 -----------------------------------------------------------------------*/
7806 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7807 {
7808 /*We can switch to false here because even if a subsequent Join comes in
7809 it will only be processed when DAL transitions out of BUSY state which
7810 happens when the Del BSS request comes */
7811 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7812
7813 /*Former association is complete - prepare next pending assoc for
7814 processing */
7815 WDI_DequeueAssocRequest(pWDICtx);
7816 }
7817
7818 wpalMutexRelease(&pWDICtx->wptMutex);
7819 /*-----------------------------------------------------------------------
7820 Get message buffer
7821 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007822 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007823 sizeof(halBssReqMsg.deleteBssParams),
7824 &pSendBuffer, &usDataOffset, &usSendSize))||
7825 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7826 {
7827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7828 "Unable to get send buffer in start req %x %x %x",
7829 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 }
7833
7834 /*Fill in the message request structure*/
7835
7836 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007837 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007838
Jeff Johnsone7245742012-09-05 17:12:55 -07007839 wpalMemoryCopy( pSendBuffer+usDataOffset,
7840 &halBssReqMsg.deleteBssParams,
7841 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007842
7843 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007844 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007845
Jeff Johnsone7245742012-09-05 17:12:55 -07007846
Jeff Johnson295189b2012-06-20 16:38:30 -07007847 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007850 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007851 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7852
Jeff Johnsone7245742012-09-05 17:12:55 -07007853
Jeff Johnson295189b2012-06-20 16:38:30 -07007854}/*WDI_ProcessDelBSSReq*/
7855
7856/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007857 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007858 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007859
7860 @param pWDICtx: pointer to the WLAN DAL context
7861 pEventData: pointer to the event information structure
7862
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 @see
7864 @return Result of the function call
7865*/
7866WDI_Status
7867WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007868(
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 WDI_ControlBlockType* pWDICtx,
7870 WDI_EventInfoType* pEventData
7871)
7872{
7873 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7874 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007875 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007876 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007877 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007878 wpt_uint16 usDataOffset = 0;
7879 wpt_uint16 usSendSize = 0;
7880 wpt_uint16 uMsgSize = 0;
7881 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007883
Jeff Johnsone7245742012-09-05 17:12:55 -07007884 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7886
7887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007889 -------------------------------------------------------------------------*/
7890 if (( NULL == pEventData ) ||
7891 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7892 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7893 {
7894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 }
7899
7900 /*-------------------------------------------------------------------------
7901 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007902 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007903 -------------------------------------------------------------------------*/
7904 wpalMutexAcquire(&pWDICtx->wptMutex);
7905
7906 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007908 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007909 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7910 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7911 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007912
7913 if ( NULL == pBSSSes )
7914 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7916 "%s: Association sequence for this BSS does not yet exist - "
7917 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7918 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007919
7920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007922 }
7923
7924 /*------------------------------------------------------------------------
7925 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007926 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007927 ------------------------------------------------------------------------*/
7928 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7929 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7931 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7932 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007933
Jeff Johnsone7245742012-09-05 17:12:55 -07007934 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007935
7936 wpalMutexRelease(&pWDICtx->wptMutex);
7937
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 }
7940
7941 /*-----------------------------------------------------------------------
7942 If Post Assoc was not yet received - the current association must
7943 be in progress
7944 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7947 {
7948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7949 "Association sequence for this BSS association no longer in "
7950 "progress - not allowed");
7951
7952 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007953 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007954 }
7955
7956 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007957 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007958 -----------------------------------------------------------------------*/
7959 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7960 {
7961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7962 "Post Assoc not allowed before JOIN - failing request");
7963
7964 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 }
7967
7968 wpalMutexRelease(&pWDICtx->wptMutex);
7969
7970 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7971 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7972 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007973 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007974 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007975 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007976 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7977 ( usSendSize < (usDataOffset + uMsgSize )))
7978 {
7979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7980 "Unable to get send buffer in start req %x %x %x",
7981 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7982 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007984 }
7985
7986 /*Copy the STA parameters */
7987 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7988 &pwdiPostAssocParams->wdiSTAParams );
7989
7990 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007991 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007992 WDI_STATableFindStaidByAddr(pWDICtx,
7993 pwdiPostAssocParams->wdiSTAParams.macSTA,
7994 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
7995 {
7996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7997 "This station does not exist in the WDI Station Table %d");
7998 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007999 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 }
8002
8003 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008004 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008005 pBSSSes->ucBSSIdx;
8006
8007 /*Copy the BSS parameters */
8008 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8009 &pwdiPostAssocParams->wdiBSSParams);
8010
8011 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008012 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008013 WDI_STATableFindStaidByAddr(pWDICtx,
8014 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008015 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008016 {
8017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8018 "This station does not exist in the WDI Station Table %d");
8019 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008020 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 }
8023
8024 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008026 pBSSSes->ucBSSIdx;
8027
Jeff Johnsone7245742012-09-05 17:12:55 -07008028
8029 wpalMemoryCopy( pSendBuffer+usDataOffset,
8030 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8031 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008032
8033 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8034
Jeff Johnsone7245742012-09-05 17:12:55 -07008035 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8036 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8037 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008038
Jeff Johnsone7245742012-09-05 17:12:55 -07008039
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008042
Jeff Johnsone7245742012-09-05 17:12:55 -07008043
8044 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008045 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008047
8048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008051 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8053
Jeff Johnsone7245742012-09-05 17:12:55 -07008054
Jeff Johnson295189b2012-06-20 16:38:30 -07008055}/*WDI_ProcessPostAssocReq*/
8056
8057/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008060
8061 @param pWDICtx: pointer to the WLAN DAL context
8062 pEventData: pointer to the event information structure
8063
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 @see
8065 @return Result of the function call
8066*/
8067WDI_Status
8068WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008069(
Jeff Johnson295189b2012-06-20 16:38:30 -07008070 WDI_ControlBlockType* pWDICtx,
8071 WDI_EventInfoType* pEventData
8072)
8073{
8074 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8075 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008076 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008077 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008078 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 wpt_uint16 usDataOffset = 0;
8080 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8083
Jeff Johnsone7245742012-09-05 17:12:55 -07008084 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8086
8087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008088 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 -------------------------------------------------------------------------*/
8090 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8091 ( NULL == pEventData->pCBfnc ))
8092 {
8093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008094 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008095 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008096 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 }
8098
8099 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8100 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8101 /*-------------------------------------------------------------------------
8102 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008103 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008104 -------------------------------------------------------------------------*/
8105 wpalMutexAcquire(&pWDICtx->wptMutex);
8106
8107 /*------------------------------------------------------------------------
8108 Find the BSS for which the request is made and identify WDI session
8109 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008110 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8111 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008112 &macBSSID))
8113 {
8114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8115 "This station does not exist in the WDI Station Table %d");
8116 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008117 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008118 }
8119
Jeff Johnsone7245742012-09-05 17:12:55 -07008120 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8121 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008122 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8124 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8125 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008126
8127 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008128 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008129 }
8130
8131 /*------------------------------------------------------------------------
8132 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008133 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 ------------------------------------------------------------------------*/
8135 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8136 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8138 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8139 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008140
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008143 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008144 }
8145
8146 wpalMutexRelease(&pWDICtx->wptMutex);
8147 /*-----------------------------------------------------------------------
8148 Get message buffer
8149 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 sizeof(halDelStaReqMsg.delStaParams),
8152 &pSendBuffer, &usDataOffset, &usSendSize))||
8153 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8154 {
8155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8156 "Unable to get send buffer in start req %x %x %x",
8157 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 }
8161
Jeff Johnsone7245742012-09-05 17:12:55 -07008162 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8163 wpalMemoryCopy( pSendBuffer+usDataOffset,
8164 &halDelStaReqMsg.delStaParams,
8165 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008166
8167 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008169
8170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008172 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008173 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008174 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8175
8176}/*WDI_ProcessDelSTAReq*/
8177
8178
8179/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008181==========================================================================*/
8182/**
8183 @brief Process Set BSS Key Request function (called when Main FSM
8184 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008185
8186 @param pWDICtx: pointer to the WLAN DAL context
8187 pEventData: pointer to the event information structure
8188
Jeff Johnson295189b2012-06-20 16:38:30 -07008189 @see
8190 @return Result of the function call
8191*/
8192WDI_Status
8193WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008194(
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 WDI_ControlBlockType* pWDICtx,
8196 WDI_EventInfoType* pEventData
8197)
8198{
8199 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8200 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008201 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008202 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008203 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008204 wpt_uint16 usDataOffset = 0;
8205 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008206 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008207 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8208 wpt_uint8 keyIndex = 0;
8209
8210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8211
8212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 -------------------------------------------------------------------------*/
8215 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8216 ( NULL == pEventData->pCBfnc ))
8217 {
8218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008219 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008222 }
8223
8224 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8225 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8226 /*-------------------------------------------------------------------------
8227 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008228 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008229 -------------------------------------------------------------------------*/
8230 wpalMutexAcquire(&pWDICtx->wptMutex);
8231
8232 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008233 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008234 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8236 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8237 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008238
Jeff Johnsone7245742012-09-05 17:12:55 -07008239 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008240 {
8241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8243 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008244
8245 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008246 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008247 }
8248
8249 /*------------------------------------------------------------------------
8250 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008251 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008252 ------------------------------------------------------------------------*/
8253 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8254 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8256 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8257 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008258
Jeff Johnsone7245742012-09-05 17:12:55 -07008259 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008261 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008262 }
8263
8264
8265 wpalMutexRelease(&pWDICtx->wptMutex);
8266 /*-----------------------------------------------------------------------
8267 Get message buffer
8268 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8271 &pSendBuffer, &usDataOffset, &usSendSize))||
8272 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8273 {
8274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8275 "Unable to get send buffer in set bss key req %x %x %x",
8276 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8277 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 }
8280
8281 /*-----------------------------------------------------------------------
8282 Copy the Key parameters into the HAL message
8283 -----------------------------------------------------------------------*/
8284
Jeff Johnsone7245742012-09-05 17:12:55 -07008285 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008286
Jeff Johnsone7245742012-09-05 17:12:55 -07008287 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8289
Jeff Johnsone7245742012-09-05 17:12:55 -07008290 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008291 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8292
8293 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8294 keyIndex++)
8295 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8298 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8299 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8300 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8301 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8302 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008303 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008304 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008305 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008306 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008307 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008308 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8309 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008310 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 WDI_MAX_KEY_LENGTH);
8312 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008313
8314 wpalMemoryCopy( pSendBuffer+usDataOffset,
8315 &halSetBssKeyReqMsg.setBssKeyParams,
8316 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008317
8318 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008320
8321 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008322 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8325 wdiSetBSSKeyRspCb, pEventData->pUserData,
8326 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008327
8328}/*WDI_ProcessSetBssKeyReq*/
8329
8330/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008333
8334 @param pWDICtx: pointer to the WLAN DAL context
8335 pEventData: pointer to the event information structure
8336
Jeff Johnson295189b2012-06-20 16:38:30 -07008337 @see
8338 @return Result of the function call
8339*/
8340WDI_Status
8341WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008342(
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 WDI_ControlBlockType* pWDICtx,
8344 WDI_EventInfoType* pEventData
8345)
8346{
8347 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8348 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008349 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008350 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008351 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008352 wpt_uint16 usDataOffset = 0;
8353 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008354 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8357
8358 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008359 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008360 -------------------------------------------------------------------------*/
8361 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8362 ( NULL == pEventData->pCBfnc ))
8363 {
8364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008365 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008366 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 }
8369
8370 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8371 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8372 /*-------------------------------------------------------------------------
8373 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 -------------------------------------------------------------------------*/
8376 wpalMutexAcquire(&pWDICtx->wptMutex);
8377
8378 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008379 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008380 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8382 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8383 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008384
Jeff Johnsone7245742012-09-05 17:12:55 -07008385 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008386 {
8387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008388 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8389 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008390
8391 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008393 }
8394
8395 /*------------------------------------------------------------------------
8396 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008398 ------------------------------------------------------------------------*/
8399 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8400 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8402 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8403 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008404
Jeff Johnsone7245742012-09-05 17:12:55 -07008405 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008407 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008408 }
8409
8410
8411 wpalMutexRelease(&pWDICtx->wptMutex);
8412
8413 /*-----------------------------------------------------------------------
8414 Get message buffer
8415 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008417 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8418 &pSendBuffer, &usDataOffset, &usSendSize))||
8419 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8420 {
8421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8422 "Unable to get send buffer in set bss key req %x %x %x",
8423 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 }
8427 /*-----------------------------------------------------------------------
8428 Copy the Key parameters into the HAL message
8429 -----------------------------------------------------------------------*/
8430 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8431
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8434
8435 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8436
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8439
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 wpalMemoryCopy( pSendBuffer+usDataOffset,
8441 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8442 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008443
8444 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008445 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008446
8447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008450 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008451 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008453}/*WDI_ProcessRemoveBssKeyReq*/
8454
8455/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008457 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008458
8459 @param pWDICtx: pointer to the WLAN DAL context
8460 pEventData: pointer to the event information structure
8461
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 @see
8463 @return Result of the function call
8464*/
8465WDI_Status
8466WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008467(
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 WDI_ControlBlockType* pWDICtx,
8469 WDI_EventInfoType* pEventData
8470)
8471{
8472 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8473 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8474 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 wpt_uint16 usDataOffset = 0;
8477 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008478 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008479 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008480 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008481 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8482 wpt_uint8 keyIndex = 0;
8483
8484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8485
8486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008488 -------------------------------------------------------------------------*/
8489 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8490 ( NULL == pEventData->pCBfnc ))
8491 {
8492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 }
8497
8498 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8499 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8500 /*-------------------------------------------------------------------------
8501 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 -------------------------------------------------------------------------*/
8504 wpalMutexAcquire(&pWDICtx->wptMutex);
8505
8506 /*------------------------------------------------------------------------
8507 Find the BSS for which the request is made and identify WDI session
8508 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8510 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008511 &macBSSID))
8512 {
8513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8514 "This station does not exist in the WDI Station Table %d");
8515 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008517 }
8518
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8520 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8523 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8524 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008525
8526 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008527 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008529
Jeff Johnson295189b2012-06-20 16:38:30 -07008530 /*------------------------------------------------------------------------
8531 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008532 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 ------------------------------------------------------------------------*/
8534 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8535 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8537 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8538 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008539
Jeff Johnsone7245742012-09-05 17:12:55 -07008540 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008541 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008542 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008543 }
8544
8545
8546 wpalMutexRelease(&pWDICtx->wptMutex);
8547 /*-----------------------------------------------------------------------
8548 Get message buffer
8549 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8552 &pSendBuffer, &usDataOffset, &usSendSize))||
8553 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8554 {
8555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8556 "Unable to get send buffer in set bss key req %x %x %x",
8557 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 }
8561 /*-----------------------------------------------------------------------
8562 Copy the STA Key parameters into the HAL message
8563 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8566
Jeff Johnsone7245742012-09-05 17:12:55 -07008567 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008568 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8569
8570 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8571
8572 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8573
8574 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8575
Jeff Johnson295189b2012-06-20 16:38:30 -07008576 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8577 keyIndex++)
8578 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008579 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8581 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8582 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8583 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8584 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8585 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008587 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008590 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008591 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8592 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008593 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 WDI_MAX_KEY_LENGTH);
8595 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008596
Jeff Johnsone7245742012-09-05 17:12:55 -07008597 wpalMemoryCopy( pSendBuffer+usDataOffset,
8598 &halSetStaKeyReqMsg.setStaKeyParams,
8599 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008600
8601 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008602 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008603
8604 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008606 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008607 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8608 wdiSetSTAKeyRspCb, pEventData->pUserData,
8609 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008610
8611}/*WDI_ProcessSetSTAKeyReq*/
8612
8613/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008616
8617 @param pWDICtx: pointer to the WLAN DAL context
8618 pEventData: pointer to the event information structure
8619
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 @see
8621 @return Result of the function call
8622*/
8623WDI_Status
8624WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008625(
Jeff Johnson295189b2012-06-20 16:38:30 -07008626 WDI_ControlBlockType* pWDICtx,
8627 WDI_EventInfoType* pEventData
8628)
8629{
8630 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8631 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8632 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 wpt_uint16 usDataOffset = 0;
8635 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 wpt_macAddr macBSSID;
8638 wpt_uint8 ucCurrentBSSSesIdx;
8639 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8641
8642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008643 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008644 -------------------------------------------------------------------------*/
8645 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8646 ( NULL == pEventData->pCBfnc ))
8647 {
8648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008649 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 }
8653
8654 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8655 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8656 /*-------------------------------------------------------------------------
8657 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 -------------------------------------------------------------------------*/
8660 wpalMutexAcquire(&pWDICtx->wptMutex);
8661
8662 /*------------------------------------------------------------------------
8663 Find the BSS for which the request is made and identify WDI session
8664 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8666 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008667 &macBSSID))
8668 {
8669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8670 "This station does not exist in the WDI Station Table %d");
8671 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008673 }
8674
Jeff Johnsone7245742012-09-05 17:12:55 -07008675 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8676 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008677 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8679 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8680 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008681
8682 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008683 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008684 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008685
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 /*------------------------------------------------------------------------
8687 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008688 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 ------------------------------------------------------------------------*/
8690 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8691 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8693 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8694 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008695
Jeff Johnsone7245742012-09-05 17:12:55 -07008696 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008698 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008699 }
8700
8701
8702
8703 wpalMutexRelease(&pWDICtx->wptMutex);
8704 /*-----------------------------------------------------------------------
8705 Get message buffer
8706 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8709 &pSendBuffer, &usDataOffset, &usSendSize))||
8710 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8711 {
8712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8713 "Unable to get send buffer in set bss key req %x %x %x",
8714 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 }
8718
8719 /*-----------------------------------------------------------------------
8720 Copy the Key parameters into the HAL message
8721 -----------------------------------------------------------------------*/
8722
Jeff Johnsone7245742012-09-05 17:12:55 -07008723 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008724 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8725
Jeff Johnsone7245742012-09-05 17:12:55 -07008726 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008727 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8728
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8731
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8734
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 wpalMemoryCopy( pSendBuffer+usDataOffset,
8736 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8737 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008738
8739 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008740 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008741
8742 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008747 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008748
8749}/*WDI_ProcessRemoveSTAKeyReq*/
8750
8751/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008754
8755 @param pWDICtx: pointer to the WLAN DAL context
8756 pEventData: pointer to the event information structure
8757
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 @see
8759 @return Result of the function call
8760*/
8761WDI_Status
8762WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008763(
Jeff Johnson295189b2012-06-20 16:38:30 -07008764 WDI_ControlBlockType* pWDICtx,
8765 WDI_EventInfoType* pEventData
8766)
8767{
8768 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8769 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8770 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008772 wpt_uint16 usDataOffset = 0;
8773 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008774 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008775 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8778 wpt_uint8 keyIndex = 0;
8779
8780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8781
8782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008784 -------------------------------------------------------------------------*/
8785 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8786 ( NULL == pEventData->pCBfnc ))
8787 {
8788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008792 }
8793
8794 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8795 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8796 /*-------------------------------------------------------------------------
8797 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 -------------------------------------------------------------------------*/
8800 wpalMutexAcquire(&pWDICtx->wptMutex);
8801
8802 /*------------------------------------------------------------------------
8803 Find the BSS for which the request is made and identify WDI session
8804 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8806 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 &macBSSID))
8808 {
8809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8810 "This station does not exist in the WDI Station Table %d");
8811 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008812 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008813 }
8814
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8816 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 {
8818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8820 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008821
8822 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008824 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008825
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 /*------------------------------------------------------------------------
8827 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008829 ------------------------------------------------------------------------*/
8830 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8831 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8833 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8834 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008835
Jeff Johnsone7245742012-09-05 17:12:55 -07008836 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008837 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008839 }
8840
8841
8842 wpalMutexRelease(&pWDICtx->wptMutex);
8843 /*-----------------------------------------------------------------------
8844 Get message buffer
8845 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8848 &pSendBuffer, &usDataOffset, &usSendSize))||
8849 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8850 {
8851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8852 "Unable to get send buffer in set bss key req %x %x %x",
8853 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 }
8857 /*-----------------------------------------------------------------------
8858 Copy the STA Key parameters into the HAL message
8859 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008860 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008861 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8862
Jeff Johnsone7245742012-09-05 17:12:55 -07008863 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008864 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8865
8866 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8867
8868 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8869
8870 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8871
Jeff Johnson295189b2012-06-20 16:38:30 -07008872 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8873 keyIndex++)
8874 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8877 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8878 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8879 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8880 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8881 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008883 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008886 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008887 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8888 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008889 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008890 WDI_MAX_KEY_LENGTH);
8891 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008892
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 wpalMemoryCopy( pSendBuffer+usDataOffset,
8894 &halSetStaKeyReqMsg.setStaKeyParams,
8895 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008896
8897 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008899
8900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8904 wdiSetSTAKeyRspCb, pEventData->pUserData,
8905 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008906
8907}/*WDI_ProcessSetSTABcastKeyReq*/
8908
8909/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008912
8913 @param pWDICtx: pointer to the WLAN DAL context
8914 pEventData: pointer to the event information structure
8915
Jeff Johnson295189b2012-06-20 16:38:30 -07008916 @see
8917 @return Result of the function call
8918*/
8919WDI_Status
8920WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008921(
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 WDI_ControlBlockType* pWDICtx,
8923 WDI_EventInfoType* pEventData
8924)
8925{
8926 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8927 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8928 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 wpt_uint16 usDataOffset = 0;
8931 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 wpt_macAddr macBSSID;
8934 wpt_uint8 ucCurrentBSSSesIdx;
8935 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8937
8938 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 -------------------------------------------------------------------------*/
8941 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8942 ( NULL == pEventData->pCBfnc ))
8943 {
8944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 }
8949
8950 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8951 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8952 /*-------------------------------------------------------------------------
8953 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 -------------------------------------------------------------------------*/
8956 wpalMutexAcquire(&pWDICtx->wptMutex);
8957
8958 /*------------------------------------------------------------------------
8959 Find the BSS for which the request is made and identify WDI session
8960 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8962 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008963 &macBSSID))
8964 {
8965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8966 "This station does not exist in the WDI Station Table %d");
8967 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008969 }
8970
Jeff Johnsone7245742012-09-05 17:12:55 -07008971 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8972 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8975 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8976 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008977
8978 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008979 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008980 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008981
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 /*------------------------------------------------------------------------
8983 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 ------------------------------------------------------------------------*/
8986 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8987 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8989 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8990 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008991
Jeff Johnsone7245742012-09-05 17:12:55 -07008992 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008993 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008994 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008995 }
8996
8997
8998
8999 wpalMutexRelease(&pWDICtx->wptMutex);
9000 /*-----------------------------------------------------------------------
9001 Get message buffer
9002 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9005 &pSendBuffer, &usDataOffset, &usSendSize))||
9006 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9007 {
9008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9009 "Unable to get send buffer in set bss key req %x %x %x",
9010 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 }
9014
9015 /*-----------------------------------------------------------------------
9016 Copy the Key parameters into the HAL message
9017 -----------------------------------------------------------------------*/
9018
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9021
Jeff Johnsone7245742012-09-05 17:12:55 -07009022 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9024
Jeff Johnsone7245742012-09-05 17:12:55 -07009025 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9027
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9030
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 wpalMemoryCopy( pSendBuffer+usDataOffset,
9032 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9033 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009034
9035 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009036 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009037
9038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009044
9045}/*WDI_ProcessRemoveSTABcastKeyReq*/
9046
9047/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009049==========================================================================*/
9050/**
9051 @brief Process Add TSpec Request function (called when Main FSM
9052 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009053
9054 @param pWDICtx: pointer to the WLAN DAL context
9055 pEventData: pointer to the event information structure
9056
Jeff Johnson295189b2012-06-20 16:38:30 -07009057 @see
9058 @return Result of the function call
9059*/
9060WDI_Status
9061WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009062(
Jeff Johnson295189b2012-06-20 16:38:30 -07009063 WDI_ControlBlockType* pWDICtx,
9064 WDI_EventInfoType* pEventData
9065)
9066{
9067 WDI_AddTSReqParamsType* pwdiAddTSParams;
9068 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009070 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 wpt_uint16 usDataOffset = 0;
9073 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 wpt_macAddr macBSSID;
9076 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009077
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9079
9080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 -------------------------------------------------------------------------*/
9083 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9084 ( NULL == pEventData->pCBfnc ))
9085 {
9086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009087 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 }
9091
9092 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9093 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9094 /*-------------------------------------------------------------------------
9095 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009096 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009097 -------------------------------------------------------------------------*/
9098 wpalMutexAcquire(&pWDICtx->wptMutex);
9099
9100 /*------------------------------------------------------------------------
9101 Find the BSS for which the request is made and identify WDI session
9102 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009103 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9104 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009105 &macBSSID))
9106 {
9107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9108 "This station does not exist in the WDI Station Table %d");
9109 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009111 }
9112
Jeff Johnsone7245742012-09-05 17:12:55 -07009113 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9114 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9117 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9118 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009119
9120 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009121 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009122 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009123
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 /*------------------------------------------------------------------------
9125 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 ------------------------------------------------------------------------*/
9128 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9129 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9131 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9132 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009133
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 }
9138
9139 wpalMutexRelease(&pWDICtx->wptMutex);
9140 /*-----------------------------------------------------------------------
9141 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9145 sizeof(halAddTsParams),
9146 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 &usSendSize))||
9148 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9149 {
9150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9151 "Unable to get send buffer in set bss key req %x %x %x",
9152 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009155 }
9156
9157 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9158 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9159
9160 //TSPEC IE
9161 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9162 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009163 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009164 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009165 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009175 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009176 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009177 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009179 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009180 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009181 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009183 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009187 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009188 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009191 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009192 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9193
9194 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009196 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009202 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009203 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009204 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009208 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9209
9210 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009211 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009212 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9215
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 wpalMemoryCopy( pSendBuffer+usDataOffset,
9217 &halAddTsParams,
9218 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009219
9220 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009221 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009222
9223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009224 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009227 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009229}/*WDI_ProcessAddTSpecReq*/
9230
9231
9232/**
9233 @brief Process Del TSpec Request function (called when Main FSM
9234 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009235
9236 @param pWDICtx: pointer to the WLAN DAL context
9237 pEventData: pointer to the event information structure
9238
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 @see
9240 @return Result of the function call
9241*/
9242WDI_Status
9243WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009244(
Jeff Johnson295189b2012-06-20 16:38:30 -07009245 WDI_ControlBlockType* pWDICtx,
9246 WDI_EventInfoType* pEventData
9247)
9248{
9249 WDI_DelTSReqParamsType* pwdiDelTSParams;
9250 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009251 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009252 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009253 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 wpt_uint16 usDataOffset = 0;
9255 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009256 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9258
9259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 -------------------------------------------------------------------------*/
9262 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9263 ( NULL == pEventData->pCBfnc ))
9264 {
9265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009266 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009267 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 }
9270
9271 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9272 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9273
9274 /*-------------------------------------------------------------------------
9275 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 -------------------------------------------------------------------------*/
9278 wpalMutexAcquire(&pWDICtx->wptMutex);
9279
9280 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009281 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009282 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9284 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9285 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009286
Jeff Johnsone7245742012-09-05 17:12:55 -07009287 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9290 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9291 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9292
Jeff Johnson295189b2012-06-20 16:38:30 -07009293 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009294 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009295 }
9296
9297 /*------------------------------------------------------------------------
9298 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009300 ------------------------------------------------------------------------*/
9301 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9302 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9304 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9305 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009306
Jeff Johnsone7245742012-09-05 17:12:55 -07009307 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009308 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 }
9311
9312
9313 wpalMutexRelease(&pWDICtx->wptMutex);
9314 /*-----------------------------------------------------------------------
9315 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9320 &pSendBuffer, &usDataOffset, &usSendSize))||
9321 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9322 {
9323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9324 "Unable to get send buffer in set bss key req %x %x %x",
9325 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 }
9329
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 wpalMemoryCopy( pSendBuffer+usDataOffset,
9331 &pwdiDelTSParams->wdiDelTSInfo,
9332 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009333
9334 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009335 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009336
9337 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009338 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009339 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9341 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009342}/*WDI_ProcessDelTSpecReq*/
9343
9344/**
9345 @brief Process Update EDCA Params Request function (called when
9346 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009347
9348 @param pWDICtx: pointer to the WLAN DAL context
9349 pEventData: pointer to the event information structure
9350
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 @see
9352 @return Result of the function call
9353*/
9354WDI_Status
9355WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009356(
Jeff Johnson295189b2012-06-20 16:38:30 -07009357 WDI_ControlBlockType* pWDICtx,
9358 WDI_EventInfoType* pEventData
9359)
9360{
9361 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9362 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009363 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 wpt_uint16 usDataOffset = 0;
9367 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009368 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9370
9371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 -------------------------------------------------------------------------*/
9374 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9375 ( NULL == pEventData->pCBfnc ))
9376 {
9377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009381 }
9382
9383 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9384 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9385 /*-------------------------------------------------------------------------
9386 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009387 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 -------------------------------------------------------------------------*/
9389 wpalMutexAcquire(&pWDICtx->wptMutex);
9390
9391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9395 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9396 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009397
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 {
9400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9402 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009403
9404 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009406 }
9407
9408 /*------------------------------------------------------------------------
9409 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 ------------------------------------------------------------------------*/
9412 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9413 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9415 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9416 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009417
Jeff Johnsone7245742012-09-05 17:12:55 -07009418 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009419 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 }
9422
9423
9424 wpalMutexRelease(&pWDICtx->wptMutex);
9425 /*-----------------------------------------------------------------------
9426 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9431 &pSendBuffer, &usDataOffset, &usSendSize))||
9432 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9433 {
9434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9435 "Unable to get send buffer in set bss key req %x %x %x",
9436 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 }
9440
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 wpalMemoryCopy( pSendBuffer+usDataOffset,
9442 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9443 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009444
9445 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009446 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009447
9448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009451 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9452 wdiUpdateEDCARspCb, pEventData->pUserData,
9453 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009454}/*WDI_ProcessUpdateEDCAParamsReq*/
9455
9456/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009457 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009458 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009459
9460 @param pWDICtx: pointer to the WLAN DAL context
9461 pEventData: pointer to the event information structure
9462
Jeff Johnson295189b2012-06-20 16:38:30 -07009463 @see
9464 @return Result of the function call
9465*/
9466WDI_Status
9467WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009468(
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 WDI_ControlBlockType* pWDICtx,
9470 WDI_EventInfoType* pEventData
9471)
9472{
9473 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9474 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009476 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 wpt_uint16 usDataOffset = 0;
9479 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009481 wpt_macAddr macBSSID;
9482
9483 tAddBASessionReqMsg halAddBASessionReq;
9484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9485
9486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009488 -------------------------------------------------------------------------*/
9489 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9490 ( NULL == pEventData->pCBfnc ))
9491 {
9492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009496 }
9497
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009499 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009500 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009501 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9502 /*-------------------------------------------------------------------------
9503 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 -------------------------------------------------------------------------*/
9506 wpalMutexAcquire(&pWDICtx->wptMutex);
9507
9508 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009509 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009510 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009511 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9512 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 &macBSSID))
9514 {
9515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9516 "This station does not exist in the WDI Station Table %d");
9517 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009519 }
9520
9521
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009523
Jeff Johnsone7245742012-09-05 17:12:55 -07009524 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009525 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9527 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9528 __func__, MAC_ADDR_ARRAY(macBSSID));
9529
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 }
9533
9534 /*------------------------------------------------------------------------
9535 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009536 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009537 ------------------------------------------------------------------------*/
9538 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9539 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9541 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9542 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009543
Jeff Johnsone7245742012-09-05 17:12:55 -07009544 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009545 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009546 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009547 }
9548
9549
9550 wpalMutexRelease(&pWDICtx->wptMutex);
9551 /*-----------------------------------------------------------------------
9552 Get message buffer
9553 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009554 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9555 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 sizeof(halAddBASessionReq.addBASessionParams),
9557 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9560 {
9561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9562 "Unable to get send buffer in Add BA session req %x %x %x",
9563 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009565 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009566 }
9567
9568 halAddBASessionReq.addBASessionParams.staIdx =
9569 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9570 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9571 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9572 WDI_MAC_ADDR_LEN);
9573 halAddBASessionReq.addBASessionParams.baTID =
9574 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9575 halAddBASessionReq.addBASessionParams.baPolicy =
9576 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9577 halAddBASessionReq.addBASessionParams.baBufferSize =
9578 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9579 halAddBASessionReq.addBASessionParams.baTimeout =
9580 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9581 halAddBASessionReq.addBASessionParams.baSSN =
9582 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9583 halAddBASessionReq.addBASessionParams.baDirection =
9584 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9585
Jeff Johnsone7245742012-09-05 17:12:55 -07009586 wpalMemoryCopy( pSendBuffer+usDataOffset,
9587 &halAddBASessionReq.addBASessionParams,
9588 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009589
9590 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009592
9593 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9597 wdiAddBASessionRspCb, pEventData->pUserData,
9598 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009599}/*WDI_ProcessAddBASessionReq*/
9600
9601/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009602 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009604
9605 @param pWDICtx: pointer to the WLAN DAL context
9606 pEventData: pointer to the event information structure
9607
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 @see
9609 @return Result of the function call
9610*/
9611WDI_Status
9612WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009613(
Jeff Johnson295189b2012-06-20 16:38:30 -07009614 WDI_ControlBlockType* pWDICtx,
9615 WDI_EventInfoType* pEventData
9616)
9617{
9618 WDI_DelBAReqParamsType* pwdiDelBAParams;
9619 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009620 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009621 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 wpt_uint16 usDataOffset = 0;
9624 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009625 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009626 wpt_macAddr macBSSID;
9627 tDelBAParams halDelBAparam;
9628 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9629
9630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 -------------------------------------------------------------------------*/
9633 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9634 ( NULL == pEventData->pCBfnc ))
9635 {
9636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009637 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009638 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009639 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009640 }
9641
9642 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9643 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9644 /*-------------------------------------------------------------------------
9645 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009646 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009647 -------------------------------------------------------------------------*/
9648 wpalMutexAcquire(&pWDICtx->wptMutex);
9649
9650 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9654 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009655 &macBSSID))
9656 {
9657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9658 "This station does not exist in the WDI Station Table %d");
9659 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 }
9662
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009664
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009666 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9668 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9669 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009670
9671 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 }
9674
9675 /*------------------------------------------------------------------------
9676 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009677 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 ------------------------------------------------------------------------*/
9679 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9680 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9682 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9683 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009684
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009687 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 }
9689
9690 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 sizeof(halDelBAparam),
9693 &pSendBuffer, &usDataOffset, &usSendSize))||
9694 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9695 {
9696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9697 "Unable to get send buffer for DEL BA req %x %x %x",
9698 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 }
9702
9703 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9704 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9705 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9706
Jeff Johnsone7245742012-09-05 17:12:55 -07009707 wpalMemoryCopy( pSendBuffer+usDataOffset,
9708 &halDelBAparam,
9709 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009710
9711 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009713
9714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009715 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009716 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9718 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009719}/*WDI_ProcessDelBAReq*/
9720
9721#ifdef FEATURE_WLAN_CCX
9722
9723WDI_Status
9724WDI_ProcessTSMStatsReq
9725(
9726 WDI_ControlBlockType* pWDICtx,
9727 WDI_EventInfoType* pEventData
9728)
9729{
9730 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9731 WDI_TsmRspCb wdiTSMRspCb;
9732 wpt_uint8 ucCurrentBSSSesIdx = 0;
9733 WDI_BSSSessionType* pBSSSes = NULL;
9734 wpt_uint8* pSendBuffer = NULL;
9735 wpt_uint16 usDataOffset = 0;
9736 wpt_uint16 usSendSize = 0;
9737 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9738 tTsmStatsParams halTsmStatsReqParams = {0};
9739
9740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9741
9742 /*-------------------------------------------------------------------------
9743 Sanity check
9744 -------------------------------------------------------------------------*/
9745 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9746 ( NULL == pEventData->pCBfnc ))
9747 {
9748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009749 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009750 WDI_ASSERT(0);
9751 return WDI_STATUS_E_FAILURE;
9752 }
9753
9754 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9755 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9756 /*-------------------------------------------------------------------------
9757 Check to see if we are in the middle of an association, if so queue, if
9758 not it means it is free to process request
9759 -------------------------------------------------------------------------*/
9760 wpalMutexAcquire(&pWDICtx->wptMutex);
9761
9762 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9763 if ( NULL == pBSSSes )
9764 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9766 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9767 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009768
9769 wpalMutexRelease(&pWDICtx->wptMutex);
9770 return WDI_STATUS_E_NOT_ALLOWED;
9771 }
9772
9773 /*------------------------------------------------------------------------
9774 Check if this BSS is being currently processed or queued,
9775 if queued - queue the new request as well
9776 ------------------------------------------------------------------------*/
9777 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9778 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9780 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9781 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009782
9783 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9784 wpalMutexRelease(&pWDICtx->wptMutex);
9785 return wdiStatus;
9786 }
9787
9788 wpalMutexRelease(&pWDICtx->wptMutex);
9789 /*-----------------------------------------------------------------------
9790 Get message buffer
9791 ! TO DO : proper conversion into the HAL Message Request Format
9792 -----------------------------------------------------------------------*/
9793 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9794 sizeof(halTsmStatsReqParams),
9795 &pSendBuffer, &usDataOffset, &usSendSize))||
9796 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9797 {
9798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9799 "Unable to get send buffer in set bss key req %x %x %x",
9800 pEventData, pwdiTSMParams, wdiTSMRspCb);
9801 WDI_ASSERT(0);
9802 return WDI_STATUS_E_FAILURE;
9803 }
9804
9805 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9806 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9807 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9808 WDI_MAC_ADDR_LEN);
9809 wpalMemoryCopy( pSendBuffer+usDataOffset,
9810 &halTsmStatsReqParams,
9811 sizeof(halTsmStatsReqParams));
9812
9813 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9814 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9815
9816 /*-------------------------------------------------------------------------
9817 Send TSM Stats Request to HAL
9818 -------------------------------------------------------------------------*/
9819 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9820 wdiTSMRspCb, pEventData->pUserData,
9821 WDI_TSM_STATS_RESP);
9822}/*WDI_ProcessTSMStatsReq*/
9823
9824#endif
9825
9826
9827/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009829 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009830
9831 @param pWDICtx: pointer to the WLAN DAL context
9832 pEventData: pointer to the event information structure
9833
Jeff Johnson295189b2012-06-20 16:38:30 -07009834 @see
9835 @return Result of the function call
9836*/
9837WDI_Status
9838WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009839(
Jeff Johnson295189b2012-06-20 16:38:30 -07009840 WDI_ControlBlockType* pWDICtx,
9841 WDI_EventInfoType* pEventData
9842)
9843{
9844 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9845 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009846 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 wpt_uint16 usDataOffset = 0;
9848 wpt_uint16 usSendSize = 0;
9849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9850
9851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009852 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 -------------------------------------------------------------------------*/
9854 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9855 ( NULL == pEventData->pCBfnc ))
9856 {
9857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009858 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009861 }
9862
9863 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9864 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9865 /*-----------------------------------------------------------------------
9866 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009867 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9871 &pSendBuffer, &usDataOffset, &usSendSize))||
9872 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9873 {
9874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9875 "Unable to get send buffer in set bss key req %x %x %x",
9876 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 }
9880
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 wpalMemoryCopy( pSendBuffer+usDataOffset,
9882 &pwdiFlushAcParams->wdiFlushAcInfo,
9883 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009884
9885 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009887
9888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009889 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009890 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9892 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009893}/*WDI_ProcessFlushAcReq*/
9894
9895/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009896 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009898
9899 @param pWDICtx: pointer to the WLAN DAL context
9900 pEventData: pointer to the event information structure
9901
Jeff Johnson295189b2012-06-20 16:38:30 -07009902 @see
9903 @return Result of the function call
9904*/
9905WDI_Status
9906WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009907(
Jeff Johnson295189b2012-06-20 16:38:30 -07009908 WDI_ControlBlockType* pWDICtx,
9909 WDI_EventInfoType* pEventData
9910)
9911{
9912 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9913 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 wpt_uint16 usDataOffset = 0;
9916 wpt_uint16 usSendSize = 0;
9917
9918 tBtAmpEventMsg haltBtAmpEventMsg;
9919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9920
9921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009923 -------------------------------------------------------------------------*/
9924 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9925 ( NULL == pEventData->pCBfnc ))
9926 {
9927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009931 }
9932
9933 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9934 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9935 /*-----------------------------------------------------------------------
9936 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9941 &pSendBuffer, &usDataOffset, &usSendSize))||
9942 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9943 {
9944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9945 "Unable to get send buffer in BT AMP event req %x %x %x",
9946 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9947 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 }
9950
Jeff Johnsone7245742012-09-05 17:12:55 -07009951 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009952 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 wpalMemoryCopy( pSendBuffer+usDataOffset,
9954 &haltBtAmpEventMsg.btAmpEventParams,
9955 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009956
9957 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009958 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009959
9960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9964 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009965}/*WDI_ProcessBtAmpEventReq*/
9966
9967/**
9968 @brief Process Add STA self Request function (called when Main FSM
9969 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009970
9971 @param pWDICtx: pointer to the WLAN DAL context
9972 pEventData: pointer to the event information structure
9973
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 @see
9975 @return Result of the function call
9976*/
9977WDI_Status
9978WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009979(
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 WDI_ControlBlockType* pWDICtx,
9981 WDI_EventInfoType* pEventData
9982)
9983{
9984 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9985 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009987 wpt_uint16 usDataOffset = 0;
9988 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009989 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9991
9992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009993 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009994 -------------------------------------------------------------------------*/
9995 if (( NULL == pEventData ) ||
9996 ( NULL == pEventData->pEventData) ||
9997 ( NULL == pEventData->pCBfnc))
9998 {
9999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010000 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010003 }
10004
Jeff Johnsone7245742012-09-05 17:12:55 -070010005 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010007 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010008 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10009 /*-----------------------------------------------------------------------
10010 Get message buffer
10011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10013 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010014 sizeof(tAddStaSelfParams),
10015 &pSendBuffer, &usDataOffset, &usSendSize))||
10016 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
10017 {
10018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10019 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10020 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 }
10024
10025 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010027 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10028
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010030 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
10031
Jeff Johnsone7245742012-09-05 17:12:55 -070010032 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
10033 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010034
10035 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010037
10038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010039 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010040 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10042 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10043 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010044}/*WDI_ProcessAddSTASelfReq*/
10045
10046
10047
10048/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010049 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010050 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010051
10052 @param pWDICtx: pointer to the WLAN DAL context
10053 pEventData: pointer to the event information structure
10054
Jeff Johnson295189b2012-06-20 16:38:30 -070010055 @see
10056 @return Result of the function call
10057*/
10058WDI_Status
10059WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010060(
Jeff Johnson295189b2012-06-20 16:38:30 -070010061 WDI_ControlBlockType* pWDICtx,
10062 WDI_EventInfoType* pEventData
10063)
10064{
10065 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10066 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010067 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 wpt_uint16 usDataOffset = 0;
10069 wpt_uint16 usSendSize = 0;
10070 tDelStaSelfParams halSetDelSelfSTAParams;
10071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10072
10073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 -------------------------------------------------------------------------*/
10076 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10077 ( NULL == pEventData->pCBfnc ))
10078 {
10079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010080 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010083 }
10084
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010086 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10087 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10088
10089 /*-----------------------------------------------------------------------
10090 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010092 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010093 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010094 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10095 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010096 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010097 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10098 {
10099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10100 "Unable to get send buffer in Del Sta Self req %x %x %x",
10101 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010104 }
10105
Jeff Johnsone7245742012-09-05 17:12:55 -070010106 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010107 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10108
Jeff Johnsone7245742012-09-05 17:12:55 -070010109 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10110 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010111
10112 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010113 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010114
10115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010116 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010118 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10119 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 WDI_DEL_STA_SELF_RESP);
10121
10122}
10123
Jeff Johnsone7245742012-09-05 17:12:55 -070010124#ifdef FEATURE_OEM_DATA_SUPPORT
10125/**
10126 @brief Process Start Oem Data Request function (called when Main
10127 FSM allows it)
10128
10129 @param pWDICtx: pointer to the WLAN DAL context
10130 pEventData: pointer to the event information structure
10131
10132 @see
10133 @return Result of the function call
10134*/
10135WDI_Status
10136WDI_ProcessStartOemDataReq
10137(
10138 WDI_ControlBlockType* pWDICtx,
10139 WDI_EventInfoType* pEventData
10140)
10141{
10142 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10143 WDI_oemDataRspCb wdiOemDataRspCb;
10144 wpt_uint8* pSendBuffer = NULL;
10145 wpt_uint16 usDataOffset = 0;
10146 wpt_uint16 usSendSize = 0;
10147 wpt_uint16 reqLen;
10148 tStartOemDataReqParams* halStartOemDataReqParams;
10149
10150 /*-------------------------------------------------------------------------
10151 Sanity check
10152 -------------------------------------------------------------------------*/
10153 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10154 ( NULL == pEventData->pCBfnc ))
10155 {
10156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010157 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 WDI_ASSERT(0);
10159 return WDI_STATUS_E_FAILURE;
10160 }
10161
10162 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10163 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10164
10165 /*-----------------------------------------------------------------------
10166 Get message buffer
10167 -----------------------------------------------------------------------*/
10168
10169 reqLen = sizeof(tStartOemDataReqParams);
10170
10171 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10172 WDI_START_OEM_DATA_REQ, reqLen,
10173 &pSendBuffer, &usDataOffset, &usSendSize))||
10174 (usSendSize < (usDataOffset + reqLen)))
10175 {
10176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10177 "Unable to get send buffer in Start Oem Data req %x %x %x",
10178 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10179 WDI_ASSERT(0);
10180 return WDI_STATUS_E_FAILURE;
10181 }
10182
10183 //copying WDI OEM DATA REQ PARAMS to shared memory
10184 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10185
10186 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10187 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10188
10189 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10190 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10191
10192 /*-------------------------------------------------------------------------
10193 Send Start Request to HAL
10194 -------------------------------------------------------------------------*/
10195 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10196 wdiOemDataRspCb, pEventData->pUserData,
10197 WDI_START_OEM_DATA_RESP);
10198}/*WDI_ProcessStartOemDataReq*/
10199#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010200
10201/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010204
10205 @param pWDICtx: pointer to the WLAN DAL context
10206 pEventData: pointer to the event information structure
10207
Jeff Johnson295189b2012-06-20 16:38:30 -070010208 @see
10209 @return Result of the function call
10210*/
10211WDI_Status
10212WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010213(
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 WDI_ControlBlockType* pWDICtx,
10215 WDI_EventInfoType* pEventData
10216)
10217{
10218 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10219 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010220 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010221 wpt_uint16 usDataOffset = 0;
10222 wpt_uint16 usSendSize = 0;
10223 tHalWlanHostResumeReqParam halResumeReqParams;
10224
10225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10226
10227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010229 -------------------------------------------------------------------------*/
10230 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10231 ( NULL == pEventData->pCBfnc ))
10232 {
10233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010234 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010237 }
10238
10239 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10240 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10241
10242 /*-----------------------------------------------------------------------
10243 Get message buffer
10244 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010246 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10247 &pSendBuffer, &usDataOffset, &usSendSize))||
10248 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10249 {
10250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010252 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 }
10256
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010259
10260 wpalMemoryCopy( pSendBuffer+usDataOffset,
10261 &halResumeReqParams,
10262 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010263
10264 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010265 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010266
10267 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010268 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010269 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010270 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10271 wdiHostResumeRspCb, pEventData->pUserData,
10272 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010273}/*WDI_ProcessHostResumeReq*/
10274
10275/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010276 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010277 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010278
10279 @param pWDICtx: pointer to the WLAN DAL context
10280 pEventData: pointer to the event information structure
10281
Jeff Johnson295189b2012-06-20 16:38:30 -070010282 @see
10283 @return Result of the function call
10284*/
10285WDI_Status
10286WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010287(
Jeff Johnson295189b2012-06-20 16:38:30 -070010288 WDI_ControlBlockType* pWDICtx,
10289 WDI_EventInfoType* pEventData
10290)
10291{
10292 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10293 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010294 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 wpt_uint16 usDataOffset = 0;
10296 wpt_uint16 usSendSize = 0;
10297 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10299
10300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010302 -------------------------------------------------------------------------*/
10303 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10304 ( NULL == pEventData->pCBfnc ))
10305 {
10306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010307 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010310 }
10311
10312 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10313 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010314
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 /*-----------------------------------------------------------------------
10316 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010317 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010318 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010319 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010320 sizeof(halTxPerTrackingReqParam),
10321 &pSendBuffer, &usDataOffset, &usSendSize))||
10322 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10323 {
10324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10325 "Unable to get send buffer in set tx per tracking req %x %x %x",
10326 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010330
Jeff Johnson295189b2012-06-20 16:38:30 -070010331 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10332 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10333 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10334 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010335
10336 wpalMemoryCopy( pSendBuffer+usDataOffset,
10337 &halTxPerTrackingReqParam,
10338 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010339
10340 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010342
10343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010344 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010346 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10347 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010348}/*WDI_ProcessSetTxPerTrackingReq*/
10349
10350/*=========================================================================
10351 Indications
10352=========================================================================*/
10353
10354/**
10355 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010356
10357 @param pWDICtx: pointer to the WLAN DAL context
10358 pEventData: pointer to the event information structure
10359
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 @see
10361 @return Result of the function call
10362*/
10363WDI_Status
10364WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010365(
Jeff Johnson295189b2012-06-20 16:38:30 -070010366 WDI_ControlBlockType* pWDICtx,
10367 WDI_EventInfoType* pEventData
10368)
10369{
10370 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010371 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 wpt_uint16 usDataOffset = 0;
10373 wpt_uint16 usSendSize = 0;
10374 WDI_Status wdiStatus;
10375 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10377
10378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 -------------------------------------------------------------------------*/
10381 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10382 {
10383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010384 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010387 }
10388
10389 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10390
10391 /*-----------------------------------------------------------------------
10392 Get message buffer
10393 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10395 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 sizeof(halWlanSuspendIndparams),
10397 &pSendBuffer, &usDataOffset, &usSendSize))||
10398 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10399 {
10400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10401 "Unable to get send buffer in Suspend Ind ");
10402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010404 }
10405
10406 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10407 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10408
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010410 WDI_GetActiveSessionsCount(pWDICtx);
10411
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10413 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010414
10415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010416 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010417 -------------------------------------------------------------------------*/
10418 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010420
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010422 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10423}/*WDI_ProcessHostSuspendInd*/
10424
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010425
10426
10427/**
10428 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10429
10430 @param pWDICtx: pointer to the WLAN DAL context
10431 pEventData: pointer to the event information structure
10432
10433 @see
10434 @return Result of the function call
10435*/
10436WDI_Status
10437WDI_ProcessTrafficStatsInd
10438(
10439 WDI_ControlBlockType* pWDICtx,
10440 WDI_EventInfoType* pEventData
10441)
10442{
10443 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10444 wpt_uint8* pSendBuffer = NULL;
10445 wpt_uint16 usDataOffset = 0;
10446 wpt_uint16 usSendSize = 0;
10447 WDI_Status wdiStatus;
10448 tStatsClassBIndParams* pStatsClassBIndParams;
10449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10450
10451 /*-------------------------------------------------------------------------
10452 Sanity check
10453 -------------------------------------------------------------------------*/
10454 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10455 {
10456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10457 "%s: Invalid parameters in Traffic Stats ind",__func__);
10458 WDI_ASSERT(0);
10459 return WDI_STATUS_E_FAILURE;
10460 }
10461
10462 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10463
10464 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10465 {
10466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10467 "%s: Invalid parameters in Traffic Stats ind",__func__);
10468 WDI_ASSERT(0);
10469 return WDI_STATUS_E_FAILURE;
10470 }
10471
10472 /*-----------------------------------------------------------------------
10473 Get message buffer
10474 -----------------------------------------------------------------------*/
10475 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10476 WDI_TRAFFIC_STATS_IND,
10477 sizeof(tStatsClassBIndParams),
10478 &pSendBuffer, &usDataOffset, &usSendSize))||
10479 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10480 {
10481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10482 "Unable to get send buffer in Traffic Stats Ind ");
10483 WDI_ASSERT(0);
10484 return WDI_STATUS_E_FAILURE;
10485 }
10486
10487 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10488
10489 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10490
10491 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10492 pTrafficStatsIndParams->pTrafficStats,
10493 pTrafficStatsIndParams->length);
10494
10495 /*-------------------------------------------------------------------------
10496 Send Suspend Request to HAL
10497 -------------------------------------------------------------------------*/
10498 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10499 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10500
10501 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10502 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10503}/*WDI_ProcessTrafficStatsInd*/
10504
Jeff Johnson295189b2012-06-20 16:38:30 -070010505/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010506 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010507==========================================================================*/
10508/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010509 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010510 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010511
10512 @param pWDICtx: pointer to the WLAN DAL context
10513 pEventData: pointer to the event information structure
10514
Jeff Johnson295189b2012-06-20 16:38:30 -070010515 @see
10516 @return Result of the function call
10517*/
10518WDI_Status
10519WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010520(
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 WDI_ControlBlockType* pWDICtx,
10522 WDI_EventInfoType* pEventData
10523)
10524{
10525 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10526 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010528 wpt_uint16 usDataOffset = 0;
10529 wpt_uint16 usSendSize = 0;
10530 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10532
10533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010535 -------------------------------------------------------------------------*/
10536 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10537 ( NULL == pEventData->pCBfnc ))
10538 {
10539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010543 }
10544
10545 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10546 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10547 /*-----------------------------------------------------------------------
10548 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010549 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010552 sizeof(halSwitchChannelReq.switchChannelParams),
10553 &pSendBuffer, &usDataOffset, &usSendSize))||
10554 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10555 {
10556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10557 "Unable to get send buffer in channel switch req %x %x %x",
10558 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 }
10562
Jeff Johnsone7245742012-09-05 17:12:55 -070010563 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010564 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010565#ifndef WLAN_FEATURE_VOWIFI
10566 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010567 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10568#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10571
10572#ifdef WLAN_FEATURE_VOWIFI
10573 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010574 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010575 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10576 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10577 WDI_MAC_ADDR_LEN);
10578 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10579 pwdiSwitchChParams->wdiChInfo.macBSSId,
10580 WDI_MAC_ADDR_LEN);
10581#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010582 wpalMemoryCopy( pSendBuffer+usDataOffset,
10583 &halSwitchChannelReq.switchChannelParams,
10584 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010585
10586 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010587 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010588
10589 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010590 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010591 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10593 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010594}/*WDI_ProcessChannelSwitchReq*/
10595
10596/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010597 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010598 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010599
10600 @param pWDICtx: pointer to the WLAN DAL context
10601 pEventData: pointer to the event information structure
10602
Jeff Johnson295189b2012-06-20 16:38:30 -070010603 @see
10604 @return Result of the function call
10605*/
10606WDI_Status
10607WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010608(
Jeff Johnson295189b2012-06-20 16:38:30 -070010609 WDI_ControlBlockType* pWDICtx,
10610 WDI_EventInfoType* pEventData
10611)
10612{
10613 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10614 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010615 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010616 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010617 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010618 wpt_uint16 usDataOffset = 0;
10619 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010620 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010621
Jeff Johnsone7245742012-09-05 17:12:55 -070010622 tConfigStaReqMsg halConfigStaReqMsg;
10623 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010624 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10625
10626 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 -------------------------------------------------------------------------*/
10629 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10630 ( NULL == pEventData->pCBfnc ))
10631 {
10632 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010633 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010634 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 }
10637
10638 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10639 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10640 /*-------------------------------------------------------------------------
10641 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010642 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010643 -------------------------------------------------------------------------*/
10644 wpalMutexAcquire(&pWDICtx->wptMutex);
10645
10646 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010647 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010648 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010649 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10650 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10651 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010652
Jeff Johnsone7245742012-09-05 17:12:55 -070010653 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10656 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10657 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010658
10659 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010660 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010661 }
10662
10663 /*------------------------------------------------------------------------
10664 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010665 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010666 ------------------------------------------------------------------------*/
10667 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10668 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10670 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10671 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010672
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010674 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010675 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 }
10677
10678 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010679
10680 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10681#ifdef WLAN_FEATURE_11AC
10682 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010683 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 else
10685#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010686 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010687
Jeff Johnson295189b2012-06-20 16:38:30 -070010688 /*-----------------------------------------------------------------------
10689 Get message buffer
10690 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10692 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010693 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010694 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010695 {
10696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10697 "Unable to get send buffer in config sta req %x %x %x",
10698 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010701 }
10702
10703 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 &pwdiConfigSTAParams->wdiReqInfo);
10706
10707 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10708 {
10709 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010710 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 WDI_STATableFindStaidByAddr(pWDICtx,
10712 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 {
10715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10716 "This station does not exist in the WDI Station Table %d");
10717 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010718 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010720 }
10721 }
10722 else
10723 {
10724 /* Need to fill in the STA Index to invalid, since at this point we have not
10725 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010727 }
10728
10729 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010730 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010731
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 wpalMemoryCopy( pSendBuffer+usDataOffset,
10733 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010734 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010735
10736 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010737 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010738
Jeff Johnsone7245742012-09-05 17:12:55 -070010739 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10740 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 sizeof(pWDICtx->wdiCachedConfigStaReq));
10742
10743 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010744 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010745 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10747 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010748}/*WDI_ProcessConfigStaReq*/
10749
10750
10751/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010754
10755 @param pWDICtx: pointer to the WLAN DAL context
10756 pEventData: pointer to the event information structure
10757
Jeff Johnson295189b2012-06-20 16:38:30 -070010758 @see
10759 @return Result of the function call
10760*/
10761WDI_Status
10762WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010763(
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 WDI_ControlBlockType* pWDICtx,
10765 WDI_EventInfoType* pEventData
10766)
10767{
10768 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10769 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 wpt_uint16 usDataOffset = 0;
10774 wpt_uint16 usSendSize = 0;
10775 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010776 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10778
10779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 -------------------------------------------------------------------------*/
10782 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10783 ( NULL == pEventData->pCBfnc ))
10784 {
10785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010786 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010787 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 }
10790
10791 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10792 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10793 /*-------------------------------------------------------------------------
10794 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010796 -------------------------------------------------------------------------*/
10797 wpalMutexAcquire(&pWDICtx->wptMutex);
10798
10799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010802 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10803 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10804 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010805
Jeff Johnsone7245742012-09-05 17:12:55 -070010806 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010807 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010809 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10810 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 }
10812 else
10813 {
10814 /*------------------------------------------------------------------------
10815 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010816 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010817 ------------------------------------------------------------------------*/
10818 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10819 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10821 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10822 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10823
10824 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010825 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010826 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010827 }
10828 }
10829 /* If the link is set to enter IDLE - the Session allocated for this BSS
10830 will be deleted on the Set Link State response coming from HAL
10831 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010832 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010833 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10834
10835 wpalMutexRelease(&pWDICtx->wptMutex);
10836 /*-----------------------------------------------------------------------
10837 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010838 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010839 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010840
10841 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 sizeof(halLinkStateReqMsg),
10843 &pSendBuffer, &usDataOffset, &usSendSize))||
10844 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10845 {
10846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10847 "Unable to get send buffer in set bss key req %x %x %x",
10848 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010851 }
10852
10853 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10854 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10855
10856 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10857 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10858
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10861
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 wpalMemoryCopy( pSendBuffer+usDataOffset,
10863 &halLinkStateReqMsg,
10864 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010865
10866 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010867 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010868
10869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10873 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010874}/*WDI_ProcessSetLinkStateReq*/
10875
10876
10877/**
10878 @brief Process Get Stats Request function (called when Main FSM
10879 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010880
10881 @param pWDICtx: pointer to the WLAN DAL context
10882 pEventData: pointer to the event information structure
10883
Jeff Johnson295189b2012-06-20 16:38:30 -070010884 @see
10885 @return Result of the function call
10886*/
10887WDI_Status
10888WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010889(
Jeff Johnson295189b2012-06-20 16:38:30 -070010890 WDI_ControlBlockType* pWDICtx,
10891 WDI_EventInfoType* pEventData
10892)
10893{
10894 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
10895 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010896 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010897 wpt_uint16 usDataOffset = 0;
10898 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010899 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010900 WDI_BSSSessionType* pBSSSes = NULL;
10901 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010902 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010903 tHalStatsReqMsg halStatsReqMsg;
10904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10905
10906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 -------------------------------------------------------------------------*/
10909 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10910 ( NULL == pEventData->pCBfnc ) )
10911 {
10912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010913 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010916 }
10917
10918 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10919 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10920
10921 /*-------------------------------------------------------------------------
10922 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010923 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010924 -------------------------------------------------------------------------*/
10925 wpalMutexAcquire(&pWDICtx->wptMutex);
10926
10927 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010928 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010929 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010930 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10931 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010932 &macBSSID))
10933 {
10934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10935 "This station does not exist in the WDI Station Table %d");
10936 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010938 }
10939
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10941 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010942 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10944 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10945 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010946
10947 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010948 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010949 }
10950
10951 /*------------------------------------------------------------------------
10952 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010953 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010954 ------------------------------------------------------------------------*/
10955 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10956 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10958 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10959 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010960
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010963 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010964 }
10965
10966
10967 wpalMutexRelease(&pWDICtx->wptMutex);
10968
10969 /*-----------------------------------------------------------------------
10970 Get message buffer
10971 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010972 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010973 sizeof(halStatsReqMsg.statsReqParams),
10974 &pSendBuffer, &usDataOffset, &usSendSize))||
10975 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10976 {
10977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10978 "Unable to get send buffer in set bss key req %x %x %x",
10979 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10980 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010982 }
10983
Jeff Johnsone7245742012-09-05 17:12:55 -070010984 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010985 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010987 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010988 wpalMemoryCopy( pSendBuffer+usDataOffset,
10989 &halStatsReqMsg.statsReqParams,
10990 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010991
10992 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010993 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010994
10995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010996 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010997 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010998 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10999 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011000}/*WDI_ProcessGetStatsReq*/
11001
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011002#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11003/**
11004 @brief Process Get Roam Rssi Request function (called when Main FSM
11005 allows it)
11006
11007 @param pWDICtx: pointer to the WLAN DAL context
11008 pEventData: pointer to the event information structure
11009
11010 @see
11011 @return Result of the function call
11012*/
11013WDI_Status
11014WDI_ProcessGetRoamRssiReq
11015(
11016 WDI_ControlBlockType* pWDICtx,
11017 WDI_EventInfoType* pEventData
11018)
11019{
11020 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11021 WDI_GetStatsRspCb wdiGetStatsRspCb;
11022 wpt_uint8* pSendBuffer = NULL;
11023 wpt_uint16 usDataOffset = 0;
11024 wpt_uint16 usSendSize = 0;
11025 wpt_uint8 ucCurrentBSSSesIdx = 0;
11026 WDI_BSSSessionType* pBSSSes = NULL;
11027 wpt_macAddr macBSSID;
11028 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11029 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11031 /*-------------------------------------------------------------------------
11032 Sanity check
11033 -------------------------------------------------------------------------*/
11034 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11035 ( NULL == pEventData->pCBfnc ) )
11036 {
11037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11038 "%s: Invalid parameters", __func__);
11039 WDI_ASSERT(0);
11040 return WDI_STATUS_E_FAILURE;
11041 }
11042
11043 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11044 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11045
11046 /*-------------------------------------------------------------------------
11047 Check to see if we are in the middle of an association, if so queue, if
11048 not it means it is free to process request
11049 -------------------------------------------------------------------------*/
11050 wpalMutexAcquire(&pWDICtx->wptMutex);
11051
11052 /*------------------------------------------------------------------------
11053 Find the BSS for which the request is made
11054 ------------------------------------------------------------------------*/
11055 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11056 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11057 &macBSSID))
11058 {
11059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11060 "This station does not exist in the WDI Station Table %d");
11061 wpalMutexRelease(&pWDICtx->wptMutex);
11062 return WDI_STATUS_E_FAILURE;
11063 }
11064
11065 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11066 if ( NULL == pBSSSes )
11067 {
11068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11069 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11070 __func__, MAC_ADDR_ARRAY(macBSSID));
11071
11072 wpalMutexRelease(&pWDICtx->wptMutex);
11073 return WDI_STATUS_E_NOT_ALLOWED;
11074 }
11075
11076 /*------------------------------------------------------------------------
11077 Check if this BSS is being currently processed or queued,
11078 if queued - queue the new request as well
11079 ------------------------------------------------------------------------*/
11080 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11081 {
11082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11083 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11084 __func__, MAC_ADDR_ARRAY(macBSSID));
11085
11086 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11087 wpalMutexRelease(&pWDICtx->wptMutex);
11088 return wdiStatus;
11089 }
11090
11091 wpalMutexRelease(&pWDICtx->wptMutex);
11092
11093 /*-----------------------------------------------------------------------
11094 Get message buffer
11095 -----------------------------------------------------------------------*/
11096 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11097 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11098 &pSendBuffer, &usDataOffset, &usSendSize))||
11099 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11100 {
11101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11102 "Unable to get send buffer in set bss key req %x %x %x",
11103 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11104 WDI_ASSERT(0);
11105 return WDI_STATUS_E_FAILURE;
11106 }
11107
11108 halRssiRoamReqMsg.roamRssiReqParams.staId =
11109 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11110 wpalMemoryCopy( pSendBuffer+usDataOffset,
11111 &halRssiRoamReqMsg.roamRssiReqParams,
11112 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11113
11114 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11115 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11116
11117 /*-------------------------------------------------------------------------
11118 Send Get STA Request to HAL
11119 -------------------------------------------------------------------------*/
11120 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11121 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11122}/*WDI_ProcessGetRoamRssiReq*/
11123#endif
11124
Jeff Johnson295189b2012-06-20 16:38:30 -070011125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011126 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011127 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011128
11129 @param pWDICtx: pointer to the WLAN DAL context
11130 pEventData: pointer to the event information structure
11131
Jeff Johnson295189b2012-06-20 16:38:30 -070011132 @see
11133 @return Result of the function call
11134*/
11135WDI_Status
11136WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011137(
Jeff Johnson295189b2012-06-20 16:38:30 -070011138 WDI_ControlBlockType* pWDICtx,
11139 WDI_EventInfoType* pEventData
11140)
11141{
11142 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11143 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11144
Jeff Johnsone7245742012-09-05 17:12:55 -070011145 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011146 wpt_uint16 usDataOffset = 0;
11147 wpt_uint16 usSendSize = 0;
11148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11149
11150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011152 -------------------------------------------------------------------------*/
11153 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11154 ( NULL == pEventData->pCBfnc))
11155 {
11156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011160 }
11161
11162 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11163 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11164
11165 /*-----------------------------------------------------------------------
11166 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011167 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011168 -----------------------------------------------------------------------*/
11169
Jeff Johnsone7245742012-09-05 17:12:55 -070011170 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011171 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11172 &pSendBuffer, &usDataOffset, &usSendSize))||
11173 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11174 {
11175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11176 "Unable to get send buffer in set bss key req %x %x %x",
11177 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 }
11181
Jeff Johnsone7245742012-09-05 17:12:55 -070011182 wpalMemoryCopy( pSendBuffer+usDataOffset,
11183 &pwdiUpdateCfgParams->uConfigBufferLen,
11184 sizeof(wpt_uint32));
11185 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11186 pwdiUpdateCfgParams->pConfigBuffer,
11187 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011188
11189 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011190 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011191
11192 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011193 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011194 -------------------------------------------------------------------------*/
11195
Jeff Johnsone7245742012-09-05 17:12:55 -070011196 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11197 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011198
11199}/*WDI_ProcessUpdateCfgReq*/
11200
11201
11202/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011203 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011205
11206 @param pWDICtx: pointer to the WLAN DAL context
11207 pEventData: pointer to the event information structure
11208
Jeff Johnson295189b2012-06-20 16:38:30 -070011209 @see
11210 @return Result of the function call
11211*/
11212WDI_Status
11213WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011214(
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 WDI_ControlBlockType* pWDICtx,
11216 WDI_EventInfoType* pEventData
11217)
11218{
11219 WDI_AddBAReqParamsType* pwdiAddBAParams;
11220 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011221 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011222 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011223 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 wpt_uint16 usDataOffset = 0;
11225 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011226 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011227 wpt_macAddr macBSSID;
11228
11229 tAddBAReqMsg halAddBAReq;
11230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11231
11232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011233 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011234 -------------------------------------------------------------------------*/
11235 if (( NULL == pEventData ) ||
11236 ( NULL == pEventData->pEventData) ||
11237 ( NULL == pEventData->pCBfnc ))
11238 {
11239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011243 }
11244
11245 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11246 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11247
11248 /*-------------------------------------------------------------------------
11249 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011250 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011251 -------------------------------------------------------------------------*/
11252 wpalMutexAcquire(&pWDICtx->wptMutex);
11253
11254 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011255 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011256 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011257 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11258 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011259 &macBSSID))
11260 {
11261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11262 "This station does not exist in the WDI Station Table %d");
11263 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011264 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011265 }
11266
Jeff Johnsone7245742012-09-05 17:12:55 -070011267 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11268 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011269 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11271 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11272 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011273
11274 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011275 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011276 }
11277
11278 /*------------------------------------------------------------------------
11279 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011280 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011281 ------------------------------------------------------------------------*/
11282 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11283 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11285 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11286 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011287
Jeff Johnsone7245742012-09-05 17:12:55 -070011288 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011289 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011290 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011291 }
11292
11293
11294 wpalMutexRelease(&pWDICtx->wptMutex);
11295 /*-----------------------------------------------------------------------
11296 Get message buffer
11297 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011298 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011299 sizeof(halAddBAReq.addBAParams),
11300 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011301 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11303 {
11304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11305 "Unable to get send buffer in Add BA req %x %x %x",
11306 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 }
11310
Jeff Johnsone7245742012-09-05 17:12:55 -070011311 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011312 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11313 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11314#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011315 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011316 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11317#endif
11318
Jeff Johnsone7245742012-09-05 17:12:55 -070011319 wpalMemoryCopy( pSendBuffer+usDataOffset,
11320 &halAddBAReq.addBAParams,
11321 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011322
11323 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011325
11326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011327 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011328 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011329 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11330 wdiAddBARspCb, pEventData->pUserData,
11331 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011332}/*WDI_ProcessAddBAReq*/
11333
11334
11335
11336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011337 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011338 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011339
11340 @param pWDICtx: pointer to the WLAN DAL context
11341 pEventData: pointer to the event information structure
11342
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 @see
11344 @return Result of the function call
11345*/
11346WDI_Status
11347WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011348(
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 WDI_ControlBlockType* pWDICtx,
11350 WDI_EventInfoType* pEventData
11351)
11352{
11353 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11354 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011355 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011356 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011357 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011358 wpt_uint16 usDataOffset = 0;
11359 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 wpt_uint16 index;
11362 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011363
Jeff Johnson295189b2012-06-20 16:38:30 -070011364 tTriggerBAReqMsg halTriggerBAReq;
11365 tTriggerBaReqCandidate* halTriggerBACandidate;
11366 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11368
11369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011370 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011371 -------------------------------------------------------------------------*/
11372 if (( NULL == pEventData ) ||
11373 ( NULL == pEventData->pEventData ) ||
11374 ( NULL == pEventData->pCBfnc ))
11375 {
11376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011377 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 }
11381
11382 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11383 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11384 /*-------------------------------------------------------------------------
11385 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011386 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 -------------------------------------------------------------------------*/
11388 wpalMutexAcquire(&pWDICtx->wptMutex);
11389
11390 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011391 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011393 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11394 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011395 &macBSSID))
11396 {
11397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11398 "This station does not exist in the WDI Station Table %d");
11399 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011400 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011401 }
11402
Jeff Johnsone7245742012-09-05 17:12:55 -070011403 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11404 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011405 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11407 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11408 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011409
11410 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011411 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011412 }
11413
11414 /*------------------------------------------------------------------------
11415 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011416 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011417 ------------------------------------------------------------------------*/
11418 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11419 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11421 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11422 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011423
Jeff Johnsone7245742012-09-05 17:12:55 -070011424 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011425 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011426 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011427 }
11428
11429
11430 wpalMutexRelease(&pWDICtx->wptMutex);
11431 /*-----------------------------------------------------------------------
11432 Get message buffer
11433 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11435 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011436 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011437 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011438 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11439 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011440 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011441 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011442 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011443 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11444 {
11445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11446 "Unable to get send buffer in Trigger BA req %x %x %x",
11447 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011450 }
11451
Jeff Johnsone7245742012-09-05 17:12:55 -070011452 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011454 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011455 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11456
Jeff Johnsone7245742012-09-05 17:12:55 -070011457 wpalMemoryCopy( pSendBuffer+usDataOffset,
11458 &halTriggerBAReq.triggerBAParams,
11459 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011460
Jeff Johnsone7245742012-09-05 17:12:55 -070011461 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011462 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11463 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11464 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011465
11466 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 index++)
11468 {
11469 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11470 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11471 halTriggerBACandidate++;
11472 wdiTriggerBACandidate++;
11473 }
11474
11475 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011476 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011477
11478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011479 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011481 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11482 wdiTriggerBARspCb, pEventData->pUserData,
11483 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011484}/*WDI_ProcessTriggerBAReq*/
11485
11486
11487
11488/**
11489 @brief Process Update Beacon Params Request function (called when Main FSM
11490 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011491
11492 @param pWDICtx: pointer to the WLAN DAL context
11493 pEventData: pointer to the event information structure
11494
Jeff Johnson295189b2012-06-20 16:38:30 -070011495 @see
11496 @return Result of the function call
11497*/
11498WDI_Status
11499WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011500(
Jeff Johnson295189b2012-06-20 16:38:30 -070011501 WDI_ControlBlockType* pWDICtx,
11502 WDI_EventInfoType* pEventData
11503)
11504{
11505 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11506 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011508 wpt_uint16 usDataOffset = 0;
11509 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011510 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011511 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11512
11513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011515 -------------------------------------------------------------------------*/
11516 if (( NULL == pEventData ) ||
11517 ( NULL == pEventData->pEventData) ||
11518 ( NULL == pEventData->pCBfnc))
11519 {
11520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011521 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 }
11525
11526 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11527 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11528 /*-----------------------------------------------------------------------
11529 Get message buffer
11530 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011531 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011532 sizeof(halUpdateBeaconParams),
11533 &pSendBuffer, &usDataOffset, &usSendSize))||
11534 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11535 {
11536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11537 "Unable to get send buffer in set bss key req %x %x %x",
11538 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11539 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 }
11542
11543 /*BSS Index of the BSS*/
11544 halUpdateBeaconParams.bssIdx =
11545 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11546 /*shortPreamble mode. HAL should update all the STA rates when it
11547 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011549 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11550 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11553 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011554 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011555 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11556
11557 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011558 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011559 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011560 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011561 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011562 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011563 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011564 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011565 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011568 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011569 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11570 halUpdateBeaconParams.fRIFSMode =
11571 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011572 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11574
Jeff Johnsone7245742012-09-05 17:12:55 -070011575 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11576 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011577
11578 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011579 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011580
11581 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011582 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011583 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011584 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11585 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011586}/*WDI_ProcessUpdateBeaconParamsReq*/
11587
11588
11589
11590/**
11591 @brief Process Send Beacon template Request function (called when Main FSM
11592 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011593
11594 @param pWDICtx: pointer to the WLAN DAL context
11595 pEventData: pointer to the event information structure
11596
Jeff Johnson295189b2012-06-20 16:38:30 -070011597 @see
11598 @return Result of the function call
11599*/
11600WDI_Status
11601WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011602(
Jeff Johnson295189b2012-06-20 16:38:30 -070011603 WDI_ControlBlockType* pWDICtx,
11604 WDI_EventInfoType* pEventData
11605)
11606{
11607 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11608 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011609 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011610 wpt_uint16 usDataOffset = 0;
11611 wpt_uint16 usSendSize = 0;
11612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11613
11614 tSendBeaconReqMsg halSendBeaconReq;
11615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011616 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011617 -------------------------------------------------------------------------*/
11618 if (( NULL == pEventData ) ||
11619 ( NULL == pEventData->pEventData ) ||
11620 ( NULL == pEventData->pCBfnc ))
11621 {
11622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011623 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011624 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011626 }
11627
11628 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11629 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11630 /*-----------------------------------------------------------------------
11631 Get message buffer
11632 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011633 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011634 sizeof(halSendBeaconReq.sendBeaconParam),
11635 &pSendBuffer, &usDataOffset, &usSendSize))||
11636 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11637 {
11638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11639 "Unable to get send buffer in send beacon req %x %x %x",
11640 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 }
11644
11645 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11646 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11647 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011648 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011649 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11650 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11651 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11652 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070011653 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011654 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070011655 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070011657
Jeff Johnsone7245742012-09-05 17:12:55 -070011658 wpalMemoryCopy( pSendBuffer+usDataOffset,
11659 &halSendBeaconReq.sendBeaconParam,
11660 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011661
11662 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011663 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011664
11665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011666 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011667 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011668 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11669 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011670}/*WDI_ProcessSendBeaconParamsReq*/
11671
11672/**
11673 @brief Process Update Beacon Params Request function (called when Main FSM
11674 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011675
11676 @param pWDICtx: pointer to the WLAN DAL context
11677 pEventData: pointer to the event information structure
11678
Jeff Johnson295189b2012-06-20 16:38:30 -070011679 @see
11680 @return Result of the function call
11681*/
11682WDI_Status
11683WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011684(
Jeff Johnson295189b2012-06-20 16:38:30 -070011685 WDI_ControlBlockType* pWDICtx,
11686 WDI_EventInfoType* pEventData
11687)
11688{
11689 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11690 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011691 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011692 wpt_uint16 usDataOffset = 0;
11693 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011694 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11696
11697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011698 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011699 -------------------------------------------------------------------------*/
11700 if (( NULL == pEventData ) ||
11701 ( NULL == pEventData->pEventData) ||
11702 ( NULL == pEventData->pCBfnc))
11703 {
11704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011705 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011706 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011707 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011708 }
11709
Jeff Johnsone7245742012-09-05 17:12:55 -070011710 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011711 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011712 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011713 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11714 /*-----------------------------------------------------------------------
11715 Get message buffer
11716 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011717 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011718 sizeof(halUpdateProbeRspTmplParams),
11719 &pSendBuffer, &usDataOffset, &usSendSize))||
11720 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11721 {
11722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11723 "Unable to get send buffer in set bss key req %x %x %x",
11724 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 }
11728
11729 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011730 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011731 WDI_MAC_ADDR_LEN);
11732
Jeff Johnsone7245742012-09-05 17:12:55 -070011733 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011734 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11735
11736 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11737 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011738 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011739
11740
11741 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11742 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11743 WDI_PROBE_REQ_BITMAP_IE_LEN);
11744
Jeff Johnsone7245742012-09-05 17:12:55 -070011745 wpalMemoryCopy( pSendBuffer+usDataOffset,
11746 &halUpdateProbeRspTmplParams,
11747 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011748
11749 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011750 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011751
11752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011753 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011754 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011755 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11756 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11757 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011758}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11759
11760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011763
11764 @param pWDICtx: pointer to the WLAN DAL context
11765 pEventData: pointer to the event information structure
11766
Jeff Johnson295189b2012-06-20 16:38:30 -070011767 @see
11768 @return Result of the function call
11769*/
11770WDI_Status
11771WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011772(
Jeff Johnson295189b2012-06-20 16:38:30 -070011773 WDI_ControlBlockType* pWDICtx,
11774 WDI_EventInfoType* pEventData
11775)
11776{
11777
11778 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11779 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11780
11781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011783 -------------------------------------------------------------------------*/
11784 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011785 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011786 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011787 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011788 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11789 {
11790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011794 }
11795
11796 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011797 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011798 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11799
11800 /*cache the wdi nv request message here if the the first fragment
11801 * To issue the request to HAL for the next fragment */
11802 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11803 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011804 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11805 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011806 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11807
11808 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11809 pWDICtx->pRspCBUserData = pEventData->pUserData;
11810 }
11811
11812 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11813}
11814
11815/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011816 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011817 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011818
11819 @param pWDICtx: pointer to the WLAN DAL context
11820 pEventData: pointer to the event information structure
11821
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 @see
11823 @return Result of the function call
11824*/
11825WDI_Status WDI_ProcessSetMaxTxPowerReq
11826(
11827 WDI_ControlBlockType* pWDICtx,
11828 WDI_EventInfoType* pEventData
11829)
11830{
11831 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11832 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011833 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011834 wpt_uint16 usDataOffset = 0;
11835 wpt_uint16 usSendSize = 0;
11836 tSetMaxTxPwrReq halSetMaxTxPower;
11837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11838
11839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011840 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011841 -------------------------------------------------------------------------*/
11842 if (( NULL == pEventData ) ||
11843 ( NULL == pEventData->pEventData ) ||
11844 ( NULL == pEventData->pCBfnc ))
11845 {
11846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011847 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011851 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011852 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011853 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011854 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11855
11856 /*-----------------------------------------------------------------------
11857 Get message buffer
11858 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011859if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011860 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11861 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011862 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011863)))
11864 {
11865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11866 "Unable to get Set Max Tx Power req %x %x %x",
11867 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011870 }
11871
11872 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11873 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11874 WDI_MAC_ADDR_LEN);
11875
11876 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11877 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11878 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011879 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011880 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011881
11882 wpalMemoryCopy( pSendBuffer+usDataOffset,
11883 &halSetMaxTxPower.setMaxTxPwrParams,
11884 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011885
11886 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011887 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011888
11889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011890 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011891 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011892 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11893 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11894 WDI_SET_MAX_TX_POWER_RESP);
11895
Jeff Johnson295189b2012-06-20 16:38:30 -070011896}
11897
schangd82195a2013-03-13 18:41:24 -070011898/**
11899 @brief Process Set Tx Power Request function (called when Main
11900 FSM allows it)
11901
11902 @param pWDICtx: pointer to the WLAN DAL context
11903 pEventData: pointer to the event information structure
11904
11905 @see
11906 @return Result of the function call
11907*/
11908WDI_Status WDI_ProcessSetTxPowerReq
11909(
11910 WDI_ControlBlockType* pWDICtx,
11911 WDI_EventInfoType* pEventData
11912)
11913{
11914 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
11915 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
11916 wpt_uint8* pSendBuffer = NULL;
11917 wpt_uint16 usDataOffset = 0;
11918 wpt_uint16 usSendSize = 0;
11919 tSetTxPwrReqMsg *halSetTxPower = NULL;;
11920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11921
11922 /*-------------------------------------------------------------------------
11923 Sanity check
11924 -------------------------------------------------------------------------*/
11925 if (( NULL == pEventData ) ||
11926 ( NULL == pEventData->pEventData ) ||
11927 ( NULL == pEventData->pCBfnc ))
11928 {
11929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11930 "%s: Invalid parameters", __func__);
11931 WDI_ASSERT(0);
11932 return WDI_STATUS_E_FAILURE;
11933 }
11934
11935 pwdiSetTxPowerParams =
11936 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
11937 wdiSetTxPowerRspCb =
11938 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
11939
11940 /*-----------------------------------------------------------------------
11941 Get message buffer
11942 -----------------------------------------------------------------------*/
11943 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
11944 sizeof(tSetTxPwrReqParams),
11945 &pSendBuffer, &usDataOffset, &usSendSize))||
11946 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
11947 )))
11948 {
11949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11950 "Unable to get Set Max Tx Power req %x %x %x",
11951 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
11952 WDI_ASSERT(0);
11953 return WDI_STATUS_E_FAILURE;
11954 }
11955
11956 halSetTxPower = (tSetTxPwrReqMsg *)(pSendBuffer+usDataOffset);
11957 halSetTxPower->setTxPwrReqParams.txPower =
11958 pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
11959 halSetTxPower->setTxPwrReqParams.bssIdx =
11960 pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
11961
11962 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
11963 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
11964
11965 /*-------------------------------------------------------------------------
11966 Send Set Tx Power Request to HAL
11967 -------------------------------------------------------------------------*/
11968 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11969 wdiSetTxPowerRspCb, pEventData->pUserData,
11970 WDI_SET_TX_POWER_RESP);
11971}
Jeff Johnson295189b2012-06-20 16:38:30 -070011972
11973/**
11974 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11975 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011976
11977 @param pWDICtx: pointer to the WLAN DAL context
11978 pEventData: pointer to the event information structure
11979
Jeff Johnson295189b2012-06-20 16:38:30 -070011980 @see
11981 @return Result of the function call
11982*/
11983WDI_Status
11984WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011985(
Jeff Johnson295189b2012-06-20 16:38:30 -070011986 WDI_ControlBlockType* pWDICtx,
11987 WDI_EventInfoType* pEventData
11988)
11989{
11990 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
11991 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011992 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011993 wpt_uint16 usDataOffset = 0;
11994 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011995 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11997
11998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012000 -------------------------------------------------------------------------*/
12001 if (( NULL == pEventData ) ||
12002 ( NULL == pEventData->pEventData) ||
12003 ( NULL == pEventData->pCBfnc))
12004 {
12005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012006 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012007 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012009 }
12010
Jeff Johnsone7245742012-09-05 17:12:55 -070012011 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012012 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012013 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12015 /*-----------------------------------------------------------------------
12016 Get message buffer
12017 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012018 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12019 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012020 sizeof(halSetP2PGONOAParams),
12021 &pSendBuffer, &usDataOffset, &usSendSize))||
12022 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12023 {
12024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12025 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12026 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 }
12030
Jeff Johnsone7245742012-09-05 17:12:55 -070012031 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012032 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012033 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012034 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12035 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012036 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012038 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012039 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012043 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12044
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 wpalMemoryCopy( pSendBuffer+usDataOffset,
12046 &halSetP2PGONOAParams,
12047 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012048
12049 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012050 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012051
12052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012053 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012054 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12056 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12057 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012058}/*WDI_ProcessP2PGONOAReq*/
12059
Jeff Johnson295189b2012-06-20 16:38:30 -070012060
12061
12062/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012064 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012065 @param None
12066
12067 @see
12068 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012069*/
12070void
12071WDI_SetPowerStateCb
12072(
12073 wpt_status status,
12074 unsigned int dxePhyAddr,
12075 void *pContext
12076)
12077{
12078 wpt_status wptStatus;
12079 WDI_ControlBlockType *pCB = NULL;
12080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12081 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12082 {
12083 //it shouldn't happen, put an error msg
12084 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012085 /*
12086 * Trigger the event to bring the Enter BMPS req function to come
12087 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012088*/
12089 if( NULL != pContext )
12090 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012091 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012092 }
12093 else
12094 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012095 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012096 pCB = &gWDICb;
12097 }
12098 pCB->dxePhyAddr = dxePhyAddr;
12099 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12100 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12101 {
12102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12103 "Failed to set an event");
12104
Jeff Johnsone7245742012-09-05 17:12:55 -070012105 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012106 }
12107 return;
12108}
12109
12110
12111/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012112 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012113 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012114
12115 @param pWDICtx: pointer to the WLAN DAL context
12116 pEventData: pointer to the event information structure
12117
Jeff Johnson295189b2012-06-20 16:38:30 -070012118 @see
12119 @return Result of the function call
12120*/
12121WDI_Status
12122WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012123(
Jeff Johnson295189b2012-06-20 16:38:30 -070012124 WDI_ControlBlockType* pWDICtx,
12125 WDI_EventInfoType* pEventData
12126)
12127{
Jeff Johnson43971f52012-07-17 12:26:56 -070012128 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012129 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012130 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012131 wpt_uint16 usDataOffset = 0;
12132 wpt_uint16 usSendSize = 0;
12133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12134
12135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012136 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012137 -------------------------------------------------------------------------*/
12138 if (( NULL == pEventData ) ||
12139 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12140 {
12141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012142 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012144 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012145 }
12146
12147 /*-----------------------------------------------------------------------
12148 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012149 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012150 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012151 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012152 0,
12153 &pSendBuffer, &usDataOffset, &usSendSize))||
12154 ( usSendSize < (usDataOffset )))
12155 {
12156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12157 "Unable to get send buffer in Enter IMPS req %x %x",
12158 pEventData, wdiEnterImpsRspCb);
12159 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012160 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 }
12162
12163 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012164 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12165 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 {
12167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12168 "WDI Init failed to reset an event");
12169
Jeff Johnsone7245742012-09-05 17:12:55 -070012170 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012171 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012172 }
12173
12174 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012175 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12176 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12178 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12179 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012180 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012181 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012182
12183 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012184 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012185 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012186 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12187 WDI_SET_POWER_STATE_TIMEOUT);
12188 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012189 {
12190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12191 "WDI Init failed to wait on an event");
12192
Jeff Johnsone7245742012-09-05 17:12:55 -070012193 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012194 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012195 }
12196
12197 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012198 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012199 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12201 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012202
12203fail:
12204 // Release the message buffer so we don't leak
12205 wpalMemoryFree(pSendBuffer);
12206
12207failRequest:
12208 //WDA should have failure check to avoid the memory leak
12209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012210}/*WDI_ProcessEnterImpsReq*/
12211
12212/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012213 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012214 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012215
12216 @param pWDICtx: pointer to the WLAN DAL context
12217 pEventData: pointer to the event information structure
12218
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 @see
12220 @return Result of the function call
12221*/
12222WDI_Status
12223WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012224(
Jeff Johnson295189b2012-06-20 16:38:30 -070012225 WDI_ControlBlockType* pWDICtx,
12226 WDI_EventInfoType* pEventData
12227)
12228{
12229 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012230 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012231 wpt_uint16 usDataOffset = 0;
12232 wpt_uint16 usSendSize = 0;
12233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12234
12235 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012236 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012237 -------------------------------------------------------------------------*/
12238 if (( NULL == pEventData ) ||
12239 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12240 {
12241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012242 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012245 }
12246
12247 /*-----------------------------------------------------------------------
12248 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012250 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012251 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 0,
12253 &pSendBuffer, &usDataOffset, &usSendSize))||
12254 ( usSendSize < (usDataOffset )))
12255 {
12256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12257 "Unable to get send buffer in Exit IMPS req %x %x",
12258 pEventData, wdiExitImpsRspCb);
12259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 }
12262
12263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012264 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012266 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12267 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012268}/*WDI_ProcessExitImpsReq*/
12269
12270/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012271 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012272 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012273
12274 @param pWDICtx: pointer to the WLAN DAL context
12275 pEventData: pointer to the event information structure
12276
Jeff Johnson295189b2012-06-20 16:38:30 -070012277 @see
12278 @return Result of the function call
12279*/
12280WDI_Status
12281WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012282(
Jeff Johnson295189b2012-06-20 16:38:30 -070012283 WDI_ControlBlockType* pWDICtx,
12284 WDI_EventInfoType* pEventData
12285)
12286{
12287 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12288 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012289 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 wpt_uint16 usDataOffset = 0;
12291 wpt_uint16 usSendSize = 0;
12292 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012293 wpt_status wptStatus;
12294
Jeff Johnson295189b2012-06-20 16:38:30 -070012295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12296
12297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012299 -------------------------------------------------------------------------*/
12300 if (( NULL == pEventData ) ||
12301 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12302 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12303 {
12304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012306 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012307 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 }
12309
12310 /*-----------------------------------------------------------------------
12311 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012312 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012313 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012314 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 sizeof(enterBmpsReq),
12316 &pSendBuffer, &usDataOffset, &usSendSize))||
12317 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12318 {
12319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12320 "Unable to get send buffer in Enter BMPS req %x %x %x",
12321 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12322 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012323 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 }
12325
12326 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012327 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12328 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012329 {
12330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12331 "WDI Init failed to reset an event");
12332
Jeff Johnsone7245742012-09-05 17:12:55 -070012333 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012334 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 }
12336
12337 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012338 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12339 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12340 {
12341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12342 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12343 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012344 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012345 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012346
12347/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012348 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012349 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012350 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12351 WDI_SET_POWER_STATE_TIMEOUT);
12352 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012353 {
12354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12355 "WDI Init failed to wait on an event");
12356
Jeff Johnsone7245742012-09-05 17:12:55 -070012357 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012358 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012359 }
12360
12361 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12362
12363 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12364 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12365 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12366 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12367
12368 // For CCX and 11R Roaming
12369 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12370 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12371 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12372
12373 wpalMemoryCopy( pSendBuffer+usDataOffset,
12374 &enterBmpsReq,
12375 sizeof(enterBmpsReq));
12376
12377 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012378 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012379
12380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012381 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012382 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12384 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012385
12386fail:
12387 // Release the message buffer so we don't leak
12388 wpalMemoryFree(pSendBuffer);
12389
12390failRequest:
12391 //WDA should have failure check to avoid the memory leak
12392 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012393}/*WDI_ProcessEnterBmpsReq*/
12394
12395/**
12396 @brief Process Exit BMPS Request function (called when Main FSM
12397 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012398
12399 @param pWDICtx: pointer to the WLAN DAL context
12400 pEventData: pointer to the event information structure
12401
Jeff Johnson295189b2012-06-20 16:38:30 -070012402 @see
12403 @return Result of the function call
12404*/
12405WDI_Status
12406WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012407(
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 WDI_ControlBlockType* pWDICtx,
12409 WDI_EventInfoType* pEventData
12410)
12411{
12412 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12413 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 wpt_uint16 usDataOffset = 0;
12416 wpt_uint16 usSendSize = 0;
12417 tHalExitBmpsReqParams exitBmpsReq;
12418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12419
12420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012422 -------------------------------------------------------------------------*/
12423 if (( NULL == pEventData ) ||
12424 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12425 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12426 {
12427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012428 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012429 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012431 }
12432
12433 /*-----------------------------------------------------------------------
12434 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012436 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012437 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012438 sizeof(exitBmpsReq),
12439 &pSendBuffer, &usDataOffset, &usSendSize))||
12440 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12441 {
12442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12443 "Unable to get send buffer in Exit BMPS req %x %x %x",
12444 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012447 }
12448 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12449
Jeff Johnsone7245742012-09-05 17:12:55 -070012450 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12451
Jeff Johnson295189b2012-06-20 16:38:30 -070012452 wpalMemoryCopy( pSendBuffer+usDataOffset,
12453 &exitBmpsReq,
12454 sizeof(exitBmpsReq));
12455
12456 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012457 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012458
12459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012460 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012461 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012462 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12463 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012464}/*WDI_ProcessExitBmpsReq*/
12465
12466/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012467 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012468 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012469
12470 @param pWDICtx: pointer to the WLAN DAL context
12471 pEventData: pointer to the event information structure
12472
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 @see
12474 @return Result of the function call
12475*/
12476WDI_Status
12477WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012478(
Jeff Johnson295189b2012-06-20 16:38:30 -070012479 WDI_ControlBlockType* pWDICtx,
12480 WDI_EventInfoType* pEventData
12481)
12482{
12483 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12484 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012485 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012486 wpt_uint16 usDataOffset = 0;
12487 wpt_uint16 usSendSize = 0;
12488 tUapsdReqParams enterUapsdReq;
12489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12490
12491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012492 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012493 -------------------------------------------------------------------------*/
12494 if (( NULL == pEventData ) ||
12495 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12496 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12497 {
12498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012499 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 }
12503
12504 /*-----------------------------------------------------------------------
12505 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012506 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012507 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012508 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012509 sizeof(enterUapsdReq),
12510 &pSendBuffer, &usDataOffset, &usSendSize))||
12511 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12512 {
12513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12514 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12515 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12516 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012517 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 }
12519
12520 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12521 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12522 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12523 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12524 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12525 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12526 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12527 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012528 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012529
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 wpalMemoryCopy( pSendBuffer+usDataOffset,
12531 &enterUapsdReq,
12532 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012533
12534 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012535 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012536
12537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012538 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12541 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012542}/*WDI_ProcessEnterUapsdReq*/
12543
12544/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012545 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012546 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012547
12548 @param pWDICtx: pointer to the WLAN DAL context
12549 pEventData: pointer to the event information structure
12550
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 @see
12552 @return Result of the function call
12553*/
12554WDI_Status
12555WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012556(
Jeff Johnson295189b2012-06-20 16:38:30 -070012557 WDI_ControlBlockType* pWDICtx,
12558 WDI_EventInfoType* pEventData
12559)
12560{
12561 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 wpt_uint16 usDataOffset = 0;
12564 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012565 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12566 wpt_uint8 bssIdx = 0;
12567
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12569
12570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 -------------------------------------------------------------------------*/
12573 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012574 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12576 {
12577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012578 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 }
12582
12583 /*-----------------------------------------------------------------------
12584 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012585 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012586 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012587 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012588 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012589 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012590 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012591 {
12592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12593 "Unable to get send buffer in Exit UAPSD req %x %x",
12594 pEventData, wdiExitUapsdRspCb);
12595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012597 }
12598
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012599 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12600
12601 wpalMemoryCopy( pSendBuffer+usDataOffset,
12602 &bssIdx,
12603 sizeof(wpt_uint8));
12604
12605 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12606 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12607
Jeff Johnson295189b2012-06-20 16:38:30 -070012608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012609 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012611 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12612 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012613}/*WDI_ProcessExitUapsdReq*/
12614
12615/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012616 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012618
12619 @param pWDICtx: pointer to the WLAN DAL context
12620 pEventData: pointer to the event information structure
12621
Jeff Johnson295189b2012-06-20 16:38:30 -070012622 @see
12623 @return Result of the function call
12624*/
12625WDI_Status
12626WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012627(
Jeff Johnson295189b2012-06-20 16:38:30 -070012628 WDI_ControlBlockType* pWDICtx,
12629 WDI_EventInfoType* pEventData
12630)
12631{
12632 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12633 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012634 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012635 wpt_uint16 usDataOffset = 0;
12636 wpt_uint16 usSendSize = 0;
12637 tUapsdInfo uapsdAcParamsReq;
12638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12639
12640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012642 -------------------------------------------------------------------------*/
12643 if (( NULL == pEventData ) ||
12644 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12645 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12646 {
12647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 }
12652
12653 /*-----------------------------------------------------------------------
12654 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012655 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012656 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012657 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 sizeof(uapsdAcParamsReq),
12659 &pSendBuffer, &usDataOffset, &usSendSize))||
12660 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12661 {
12662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12663 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12664 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12665 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012666 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012667 }
12668
12669 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12670 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12671 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12672 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12673 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12674 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12675
Jeff Johnsone7245742012-09-05 17:12:55 -070012676 wpalMemoryCopy( pSendBuffer+usDataOffset,
12677 &uapsdAcParamsReq,
12678 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012679
12680 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012681 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012682
12683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012686 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12687 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012688}/*WDI_ProcessSetUapsdAcParamsReq*/
12689
12690/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012691 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012692 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012693
12694 @param pWDICtx: pointer to the WLAN DAL context
12695 pEventData: pointer to the event information structure
12696
Jeff Johnson295189b2012-06-20 16:38:30 -070012697 @see
12698 @return Result of the function call
12699*/
12700WDI_Status
12701WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012702(
Jeff Johnson295189b2012-06-20 16:38:30 -070012703 WDI_ControlBlockType* pWDICtx,
12704 WDI_EventInfoType* pEventData
12705)
12706{
12707 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12708 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012709 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012710 wpt_uint16 usDataOffset = 0;
12711 wpt_uint16 usSendSize = 0;
12712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12713
12714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012716 -------------------------------------------------------------------------*/
12717 if (( NULL == pEventData ) ||
12718 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12719 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12720 {
12721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012725 }
12726
12727 /*-----------------------------------------------------------------------
12728 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012729 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012730 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012731 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012732 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12733 &pSendBuffer, &usDataOffset, &usSendSize))||
12734 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12735 {
12736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12737 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12738 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12739 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012741 }
12742
Jeff Johnsone7245742012-09-05 17:12:55 -070012743 wpalMemoryCopy( pSendBuffer+usDataOffset,
12744 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12745 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012746
12747 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012748 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012749
12750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12754 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012755}/*WDI_ProcessUpdateUapsdParamsReq*/
12756
12757/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012758 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012759 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012760
12761 @param pWDICtx: pointer to the WLAN DAL context
12762 pEventData: pointer to the event information structure
12763
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 @see
12765 @return Result of the function call
12766*/
12767WDI_Status
12768WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012769(
Jeff Johnson295189b2012-06-20 16:38:30 -070012770 WDI_ControlBlockType* pWDICtx,
12771 WDI_EventInfoType* pEventData
12772)
12773{
12774 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12775 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012776 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012777 wpt_uint16 usDataOffset = 0;
12778 wpt_uint16 usSendSize = 0;
12779 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12780
12781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12782
12783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012785 -------------------------------------------------------------------------*/
12786 if (( NULL == pEventData ) ||
12787 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12788 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12789 {
12790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 }
12795
12796 /*-----------------------------------------------------------------------
12797 Get message buffer
12798 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012799 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 sizeof(halRxpFilterParams),
12801 &pSendBuffer, &usDataOffset, &usSendSize))||
12802 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12803 {
12804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12805 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12806 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012809 }
12810
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012812 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012813 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012814 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12815
Jeff Johnsone7245742012-09-05 17:12:55 -070012816 wpalMemoryCopy( pSendBuffer+usDataOffset,
12817 &halRxpFilterParams,
12818 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012819
12820 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012821 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012822
12823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012824 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012825 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012826 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12827 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012828}/*WDI_ProcessConfigureRxpFilterReq*/
12829
12830/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012833
12834 @param pWDICtx: pointer to the WLAN DAL context
12835 pEventData: pointer to the event information structure
12836
Jeff Johnson295189b2012-06-20 16:38:30 -070012837 @see
12838 @return Result of the function call
12839*/
12840WDI_Status
12841WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012842(
Jeff Johnson295189b2012-06-20 16:38:30 -070012843 WDI_ControlBlockType* pWDICtx,
12844 WDI_EventInfoType* pEventData
12845)
12846{
12847 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12848 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012849 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012850 wpt_uint16 usDataOffset = 0;
12851 wpt_uint16 usSendSize = 0;
12852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12853
12854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012855 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012856 -------------------------------------------------------------------------*/
12857 if (( NULL == pEventData ) ||
12858 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12859 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12860 {
12861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012862 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 }
12866
12867 /*-----------------------------------------------------------------------
12868 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012869 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012870 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12873 &pSendBuffer, &usDataOffset, &usSendSize))||
12874 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12875 {
12876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12877 "Unable to get send buffer in Set beacon filter req %x %x %x",
12878 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 }
12882
Jeff Johnsone7245742012-09-05 17:12:55 -070012883 wpalMemoryCopy( pSendBuffer+usDataOffset,
12884 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12885 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12886 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12887 &pwdiBeaconFilterParams->aFilters[0],
12888 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012889
12890 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012892
12893 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012894 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012896 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12897 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012898}/*WDI_ProcessSetBeaconFilterReq*/
12899
12900/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012903
12904 @param pWDICtx: pointer to the WLAN DAL context
12905 pEventData: pointer to the event information structure
12906
Jeff Johnson295189b2012-06-20 16:38:30 -070012907 @see
12908 @return Result of the function call
12909*/
12910WDI_Status
12911WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012912(
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 WDI_ControlBlockType* pWDICtx,
12914 WDI_EventInfoType* pEventData
12915)
12916{
12917 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12918 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012919 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012920 wpt_uint16 usDataOffset = 0;
12921 wpt_uint16 usSendSize = 0;
12922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12923
12924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012925 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012926 -------------------------------------------------------------------------*/
12927 if (( NULL == pEventData ) ||
12928 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12929 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12930 {
12931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012932 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 }
12936
12937 /*-----------------------------------------------------------------------
12938 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012939 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012940 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012941 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012942 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12943 &pSendBuffer, &usDataOffset, &usSendSize))||
12944 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12945 {
12946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12947 "Unable to get send buffer in remove beacon filter req %x %x %x",
12948 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12949 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012950 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012951 }
12952
Jeff Johnsone7245742012-09-05 17:12:55 -070012953 wpalMemoryCopy( pSendBuffer+usDataOffset,
12954 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12955 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012956
12957 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012959
12960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012961 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12964 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012965}
12966
12967/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012968 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012969 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012970
12971 @param pWDICtx: pointer to the WLAN DAL context
12972 pEventData: pointer to the event information structure
12973
Jeff Johnson295189b2012-06-20 16:38:30 -070012974 @see
12975 @return Result of the function call
12976*/
12977WDI_Status
12978WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012979(
Jeff Johnson295189b2012-06-20 16:38:30 -070012980 WDI_ControlBlockType* pWDICtx,
12981 WDI_EventInfoType* pEventData
12982)
12983{
12984 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12985 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012986 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012987 wpt_uint16 usDataOffset = 0;
12988 wpt_uint16 usSendSize = 0;
12989 tHalRSSIThresholds rssiThresholdsReq;
12990 WDI_Status ret_status = 0;
12991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12992
12993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012994 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 -------------------------------------------------------------------------*/
12996 if (( NULL == pEventData ) ||
12997 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
12998 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
12999 {
13000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013004 }
13005
13006 /*-----------------------------------------------------------------------
13007 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013008 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013009 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013010 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013011 sizeof(rssiThresholdsReq),
13012 &pSendBuffer, &usDataOffset, &usSendSize))||
13013 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13014 {
13015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13016 "Unable to get send buffer in remove beacon filter req %x %x %x",
13017 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013020 }
13021
Jeff Johnsone7245742012-09-05 17:12:55 -070013022 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013023 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013024 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013025 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013026 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013027 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013029 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013030 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013031 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013032 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013034 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013035 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013036 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013037 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013038 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013039 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013040 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013041 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13042
Jeff Johnsone7245742012-09-05 17:12:55 -070013043 wpalMemoryCopy( pSendBuffer+usDataOffset,
13044 &rssiThresholdsReq,
13045 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013046
13047 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013048 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013049
13050 /*-------------------------------------------------------------------------
13051 Send Set threshold req to HAL
13052 -------------------------------------------------------------------------*/
13053 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13054 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13055 {
13056 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13057 // req. Then as a result of processing the threshold cross ind, we trigger
13058 // a Set threshold req, then we need to indicate to WDI that it needs to
13059 // go to busy state as a result of the indication as we sent a req in the
13060 // same WDI context.
13061 // Hence expected state transition is to busy.
13062 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13063 }
13064
13065 return ret_status;
13066}
13067
13068/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013069 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013070 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013071
13072 @param pWDICtx: pointer to the WLAN DAL context
13073 pEventData: pointer to the event information structure
13074
Jeff Johnson295189b2012-06-20 16:38:30 -070013075 @see
13076 @return Result of the function call
13077*/
13078WDI_Status
13079WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013080(
Jeff Johnson295189b2012-06-20 16:38:30 -070013081 WDI_ControlBlockType* pWDICtx,
13082 WDI_EventInfoType* pEventData
13083)
13084{
13085 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13086 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013087 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013088 wpt_uint16 usDataOffset = 0;
13089 wpt_uint16 usSendSize = 0;
13090 tHalHostOffloadReq hostOffloadParams;
13091 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013092 wpt_uint8 ucCurrentBSSSesIdx = 0;
13093 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013094
13095 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13096
13097 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013098 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013099 -------------------------------------------------------------------------*/
13100 if (( NULL == pEventData ) ||
13101 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13102 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13103 {
13104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013105 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013106 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013107 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013108 }
13109
13110 /*-----------------------------------------------------------------------
13111 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013112 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013113 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013114 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013115 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13116 &pSendBuffer, &usDataOffset, &usSendSize))||
13117 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13118 {
13119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13120 "Unable to get send buffer in host offload req %x %x %x",
13121 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13122 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013123 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013124 }
13125
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013126 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13127 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13128 &pBSSSes);
13129 if ( NULL == pBSSSes )
13130 {
13131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013132 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013133 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013134 }
13135
Jeff Johnson295189b2012-06-20 16:38:30 -070013136 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13137 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013138
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13140 {
13141 // ARP Offload
13142 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13143 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13144 4);
13145 }
13146 else
13147 {
13148 // NS Offload
13149 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13150 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13151 16);
13152
13153#ifdef WLAN_NS_OFFLOAD
13154 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13155 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13156 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13157 16);
13158 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13159 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13160 16);
13161 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13162 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13163 16);
13164 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13165 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13166 16);
13167 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13168 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13169 6);
13170 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13171 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13172 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070013173
Jeff Johnson295189b2012-06-20 16:38:30 -070013174#endif // WLAN_NS_OFFLOAD
13175 }
13176
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013177 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13178
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 // copy hostOffloadParams into pSendBuffer
13180 wpalMemoryCopy( pSendBuffer+usDataOffset,
13181 &hostOffloadParams,
13182 sizeof(hostOffloadParams));
13183
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013184 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013185 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013186 // copy nsOffloadParams into pSendBuffer
13187 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 &nsOffloadParams,
13189 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013190 }
13191 else
13192 {
13193#ifdef WLAN_NS_OFFLOAD
13194 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13195 {
13196 // copy nsOffloadParams into pSendBuffer
13197 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13198 &nsOffloadParams,
13199 sizeof(nsOffloadParams));
13200 }
13201#endif
13202 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013203
13204 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013205 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013206
13207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013208 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013209 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13211 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013212
13213fail:
13214 // Release the message buffer so we don't leak
13215 wpalMemoryFree(pSendBuffer);
13216
13217failRequest:
13218 //WDA should have failure check to avoid the memory leak
13219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013220}/*WDI_ProcessHostOffloadReq*/
13221
13222/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013223 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013224 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013225
13226 @param pWDICtx: pointer to the WLAN DAL context
13227 pEventData: pointer to the event information structure
13228
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 @see
13230 @return Result of the function call
13231*/
13232WDI_Status
13233WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013234(
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 WDI_ControlBlockType* pWDICtx,
13236 WDI_EventInfoType* pEventData
13237)
13238{
13239 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13240 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013241 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013242 wpt_uint16 usDataOffset = 0;
13243 wpt_uint16 usSendSize = 0;
13244 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013245 wpt_uint8 ucCurrentBSSSesIdx = 0;
13246 WDI_BSSSessionType* pBSSSes = NULL;
13247
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13249
13250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013252 -------------------------------------------------------------------------*/
13253 if (( NULL == pEventData ) ||
13254 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13255 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13256 {
13257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13258 "Invalid parameters in Keep Alive req");
13259 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013260 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 }
13262
13263 /*-----------------------------------------------------------------------
13264 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013265 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013267 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 sizeof(keepAliveReq),
13269 &pSendBuffer, &usDataOffset, &usSendSize))||
13270 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13271 {
13272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13273 "Unable to get send buffer in keep alive req %x %x %x",
13274 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13275 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013276 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 }
13278
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013279 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13280 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13281 &pBSSSes);
13282 if ( NULL == pBSSSes )
13283 {
13284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013285 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013286 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013287 }
13288
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13290 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13291
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013292 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013293
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13295 {
13296 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13297 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13298 HAL_IPV4_ADDR_LEN);
13299 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13300 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013301 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013302 wpalMemoryCopy(keepAliveReq.destMacAddr,
13303 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13304 HAL_MAC_ADDR_LEN);
13305 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013306
13307 wpalMemoryCopy( pSendBuffer+usDataOffset,
13308 &keepAliveReq,
13309 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013310
13311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13312 "Process keep alive req %d",sizeof(keepAliveReq));
13313
13314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13315 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13316
13317 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013318 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013319
13320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13321 "Sending keep alive req to HAL");
13322
13323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013324 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013325 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013326 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13327 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013328
13329fail:
13330 // Release the message buffer so we don't leak
13331 wpalMemoryFree(pSendBuffer);
13332
13333failRequest:
13334 //WDA should have failure check to avoid the memory leak
13335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013336}/*WDI_ProcessKeepAliveReq*/
13337
13338
13339/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013340 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013341 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013342
13343 @param pWDICtx: pointer to the WLAN DAL context
13344 pEventData: pointer to the event information structure
13345
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 @see
13347 @return Result of the function call
13348*/
13349WDI_Status
13350WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013351(
Jeff Johnson295189b2012-06-20 16:38:30 -070013352 WDI_ControlBlockType* pWDICtx,
13353 WDI_EventInfoType* pEventData
13354)
13355{
13356 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13357 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013358 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013359 wpt_uint16 usDataOffset = 0;
13360 wpt_uint16 usSendSize = 0;
13361 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013362 wpt_uint8 ucCurrentBSSSesIdx = 0;
13363 WDI_BSSSessionType* pBSSSes = NULL;
13364
Jeff Johnson295189b2012-06-20 16:38:30 -070013365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13366
13367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013368 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013369 -------------------------------------------------------------------------*/
13370 if (( NULL == pEventData ) ||
13371 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13372 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13373 {
13374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013376 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013377 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 }
13379
13380 /*-----------------------------------------------------------------------
13381 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013382 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013383 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013384 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 sizeof(wowlAddBcPtrnReq),
13386 &pSendBuffer, &usDataOffset, &usSendSize))||
13387 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13388 {
13389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13390 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13391 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13392 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013393 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 }
13395
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013396 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13397 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13398 &pBSSSes);
13399 if ( NULL == pBSSSes )
13400 {
13401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013402 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013403 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013404 }
13405
Jeff Johnsone7245742012-09-05 17:12:55 -070013406 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013407 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013408 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013409 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013410 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013411 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013412 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013413 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13414
13415 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13416 {
13417 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13418 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13419 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13420 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13421 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13422 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13423 }
13424 else
13425 {
13426 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13427 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13428 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13429 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13430 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13431 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13432
13433 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13434 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13435 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13436 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13437 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13438 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13439 }
13440
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013441 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13442
Jeff Johnson295189b2012-06-20 16:38:30 -070013443 wpalMemoryCopy( pSendBuffer+usDataOffset,
13444 &wowlAddBcPtrnReq,
13445 sizeof(wowlAddBcPtrnReq));
13446
13447 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013449
13450 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013453 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13454 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013455fail:
13456 // Release the message buffer so we don't leak
13457 wpalMemoryFree(pSendBuffer);
13458
13459failRequest:
13460 //WDA should have failure check to avoid the memory leak
13461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013462}/*WDI_ProcessWowlAddBcPtrnReq*/
13463
13464/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013465 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013466 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013467
13468 @param pWDICtx: pointer to the WLAN DAL context
13469 pEventData: pointer to the event information structure
13470
Jeff Johnson295189b2012-06-20 16:38:30 -070013471 @see
13472 @return Result of the function call
13473*/
13474WDI_Status
13475WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013476(
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 WDI_ControlBlockType* pWDICtx,
13478 WDI_EventInfoType* pEventData
13479)
13480{
13481 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13482 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013483 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013484 wpt_uint16 usDataOffset = 0;
13485 wpt_uint16 usSendSize = 0;
13486 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013487 wpt_uint8 ucCurrentBSSSesIdx = 0;
13488 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13490
13491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 -------------------------------------------------------------------------*/
13494 if (( NULL == pEventData ) ||
13495 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13496 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13497 {
13498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013499 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013501 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 }
13503
13504 /*-----------------------------------------------------------------------
13505 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013506 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013507 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013508 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013509 sizeof(wowlDelBcPtrnReq),
13510 &pSendBuffer, &usDataOffset, &usSendSize))||
13511 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13512 {
13513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13514 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13515 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13516 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013517 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 }
13519
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013520 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13521 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13522 &pBSSSes);
13523 if ( NULL == pBSSSes )
13524 {
13525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013526 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013527 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013528 }
13529
Jeff Johnsone7245742012-09-05 17:12:55 -070013530 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013531 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013532
13533 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13534
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 wpalMemoryCopy( pSendBuffer+usDataOffset,
13536 &wowlDelBcPtrnReq,
13537 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013538
13539 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013541
13542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013543 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013545 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13546 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013547
13548fail:
13549 // Release the message buffer so we don't leak
13550 wpalMemoryFree(pSendBuffer);
13551
13552failRequest:
13553 //WDA should have failure check to avoid the memory leak
13554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013555}/*WDI_ProcessWowlDelBcPtrnReq*/
13556
13557/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013558 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013559 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013560
13561 @param pWDICtx: pointer to the WLAN DAL context
13562 pEventData: pointer to the event information structure
13563
Jeff Johnson295189b2012-06-20 16:38:30 -070013564 @see
13565 @return Result of the function call
13566*/
13567WDI_Status
13568WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013569(
Jeff Johnson295189b2012-06-20 16:38:30 -070013570 WDI_ControlBlockType* pWDICtx,
13571 WDI_EventInfoType* pEventData
13572)
13573{
13574 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13575 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013576 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013577 wpt_uint16 usDataOffset = 0;
13578 wpt_uint16 usSendSize = 0;
13579 tHalWowlEnterParams wowlEnterReq;
13580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13581
13582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013584 -------------------------------------------------------------------------*/
13585 if (( NULL == pEventData ) ||
13586 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13587 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13588 {
13589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013590 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013593 }
13594
13595 /*-----------------------------------------------------------------------
13596 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013597 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013598 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013599 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013600 sizeof(wowlEnterReq),
13601 &pSendBuffer, &usDataOffset, &usSendSize))||
13602 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13603 {
13604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13605 "Unable to get send buffer in Wowl enter req %x %x %x",
13606 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13607 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013609 }
13610
Jeff Johnsone7245742012-09-05 17:12:55 -070013611 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013612 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013613 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013614 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013615 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013616 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013617 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013619 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013620 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013623 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013625 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013626 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13627
13628#ifdef WLAN_WAKEUP_EVENTS
13629 wowlEnterReq.ucWoWEAPIDRequestEnable =
13630 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13631
13632 wowlEnterReq.ucWoWEAPOL4WayEnable =
13633 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13634
13635 wowlEnterReq.ucWowNetScanOffloadMatch =
13636 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13637
13638 wowlEnterReq.ucWowGTKRekeyError =
13639 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13640
13641 wowlEnterReq.ucWoWBSSConnLoss =
13642 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13643#endif // WLAN_WAKEUP_EVENTS
13644
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013645 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13646
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13648 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13649 sizeof(tSirMacAddr));
13650
Jeff Johnsone7245742012-09-05 17:12:55 -070013651 wpalMemoryCopy( pSendBuffer+usDataOffset,
13652 &wowlEnterReq,
13653 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013654
13655 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013656 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013657
13658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013659 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013660 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013661 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13662 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013663}/*WDI_ProcessWowlEnterReq*/
13664
13665/**
13666 @brief Process Wowl exit Request function (called when Main FSM
13667 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013668
13669 @param pWDICtx: pointer to the WLAN DAL context
13670 pEventData: pointer to the event information structure
13671
Jeff Johnson295189b2012-06-20 16:38:30 -070013672 @see
13673 @return Result of the function call
13674*/
13675WDI_Status
13676WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013677(
Jeff Johnson295189b2012-06-20 16:38:30 -070013678 WDI_ControlBlockType* pWDICtx,
13679 WDI_EventInfoType* pEventData
13680)
13681{
13682 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013683 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013685 wpt_uint16 usDataOffset = 0;
13686 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013687 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13689
13690 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013691 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013692 -------------------------------------------------------------------------*/
13693 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013694 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013695 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13696 {
13697 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013698 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013699 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013700 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 }
13702
13703 /*-----------------------------------------------------------------------
13704 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013707 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013708 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013709 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013710 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013711 {
13712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13713 "Unable to get send buffer in Wowl Exit req %x %x",
13714 pEventData, wdiWowlExitCb);
13715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013717 }
13718
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013719 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13720
13721 wpalMemoryCopy( pSendBuffer+usDataOffset,
13722 &wowlExitparams,
13723 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013727 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13728 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013729}/*WDI_ProcessWowlExitReq*/
13730
13731/**
13732 @brief Process Configure Apps Cpu Wakeup State Request function
13733 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013734
13735 @param pWDICtx: pointer to the WLAN DAL context
13736 pEventData: pointer to the event information structure
13737
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 @see
13739 @return Result of the function call
13740*/
13741WDI_Status
13742WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013743(
Jeff Johnson295189b2012-06-20 16:38:30 -070013744 WDI_ControlBlockType* pWDICtx,
13745 WDI_EventInfoType* pEventData
13746)
13747{
13748 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13749 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013750 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 wpt_uint16 usDataOffset = 0;
13752 wpt_uint16 usSendSize = 0;
13753 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13754 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13755
13756 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013757 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013758 -------------------------------------------------------------------------*/
13759 if (( NULL == pEventData ) ||
13760 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13761 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13762 {
13763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013764 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 }
13768
13769 /*-----------------------------------------------------------------------
13770 Get message buffer
13771 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013773 sizeof(halCfgAppsCpuWakeupStateReqParams),
13774 &pSendBuffer, &usDataOffset, &usSendSize))||
13775 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13776 {
13777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13778 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13779 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 }
13783
Jeff Johnsone7245742012-09-05 17:12:55 -070013784 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013785 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13786
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 wpalMemoryCopy( pSendBuffer+usDataOffset,
13788 &halCfgAppsCpuWakeupStateReqParams,
13789 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013790
13791 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013792 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013793
13794 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013795 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013796 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013797 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13798 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13799 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013800}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13801
13802#ifdef WLAN_FEATURE_VOWIFI_11R
13803/**
13804 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13805 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013806
13807 @param pWDICtx: pointer to the WLAN DAL context
13808 pEventData: pointer to the event information structure
13809
Jeff Johnson295189b2012-06-20 16:38:30 -070013810 @see
13811 @return Result of the function call
13812*/
13813WDI_Status
13814WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013815(
Jeff Johnson295189b2012-06-20 16:38:30 -070013816 WDI_ControlBlockType* pWDICtx,
13817 WDI_EventInfoType* pEventData
13818)
13819{
13820 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13821 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013822 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013823 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 wpt_uint16 usDataOffset = 0;
13826 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013827 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013828 wpt_macAddr macBSSID;
13829 tAggrAddTsReq halAggrAddTsReq;
13830 int i;
13831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13832
13833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013835 -------------------------------------------------------------------------*/
13836 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13837 ( NULL == pEventData->pCBfnc ))
13838 {
13839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013843 }
13844 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13845 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13846 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13847 /*-------------------------------------------------------------------------
13848 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013849 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 -------------------------------------------------------------------------*/
13851 wpalMutexAcquire(&pWDICtx->wptMutex);
13852
13853 /*------------------------------------------------------------------------
13854 Find the BSS for which the request is made and identify WDI session
13855 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013856 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13857 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013858 &macBSSID))
13859 {
13860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13861 "This station does not exist in the WDI Station Table %d");
13862 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013864 }
13865
Jeff Johnsone7245742012-09-05 17:12:55 -070013866 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13867 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13870 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13871 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013872
13873 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013874 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013876
Jeff Johnson295189b2012-06-20 16:38:30 -070013877 /*------------------------------------------------------------------------
13878 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013879 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013880 ------------------------------------------------------------------------*/
13881 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13882 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13884 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13885 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013886
Jeff Johnsone7245742012-09-05 17:12:55 -070013887 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013888 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 }
13891
13892 wpalMutexRelease(&pWDICtx->wptMutex);
13893 /*-----------------------------------------------------------------------
13894 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013895 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013896 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013897 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013898 sizeof(tAggrAddTsParams),
13899 &pSendBuffer, &usDataOffset, &usSendSize))||
13900 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13901 {
13902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13903 "Unable to get send buffer in set bss key req %x %x %x",
13904 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013907 }
13908
Jeff Johnsone7245742012-09-05 17:12:55 -070013909 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013910 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013911 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013912 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13913
13914 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13915 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013916 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013919 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013920 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013921 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13922 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013923 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013924 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13925 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013926 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013927 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13928 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013929 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13931 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013932 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13934 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013935 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013936 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13937 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013938 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013939 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13940 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013941 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013942 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13943 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013946 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013947 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013948
13949
13950 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013951 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013952 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013953 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013954 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013955 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013956 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013958 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013959 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013960 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013962 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013964 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013965 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013966 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013967 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013968 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013970 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013971 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013972 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013973 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013976 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013977 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013978 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013979 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13980 }
13981
Jeff Johnsone7245742012-09-05 17:12:55 -070013982 wpalMemoryCopy( pSendBuffer+usDataOffset,
13983 &halAggrAddTsReq,
13984 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013985
13986 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013988
13989 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013992 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070013993 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070013994 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013995}/*WDI_ProcessAggrAddTSpecReq*/
13996#endif /* WLAN_FEATURE_VOWIFI_11R */
13997
13998/**
13999 @brief Process Shutdown Request function (called when Main FSM
14000 allows it)
14001
14002 @param pWDICtx: pointer to the WLAN DAL context
14003 pEventData: pointer to the event information structure
14004
14005 @see
14006 @return Result of the function call
14007*/
14008WDI_Status
14009WDI_ProcessShutdownReq
14010(
14011 WDI_ControlBlockType* pWDICtx,
14012 WDI_EventInfoType* pEventData
14013 )
14014{
14015 wpt_status wptStatus;
14016
14017
14018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14019
14020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014021 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014022 -------------------------------------------------------------------------*/
14023 if ( NULL == pEventData )
14024 {
14025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014026 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 WDI_ASSERT(0);
14028 return WDI_STATUS_E_FAILURE;
14029 }
14030
14031 wpalMutexAcquire(&pWDICtx->wptMutex);
14032
14033
14034 gWDIInitialized = eWLAN_PAL_FALSE;
14035 /*! TO DO: stop the data services */
14036 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14037 {
14038 /*Stop the STA Table !UT- check this logic again
14039 It is safer to do it here than on the response - because a stop is imminent*/
14040 WDI_STATableStop(pWDICtx);
14041
14042 /* Stop Transport Driver, DXE */
14043 WDTS_Stop(pWDICtx);
14044 }
14045
14046 /*Clear all pending request*/
14047 WDI_ClearPendingRequests(pWDICtx);
14048 /* Close Data transport*/
14049 /* FTM mode does not open Data Path */
14050 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14051 {
14052 WDTS_Close(pWDICtx);
14053 }
14054 /*Close the STA Table !UT- check this logic again*/
14055 WDI_STATableClose(pWDICtx);
14056 /*close the PAL */
14057 wptStatus = wpalClose(pWDICtx->pPALContext);
14058 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14059 {
14060 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14061 "Failed to wpal Close %d", wptStatus);
14062 WDI_ASSERT(0);
14063 }
14064
14065 /*Transition back to init state*/
14066 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14067
14068 wpalMutexRelease(&pWDICtx->wptMutex);
14069
14070 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014071 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014072
14073
Jeff Johnsone7245742012-09-05 17:12:55 -070014074 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014075}/*WDI_ProcessShutdownReq*/
14076
14077/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014078 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014079========================================================================*/
14080
14081/**
14082 @brief Process Start Response function (called when a response
14083 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014084
14085 @param pWDICtx: pointer to the WLAN DAL context
14086 pEventData: pointer to the event information structure
14087
Jeff Johnson295189b2012-06-20 16:38:30 -070014088 @see
14089 @return Result of the function call
14090*/
14091WDI_Status
14092WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014093(
Jeff Johnson295189b2012-06-20 16:38:30 -070014094 WDI_ControlBlockType* pWDICtx,
14095 WDI_EventInfoType* pEventData
14096)
14097{
14098 WDI_StartRspParamsType wdiRspParams;
14099 WDI_StartRspCb wdiStartRspCb = NULL;
14100
14101 tHalMacStartRspParams* startRspParams;
14102
14103#ifndef HAL_SELF_STA_PER_BSS
14104 WDI_AddStaParams wdiAddSTAParam = {0};
14105#endif
14106 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14107
Jeff Johnsone7245742012-09-05 17:12:55 -070014108 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014111 -------------------------------------------------------------------------*/
14112 if (( NULL == pEventData ) ||
14113 ( NULL == pEventData->pEventData) ||
14114 ( NULL == wdiStartRspCb ))
14115 {
14116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014117 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 }
14121
14122 /*-------------------------------------------------------------------------
14123 Extract response and send it to UMAC
14124 -------------------------------------------------------------------------*/
14125 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14126 {
14127 // not enough data was received
14128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14129 "Invalid response length in Start Resp Expect %x Rcvd %x",
14130 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14131 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014132 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014133 }
14134
14135 /*-------------------------------------------------------------------------
14136 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014137 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 -------------------------------------------------------------------------*/
14139 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14140
14141 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14142 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14143 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14144 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14145 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14146 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14147 wdiRspParams.wlanReportedVersion.major =
14148 startRspParams->wcnssWlanVersion.major;
14149 wdiRspParams.wlanReportedVersion.minor =
14150 startRspParams->wcnssWlanVersion.minor;
14151 wdiRspParams.wlanReportedVersion.version =
14152 startRspParams->wcnssWlanVersion.version;
14153 wdiRspParams.wlanReportedVersion.revision =
14154 startRspParams->wcnssWlanVersion.revision;
14155 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14156 startRspParams->wcnssCrmVersionString,
14157 sizeof(wdiRspParams.wcnssSoftwareVersion));
14158 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14159 startRspParams->wcnssWlanVersionString,
14160 sizeof(wdiRspParams.wcnssHardwareVersion));
14161 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14162
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014163 /*Save the HAL Version*/
14164 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14165
Jeff Johnson295189b2012-06-20 16:38:30 -070014166 wpalMutexAcquire(&pWDICtx->wptMutex);
14167 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14168 {
14169 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14170
14171 /*Cache the start response for further use*/
14172 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014173 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 sizeof(pWDICtx->wdiCachedStartRspParams));
14175
14176 }
14177 else
14178 {
14179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14180 "Failed to start device with status %s(%d)",
14181 WDI_getHALStatusMsgString(startRspParams->status),
14182 startRspParams->status);
14183
14184 /*Set the expected state transition to stopped - because the start has
14185 failed*/
14186 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14187
14188 wpalMutexRelease(&pWDICtx->wptMutex);
14189
14190 /*Notify UMAC*/
14191 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014192
Jeff Johnson295189b2012-06-20 16:38:30 -070014193 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14194
14195 /*Although the response is an error - it was processed by our function
14196 so as far as the caller is concerned this is a succesful reponse processing*/
14197 return WDI_STATUS_SUCCESS;
14198 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014199
Jeff Johnson295189b2012-06-20 16:38:30 -070014200 wpalMutexRelease(&pWDICtx->wptMutex);
14201
14202 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14203 {
14204 /* FTM mode does not need to execute below */
14205 /* Notify UMAC */
14206 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14207 return WDI_STATUS_SUCCESS;
14208 }
14209
14210 /* START the Data transport */
14211 WDTS_startTransport(pWDICtx);
14212
14213 /*Start the STA Table !- check this logic again*/
14214 WDI_STATableStart(pWDICtx);
14215
14216#ifndef HAL_SELF_STA_PER_BSS
14217 /* Store the Self STA Index */
14218 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14219
14220 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14221 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14222 WDI_MAC_ADDR_LEN);
14223
14224 /* At this point add the self-STA */
14225
14226 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14227 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14228 /*! TO DO: wdiAddSTAParam.dpuSig */
14229 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14230 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14231 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14232
14233 //all DPU indices are the same for self STA
14234 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14235 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014236 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014237 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14238 WDI_MAC_ADDR_LEN);
14239 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14240 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14241
14242 /* Note: Since we don't get an explicit config STA request for self STA, we
14243 add the self STA upon receiving the Start response message. But the
14244 self STA entry in the table is deleted when WDI gets an explicit delete STA
14245 request */
14246 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14247#endif
14248
14249 /*Notify UMAC*/
14250 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14251
Jeff Johnsone7245742012-09-05 17:12:55 -070014252 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014253}/*WDI_ProcessStartRsp*/
14254
14255
14256/**
14257 @brief Process Stop Response function (called when a response
14258 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014259
14260 @param pWDICtx: pointer to the WLAN DAL context
14261 pEventData: pointer to the event information structure
14262
Jeff Johnson295189b2012-06-20 16:38:30 -070014263 @see
14264 @return Result of the function call
14265*/
14266WDI_Status
14267WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014268(
Jeff Johnson295189b2012-06-20 16:38:30 -070014269 WDI_ControlBlockType* pWDICtx,
14270 WDI_EventInfoType* pEventData
14271)
14272{
14273 WDI_Status wdiStatus;
14274 WDI_StopRspCb wdiStopRspCb = NULL;
14275
Jeff Johnsone7245742012-09-05 17:12:55 -070014276 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14278
Jeff Johnsone7245742012-09-05 17:12:55 -070014279 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014281 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014282 -------------------------------------------------------------------------*/
14283 if (( NULL == pEventData ) ||
14284 ( NULL == pEventData->pEventData) ||
14285 ( NULL == wdiStopRspCb ))
14286 {
14287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014291 }
14292
14293 /*-------------------------------------------------------------------------
14294 Extract response and send it to UMAC
14295 -------------------------------------------------------------------------*/
14296 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14297 {
14298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14299 "Invalid response length in Stop Resp %x %x",
14300 pEventData->uEventDataSize);
14301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 }
14304
14305 /*-------------------------------------------------------------------------
14306 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014307 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014308 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014309 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14310 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 sizeof(halMacStopRspMsg.stopRspParams));
14312
Jeff Johnsone7245742012-09-05 17:12:55 -070014313 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014314
14315 wpalMutexAcquire(&pWDICtx->wptMutex);
14316
14317 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014318 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 --------------------------------------------------------------------------*/
14320 if ( WDI_STATUS_SUCCESS != wdiStatus )
14321 {
14322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14323 "Failed to stop the device with status %s (%d)",
14324 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14325 halMacStopRspMsg.stopRspParams.status);
14326
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14328
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014331 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014332
Jeff Johnson295189b2012-06-20 16:38:30 -070014333 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14334
14335 /*Transition now as WDI may get preempted imediately after it sends
14336 up the Stop Response and it will not get to process the state transition
14337 from Main Rsp function*/
14338 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14339 wpalMutexRelease(&pWDICtx->wptMutex);
14340
14341 /*! TO DO: - STOP the Data transport */
14342
14343 /*Notify UMAC*/
14344 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14345
Jeff Johnsone7245742012-09-05 17:12:55 -070014346 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014347}/*WDI_ProcessStopRsp*/
14348
14349/**
14350 @brief Process Close Rsp function (called when a response
14351 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014352
14353 @param pWDICtx: pointer to the WLAN DAL context
14354 pEventData: pointer to the event information structure
14355
Jeff Johnson295189b2012-06-20 16:38:30 -070014356 @see
14357 @return Result of the function call
14358*/
14359WDI_Status
14360WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014361(
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 WDI_ControlBlockType* pWDICtx,
14363 WDI_EventInfoType* pEventData
14364)
14365{
14366 /*There is no close response comming from HAL - function just kept for
14367 simmetry */
14368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014369 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014370}/*WDI_ProcessCloseRsp*/
14371
14372
14373/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014375============================================================================*/
14376
14377/**
14378 @brief Process Init Scan Rsp function (called when a response
14379 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014380
14381 @param pWDICtx: pointer to the WLAN DAL context
14382 pEventData: pointer to the event information structure
14383
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 @see
14385 @return Result of the function call
14386*/
14387WDI_Status
14388WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014389(
Jeff Johnson295189b2012-06-20 16:38:30 -070014390 WDI_ControlBlockType* pWDICtx,
14391 WDI_EventInfoType* pEventData
14392)
14393{
14394 WDI_Status wdiStatus;
14395 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014396 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014397 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14399
14400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014401 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014402 -------------------------------------------------------------------------*/
14403 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14404 ( NULL == pEventData->pEventData))
14405 {
14406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014407 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 }
14411
14412 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14413 if( NULL == wdiInitScanRspCb)
14414 {
14415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014416 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 }
14420
14421 /*-------------------------------------------------------------------------
14422 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014425 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14426 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014427 sizeof(halInitScanRspMsg.initScanRspParams));
14428
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014430
14431 if ( pWDICtx->bInBmps )
14432 {
14433 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014434 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14435 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14437 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14438 WDI_ASSERT(0);
14439 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 }
14441
14442 /*Notify UMAC*/
14443 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14444
Jeff Johnsone7245742012-09-05 17:12:55 -070014445 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014446}/*WDI_ProcessInitScanRsp*/
14447
14448
14449/**
14450 @brief Process Start Scan Rsp function (called when a response
14451 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014452
14453 @param pWDICtx: pointer to the WLAN DAL context
14454 pEventData: pointer to the event information structure
14455
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 @see
14457 @return Result of the function call
14458*/
14459WDI_Status
14460WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014461(
Jeff Johnson295189b2012-06-20 16:38:30 -070014462 WDI_ControlBlockType* pWDICtx,
14463 WDI_EventInfoType* pEventData
14464)
14465{
14466 WDI_StartScanRspParamsType wdiStartScanParams;
14467 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014468
14469 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14471
14472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014473 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014474 -------------------------------------------------------------------------*/
14475 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14476 ( NULL == pEventData->pEventData))
14477 {
14478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014479 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 }
14483
14484 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14485 if( NULL == wdiStartScanRspCb)
14486 {
14487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014488 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 }
14492
14493 /*-------------------------------------------------------------------------
14494 Extract response and send it to UMAC
14495 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014496 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14497 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 sizeof(halStartScanRspMsg.startScanRspParams));
14499
14500 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14501 halStartScanRspMsg.startScanRspParams.status);
14502#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014503 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014504 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014505 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014506 halStartScanRspMsg.startScanRspParams.startTSF,
14507 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014508#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014509
14510 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14511 {
14512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14513 "Start scan failed with status %s (%d)",
14514 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14515 halStartScanRspMsg.startScanRspParams.status);
14516 /* send the status to UMAC, don't return from here*/
14517 }
14518
14519 /*Notify UMAC*/
14520 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14521
Jeff Johnsone7245742012-09-05 17:12:55 -070014522 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014523
14524}/*WDI_ProcessStartScanRsp*/
14525
14526
14527/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014528 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014529 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014530
14531 @param pWDICtx: pointer to the WLAN DAL context
14532 pEventData: pointer to the event information structure
14533
Jeff Johnson295189b2012-06-20 16:38:30 -070014534 @see
14535 @return Result of the function call
14536*/
14537WDI_Status
14538WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014539(
Jeff Johnson295189b2012-06-20 16:38:30 -070014540 WDI_ControlBlockType* pWDICtx,
14541 WDI_EventInfoType* pEventData
14542)
14543{
14544 WDI_Status wdiStatus;
14545 tHalEndScanRspMsg halEndScanRspMsg;
14546 WDI_EndScanRspCb wdiEndScanRspCb;
14547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14548
14549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 -------------------------------------------------------------------------*/
14552 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14553 ( NULL == pEventData->pEventData))
14554 {
14555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014559 }
14560
14561 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14562
14563 /*-------------------------------------------------------------------------
14564 Extract response and send it to UMAC
14565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014566 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14567 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 sizeof(halEndScanRspMsg.endScanRspParams));
14569
Jeff Johnsone7245742012-09-05 17:12:55 -070014570 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014571
14572 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14573 {
14574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14575 "End Scan failed with status %s (%d )",
14576 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14577 halEndScanRspMsg.endScanRspParams.status);
14578 /* send the status to UMAC, don't return from here*/
14579 }
14580
14581 /*Notify UMAC*/
14582 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14583
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014585}/*WDI_ProcessEndScanRsp*/
14586
14587
14588/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014589 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014590 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014591
14592 @param pWDICtx: pointer to the WLAN DAL context
14593 pEventData: pointer to the event information structure
14594
Jeff Johnson295189b2012-06-20 16:38:30 -070014595 @see
14596 @return Result of the function call
14597*/
14598WDI_Status
14599WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014600(
Jeff Johnson295189b2012-06-20 16:38:30 -070014601 WDI_ControlBlockType* pWDICtx,
14602 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014603)
Jeff Johnson295189b2012-06-20 16:38:30 -070014604{
14605 WDI_Status wdiStatus;
14606 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014607
14608 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14610
14611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014613 -------------------------------------------------------------------------*/
14614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14615 ( NULL == pEventData->pEventData))
14616 {
14617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014621 }
14622
14623 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14624
14625 /*-------------------------------------------------------------------------
14626 Extract response and send it to UMAC
14627 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14629 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014630 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14631
Jeff Johnsone7245742012-09-05 17:12:55 -070014632 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014633
14634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014635 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 halFinishScanRspMsg.finishScanRspParams.status);
14637
14638 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14639 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14640 {
14641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14642 "Finish Scan failed with status %s (%d)",
14643 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14644 halFinishScanRspMsg.finishScanRspParams.status);
14645 /* send the status to UMAC, don't return from here*/
14646 }
14647
14648 /*Notify UMAC*/
14649 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14650
Jeff Johnsone7245742012-09-05 17:12:55 -070014651 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014652}/*WDI_ProcessFinishScanRsp*/
14653
14654/**
14655 @brief Process Join Response function (called when a response
14656 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014657
14658 @param pWDICtx: pointer to the WLAN DAL context
14659 pEventData: pointer to the event information structure
14660
Jeff Johnson295189b2012-06-20 16:38:30 -070014661 @see
14662 @return Result of the function call
14663*/
14664WDI_Status
14665WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014666(
Jeff Johnson295189b2012-06-20 16:38:30 -070014667 WDI_ControlBlockType* pWDICtx,
14668 WDI_EventInfoType* pEventData
14669)
14670{
14671 WDI_Status wdiStatus;
14672 WDI_JoinRspCb wdiJoinRspCb;
14673 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014674
14675 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14677
14678 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014679 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 -------------------------------------------------------------------------*/
14681 if (( NULL == pWDICtx ) ||
14682 ( NULL == pWDICtx->pfncRspCB ) ||
14683 ( NULL == pEventData ) ||
14684 ( NULL == pEventData->pEventData))
14685 {
14686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014688 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014690 }
14691
14692 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14693
14694 /*-------------------------------------------------------------------------
14695 Extract response and send it to UMAC
14696 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14698 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 sizeof(halJoinRspMsg.joinRspParams));
14700
Jeff Johnsone7245742012-09-05 17:12:55 -070014701 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014702
14703 wpalMutexAcquire(&pWDICtx->wptMutex);
14704
14705 /*-----------------------------------------------------------------------
14706 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014707 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014708 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014709 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014710 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14711 {
14712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014713 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14714 "association no longer in progress %d - mysterious HAL response",
14715 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014716
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014719 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 }
14721
14722 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14723
14724 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014725 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014726 -----------------------------------------------------------------------*/
14727 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14728 {
14729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14730 "Join only allowed in Joining state - failure state is %d "
14731 "strange HAL response", pBSSSes->wdiAssocState);
14732
Jeff Johnsone7245742012-09-05 17:12:55 -070014733 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14734
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 }
14738
14739
14740 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014741 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 -----------------------------------------------------------------------*/
14743 if ( WDI_STATUS_SUCCESS != wdiStatus )
14744 {
14745 /*Association was failed by HAL - remove session*/
14746 WDI_DeleteSession(pWDICtx, pBSSSes);
14747
14748 /*Association no longer in progress */
14749 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14750
14751 /*Association no longer in progress - prepare pending assoc for processing*/
14752 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014753
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 }
14755 else
14756 {
14757 /*Transition to state Joining - this may be redundant as we are supposed
14758 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014760 }
14761
14762 wpalMutexRelease(&pWDICtx->wptMutex);
14763
14764 /*Notify UMAC*/
14765 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14766
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014768}/*WDI_ProcessJoinRsp*/
14769
14770
14771/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014772 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014773 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014774
14775 @param pWDICtx: pointer to the WLAN DAL context
14776 pEventData: pointer to the event information structure
14777
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 @see
14779 @return Result of the function call
14780*/
14781WDI_Status
14782WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014783(
Jeff Johnson295189b2012-06-20 16:38:30 -070014784 WDI_ControlBlockType* pWDICtx,
14785 WDI_EventInfoType* pEventData
14786)
14787{
14788 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14789 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014790 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014791 WDI_BSSSessionType* pBSSSes = NULL;
14792
Jeff Johnsone7245742012-09-05 17:12:55 -070014793 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014794 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14795 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014796
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14798
14799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014801 -------------------------------------------------------------------------*/
14802 if (( NULL == pEventData ) ||
14803 ( NULL == pEventData->pEventData))
14804 {
14805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 }
14810
14811 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14812
14813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014814 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014815 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014816 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14817 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014818 sizeof(halConfigBssRspMsg.configBssRspParams));
14819
14820 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14821 halConfigBssRspMsg.configBssRspParams.status);
14822 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14823 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14826 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014827
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014829
14830 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014831 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014832
14833 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014834 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014835
Jeff Johnson295189b2012-06-20 16:38:30 -070014836 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014837
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014839 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014840 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14841 #endif
14842 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14843 halConfigBssRspMsg.configBssRspParams.staMac,
14844 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014845
Jeff Johnson295189b2012-06-20 16:38:30 -070014846 wpalMutexAcquire(&pWDICtx->wptMutex);
14847 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014850 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14851 wdiConfigBSSParams.macBSSID,
14852 &pBSSSes);
14853
Jeff Johnson295189b2012-06-20 16:38:30 -070014854 /*-----------------------------------------------------------------------
14855 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014856 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 -----------------------------------------------------------------------*/
14858 if ( NULL == pBSSSes )
14859 {
14860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14861 "Association sequence for this BSS does not yet exist "
14862 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014863
14864 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14865
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014867 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014868 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014869
Jeff Johnson295189b2012-06-20 16:38:30 -070014870 /*Save data for this BSS*/
14871 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14872 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014873 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014874 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014875 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014876 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014877 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014878 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014881 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014882 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14883 pBSSSes->bcastStaIdx =
14884 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014885
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014887
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 /*-------------------------------------------------------------------------
14889 Add Peer STA
14890 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014891 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14893 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014894
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014897 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014898 wdiAddSTAParam.ucHTCapable =
14899 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14900 wdiAddSTAParam.ucStaType =
14901 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14902
Jeff Johnson295189b2012-06-20 16:38:30 -070014903 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14905 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014907
14908 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14909 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14910 WDI_MAC_ADDR_LEN);
14911
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014915 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014916 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014917 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014918 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014919 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014921 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014922 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014923 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014924 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014925
Jeff Johnson295189b2012-06-20 16:38:30 -070014926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14927 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014928
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14930 /*-------------------------------------------------------------------------
14931 Add Broadcast STA only in AP mode
14932 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014933 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014934 WDI_BSS_OPERATIONAL_MODE_AP )
14935 {
14936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14937 "Add BCAST STA to table for index: %d",
14938 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014939
14940 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014942
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14944 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14945 }
14946 wpalMutexRelease(&pWDICtx->wptMutex);
14947 }
14948 else
14949 {
14950 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14951 "Config BSS RSP failed with status : %s(%d)",
14952 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014953 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 halConfigBssRspMsg.configBssRspParams.status);
14955
Jeff Johnsone7245742012-09-05 17:12:55 -070014956
Jeff Johnson295189b2012-06-20 16:38:30 -070014957 /*Association was failed by HAL - remove session*/
14958 WDI_DeleteSession(pWDICtx, pBSSSes);
14959
14960 /*Association no longer in progress */
14961 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14962
14963 /*Association no longer in progress - prepare pending assoc for processing*/
14964 WDI_DequeueAssocRequest(pWDICtx);
14965
14966 }
14967
14968 /*Notify UMAC*/
14969 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14970
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014972}/*WDI_ProcessConfigBSSRsp*/
14973
14974
14975/**
14976 @brief Process Del BSS Response function (called when a response
14977 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014978
14979 @param pWDICtx: pointer to the WLAN DAL context
14980 pEventData: pointer to the event information structure
14981
Jeff Johnson295189b2012-06-20 16:38:30 -070014982 @see
14983 @return Result of the function call
14984*/
14985WDI_Status
14986WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014987(
Jeff Johnson295189b2012-06-20 16:38:30 -070014988 WDI_ControlBlockType* pWDICtx,
14989 WDI_EventInfoType* pEventData
14990)
14991{
14992 WDI_DelBSSRspParamsType wdiDelBSSParams;
14993 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014994 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014995 WDI_BSSSessionType* pBSSSes = NULL;
14996
Jeff Johnsone7245742012-09-05 17:12:55 -070014997 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14999
15000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015001 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 -------------------------------------------------------------------------*/
15003 if (( NULL == pEventData ) ||
15004 ( NULL == pEventData->pEventData))
15005 {
15006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015010 }
15011
15012 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15013
15014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015015 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015016 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015017 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15018 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 sizeof(halDelBssRspMsg.deleteBssRspParams));
15020
15021
15022 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015023 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015024
15025 wpalMutexAcquire(&pWDICtx->wptMutex);
15026
15027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015028 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015030 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15031 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15032 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015033
15034 /*-----------------------------------------------------------------------
15035 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015036 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015037 -----------------------------------------------------------------------*/
15038 if ( NULL == pBSSSes )
15039 {
15040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15041 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015042 "association no longer in progress - mysterious HAL response");
15043
15044 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15045
15046 wpalMutexRelease(&pWDICtx->wptMutex);
15047 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015048 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015049
15050 /*Extract BSSID for the response to UMAC*/
15051 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15052 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15053
15054 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15055
15056 /*-----------------------------------------------------------------------
15057 The current session will be deleted
15058 -----------------------------------------------------------------------*/
15059 WDI_DeleteSession(pWDICtx, pBSSSes);
15060
15061
15062 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15063 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015065 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015066 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015067
15068 /* Delete the STA's in this BSS */
15069 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15070
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 wpalMutexRelease(&pWDICtx->wptMutex);
15072
15073 /*Notify UMAC*/
15074 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15075
Jeff Johnsone7245742012-09-05 17:12:55 -070015076 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015077}/*WDI_ProcessDelBSSRsp*/
15078
15079/**
15080 @brief Process Post Assoc Rsp function (called when a response
15081 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015082
15083 @param pWDICtx: pointer to the WLAN DAL context
15084 pEventData: pointer to the event information structure
15085
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 @see
15087 @return Result of the function call
15088*/
15089WDI_Status
15090WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015091(
Jeff Johnson295189b2012-06-20 16:38:30 -070015092 WDI_ControlBlockType* pWDICtx,
15093 WDI_EventInfoType* pEventData
15094)
15095{
15096 WDI_PostAssocRspParamsType wdiPostAssocParams;
15097 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015098 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015099 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015100 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15102
15103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015105 -------------------------------------------------------------------------*/
15106 if (( NULL == pEventData ) ||
15107 ( NULL == pEventData->pEventData))
15108 {
15109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015110 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015113 }
15114
15115 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15116
15117 /*-------------------------------------------------------------------------
15118 Extract response and send it to UMAC
15119 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015120 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15121 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 sizeof(halPostAssocRspMsg.postAssocRspParams));
15123
15124 /*Extract the Post Assoc STA Params */
15125
Jeff Johnsone7245742012-09-05 17:12:55 -070015126 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015127 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015128 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015129 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015130 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015131 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15132
Jeff Johnsone7245742012-09-05 17:12:55 -070015133 wdiPostAssocParams.wdiStatus =
15134 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015135
15136 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15137 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015138 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15139 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015140 WDI_MAC_ADDR_LEN);
15141
15142 /* Extract Post Assoc BSS Params */
15143
Jeff Johnsone7245742012-09-05 17:12:55 -070015144 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15145 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15146 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015147
15148 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15149 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015150 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015151 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15152 .macSTA, WDI_MAC_ADDR_LEN);
15153
Jeff Johnsone7245742012-09-05 17:12:55 -070015154 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015155 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15156
Jeff Johnsone7245742012-09-05 17:12:55 -070015157 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015158 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15159
15160 wdiPostAssocParams.bssParams.ucBSSIdx =
15161 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15162
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15165
15166 wpalMutexAcquire(&pWDICtx->wptMutex);
15167
15168 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015169 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015170 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015172 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015173 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015174
15175 /*-----------------------------------------------------------------------
15176 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015177 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 -----------------------------------------------------------------------*/
15179 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15182 {
15183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15184 "Association sequence for this BSS does not yet exist or "
15185 "association no longer in progress - mysterious HAL response");
15186
Jeff Johnsone7245742012-09-05 17:12:55 -070015187 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15188
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015190 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015191 }
15192
15193 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015194 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 -----------------------------------------------------------------------*/
15196 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15197 {
15198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15199 "Post Assoc not allowed before JOIN - failing request "
15200 "strange HAL response");
15201
Jeff Johnsone7245742012-09-05 17:12:55 -070015202 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15203
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015205 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015206 }
15207
15208 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015209 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015210 -----------------------------------------------------------------------*/
15211 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15212 {
15213 /*Association was failed by HAL - remove session*/
15214 WDI_DeleteSession(pWDICtx, pBSSSes);
15215 }
15216 else
15217 {
15218 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015219 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015220
15221 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015222 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015224 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015226 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015227 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015229 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15230
Jeff Johnsone7245742012-09-05 17:12:55 -070015231 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015232 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15233 }
15234
15235 /*Association no longer in progress */
15236 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15237
15238 /*Association no longer in progress - prepare pending assoc for processing*/
15239 WDI_DequeueAssocRequest(pWDICtx);
15240
15241 wpalMutexRelease(&pWDICtx->wptMutex);
15242
15243 /*Notify UMAC*/
15244 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15245
Jeff Johnsone7245742012-09-05 17:12:55 -070015246 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015247}/*WDI_ProcessPostAssocRsp*/
15248
15249/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015250 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015251 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015252
15253 @param pWDICtx: pointer to the WLAN DAL context
15254 pEventData: pointer to the event information structure
15255
Jeff Johnson295189b2012-06-20 16:38:30 -070015256 @see
15257 @return Result of the function call
15258*/
15259WDI_Status
15260WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015261(
Jeff Johnson295189b2012-06-20 16:38:30 -070015262 WDI_ControlBlockType* pWDICtx,
15263 WDI_EventInfoType* pEventData
15264)
15265{
15266 WDI_DelSTARspParamsType wdiDelSTARsp;
15267 WDI_DelSTARspCb wdiDelSTARspCb;
15268 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015269 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15271
15272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 -------------------------------------------------------------------------*/
15275 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15276 ( NULL == pEventData->pEventData))
15277 {
15278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015279 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015282 }
15283
15284 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15285
15286 /*-------------------------------------------------------------------------
15287 Extract response and send it to UMAC
15288 -------------------------------------------------------------------------*/
15289 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 sizeof(halDelStaRspMsg.delStaRspParams));
15292
15293 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015294 wdiDelSTARsp.wdiStatus =
15295 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015296
15297 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15298
15299 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15300 if(staType == WDI_STA_ENTRY_SELF)
15301 {
15302 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15303
15304 /* At this point add the self-STA */
15305
15306 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15307 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15308 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15309
15310#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15311#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15312
15313 //all DPU indices are the same for self STA
15314 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15315 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15316 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15317 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15318 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15319 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015320
15321 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015322 }
15323 else
15324 {
15325 //Delete the station in the table
15326 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15327 }
15328
15329 /*Notify UMAC*/
15330 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15331
Jeff Johnsone7245742012-09-05 17:12:55 -070015332 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015333}/*WDI_ProcessDelSTARsp*/
15334
15335
15336/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015337 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015338==========================================================================*/
15339
15340/**
15341 @brief Process Set BSS Key Rsp function (called when a response
15342 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015343
15344 @param pWDICtx: pointer to the WLAN DAL context
15345 pEventData: pointer to the event information structure
15346
Jeff Johnson295189b2012-06-20 16:38:30 -070015347 @see
15348 @return Result of the function call
15349*/
15350WDI_Status
15351WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015352(
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 WDI_ControlBlockType* pWDICtx,
15354 WDI_EventInfoType* pEventData
15355)
15356{
15357 WDI_Status wdiStatus;
15358 eHalStatus halStatus;
15359 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15361
15362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015364 -------------------------------------------------------------------------*/
15365 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15366 ( NULL == pEventData->pEventData))
15367 {
15368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015369 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015372 }
15373
15374 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15375
15376 /*-------------------------------------------------------------------------
15377 Extract response and send it to UMAC
15378 -------------------------------------------------------------------------*/
15379 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015381
15382 if ( eHAL_STATUS_SUCCESS != halStatus )
15383 {
15384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15385 "Set BSS Key failed with status %s (%d)",
15386 WDI_getHALStatusMsgString(halStatus),
15387 halStatus);
15388 /* send the status to UMAC, don't return from here*/
15389 }
15390
15391 /*Notify UMAC*/
15392 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15393
Jeff Johnsone7245742012-09-05 17:12:55 -070015394 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015395}/*WDI_ProcessSetBssKeyRsp*/
15396
15397/**
15398 @brief Process Remove BSS Key Rsp function (called when a response
15399 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015400
15401 @param pWDICtx: pointer to the WLAN DAL context
15402 pEventData: pointer to the event information structure
15403
Jeff Johnson295189b2012-06-20 16:38:30 -070015404 @see
15405 @return Result of the function call
15406*/
15407WDI_Status
15408WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015409(
Jeff Johnson295189b2012-06-20 16:38:30 -070015410 WDI_ControlBlockType* pWDICtx,
15411 WDI_EventInfoType* pEventData
15412)
15413{
15414 WDI_Status wdiStatus;
15415 eHalStatus halStatus;
15416 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15418
15419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015421 -------------------------------------------------------------------------*/
15422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15423 ( NULL == pEventData->pEventData))
15424 {
15425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015429 }
15430
15431 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15432
15433 /*-------------------------------------------------------------------------
15434 Extract response and send it to UMAC
15435 -------------------------------------------------------------------------*/
15436 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015437 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015438
15439 if ( eHAL_STATUS_SUCCESS != halStatus )
15440 {
15441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15442 "Remove BSS Key failed with status %s (%d )",
15443 WDI_getHALStatusMsgString(halStatus),
15444 halStatus);
15445 /* send the status to UMAC, don't return from here*/
15446 }
15447
15448 /*Notify UMAC*/
15449 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15450
Jeff Johnsone7245742012-09-05 17:12:55 -070015451 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015452}/*WDI_ProcessSetBssKeyRsp*/
15453
15454
15455/**
15456 @brief Process Set STA Key Rsp function (called when a response
15457 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015458
15459 @param pWDICtx: pointer to the WLAN DAL context
15460 pEventData: pointer to the event information structure
15461
Jeff Johnson295189b2012-06-20 16:38:30 -070015462 @see
15463 @return Result of the function call
15464*/
15465WDI_Status
15466WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015467(
Jeff Johnson295189b2012-06-20 16:38:30 -070015468 WDI_ControlBlockType* pWDICtx,
15469 WDI_EventInfoType* pEventData
15470)
15471{
15472 WDI_Status wdiStatus;
15473 eHalStatus halStatus;
15474 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15476
15477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015479 -------------------------------------------------------------------------*/
15480 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15481 ( NULL == pEventData->pEventData))
15482 {
15483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 }
15488
15489 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15490
15491 /*-------------------------------------------------------------------------
15492 Extract response and send it to UMAC
15493 -------------------------------------------------------------------------*/
15494 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015495 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015496
15497 if ( eHAL_STATUS_SUCCESS != halStatus )
15498 {
15499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15500 "Set STA Key failed with status %s (%d)",
15501 WDI_getHALStatusMsgString(halStatus),
15502 halStatus);
15503 /* send the status to UMAC, don't return from here*/
15504 }
15505
15506 /*Notify UMAC*/
15507 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15508
Jeff Johnsone7245742012-09-05 17:12:55 -070015509 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015510}/*WDI_ProcessSetSTAKeyRsp*/
15511
15512/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015513 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015515
15516 @param pWDICtx: pointer to the WLAN DAL context
15517 pEventData: pointer to the event information structure
15518
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 @see
15520 @return Result of the function call
15521*/
15522WDI_Status
15523WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015524(
Jeff Johnson295189b2012-06-20 16:38:30 -070015525 WDI_ControlBlockType* pWDICtx,
15526 WDI_EventInfoType* pEventData
15527)
15528{
15529 WDI_Status wdiStatus;
15530 eHalStatus halStatus;
15531 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15533
15534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015536 -------------------------------------------------------------------------*/
15537 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15538 ( NULL == pEventData->pEventData))
15539 {
15540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 }
15545
15546 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15547
15548 /*-------------------------------------------------------------------------
15549 Extract response and send it to UMAC
15550 -------------------------------------------------------------------------*/
15551 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015553
15554 if ( eHAL_STATUS_SUCCESS != halStatus )
15555 {
15556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15557 "Remove STA Key failed with status %s (%d)",
15558 WDI_getHALStatusMsgString(halStatus),
15559 halStatus);
15560 /* send the status to UMAC, don't return from here*/
15561 }
15562
15563 /*Notify UMAC*/
15564 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15565
Jeff Johnsone7245742012-09-05 17:12:55 -070015566 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015567}/*WDI_ProcessRemoveStaKeyRsp*/
15568
15569/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015570 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015571 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015572
15573 @param pWDICtx: pointer to the WLAN DAL context
15574 pEventData: pointer to the event information structure
15575
Jeff Johnson295189b2012-06-20 16:38:30 -070015576 @see
15577 @return Result of the function call
15578*/
15579WDI_Status
15580WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015581(
Jeff Johnson295189b2012-06-20 16:38:30 -070015582 WDI_ControlBlockType* pWDICtx,
15583 WDI_EventInfoType* pEventData
15584)
15585{
15586 WDI_Status wdiStatus;
15587 eHalStatus halStatus;
15588 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15590
15591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015593 -------------------------------------------------------------------------*/
15594 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15595 ( NULL == pEventData->pEventData))
15596 {
15597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015598 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015601 }
15602
15603 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15604
15605 /*-------------------------------------------------------------------------
15606 Extract response and send it to UMAC
15607 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015608 wpalMemoryCopy( &halStatus,
15609 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015610 sizeof(halStatus));
15611
Jeff Johnsone7245742012-09-05 17:12:55 -070015612 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015613
15614 if ( eHAL_STATUS_SUCCESS != halStatus )
15615 {
15616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15617 "Set STA Key failed with status %s (%d)",
15618 WDI_getHALStatusMsgString(halStatus),
15619 halStatus);
15620 /* send the status to UMAC, don't return from here*/
15621 }
15622
15623 /*Notify UMAC*/
15624 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15625
Jeff Johnsone7245742012-09-05 17:12:55 -070015626 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015627}/*WDI_ProcessSetSTABcastKeyRsp*/
15628
15629/**
15630 @brief Process Remove STA Bcast Key Rsp function (called when a
15631 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015632
15633 @param pWDICtx: pointer to the WLAN DAL context
15634 pEventData: pointer to the event information structure
15635
Jeff Johnson295189b2012-06-20 16:38:30 -070015636 @see
15637 @return Result of the function call
15638*/
15639WDI_Status
15640WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015641(
Jeff Johnson295189b2012-06-20 16:38:30 -070015642 WDI_ControlBlockType* pWDICtx,
15643 WDI_EventInfoType* pEventData
15644)
15645{
15646 WDI_Status wdiStatus;
15647 eHalStatus halStatus;
15648 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15650
15651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015652 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 -------------------------------------------------------------------------*/
15654 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15655 ( NULL == pEventData->pEventData))
15656 {
15657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015661 }
15662
15663 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15664
15665 /*-------------------------------------------------------------------------
15666 Extract response and send it to UMAC
15667 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015668 wpalMemoryCopy( &halStatus,
15669 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015670 sizeof(halStatus));
15671
Jeff Johnsone7245742012-09-05 17:12:55 -070015672 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015673
15674 if ( eHAL_STATUS_SUCCESS != halStatus )
15675 {
15676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15677 "Remove STA Key failed with status %s (%d)",
15678 WDI_getHALStatusMsgString(halStatus),
15679 halStatus);
15680 /* send the status to UMAC, don't return from here*/
15681 }
15682
15683 /*Notify UMAC*/
15684 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15685
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015687}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15688
15689
15690/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015691 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015692==========================================================================*/
15693
15694/**
15695 @brief Process Add TSpec Rsp function (called when a response
15696 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015697
15698 @param pWDICtx: pointer to the WLAN DAL context
15699 pEventData: pointer to the event information structure
15700
Jeff Johnson295189b2012-06-20 16:38:30 -070015701 @see
15702 @return Result of the function call
15703*/
15704WDI_Status
15705WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015706(
Jeff Johnson295189b2012-06-20 16:38:30 -070015707 WDI_ControlBlockType* pWDICtx,
15708 WDI_EventInfoType* pEventData
15709)
15710{
15711 WDI_Status wdiStatus;
15712 eHalStatus halStatus;
15713 WDI_AddTsRspCb wdiAddTsRspCb;
15714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15715
15716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015717 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 -------------------------------------------------------------------------*/
15719 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15720 ( NULL == pEventData->pEventData))
15721 {
15722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015723 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015726 }
15727
15728 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15729
15730 /*-------------------------------------------------------------------------
15731 Extract response and send it to UMAC
15732 -------------------------------------------------------------------------*/
15733 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015734 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015735
15736 /*Notify UMAC*/
15737 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15738
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015740}/*WDI_ProcessAddTSpecRsp*/
15741
15742
15743/**
15744 @brief Process Del TSpec Rsp function (called when a response
15745 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015746
15747 @param pWDICtx: pointer to the WLAN DAL context
15748 pEventData: pointer to the event information structure
15749
Jeff Johnson295189b2012-06-20 16:38:30 -070015750 @see
15751 @return Result of the function call
15752*/
15753WDI_Status
15754WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015755(
Jeff Johnson295189b2012-06-20 16:38:30 -070015756 WDI_ControlBlockType* pWDICtx,
15757 WDI_EventInfoType* pEventData
15758)
15759{
15760 WDI_Status wdiStatus;
15761 eHalStatus halStatus;
15762 WDI_DelTsRspCb wdiDelTsRspCb;
15763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15764
15765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015766 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015767 -------------------------------------------------------------------------*/
15768 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15769 ( NULL == pEventData->pEventData))
15770 {
15771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015772 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015773 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015775 }
15776
15777 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15778
15779 /*-------------------------------------------------------------------------
15780 Extract response and send it to UMAC
15781 -------------------------------------------------------------------------*/
15782 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015784
15785 /*Notify UMAC*/
15786 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15787
Jeff Johnsone7245742012-09-05 17:12:55 -070015788 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015789}/*WDI_ProcessDelTSpecRsp*/
15790
15791/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015794
15795 @param pWDICtx: pointer to the WLAN DAL context
15796 pEventData: pointer to the event information structure
15797
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 @see
15799 @return Result of the function call
15800*/
15801WDI_Status
15802WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015803(
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 WDI_ControlBlockType* pWDICtx,
15805 WDI_EventInfoType* pEventData
15806)
15807{
15808 WDI_Status wdiStatus;
15809 eHalStatus halStatus;
15810 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15812
15813 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015814 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015815 -------------------------------------------------------------------------*/
15816 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15817 ( NULL == pEventData->pEventData))
15818 {
15819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015820 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015823 }
15824
15825 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15826
15827 /*-------------------------------------------------------------------------
15828 Extract response and send it to UMAC
15829 -------------------------------------------------------------------------*/
15830 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015831 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015832
15833 /*Notify UMAC*/
15834 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15835
Jeff Johnsone7245742012-09-05 17:12:55 -070015836 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015837}/*WDI_ProcessUpdateEDCAParamsRsp*/
15838
15839
15840/**
15841 @brief Process Add BA Rsp function (called when a response
15842 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015843
15844 @param pWDICtx: pointer to the WLAN DAL context
15845 pEventData: pointer to the event information structure
15846
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 @see
15848 @return Result of the function call
15849*/
15850WDI_Status
15851WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015852(
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 WDI_ControlBlockType* pWDICtx,
15854 WDI_EventInfoType* pEventData
15855)
15856{
15857 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15858
15859 tAddBASessionRspParams halBASessionRsp;
15860 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15861
Jeff Johnsone7245742012-09-05 17:12:55 -070015862
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15864
15865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 -------------------------------------------------------------------------*/
15868 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15869 ( NULL == pEventData->pEventData))
15870 {
15871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015875 }
15876
15877 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15878
15879 /*-------------------------------------------------------------------------
15880 Extract response and send it to UMAC
15881 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015882 wpalMemoryCopy( &halBASessionRsp,
15883 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 sizeof(halBASessionRsp));
15885
15886 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15887
Jeff Johnson43971f52012-07-17 12:26:56 -070015888 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 {
15890 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15891 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15892 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15893 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15894 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15895 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15896 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15897 }
15898
15899 /*Notify UMAC*/
15900 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15901
Jeff Johnsone7245742012-09-05 17:12:55 -070015902 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015903}/*WDI_ProcessAddSessionBARsp*/
15904
15905
15906/**
15907 @brief Process Del BA Rsp function (called when a response
15908 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015909
15910 @param pWDICtx: pointer to the WLAN DAL context
15911 pEventData: pointer to the event information structure
15912
Jeff Johnson295189b2012-06-20 16:38:30 -070015913 @see
15914 @return Result of the function call
15915*/
15916WDI_Status
15917WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015918(
Jeff Johnson295189b2012-06-20 16:38:30 -070015919 WDI_ControlBlockType* pWDICtx,
15920 WDI_EventInfoType* pEventData
15921)
15922{
15923 WDI_Status wdiStatus;
15924 eHalStatus halStatus;
15925 WDI_DelBARspCb wdiDelBARspCb;
15926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15927
15928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 -------------------------------------------------------------------------*/
15931 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15932 ( NULL == pEventData->pEventData))
15933 {
15934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 }
15939
15940 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15941
15942 /*-------------------------------------------------------------------------
15943 Extract response and send it to UMAC
15944 -------------------------------------------------------------------------*/
15945 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015947
15948 if ( eHAL_STATUS_SUCCESS == halStatus )
15949 {
15950 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15951 }
15952
15953 /*Notify UMAC*/
15954 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15955
Jeff Johnsone7245742012-09-05 17:12:55 -070015956 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015957}/*WDI_ProcessDelBARsp*/
15958
15959#ifdef FEATURE_WLAN_CCX
15960/**
15961 @brief Process TSM Stats Rsp function (called when a response
15962 is being received over the bus from HAL)
15963
15964 @param pWDICtx: pointer to the WLAN DAL context
15965 pEventData: pointer to the event information structure
15966
15967 @see
15968 @return Result of the function call
15969*/
15970WDI_Status
15971WDI_ProcessTsmStatsRsp
15972(
15973 WDI_ControlBlockType* pWDICtx,
15974 WDI_EventInfoType* pEventData
15975)
15976{
15977 WDI_TsmRspCb wdiTsmStatsRspCb;
15978 tTsmStatsRspMsg halTsmStatsRspMsg;
15979 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15981
15982 /*-------------------------------------------------------------------------
15983 Sanity check
15984 -------------------------------------------------------------------------*/
15985 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15986 ( NULL == pEventData->pEventData))
15987 {
15988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015989 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015990 WDI_ASSERT(0);
15991 return WDI_STATUS_E_FAILURE;
15992 }
15993
15994 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
15995
15996 /*-------------------------------------------------------------------------
15997 Unpack HAL Response Message - the header was already extracted by the
15998 main Response Handling procedure
15999 -------------------------------------------------------------------------*/
16000 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16001 pEventData->pEventData,
16002 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16003
16004 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16005 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16006 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16007 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16008 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16009 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16010 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16011 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16012 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16013 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16014 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16015 halTsmStatsRspMsg.tsmStatsRspParams.status);
16016
16017 /*Notify UMAC*/
16018 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16019
16020 return WDI_STATUS_SUCCESS;
16021}/*WDI_ProcessTsmStatsRsp*/
16022
16023#endif
16024
16025
16026
16027/**
16028 @brief Process Flush AC Rsp function (called when a response
16029 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016030
16031 @param pWDICtx: pointer to the WLAN DAL context
16032 pEventData: pointer to the event information structure
16033
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 @see
16035 @return Result of the function call
16036*/
16037WDI_Status
16038WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016039(
Jeff Johnson295189b2012-06-20 16:38:30 -070016040 WDI_ControlBlockType* pWDICtx,
16041 WDI_EventInfoType* pEventData
16042)
16043{
16044 WDI_Status wdiStatus;
16045 eHalStatus halStatus;
16046 WDI_FlushAcRspCb wdiFlushAcRspCb;
16047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16048
16049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016050 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 -------------------------------------------------------------------------*/
16052 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16053 ( NULL == pEventData->pEventData))
16054 {
16055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016056 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016057 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016058 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016059 }
16060
16061 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16062
16063 /*-------------------------------------------------------------------------
16064 Extract response and send it to UMAC
16065 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016066 wpalMemoryCopy( &halStatus,
16067 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 sizeof(halStatus));
16069
Jeff Johnsone7245742012-09-05 17:12:55 -070016070 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016071
16072 /*Notify UMAC*/
16073 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16074
Jeff Johnsone7245742012-09-05 17:12:55 -070016075 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016076}/*WDI_ProcessFlushAcRsp*/
16077
16078/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016079 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016081
16082 @param pWDICtx: pointer to the WLAN DAL context
16083 pEventData: pointer to the event information structure
16084
Jeff Johnson295189b2012-06-20 16:38:30 -070016085 @see
16086 @return Result of the function call
16087*/
16088WDI_Status
16089WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016090(
Jeff Johnson295189b2012-06-20 16:38:30 -070016091 WDI_ControlBlockType* pWDICtx,
16092 WDI_EventInfoType* pEventData
16093)
16094{
16095 WDI_Status wdiStatus;
16096 eHalStatus halStatus;
16097 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16099
16100 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 -------------------------------------------------------------------------*/
16103 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16104 ( NULL == pEventData->pEventData))
16105 {
16106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016110 }
16111
16112 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16113
16114 /*-------------------------------------------------------------------------
16115 Extract response and send it to UMAC
16116 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016117 wpalMemoryCopy( &halStatus,
16118 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016119 sizeof(halStatus));
16120
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016122
16123 /*Notify UMAC*/
16124 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16125
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016127}/*WDI_ProcessBtAmpEventRsp*/
16128
16129
16130/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016131 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016132 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016133
16134 @param pWDICtx: pointer to the WLAN DAL context
16135 pEventData: pointer to the event information structure
16136
Jeff Johnson295189b2012-06-20 16:38:30 -070016137 @see
16138 @return Result of the function call
16139*/
16140WDI_Status
16141WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016142(
Jeff Johnson295189b2012-06-20 16:38:30 -070016143 WDI_ControlBlockType* pWDICtx,
16144 WDI_EventInfoType* pEventData
16145)
16146{
16147 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16148 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16149 tAddStaSelfRspMsg halAddStaSelfRsp;
16150 WDI_AddStaParams wdiAddSTAParam = {0};
16151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16152
16153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016155 -------------------------------------------------------------------------*/
16156 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16157 ( NULL == pEventData->pEventData))
16158 {
16159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016163 }
16164
Jeff Johnsone7245742012-09-05 17:12:55 -070016165 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016166 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16167
16168 /*-------------------------------------------------------------------------
16169 Extract response and send it to UMAC
16170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16172 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16174
16175
Jeff Johnsone7245742012-09-05 17:12:55 -070016176 wdiAddSTASelfParams.wdiStatus =
16177 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016178
Jeff Johnsone7245742012-09-05 17:12:55 -070016179 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016183 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016184 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16185
16186 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16187 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16188 WDI_MAC_ADDR_LEN);
16189
16190
16191#ifdef HAL_SELF_STA_PER_BSS
16192
16193 /* At this point add the self-STA */
16194
16195 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16196 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16197 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16198
16199 //all DPU indices are the same for self STA
16200
16201 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016202 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016203 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16204 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16205 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16206 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16207 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16208
16209 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16210 WDI_MAC_ADDR_LEN);
16211
16212 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16213 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16214
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16217 {
16218 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16219 }
16220#endif
16221
16222 /*Notify UMAC*/
16223 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16224
Jeff Johnsone7245742012-09-05 17:12:55 -070016225 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016226}/*WDI_ProcessAddSTASelfRsp*/
16227
16228
16229
16230/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016231 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016232 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016233
16234 @param pWDICtx: pointer to the WLAN DAL context
16235 pEventData: pointer to the event information structure
16236
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 @see
16238 @return Result of the function call
16239*/
16240WDI_Status
16241WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016242(
Jeff Johnson295189b2012-06-20 16:38:30 -070016243 WDI_ControlBlockType* pWDICtx,
16244 WDI_EventInfoType* pEventData
16245)
16246{
16247 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16248 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16249 tDelStaSelfRspParams delStaSelfRspParams;
16250 wpt_uint8 ucStaIdx;
16251
16252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16253
16254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016255 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016256 -------------------------------------------------------------------------*/
16257 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16258 ( NULL == pEventData->pEventData))
16259 {
16260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016261 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016264 }
16265
16266 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16267
16268 /*-------------------------------------------------------------------------
16269 Extract response and send it to UMAC
16270 -------------------------------------------------------------------------*/
16271
Jeff Johnsone7245742012-09-05 17:12:55 -070016272 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016273 (wpt_uint8*)pEventData->pEventData,
16274 sizeof(tDelStaSelfRspParams));
16275
Jeff Johnsone7245742012-09-05 17:12:55 -070016276 wdiDelStaSelfRspParams.wdiStatus =
16277 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016278
Jeff Johnsone7245742012-09-05 17:12:55 -070016279 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016280 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16281 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16282 {
16283 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016284 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016285 delStaSelfRspParams.selfMacAddr,
16286 &ucStaIdx);
16287 if(WDI_STATUS_E_FAILURE == wdiStatus)
16288 {
16289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016290 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 }
16294 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16295 }
16296
16297 /*Notify UMAC*/
16298 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16299
16300 return WDI_STATUS_SUCCESS;
16301}
16302
Jeff Johnsone7245742012-09-05 17:12:55 -070016303#ifdef FEATURE_OEM_DATA_SUPPORT
16304/**
16305 @brief Start Oem Data Rsp function (called when a
16306 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016307
Jeff Johnsone7245742012-09-05 17:12:55 -070016308 @param pWDICtx: pointer to the WLAN DAL context
16309 pEventData: pointer to the event information structure
16310
16311 @see
16312 @return Result of the function call
16313*/
16314#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16315
16316WDI_Status
16317WDI_ProcessStartOemDataRsp
16318(
16319 WDI_ControlBlockType* pWDICtx,
16320 WDI_EventInfoType* pEventData
16321)
16322{
16323 WDI_oemDataRspCb wdiOemDataRspCb;
16324 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16325 tStartOemDataRspParams* halStartOemDataRspParams;
16326
16327 /*-------------------------------------------------------------------------
16328 Sanity check
16329 -------------------------------------------------------------------------*/
16330 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16331 ( NULL == pEventData->pEventData))
16332 {
16333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016334 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016335 WDI_ASSERT(0);
16336 return WDI_STATUS_E_FAILURE;
16337 }
16338
16339 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16340
16341 /*-------------------------------------------------------------------------
16342 Extract response and send it to UMAC
16343 -------------------------------------------------------------------------*/
16344 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16345
16346
16347 //It is the responsibility of the application code to check for failure
16348 //conditions!
16349
16350 //Allocate memory for WDI OEM DATA RSP structure
16351 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16352
16353 if(NULL == wdiOemDataRspParams)
16354 {
16355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16356 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16357 pWDICtx, pEventData, pEventData->pEventData);
16358 WDI_ASSERT(0);
16359 return WDI_STATUS_E_FAILURE;
16360 }
16361
16362 /* Populate WDI structure members */
16363 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16364
16365 /*Notify UMAC*/
16366 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16367
16368 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16369 wpalMemoryFree(wdiOemDataRspParams);
16370
16371 return WDI_STATUS_SUCCESS;
16372}/*WDI_PrcoessStartOemDataRsp*/
16373#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016374
16375/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016376 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016377===========================================================================*/
16378
16379/**
16380 @brief Process Channel Switch Rsp function (called when a response
16381 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016382
16383 @param pWDICtx: pointer to the WLAN DAL context
16384 pEventData: pointer to the event information structure
16385
Jeff Johnson295189b2012-06-20 16:38:30 -070016386 @see
16387 @return Result of the function call
16388*/
16389WDI_Status
16390WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016391(
Jeff Johnson295189b2012-06-20 16:38:30 -070016392 WDI_ControlBlockType* pWDICtx,
16393 WDI_EventInfoType* pEventData
16394)
16395{
16396 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16397 WDI_SwitchChRspCb wdiChSwitchRspCb;
16398 tSwitchChannelRspParams halSwitchChannelRsp;
16399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16400
16401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016402 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 -------------------------------------------------------------------------*/
16404 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16405 ( NULL == pEventData->pEventData))
16406 {
16407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016408 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016411 }
16412
16413 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16414
16415 /*-------------------------------------------------------------------------
16416 Extract response and send it to UMAC
16417 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016418 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016419 (wpt_uint8*)pEventData->pEventData,
16420 sizeof(halSwitchChannelRsp));
16421
Jeff Johnsone7245742012-09-05 17:12:55 -070016422 wdiSwitchChRsp.wdiStatus =
16423 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016424 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16425
16426#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016427 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016428#endif
16429
16430 /*Notify UMAC*/
16431 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16432
Jeff Johnsone7245742012-09-05 17:12:55 -070016433 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016434}/*WDI_ProcessChannelSwitchRsp*/
16435
16436
16437/**
16438 @brief Process Config STA Rsp function (called when a response
16439 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016440
16441 @param pWDICtx: pointer to the WLAN DAL context
16442 pEventData: pointer to the event information structure
16443
Jeff Johnson295189b2012-06-20 16:38:30 -070016444 @see
16445 @return Result of the function call
16446*/
16447WDI_Status
16448WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016449(
Jeff Johnson295189b2012-06-20 16:38:30 -070016450 WDI_ControlBlockType* pWDICtx,
16451 WDI_EventInfoType* pEventData
16452)
16453{
16454 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16455 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16456 WDI_AddStaParams wdiAddSTAParam;
16457
16458 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016459 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016460
Jeff Johnsone7245742012-09-05 17:12:55 -070016461 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016462 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16463
16464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016466 -------------------------------------------------------------------------*/
16467 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16468 ( NULL == pEventData->pEventData))
16469 {
16470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016471 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016472 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016473 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016474 }
16475
16476 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16477
16478 /*-------------------------------------------------------------------------
16479 Extract response and send it to UMAC
16480 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016481 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16482 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016483 sizeof(halConfigStaRsp.configStaRspParams));
16484
16485
16486 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16487 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16488 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16489 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16490 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16491
16492 /* MAC Address of STA - take from cache as it does not come back in the
16493 response*/
16494 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016495 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016496 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016497
16498 wdiCfgSTAParams.wdiStatus =
16499 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016500
16501 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16502 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16503 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16504
16505 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16506 {
16507 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16508 {
16509 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016510 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16512 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016513
Jeff Johnson295189b2012-06-20 16:38:30 -070016514 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016515 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016516 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016517 wdiAddSTAParam.ucHTCapable =
16518 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16519 wdiAddSTAParam.ucStaType =
16520 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16521
Jeff Johnson295189b2012-06-20 16:38:30 -070016522 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016523 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16524 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016525 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016526
16527 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16528 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16529 WDI_MAC_ADDR_LEN);
16530
16531 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16532 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16533 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016534
16535 if ( NULL == pBSSSes )
16536 {
16537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16538 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016539
Jeff Johnson295189b2012-06-20 16:38:30 -070016540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016541 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016542 }
16543
16544 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016546 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016547 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016548 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016549 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016550 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016551 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016552 halConfigStaRsp.configStaRspParams.ucBcastSig;
16553 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16554 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016555
Jeff Johnson295189b2012-06-20 16:38:30 -070016556 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16557 }
16558 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16559 {
16560 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16561
Jeff Johnsone7245742012-09-05 17:12:55 -070016562 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016566 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016567 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016568 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016569 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016572 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016573 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016574 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016575 halConfigStaRsp.configStaRspParams.ucUcastSig;
16576 }
16577 }
16578
16579 /*Notify UMAC*/
16580 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16581
Jeff Johnsone7245742012-09-05 17:12:55 -070016582 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016583}/*WDI_ProcessConfigStaRsp*/
16584
16585
16586/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016587 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016588 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016589
16590 @param pWDICtx: pointer to the WLAN DAL context
16591 pEventData: pointer to the event information structure
16592
Jeff Johnson295189b2012-06-20 16:38:30 -070016593 @see
16594 @return Result of the function call
16595*/
16596WDI_Status
16597WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016598(
Jeff Johnson295189b2012-06-20 16:38:30 -070016599 WDI_ControlBlockType* pWDICtx,
16600 WDI_EventInfoType* pEventData
16601)
16602{
16603 WDI_Status wdiStatus;
16604 eHalStatus halStatus;
16605 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16606
16607 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016608 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16610
16611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016613 -------------------------------------------------------------------------*/
16614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16615 ( NULL == pEventData->pEventData))
16616 {
16617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016621 }
16622
16623 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16624
16625 wpalMutexAcquire(&pWDICtx->wptMutex);
16626
16627 /*If the link is being transitioned to idle - the BSS is to be deleted
16628 - this type of ending a session is possible when UMAC has failed an
16629 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016630 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16632 {
16633 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016634 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016635 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016636 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16637 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16638 &pBSSSes);
16639
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 /*-----------------------------------------------------------------------
16641 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016642 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016643 -----------------------------------------------------------------------*/
16644 if ( NULL == pBSSSes )
16645 {
16646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16647 "Set link response received outside association session");
16648 }
16649 else
16650 {
16651 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16652 will be del BSS coming after this to stop the beaconing & cleaning up the
16653 sessions*/
16654 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16655 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16656 {
16657 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 -----------------------------------------------------------------------*/
16660 WDI_DeleteSession(pWDICtx, pBSSSes);
16661
16662 /*-----------------------------------------------------------------------
16663 Check to see if this association is in progress - if so disable the
16664 flag as this has ended
16665 -----------------------------------------------------------------------*/
16666 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016667 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016668 /*Association no longer in progress */
16669 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16670 /*Association no longer in progress - prepare pending assoc for processing*/
16671 WDI_DequeueAssocRequest(pWDICtx);
16672 }
16673 }
16674 }
16675 }
16676 /* If the link state has been set to POST ASSOC, reset the "association in
16677 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016678 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016679 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16680 {
16681 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16682 WDI_DequeueAssocRequest(pWDICtx);
16683 }
16684
16685 wpalMutexRelease(&pWDICtx->wptMutex);
16686
16687 /*-------------------------------------------------------------------------
16688 Extract response and send it to UMAC
16689 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016690 wpalMemoryCopy( &halStatus,
16691 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016692 sizeof(halStatus));
16693
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016695
16696 /*Notify UMAC*/
16697 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16698
Jeff Johnsone7245742012-09-05 17:12:55 -070016699 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016700}/*WDI_ProcessSetLinkStateRsp*/
16701
16702/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016703 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016704 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016705
16706 @param pWDICtx: pointer to the WLAN DAL context
16707 pEventData: pointer to the event information structure
16708
Jeff Johnson295189b2012-06-20 16:38:30 -070016709 @see
16710 @return Result of the function call
16711*/
16712WDI_Status
16713WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016714(
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 WDI_ControlBlockType* pWDICtx,
16716 WDI_EventInfoType* pEventData
16717)
16718{
16719 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16720 WDI_GetStatsRspCb wdiGetStatsRspCb;
16721 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016722
Jeff Johnson295189b2012-06-20 16:38:30 -070016723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16724
16725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016727 -------------------------------------------------------------------------*/
16728 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16729 ( NULL == pEventData->pEventData))
16730 {
16731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016735 }
16736
16737 /*-------------------------------------------------------------------------
16738 Extract response and send it to UMAC
16739 -------------------------------------------------------------------------*/
16740 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16741
16742 /*allocate the stats response buffer */
16743 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16744 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16745 + sizeof(WDI_GetStatsRspParamsType));
16746
16747 if(NULL == wdiGetStatsRsp)
16748 {
16749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16750 "Failed to allocate memory in Get Stats Response %x %x %x ",
16751 pWDICtx, pEventData, pEventData->pEventData);
16752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016754 }
16755
16756 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16757
16758 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16759 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16760 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16761 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16762 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16763 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16764
16765 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16766 wpalMemoryCopy(wdiGetStatsRsp + 1,
16767 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16768 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16769
16770 /*Notify UMAC*/
16771 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16772
16773 wpalMemoryFree(wdiGetStatsRsp);
16774
Jeff Johnsone7245742012-09-05 17:12:55 -070016775 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016776}/*WDI_ProcessGetStatsRsp*/
16777
Srinivas Girigowda2471d832013-01-25 13:33:11 -080016778#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
16779/**
16780 @brief Process Get Roam Rssi Rsp function (called when a response is
16781 being received over the bus from HAL)
16782
16783 @param pWDICtx: pointer to the WLAN DAL context
16784 pEventData: pointer to the event information structure
16785
16786 @see
16787 @return Result of the function call
16788*/
16789WDI_Status
16790WDI_ProcessGetRoamRssiRsp
16791(
16792 WDI_ControlBlockType* pWDICtx,
16793 WDI_EventInfoType* pEventData
16794)
16795{
16796 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
16797 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
16798 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
16799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16800
16801 /*-------------------------------------------------------------------------
16802 Sanity check
16803 -------------------------------------------------------------------------*/
16804 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16805 ( NULL == pEventData->pEventData))
16806 {
16807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16808 "%s: Invalid parameters", __func__);
16809 WDI_ASSERT(0);
16810 return WDI_STATUS_E_FAILURE;
16811 }
16812
16813 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
16814 if(NULL == wdiGetRoamRssiRspCb)
16815 {
16816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16817 "%s: call back function is NULL", __func__);
16818 WDI_ASSERT(0);
16819 return WDI_STATUS_E_FAILURE;
16820 }
16821
16822 /*-------------------------------------------------------------------------
16823 Extract response and send it to UMAC
16824 -------------------------------------------------------------------------*/
16825 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
16826 pEventData->pEventData,
16827 sizeof(halRoamRssiRspParams.roamRssiRspParams));
16828
16829 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
16830 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
16831 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
16832
16833 /*Notify UMAC*/
16834 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
16835
16836 return WDI_STATUS_SUCCESS;
16837}/*WDI_ProcessGetRoamRssiRsp*/
16838#endif
16839
Jeff Johnson295189b2012-06-20 16:38:30 -070016840
16841/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016842 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016843 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016844
16845 @param pWDICtx: pointer to the WLAN DAL context
16846 pEventData: pointer to the event information structure
16847
Jeff Johnson295189b2012-06-20 16:38:30 -070016848 @see
16849 @return Result of the function call
16850*/
16851WDI_Status
16852WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016853(
Jeff Johnson295189b2012-06-20 16:38:30 -070016854 WDI_ControlBlockType* pWDICtx,
16855 WDI_EventInfoType* pEventData
16856)
16857{
16858 WDI_Status wdiStatus;
16859 eHalStatus halStatus;
16860 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16862
16863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016865 -------------------------------------------------------------------------*/
16866 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16867 ( NULL == pEventData->pEventData))
16868 {
16869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 }
16874
16875 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16876
16877 /*-------------------------------------------------------------------------
16878 Extract response and send it to UMAC
16879 -------------------------------------------------------------------------*/
16880 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016882
16883 /*Notify UMAC*/
16884 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16885
Jeff Johnsone7245742012-09-05 17:12:55 -070016886 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016887}/*WDI_ProcessUpdateCfgRsp*/
16888
16889
16890
16891/**
16892 @brief Process Add BA Rsp function (called when a response
16893 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016894
16895 @param pWDICtx: pointer to the WLAN DAL context
16896 pEventData: pointer to the event information structure
16897
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 @see
16899 @return Result of the function call
16900*/
16901WDI_Status
16902WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016903(
Jeff Johnson295189b2012-06-20 16:38:30 -070016904 WDI_ControlBlockType* pWDICtx,
16905 WDI_EventInfoType* pEventData
16906)
16907{
16908 WDI_AddBARspCb wdiAddBARspCb;
16909
16910 tAddBARspParams halAddBARsp;
16911 WDI_AddBARspinfoType wdiAddBARsp;
16912
16913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16914
16915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016917 -------------------------------------------------------------------------*/
16918 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16919 ( NULL == pEventData->pEventData))
16920 {
16921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016925 }
16926
16927 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16928
16929 /*-------------------------------------------------------------------------
16930 Extract response and send it to UMAC
16931 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016932 wpalMemoryCopy( &halAddBARsp,
16933 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 sizeof(halAddBARsp));
16935
16936 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16937
Jeff Johnson43971f52012-07-17 12:26:56 -070016938 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016939 {
16940 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16941 }
16942
16943 /*Notify UMAC*/
16944 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16945
Jeff Johnsone7245742012-09-05 17:12:55 -070016946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016947}/*WDI_ProcessAddSessionBARsp*/
16948
16949/**
16950 @brief Process Add BA Rsp function (called when a response
16951 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016952
16953 @param pWDICtx: pointer to the WLAN DAL context
16954 pEventData: pointer to the event information structure
16955
Jeff Johnson295189b2012-06-20 16:38:30 -070016956 @see
16957 @return Result of the function call
16958*/
16959WDI_Status
16960WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016961(
Jeff Johnson295189b2012-06-20 16:38:30 -070016962 WDI_ControlBlockType* pWDICtx,
16963 WDI_EventInfoType* pEventData
16964)
16965{
16966 WDI_TriggerBARspCb wdiTriggerBARspCb;
16967
16968 tTriggerBARspParams* halTriggerBARsp;
16969 tTriggerBaRspCandidate* halBaCandidate;
16970 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16971 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16972 wpt_uint16 index;
16973 wpt_uint16 TidIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016974
Jeff Johnson295189b2012-06-20 16:38:30 -070016975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16976
16977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016979 -------------------------------------------------------------------------*/
16980 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16981 ( NULL == pEventData->pEventData))
16982 {
16983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016987 }
16988
16989 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16990
16991 /*-------------------------------------------------------------------------
16992 Extract response and send it to UMAC
16993 -------------------------------------------------------------------------*/
16994 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
16995
Jeff Johnsone7245742012-09-05 17:12:55 -070016996 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
16997 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070016998 sizeof(WDI_TriggerBARspCandidateType));
16999 if(NULL == wdiTriggerBARsp)
17000 {
17001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17002 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17003 pWDICtx, pEventData, pEventData->pEventData);
17004 wpalMemoryFree(halTriggerBARsp);
17005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017007 }
17008
17009 wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17010
17011 if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
17012 {
17013 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017014 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017015 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17016
17017 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17018 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17019
17020 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17021 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017022 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017023 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17024 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17025 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017026 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017027 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017028 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017029 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17030 }
17031 wdiTriggerBARspCandidate++;
17032 halBaCandidate++;
17033 }
17034 }
17035
17036 /*Notify UMAC*/
17037 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17038
17039 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017040 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017041}/*WDI_ProcessAddSessionBARsp*/
17042
17043/**
17044 @brief Process Update Beacon Params Rsp function (called when a response
17045 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017046
17047 @param pWDICtx: pointer to the WLAN DAL context
17048 pEventData: pointer to the event information structure
17049
Jeff Johnson295189b2012-06-20 16:38:30 -070017050 @see
17051 @return Result of the function call
17052*/
17053WDI_Status
17054WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017055(
Jeff Johnson295189b2012-06-20 16:38:30 -070017056 WDI_ControlBlockType* pWDICtx,
17057 WDI_EventInfoType* pEventData
17058)
17059{
17060 WDI_Status wdiStatus;
17061 eHalStatus halStatus;
17062 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17064
17065 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017066 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017067 -------------------------------------------------------------------------*/
17068 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17069 ( NULL == pEventData->pEventData))
17070 {
17071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017075 }
17076
17077 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17078
17079 /*-------------------------------------------------------------------------
17080 Extract response and send it to UMAC
17081 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017082 wpalMemoryCopy( &halStatus,
17083 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017084 sizeof(halStatus));
17085
Jeff Johnsone7245742012-09-05 17:12:55 -070017086 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017087
17088 /*Notify UMAC*/
17089 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17090
Jeff Johnsone7245742012-09-05 17:12:55 -070017091 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017092}/*WDI_ProcessUpdateBeaconParamsRsp*/
17093
17094/**
17095 @brief Process Send Beacon template Rsp function (called when a response
17096 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017097
17098 @param pWDICtx: pointer to the WLAN DAL context
17099 pEventData: pointer to the event information structure
17100
Jeff Johnson295189b2012-06-20 16:38:30 -070017101 @see
17102 @return Result of the function call
17103*/
17104WDI_Status
17105WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017106(
Jeff Johnson295189b2012-06-20 16:38:30 -070017107 WDI_ControlBlockType* pWDICtx,
17108 WDI_EventInfoType* pEventData
17109)
17110{
17111 WDI_Status wdiStatus;
17112 eHalStatus halStatus;
17113 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17115
17116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017117 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017118 -------------------------------------------------------------------------*/
17119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17120 ( NULL == pEventData->pEventData))
17121 {
17122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017126 }
17127
17128 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17129
17130 /*-------------------------------------------------------------------------
17131 Extract response and send it to UMAC
17132 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017133 wpalMemoryCopy( &halStatus,
17134 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 sizeof(halStatus));
17136
Jeff Johnsone7245742012-09-05 17:12:55 -070017137 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017138
17139 /*Notify UMAC*/
17140 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17141
Jeff Johnsone7245742012-09-05 17:12:55 -070017142 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017143}/*WDI_ProcessSendBeaconParamsRsp*/
17144
Jeff Johnsone7245742012-09-05 17:12:55 -070017145
Jeff Johnson295189b2012-06-20 16:38:30 -070017146/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017147 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017148 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017149
17150 @param pWDICtx: pointer to the WLAN DAL context
17151 pEventData: pointer to the event information structure
17152
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 @see
17154 @return Result of the function call
17155*/
17156WDI_Status
17157WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017158(
Jeff Johnson295189b2012-06-20 16:38:30 -070017159 WDI_ControlBlockType* pWDICtx,
17160 WDI_EventInfoType* pEventData
17161)
17162{
17163 WDI_Status wdiStatus;
17164 eHalStatus halStatus;
17165 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17167
17168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017170 -------------------------------------------------------------------------*/
17171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17172 ( NULL == pEventData->pEventData))
17173 {
17174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017175 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017176 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017177 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 }
17179
17180 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17181
17182 /*-------------------------------------------------------------------------
17183 Extract response and send it to UMAC
17184 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017185 wpalMemoryCopy( &halStatus,
17186 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 sizeof(halStatus));
17188
Jeff Johnsone7245742012-09-05 17:12:55 -070017189 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017190
17191 /*Notify UMAC*/
17192 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17193
Jeff Johnsone7245742012-09-05 17:12:55 -070017194 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017195}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17196
17197 /**
17198 @brief Process Set Max Tx Power Rsp function (called when a response
17199 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017200
17201 @param pWDICtx: pointer to the WLAN DAL context
17202 pEventData: pointer to the event information structure
17203
Jeff Johnson295189b2012-06-20 16:38:30 -070017204 @see
17205 @return Result of the function call
17206*/
17207WDI_Status
17208WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017209(
Jeff Johnson295189b2012-06-20 16:38:30 -070017210 WDI_ControlBlockType* pWDICtx,
17211 WDI_EventInfoType* pEventData
17212)
17213{
17214 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017215
Jeff Johnson295189b2012-06-20 16:38:30 -070017216 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017217
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17220
17221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017222 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017223 -------------------------------------------------------------------------*/
17224 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17225 ( NULL == pEventData->pEventData))
17226 {
17227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017228 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017231 }
17232
17233 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17234
17235 /*-------------------------------------------------------------------------
17236 Extract response and send it to UMAC
17237 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017238 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17239 pEventData->pEventData,
17240 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017241
17242 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17243 {
17244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17245 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017246 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017248 }
17249
Jeff Johnsone7245742012-09-05 17:12:55 -070017250 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017252 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017253
17254 /*Notify UMAC*/
17255 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17256
Jeff Johnsone7245742012-09-05 17:12:55 -070017257 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017258}
17259
schangd82195a2013-03-13 18:41:24 -070017260 /**
17261 @brief Process Set Tx Power Rsp function (called when a response
17262 is being received over the bus from HAL)
17263
17264 @param pWDICtx: pointer to the WLAN DAL context
17265 pEventData: pointer to the event information structure
17266
17267 @see
17268 @return Result of the function call
17269*/
17270WDI_Status
17271WDI_ProcessSetTxPowerRsp
17272(
17273 WDI_ControlBlockType* pWDICtx,
17274 WDI_EventInfoType* pEventData
17275)
17276{
17277 tSetTxPwrRspMsg halTxpowerrsp;
17278 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17279 WDA_SetTxPowerRspCb wdiReqStatusCb;
17280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17281
17282 /*-------------------------------------------------------------------------
17283 Sanity check
17284 -------------------------------------------------------------------------*/
17285 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17286 ( NULL == pEventData->pEventData))
17287 {
17288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17289 "%s: Invalid parameters", __func__);
17290 WDI_ASSERT(0);
17291 return WDI_STATUS_E_FAILURE;
17292 }
17293
17294 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17295
17296 /*-------------------------------------------------------------------------
17297 Extract response and send it to UMAC
17298 -------------------------------------------------------------------------*/
17299 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17300 pEventData->pEventData,
17301 sizeof(halTxpowerrsp.setTxPwrRspParams));
17302
17303 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17304 {
17305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17306 "Error status returned in Set Tx Power Response ");
17307 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17308 return WDI_STATUS_E_FAILURE;
17309 }
17310
17311 wdiSetTxPowerRspMsg.wdiStatus =
17312 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17313
17314 /*Notify UMAC*/
17315 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17316
17317 return WDI_STATUS_SUCCESS;
17318}
17319
Jeff Johnson295189b2012-06-20 16:38:30 -070017320/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017321 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017322 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017323
17324 @param pWDICtx: pointer to the WLAN DAL context
17325 pEventData: pointer to the event information structure
17326
Jeff Johnson295189b2012-06-20 16:38:30 -070017327 @see
17328 @return Result of the function call
17329*/
17330WDI_Status
17331WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017332(
Jeff Johnson295189b2012-06-20 16:38:30 -070017333 WDI_ControlBlockType* pWDICtx,
17334 WDI_EventInfoType* pEventData
17335)
17336{
17337 WDI_Status wdiStatus;
17338 eHalStatus halStatus;
17339 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17341
17342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017344 -------------------------------------------------------------------------*/
17345 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17346 ( NULL == pEventData->pEventData))
17347 {
17348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017352 }
17353
17354 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17355
17356 /*-------------------------------------------------------------------------
17357 Extract response and send it to UMAC
17358 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017359 wpalMemoryCopy( &halStatus,
17360 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 sizeof(halStatus));
17362
Jeff Johnsone7245742012-09-05 17:12:55 -070017363 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017364
17365 /*Notify UMAC*/
17366 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17367
Jeff Johnsone7245742012-09-05 17:12:55 -070017368 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017369}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017370/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017373
17374 @param pWDICtx: pointer to the WLAN DAL context
17375 pEventData: pointer to the event information structure
17376
Jeff Johnson295189b2012-06-20 16:38:30 -070017377 @see
17378 @return Result of the function call
17379*/
17380WDI_Status
17381WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017382(
Jeff Johnson295189b2012-06-20 16:38:30 -070017383 WDI_ControlBlockType* pWDICtx,
17384 WDI_EventInfoType* pEventData
17385)
17386{
17387 WDI_Status wdiStatus;
17388 eHalStatus halStatus;
17389 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017390 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17392
17393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017394 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017395 -------------------------------------------------------------------------*/
17396 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17397 ( NULL == pEventData->pEventData))
17398 {
17399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017400 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017403 }
17404
17405 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17406
17407 /*-------------------------------------------------------------------------
17408 Extract response and send it to UMAC
17409 -------------------------------------------------------------------------*/
17410 halStatus = *((eHalStatus*)pEventData->pEventData);
17411
Jeff Johnsone7245742012-09-05 17:12:55 -070017412 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017413
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017414 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17415 * Other module states are taken care by PMC.
17416 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17417 */
17418 if (wdiStatus != WDI_STATUS_SUCCESS) {
17419
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17421 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17422 halStatus);
17423 /* Call Back is not required as we are putting the DXE in FULL
17424 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017425 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17426
17427 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17428 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17429 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17430 WDI_ASSERT(0);
17431 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017432 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017433 /*Notify UMAC*/
17434 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17435
Jeff Johnsone7245742012-09-05 17:12:55 -070017436 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017437}/*WDI_ProcessEnterImpsRsp*/
17438
17439/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017440 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017442
17443 @param pWDICtx: pointer to the WLAN DAL context
17444 pEventData: pointer to the event information structure
17445
Jeff Johnson295189b2012-06-20 16:38:30 -070017446 @see
17447 @return Result of the function call
17448*/
17449WDI_Status
17450WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017451(
Jeff Johnson295189b2012-06-20 16:38:30 -070017452 WDI_ControlBlockType* pWDICtx,
17453 WDI_EventInfoType* pEventData
17454)
17455{
17456 WDI_Status wdiStatus;
17457 eHalStatus halStatus;
17458 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017459 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17461
17462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017464 -------------------------------------------------------------------------*/
17465 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17466 ( NULL == pEventData->pEventData))
17467 {
17468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017472 }
17473
17474 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17475
17476 /*-------------------------------------------------------------------------
17477 Extract response and send it to UMAC
17478 -------------------------------------------------------------------------*/
17479 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017480 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017481
17482 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017483 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17484 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17485 {
17486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17487 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17488 WDI_ASSERT(0);
17489 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017490 /*Notify UMAC*/
17491 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17492
Jeff Johnsone7245742012-09-05 17:12:55 -070017493 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017494}/*WDI_ProcessExitImpsRsp*/
17495
17496/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017497 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017498 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017499
17500 @param pWDICtx: pointer to the WLAN DAL context
17501 pEventData: pointer to the event information structure
17502
Jeff Johnson295189b2012-06-20 16:38:30 -070017503 @see
17504 @return Result of the function call
17505*/
17506WDI_Status
17507WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017508(
Jeff Johnson295189b2012-06-20 16:38:30 -070017509 WDI_ControlBlockType* pWDICtx,
17510 WDI_EventInfoType* pEventData
17511)
17512{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017513 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17514 tHalEnterBmpsRspParams halEnterBmpsRsp;
17515 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17516 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017517 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17519
17520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017521 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017522 -------------------------------------------------------------------------*/
17523 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17524 ( NULL == pEventData->pEventData))
17525 {
17526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017530 }
17531
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017533 Extract response and send it to UMAC
17534 -------------------------------------------------------------------------*/
17535 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17536 {
17537 wpalMemoryCopy( &halEnterBmpsRsp,
17538 pEventData->pEventData,
17539 sizeof(halEnterBmpsRsp));
17540
17541 //Used to print debug message
17542 halStatus = halEnterBmpsRsp.status;
17543 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17544 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17545 }
17546 else
17547 {
17548 halStatus = *((eHalStatus*)pEventData->pEventData);
17549 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17550 }
17551
17552 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017553
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017554 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17555 * Other module states are taken care by PMC.
17556 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17557 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017558 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17559 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017560
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017562 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17563 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017564 /* Call Back is not required as we are putting the DXE in FULL
17565 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017566 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17567 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17568 {
17569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17570 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17571 WDI_ASSERT(0);
17572 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017573 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017574 }
17575
Jeff Johnson295189b2012-06-20 16:38:30 -070017576 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017577 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017578
Jeff Johnsone7245742012-09-05 17:12:55 -070017579 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017580}/*WDI_ProcessEnterBmpsRsp*/
17581
17582/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017583 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017584 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017585
17586 @param pWDICtx: pointer to the WLAN DAL context
17587 pEventData: pointer to the event information structure
17588
Jeff Johnson295189b2012-06-20 16:38:30 -070017589 @see
17590 @return Result of the function call
17591*/
17592WDI_Status
17593WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017594(
Jeff Johnson295189b2012-06-20 16:38:30 -070017595 WDI_ControlBlockType* pWDICtx,
17596 WDI_EventInfoType* pEventData
17597)
17598{
Jeff Johnson295189b2012-06-20 16:38:30 -070017599 eHalStatus halStatus;
17600 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017601 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017602 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17603 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017604 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17605
17606 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017607 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017608 -------------------------------------------------------------------------*/
17609 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17610 ( NULL == pEventData->pEventData))
17611 {
17612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017614 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017615 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 }
17617
17618 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17619
17620 /*-------------------------------------------------------------------------
17621 Extract response and send it to UMAC
17622 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017623
17624 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17625 {
17626 wpalMemoryCopy( &halExitBmpsRsp,
17627 pEventData->pEventData,
17628 sizeof(halExitBmpsRsp));
17629
17630 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17631 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17632 }
17633 else
17634 {
17635 halStatus = *((eHalStatus*)pEventData->pEventData);
17636 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17637 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017638
17639 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017640 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17641 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17642 {
17643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17644 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17645 WDI_ASSERT(0);
17646 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017647 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17648
17649 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017650 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017651
Jeff Johnsone7245742012-09-05 17:12:55 -070017652 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017653}/*WDI_ProcessExitBmpsRsp*/
17654
17655/**
17656 @brief Process Enter UAPSD Rsp function (called when a response
17657 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017658
17659 @param pWDICtx: pointer to the WLAN DAL context
17660 pEventData: pointer to the event information structure
17661
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 @see
17663 @return Result of the function call
17664*/
17665WDI_Status
17666WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017667(
Jeff Johnson295189b2012-06-20 16:38:30 -070017668 WDI_ControlBlockType* pWDICtx,
17669 WDI_EventInfoType* pEventData
17670)
17671{
Jeff Johnson295189b2012-06-20 16:38:30 -070017672 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017673 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017674 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017675 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17676
Jeff Johnson295189b2012-06-20 16:38:30 -070017677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17678
17679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017680 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017681 -------------------------------------------------------------------------*/
17682 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17683 ( NULL == pEventData->pEventData))
17684 {
17685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017686 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017688 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017689 }
17690
17691 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17692
17693 /*-------------------------------------------------------------------------
17694 Extract response and send it to UMAC
17695 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017696 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17697 {
17698 wpalMemoryCopy( &halEnterUapsdRsp,
17699 pEventData->pEventData,
17700 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017701
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017702 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17703 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17704 }
17705 else
17706 {
17707 halStatus = *((eHalStatus*)pEventData->pEventData);
17708 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17709 }
17710
17711 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017712 {
17713 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17714 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17715 // the traffic to decide when to suspend the trigger frames when there is no traffic
17716 // activity on the trigger enabled ACs
17717 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17718
17719#ifdef WLAN_PERF
17720 // Increment the BD signature to refresh the fast path BD utilization
17721 pWDICtx->uBdSigSerialNum++;
17722#endif
17723 }
17724
17725 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017726 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017727
Jeff Johnsone7245742012-09-05 17:12:55 -070017728 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017729}/*WDI_ProcessEnterUapsdRsp*/
17730
17731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017732 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017733 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017734
17735 @param pWDICtx: pointer to the WLAN DAL context
17736 pEventData: pointer to the event information structure
17737
Jeff Johnson295189b2012-06-20 16:38:30 -070017738 @see
17739 @return Result of the function call
17740*/
17741WDI_Status
17742WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017743(
Jeff Johnson295189b2012-06-20 16:38:30 -070017744 WDI_ControlBlockType* pWDICtx,
17745 WDI_EventInfoType* pEventData
17746)
17747{
Jeff Johnson295189b2012-06-20 16:38:30 -070017748 eHalStatus halStatus;
17749 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017750 tHalExitUapsdRspParams halExitUapsdRsp;
17751 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017752 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17753
17754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017755 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017756 -------------------------------------------------------------------------*/
17757 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17758 ( NULL == pEventData->pEventData))
17759 {
17760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017761 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017764 }
17765
17766 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17767
17768 /*-------------------------------------------------------------------------
17769 Extract response and send it to UMAC
17770 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017771 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17772 {
17773 wpalMemoryCopy( &halExitUapsdRsp,
17774 pEventData->pEventData,
17775 sizeof(halExitUapsdRsp));
17776
17777 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17778 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17779 }
17780 else
17781 {
17782 halStatus = *((eHalStatus*)pEventData->pEventData);
17783 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17784 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017785 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17786 // directly instead of the FW WQ.
17787 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17788
17789#ifdef WLAN_PERF
17790 // Increment the BD signature to refresh the fast path BD utilization
17791 pWDICtx->uBdSigSerialNum++;
17792#endif
17793
17794 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017795 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017796
Jeff Johnsone7245742012-09-05 17:12:55 -070017797 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017798}/*WDI_ProcessExitUapsdRsp*/
17799
17800/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017801 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017802 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017803
17804 @param pWDICtx: pointer to the WLAN DAL context
17805 pEventData: pointer to the event information structure
17806
Jeff Johnson295189b2012-06-20 16:38:30 -070017807 @see
17808 @return Result of the function call
17809*/
17810WDI_Status
17811WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017812(
Jeff Johnson295189b2012-06-20 16:38:30 -070017813 WDI_ControlBlockType* pWDICtx,
17814 WDI_EventInfoType* pEventData
17815)
17816{
17817 WDI_Status wdiStatus;
17818 eHalStatus halStatus;
17819 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17821
17822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 -------------------------------------------------------------------------*/
17825 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17826 ( NULL == pEventData->pEventData))
17827 {
17828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017832 }
17833
17834 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17835
17836 /*-------------------------------------------------------------------------
17837 Extract response and send it to UMAC
17838 -------------------------------------------------------------------------*/
17839 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017840 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017841
17842 /*Notify UMAC*/
17843 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17844
Jeff Johnsone7245742012-09-05 17:12:55 -070017845 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017846}/*WDI_ProcessSetUapsdAcParamsRsp*/
17847
17848/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017849 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017850 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017851
17852 @param pWDICtx: pointer to the WLAN DAL context
17853 pEventData: pointer to the event information structure
17854
Jeff Johnson295189b2012-06-20 16:38:30 -070017855 @see
17856 @return Result of the function call
17857*/
17858WDI_Status
17859WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017860(
Jeff Johnson295189b2012-06-20 16:38:30 -070017861 WDI_ControlBlockType* pWDICtx,
17862 WDI_EventInfoType* pEventData
17863)
17864{
17865 WDI_Status wdiStatus;
17866 eHalStatus halStatus;
17867 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17869
17870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017872 -------------------------------------------------------------------------*/
17873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17874 ( NULL == pEventData->pEventData))
17875 {
17876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017880 }
17881
17882 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17883
17884 /*-------------------------------------------------------------------------
17885 Extract response and send it to UMAC
17886 -------------------------------------------------------------------------*/
17887 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017888 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017889
17890 /*Notify UMAC*/
17891 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17892
Jeff Johnsone7245742012-09-05 17:12:55 -070017893 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017894}/*WDI_ProcessUpdateUapsdParamsRsp*/
17895
17896/**
17897 @brief Process Configure RXP filter Rsp function (called when a
17898 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017899
17900 @param pWDICtx: pointer to the WLAN DAL context
17901 pEventData: pointer to the event information structure
17902
Jeff Johnson295189b2012-06-20 16:38:30 -070017903 @see
17904 @return Result of the function call
17905*/
17906WDI_Status
17907WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017908(
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 WDI_ControlBlockType* pWDICtx,
17910 WDI_EventInfoType* pEventData
17911)
17912{
17913 WDI_Status wdiStatus;
17914 eHalStatus halStatus;
17915 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17917
17918 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017919 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017920 -------------------------------------------------------------------------*/
17921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17922 ( NULL == pEventData->pEventData))
17923 {
17924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017925 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017926 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017927 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017928 }
17929
17930 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17931
17932 /*-------------------------------------------------------------------------
17933 Extract response and send it to UMAC
17934 -------------------------------------------------------------------------*/
17935 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017936 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017937
17938 /*Notify UMAC*/
17939 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17940
Jeff Johnsone7245742012-09-05 17:12:55 -070017941 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017942}/*WDI_ProcessConfigureRxpFilterRsp*/
17943
17944/**
17945 @brief Process Set beacon filter Rsp function (called when a
17946 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017947
17948 @param pWDICtx: pointer to the WLAN DAL context
17949 pEventData: pointer to the event information structure
17950
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 @see
17952 @return Result of the function call
17953*/
17954WDI_Status
17955WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017956(
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 WDI_ControlBlockType* pWDICtx,
17958 WDI_EventInfoType* pEventData
17959)
17960{
17961 WDI_Status wdiStatus;
17962 eHalStatus halStatus;
17963 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17965
17966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017968 -------------------------------------------------------------------------*/
17969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17970 ( NULL == pEventData->pEventData))
17971 {
17972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017976 }
17977
17978 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
17979
17980 /*-------------------------------------------------------------------------
17981 Extract response and send it to UMAC
17982 -------------------------------------------------------------------------*/
17983 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017984 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017985
17986 /*Notify UMAC*/
17987 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17988
Jeff Johnsone7245742012-09-05 17:12:55 -070017989 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017990}/*WDI_ProcessSetBeaconFilterRsp*/
17991
17992/**
17993 @brief Process remove beacon filter Rsp function (called when a
17994 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017995
17996 @param pWDICtx: pointer to the WLAN DAL context
17997 pEventData: pointer to the event information structure
17998
Jeff Johnson295189b2012-06-20 16:38:30 -070017999 @see
18000 @return Result of the function call
18001*/
18002WDI_Status
18003WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018004(
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 WDI_ControlBlockType* pWDICtx,
18006 WDI_EventInfoType* pEventData
18007)
18008{
18009 WDI_Status wdiStatus;
18010 eHalStatus halStatus;
18011 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18013
18014 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018015 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018016 -------------------------------------------------------------------------*/
18017 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18018 ( NULL == pEventData->pEventData))
18019 {
18020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 }
18025
18026 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18027
18028 /*-------------------------------------------------------------------------
18029 Extract response and send it to UMAC
18030 -------------------------------------------------------------------------*/
18031 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018032 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018033
18034 /*Notify UMAC*/
18035 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18036
Jeff Johnsone7245742012-09-05 17:12:55 -070018037 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018038}/*WDI_ProcessRemBeaconFilterRsp*/
18039
18040/**
18041 @brief Process set RSSI thresholds Rsp function (called when a
18042 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018043
18044 @param pWDICtx: pointer to the WLAN DAL context
18045 pEventData: pointer to the event information structure
18046
Jeff Johnson295189b2012-06-20 16:38:30 -070018047 @see
18048 @return Result of the function call
18049*/
18050WDI_Status
18051WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018052(
Jeff Johnson295189b2012-06-20 16:38:30 -070018053 WDI_ControlBlockType* pWDICtx,
18054 WDI_EventInfoType* pEventData
18055)
18056{
18057 WDI_Status wdiStatus;
18058 eHalStatus halStatus;
18059 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18061
18062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 -------------------------------------------------------------------------*/
18065 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18066 ( NULL == pEventData->pEventData))
18067 {
18068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 }
18073
18074 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18075
18076 /*-------------------------------------------------------------------------
18077 Extract response and send it to UMAC
18078 -------------------------------------------------------------------------*/
18079 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018080 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018081
18082 /*Notify UMAC*/
18083 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18084
Jeff Johnsone7245742012-09-05 17:12:55 -070018085 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018086}/*WDI_ProcessSetRSSIThresoldsRsp*/
18087
18088/**
18089 @brief Process host offload Rsp function (called when a
18090 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018091
18092 @param pWDICtx: pointer to the WLAN DAL context
18093 pEventData: pointer to the event information structure
18094
Jeff Johnson295189b2012-06-20 16:38:30 -070018095 @see
18096 @return Result of the function call
18097*/
18098WDI_Status
18099WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018100(
Jeff Johnson295189b2012-06-20 16:38:30 -070018101 WDI_ControlBlockType* pWDICtx,
18102 WDI_EventInfoType* pEventData
18103)
18104{
18105 WDI_Status wdiStatus;
18106 eHalStatus halStatus;
18107 WDI_HostOffloadCb wdiHostOffloadCb;
18108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18109
18110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018111 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018112 -------------------------------------------------------------------------*/
18113 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18114 ( NULL == pEventData->pEventData))
18115 {
18116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018117 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018118 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018120 }
18121
18122 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18123
18124 /*-------------------------------------------------------------------------
18125 Extract response and send it to UMAC
18126 -------------------------------------------------------------------------*/
18127 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018128 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018129
18130 /*Notify UMAC*/
18131 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18132
Jeff Johnsone7245742012-09-05 17:12:55 -070018133 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018134}/*WDI_ProcessHostOffloadRsp*/
18135
18136/**
18137 @brief Process keep alive Rsp function (called when a
18138 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018139
18140 @param pWDICtx: pointer to the WLAN DAL context
18141 pEventData: pointer to the event information structure
18142
Jeff Johnson295189b2012-06-20 16:38:30 -070018143 @see
18144 @return Result of the function call
18145*/
18146WDI_Status
18147WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018148(
Jeff Johnson295189b2012-06-20 16:38:30 -070018149 WDI_ControlBlockType* pWDICtx,
18150 WDI_EventInfoType* pEventData
18151)
18152{
18153 WDI_Status wdiStatus;
18154 eHalStatus halStatus;
18155 WDI_KeepAliveCb wdiKeepAliveCb;
18156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18158 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18159
18160
18161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018162 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018163 -------------------------------------------------------------------------*/
18164 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18165 ( NULL == pEventData->pEventData))
18166 {
18167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018168 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018169 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018171 }
18172
Jeff Johnsone7245742012-09-05 17:12:55 -070018173 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18174
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 /*-------------------------------------------------------------------------
18176 Extract response and send it to UMAC
18177 -------------------------------------------------------------------------*/
18178 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018179 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018180
18181 /*Notify UMAC*/
18182 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18183
Jeff Johnsone7245742012-09-05 17:12:55 -070018184 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018185}/*WDI_ProcessKeepAliveRsp*/
18186
18187/**
18188 @brief Process wowl add ptrn Rsp function (called when a
18189 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018190
18191 @param pWDICtx: pointer to the WLAN DAL context
18192 pEventData: pointer to the event information structure
18193
Jeff Johnson295189b2012-06-20 16:38:30 -070018194 @see
18195 @return Result of the function call
18196*/
18197WDI_Status
18198WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018199(
Jeff Johnson295189b2012-06-20 16:38:30 -070018200 WDI_ControlBlockType* pWDICtx,
18201 WDI_EventInfoType* pEventData
18202)
18203{
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 eHalStatus halStatus;
18205 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018206 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18207 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18208
Jeff Johnson295189b2012-06-20 16:38:30 -070018209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18210
18211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018213 -------------------------------------------------------------------------*/
18214 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18215 ( NULL == pEventData->pEventData))
18216 {
18217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 }
18222
18223 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18224
18225 /*-------------------------------------------------------------------------
18226 Extract response and send it to UMAC
18227 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018228 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18229 {
18230 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18231 pEventData->pEventData,
18232 sizeof(halAddWowlBcastPtrRsp));
18233
18234 wdiWowlAddBcPtrRsp.wdiStatus =
18235 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18236 }
18237 else
18238 {
18239 halStatus = *((eHalStatus*)pEventData->pEventData);
18240 wdiWowlAddBcPtrRsp.wdiStatus =
18241 WDI_HAL_2_WDI_STATUS(halStatus);
18242 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018243
18244 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018245 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018246
Jeff Johnsone7245742012-09-05 17:12:55 -070018247 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018248}/*WDI_ProcessWowlAddBcPtrnRsp*/
18249
18250/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018251 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018252 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018253
18254 @param pWDICtx: pointer to the WLAN DAL context
18255 pEventData: pointer to the event information structure
18256
Jeff Johnson295189b2012-06-20 16:38:30 -070018257 @see
18258 @return Result of the function call
18259*/
18260WDI_Status
18261WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018262(
Jeff Johnson295189b2012-06-20 16:38:30 -070018263 WDI_ControlBlockType* pWDICtx,
18264 WDI_EventInfoType* pEventData
18265)
18266{
Jeff Johnson295189b2012-06-20 16:38:30 -070018267 eHalStatus halStatus;
18268 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018269 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18270 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18272
18273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018275 -------------------------------------------------------------------------*/
18276 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18277 ( NULL == pEventData->pEventData))
18278 {
18279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018280 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018283 }
18284
18285 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18286
18287 /*-------------------------------------------------------------------------
18288 Extract response and send it to UMAC
18289 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018290 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18291 {
18292 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18293 pEventData->pEventData,
18294 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018295
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018296 wdiWowlDelBcstPtrRsp.wdiStatus =
18297 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18298 }
18299 else
18300 {
18301 halStatus = *((eHalStatus*)pEventData->pEventData);
18302 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18303 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018304 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018305 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018306
Jeff Johnsone7245742012-09-05 17:12:55 -070018307 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018308}/*WDI_ProcessWowlDelBcPtrnRsp*/
18309
18310/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018311 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018312 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018313
18314 @param pWDICtx: pointer to the WLAN DAL context
18315 pEventData: pointer to the event information structure
18316
Jeff Johnson295189b2012-06-20 16:38:30 -070018317 @see
18318 @return Result of the function call
18319*/
18320WDI_Status
18321WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018322(
Jeff Johnson295189b2012-06-20 16:38:30 -070018323 WDI_ControlBlockType* pWDICtx,
18324 WDI_EventInfoType* pEventData
18325)
18326{
Jeff Johnson295189b2012-06-20 16:38:30 -070018327 eHalStatus halStatus;
18328 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018329 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18330 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18332
18333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018334 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018335 -------------------------------------------------------------------------*/
18336 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18337 ( NULL == pEventData->pEventData))
18338 {
18339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018340 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018343 }
18344
18345 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18346
18347 /*-------------------------------------------------------------------------
18348 Extract response and send it to UMAC
18349 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018350 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18351 {
18352 wpalMemoryCopy( &halEnterWowlRspParams,
18353 (wpt_uint8*)pEventData->pEventData,
18354 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018355
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018356 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18357 wdiwowlEnterRsp.status =
18358 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18359 }
18360 else
18361 {
18362 halStatus = *((eHalStatus*)pEventData->pEventData);
18363 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18364 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018365 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018366 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018367
Jeff Johnsone7245742012-09-05 17:12:55 -070018368 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018369}/*WDI_ProcessWowlEnterRsp*/
18370
18371/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018372 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018373 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018374
18375 @param pWDICtx: pointer to the WLAN DAL context
18376 pEventData: pointer to the event information structure
18377
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 @see
18379 @return Result of the function call
18380*/
18381WDI_Status
18382WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018383(
Jeff Johnson295189b2012-06-20 16:38:30 -070018384 WDI_ControlBlockType* pWDICtx,
18385 WDI_EventInfoType* pEventData
18386)
18387{
Jeff Johnson295189b2012-06-20 16:38:30 -070018388 eHalStatus halStatus;
18389 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018390 tHalExitWowlRspParams halExitWowlRspParams;
18391 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18392
Jeff Johnson295189b2012-06-20 16:38:30 -070018393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18394
18395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 -------------------------------------------------------------------------*/
18398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18399 ( NULL == pEventData->pEventData))
18400 {
18401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018405 }
18406
18407 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18408
18409 /*-------------------------------------------------------------------------
18410 Extract response and send it to UMAC
18411 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018412 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18413 {
18414 wpalMemoryCopy( &halExitWowlRspParams,
18415 pEventData->pEventData,
18416 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018417
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018418 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18419 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18420
18421 }
18422 else
18423 {
18424 halStatus = *((eHalStatus*)pEventData->pEventData);
18425 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18426 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018427 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018428 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018429
Jeff Johnsone7245742012-09-05 17:12:55 -070018430 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018431}/*WDI_ProcessWowlExitRsp*/
18432
18433/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018434 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 (called when a response is being received over the bus
18436 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018437
18438 @param pWDICtx: pointer to the WLAN DAL context
18439 pEventData: pointer to the event information structure
18440
Jeff Johnson295189b2012-06-20 16:38:30 -070018441 @see
18442 @return Result of the function call
18443*/
18444WDI_Status
18445WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018446(
Jeff Johnson295189b2012-06-20 16:38:30 -070018447 WDI_ControlBlockType* pWDICtx,
18448 WDI_EventInfoType* pEventData
18449)
18450{
18451 WDI_Status wdiStatus;
18452 eHalStatus halStatus;
18453 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18454 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18455
18456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018457 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018458 -------------------------------------------------------------------------*/
18459 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18460 ( NULL == pEventData->pEventData))
18461 {
18462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018463 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018464 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018465 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018466 }
18467
18468 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18469
18470 /*-------------------------------------------------------------------------
18471 Extract response and send it to UMAC
18472 -------------------------------------------------------------------------*/
18473 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018474 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018475
18476 /*Notify UMAC*/
18477 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18478
Jeff Johnsone7245742012-09-05 17:12:55 -070018479 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018480}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18481
18482
18483/**
18484 @brief Process Nv download(called when a response
18485 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018486
18487 @param pWDICtx: pointer to the WLAN DAL context
18488 pEventData: pointer to the event information structure
18489
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 @see
18491 @return Result of the function call
18492*/
18493WDI_Status
18494WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018495(
Jeff Johnson295189b2012-06-20 16:38:30 -070018496 WDI_ControlBlockType* pWDICtx,
18497 WDI_EventInfoType* pEventData
18498)
18499{
18500
18501 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18502 tHalNvImgDownloadRspParams halNvDownloadRsp;
18503 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18504
18505 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018506 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018507 -------------------------------------------------------------------------*/
18508 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18509 ( NULL == pEventData->pEventData))
18510 {
18511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018515 }
18516
18517 /*-------------------------------------------------------------------------
18518 Extract response and send it to UMAC
18519 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018520 wpalMemoryCopy( &halNvDownloadRsp,
18521 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018522 sizeof(halNvDownloadRsp));
18523
18524 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18525
18526 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018527 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18528 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018529 {
18530 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018531 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018532 }
18533 else
18534 {
18535 /*Reset the Nv related global information in WDI context information */
18536 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18537 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18538 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18539 /*call WDA callback function for last fragment */
18540 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18541 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18542 }
18543
Jeff Johnsone7245742012-09-05 17:12:55 -070018544 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018545}
18546#ifdef WLAN_FEATURE_VOWIFI_11R
18547/**
18548 @brief Process Add TSpec Rsp function (called when a response
18549 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018550
18551 @param pWDICtx: pointer to the WLAN DAL context
18552 pEventData: pointer to the event information structure
18553
Jeff Johnson295189b2012-06-20 16:38:30 -070018554 @see
18555 @return Result of the function call
18556*/
18557WDI_Status
18558WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018559(
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 WDI_ControlBlockType* pWDICtx,
18561 WDI_EventInfoType* pEventData
18562)
18563{
18564 WDI_Status wdiStatus;
18565 tAggrAddTsRspParams aggrAddTsRsp;
18566 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18568
18569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018571 -------------------------------------------------------------------------*/
18572 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18573 ( NULL == pEventData->pEventData))
18574 {
18575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018579 }
18580
18581 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18582
18583 /*-------------------------------------------------------------------------
18584 Extract response and send it to UMAC
18585 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018586 wpalMemoryCopy( &aggrAddTsRsp,
18587 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 sizeof(aggrAddTsRsp));
18589
18590 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018591 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018592
18593 /*Notify UMAC*/
18594 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18595
Jeff Johnsone7245742012-09-05 17:12:55 -070018596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018597}/*WDI_ProcessAddTSpecRsp*/
18598#endif /* WLAN_FEATURE_VOWIFI_11R */
18599
18600/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018601 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018603
18604 @param pWDICtx: pointer to the WLAN DAL context
18605 pEventData: pointer to the event information structure
18606
Jeff Johnson295189b2012-06-20 16:38:30 -070018607 @see
18608 @return Result of the function call
18609*/
18610WDI_Status
18611WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018612(
Jeff Johnson295189b2012-06-20 16:38:30 -070018613 WDI_ControlBlockType* pWDICtx,
18614 WDI_EventInfoType* pEventData
18615)
18616{
18617 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18618 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18619 tHalHostResumeRspParams hostResumeRspMsg;
18620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18621
18622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018624 -------------------------------------------------------------------------*/
18625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18626 ( NULL == pEventData->pEventData))
18627 {
18628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018632 }
18633
18634 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18635
18636 /*-------------------------------------------------------------------------
18637 Extract response and send it to UMAC
18638 -------------------------------------------------------------------------*/
18639
Jeff Johnsone7245742012-09-05 17:12:55 -070018640 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018641 (wpt_uint8*)pEventData->pEventData,
18642 sizeof(hostResumeRspMsg));
18643
Jeff Johnsone7245742012-09-05 17:12:55 -070018644 wdiResumeRspParams.wdiStatus =
18645 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018646
18647 /*Notify UMAC*/
18648 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18649
18650 return WDI_STATUS_SUCCESS;
18651}
18652
18653/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018654 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018656
18657 @param pWDICtx: pointer to the WLAN DAL context
18658 pEventData: pointer to the event information structure
18659
Jeff Johnson295189b2012-06-20 16:38:30 -070018660 @see
18661 @return Result of the function call
18662*/
18663WDI_Status
18664WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018665(
Jeff Johnson295189b2012-06-20 16:38:30 -070018666 WDI_ControlBlockType* pWDICtx,
18667 WDI_EventInfoType* pEventData
18668)
18669{
18670 WDI_Status wdiStatus;
18671 eHalStatus halStatus;
18672 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18674
18675 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018676 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018677 -------------------------------------------------------------------------*/
18678 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18679 ( NULL == pEventData->pEventData))
18680 {
18681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018682 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018683 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018684 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018685 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018686
18687 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018688
18689 /*-------------------------------------------------------------------------
18690 Extract response and send it to UMAC
18691 -------------------------------------------------------------------------*/
18692 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018693 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018694
18695 /*Notify UMAC*/
18696 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18697
Jeff Johnsone7245742012-09-05 17:12:55 -070018698 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018699}/*WDI_ProcessSetTxPerTrackingRsp*/
18700
18701/*==========================================================================
18702 Indications from HAL
18703 ==========================================================================*/
18704/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018705 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018706 indication of this kind is being received over the bus
18707 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018708
18709 @param pWDICtx: pointer to the WLAN DAL context
18710 pEventData: pointer to the event information structure
18711
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 @see
18713 @return Result of the function call
18714*/
18715WDI_Status
18716WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018717(
Jeff Johnson295189b2012-06-20 16:38:30 -070018718 WDI_ControlBlockType* pWDICtx,
18719 WDI_EventInfoType* pEventData
18720)
18721{
18722 WDI_LowLevelIndType wdiInd;
18723 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18725
18726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018728 -------------------------------------------------------------------------*/
18729 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18730 ( NULL == pEventData->pEventData))
18731 {
18732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018736 }
18737
18738 /*-------------------------------------------------------------------------
18739 Extract indication and send it to UMAC
18740 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018741 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18742 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018743 sizeof(tHalRSSINotification));
18744
18745 /*Fill in the indication parameters*/
18746 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18747 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18748 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18749 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18750 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18751 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18752 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18753 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18754 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18755 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18756 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18757 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18758 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018759 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18760 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018761
ltimariu034f7d62013-01-24 18:54:33 -080018762 if ( pWDICtx->wdiLowLevelIndCB )
18763 {
18764 /*Notify UMAC of indication*/
18765 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18766 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018767
18768 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018769}/*WDI_ProcessLowRSSIInd*/
18770
18771
18772/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018773 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018774 an indication of this kind is being received over the
18775 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018776
18777 @param pWDICtx: pointer to the WLAN DAL context
18778 pEventData: pointer to the event information structure
18779
Jeff Johnson295189b2012-06-20 16:38:30 -070018780 @see
18781 @return Result of the function call
18782*/
18783WDI_Status
18784WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018785(
Jeff Johnson295189b2012-06-20 16:38:30 -070018786 WDI_ControlBlockType* pWDICtx,
18787 WDI_EventInfoType* pEventData
18788)
18789{
18790 WDI_Status wdiStatus;
18791 eHalStatus halStatus;
18792 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018793 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18795
18796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018798 -------------------------------------------------------------------------*/
18799 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18800 ( NULL == pEventData->pEventData))
18801 {
18802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018806 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018807 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018808 /*-------------------------------------------------------------------------
18809 Extract indication and send it to UMAC
18810 -------------------------------------------------------------------------*/
18811 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18812 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018813 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018814
18815 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018816 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018817 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
18818 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080018819 if ( pWDICtx->wdiLowLevelIndCB )
18820 {
18821 /*Notify UMAC*/
18822 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18823 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018824
18825 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018826}/*WDI_ProcessMissedBeaconInd*/
18827
18828
18829/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018830 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018831 an indication of this kind is being received over the
18832 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018833
18834 @param pWDICtx: pointer to the WLAN DAL context
18835 pEventData: pointer to the event information structure
18836
Jeff Johnson295189b2012-06-20 16:38:30 -070018837 @see
18838 @return Result of the function call
18839*/
18840WDI_Status
18841WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018842(
Jeff Johnson295189b2012-06-20 16:38:30 -070018843 WDI_ControlBlockType* pWDICtx,
18844 WDI_EventInfoType* pEventData
18845)
18846{
18847 WDI_Status wdiStatus;
18848 eHalStatus halStatus;
18849 WDI_LowLevelIndType wdiInd;
18850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18851
18852 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018853 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018854 -------------------------------------------------------------------------*/
18855 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18856 ( NULL == pEventData->pEventData))
18857 {
18858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018859 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018862 }
18863
18864 /*-------------------------------------------------------------------------
18865 Extract indication and send it to UMAC
18866 -------------------------------------------------------------------------*/
18867 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18868 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018869 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018870
18871 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018872 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018873 /* ! TO DO - fill in from HAL struct:
18874 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18875
ltimariu034f7d62013-01-24 18:54:33 -080018876 if ( pWDICtx->wdiLowLevelIndCB )
18877 {
18878 /*Notify UMAC*/
18879 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18880 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018881
18882 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018883}/*WDI_ProcessUnkAddrFrameInd*/
18884
18885
18886/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018887 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018888 indication of this kind is being received over the bus
18889 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018890
18891 @param pWDICtx: pointer to the WLAN DAL context
18892 pEventData: pointer to the event information structure
18893
Jeff Johnson295189b2012-06-20 16:38:30 -070018894 @see
18895 @return Result of the function call
18896*/
18897WDI_Status
18898WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018899(
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 WDI_ControlBlockType* pWDICtx,
18901 WDI_EventInfoType* pEventData
18902)
18903{
18904 WDI_LowLevelIndType wdiInd;
18905 tpSirMicFailureInd pHalMicFailureInd;
18906
18907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18908
18909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018911 -------------------------------------------------------------------------*/
18912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18913 ( NULL == pEventData->pEventData))
18914 {
18915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018919 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018920
Jeff Johnson295189b2012-06-20 16:38:30 -070018921 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18922 /*-------------------------------------------------------------------------
18923 Extract indication and send it to UMAC
18924 -------------------------------------------------------------------------*/
18925
18926 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018927 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018928 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18929 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18930 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18931 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18932 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18933 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18934 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18935 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018936 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018937 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018938 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018939 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018940 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018941 pHalMicFailureInd->info.keyId;
18942 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18943 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18944 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18945 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080018946
18947 if ( pWDICtx->wdiLowLevelIndCB )
18948 {
18949 /*Notify UMAC*/
18950 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18951 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018952
18953 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018954}/*WDI_ProcessMicFailureInd*/
18955
18956
18957/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018958 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018959 an indication of this kind is being received over the
18960 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018961
18962 @param pWDICtx: pointer to the WLAN DAL context
18963 pEventData: pointer to the event information structure
18964
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 @see
18966 @return Result of the function call
18967*/
18968WDI_Status
18969WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018970(
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 WDI_ControlBlockType* pWDICtx,
18972 WDI_EventInfoType* pEventData
18973)
18974{
18975 WDI_Status wdiStatus;
18976 eHalStatus halStatus;
18977 WDI_LowLevelIndType wdiInd;
18978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18979
18980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 -------------------------------------------------------------------------*/
18983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18984 ( NULL == pEventData->pEventData))
18985 {
18986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018990 }
18991
18992 /*-------------------------------------------------------------------------
18993 Extract indication and send it to UMAC
18994 -------------------------------------------------------------------------*/
18995
18996 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18997 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018998 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018999
19000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19001 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019002
Jeff Johnson295189b2012-06-20 16:38:30 -070019003 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019004 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19005 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019006
ltimariu034f7d62013-01-24 18:54:33 -080019007 if ( pWDICtx->wdiLowLevelIndCB )
19008 {
19009 /*Notify UMAC*/
19010 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19011 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019012
19013 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019014}/*WDI_ProcessFatalErrorInd*/
19015
19016/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019017 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019018 an indication of this kind is being received over the
19019 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019020
19021 @param pWDICtx: pointer to the WLAN DAL context
19022 pEventData: pointer to the event information structure
19023
Jeff Johnson295189b2012-06-20 16:38:30 -070019024 @see
19025 @return Result of the function call
19026*/
19027WDI_Status
19028WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019029(
Jeff Johnson295189b2012-06-20 16:38:30 -070019030 WDI_ControlBlockType* pWDICtx,
19031 WDI_EventInfoType* pEventData
19032)
19033{
19034 tDeleteStaContextParams halDelSTACtx;
19035 WDI_LowLevelIndType wdiInd;
19036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19037
19038 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019039 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019040 -------------------------------------------------------------------------*/
19041 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19042 ( NULL == pEventData->pEventData))
19043 {
19044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019045 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019046 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019047 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019048 }
19049
19050 /*-------------------------------------------------------------------------
19051 Extract indication and send it to UMAC
19052 -------------------------------------------------------------------------*/
19053
19054 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019055 wpalMemoryCopy( &halDelSTACtx,
19056 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019057 sizeof(halDelSTACtx));
19058
19059 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019060 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019061
19062 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19063 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19064 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19065 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19066
Jeff Johnsone7245742012-09-05 17:12:55 -070019067 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019068 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019069 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019070 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019071 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19072 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019073
ltimariu034f7d62013-01-24 18:54:33 -080019074 if ( pWDICtx->wdiLowLevelIndCB )
19075 {
19076 /*Notify UMAC*/
19077 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19078 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019079
19080 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019081}/*WDI_ProcessDelSTAInd*/
19082
19083/**
19084*@brief Process Coex Indication function (called when
19085 an indication of this kind is being received over the
19086 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019087
19088 @param pWDICtx: pointer to the WLAN DAL context
19089 pEventData: pointer to the event information structure
19090
Jeff Johnson295189b2012-06-20 16:38:30 -070019091 @see
19092 @return Result of the function call
19093*/
19094WDI_Status
19095WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019096(
Jeff Johnson295189b2012-06-20 16:38:30 -070019097 WDI_ControlBlockType* pWDICtx,
19098 WDI_EventInfoType* pEventData
19099)
19100{
19101 WDI_LowLevelIndType wdiInd;
19102 tCoexIndMsg halCoexIndMsg;
19103 wpt_uint32 index;
19104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19105
19106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019108 -------------------------------------------------------------------------*/
19109 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19110 ( NULL == pEventData->pEventData ))
19111 {
19112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019114 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019116 }
19117
19118 /*-------------------------------------------------------------------------
19119 Extract indication and send it to UMAC
19120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019121 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19122 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019123 sizeof(halCoexIndMsg.coexIndParams) );
19124
19125 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019126 wdiInd.wdiIndicationType = WDI_COEX_IND;
19127 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019128 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19129 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019130 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019131 }
19132
19133 // DEBUG
19134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19135 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019136 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19137 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19138 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19139 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19140 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019141
ltimariu034f7d62013-01-24 18:54:33 -080019142 if ( pWDICtx->wdiLowLevelIndCB )
19143 {
19144 /*Notify UMAC*/
19145 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19146 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019147
19148 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019149}/*WDI_ProcessCoexInd*/
19150
19151/**
19152*@brief Process Tx Complete Indication function (called when
19153 an indication of this kind is being received over the
19154 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019155
19156 @param pWDICtx: pointer to the WLAN DAL context
19157 pEventData: pointer to the event information structure
19158
Jeff Johnson295189b2012-06-20 16:38:30 -070019159 @see
19160 @return Result of the function call
19161*/
19162WDI_Status
19163WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019164(
Jeff Johnson295189b2012-06-20 16:38:30 -070019165 WDI_ControlBlockType* pWDICtx,
19166 WDI_EventInfoType* pEventData
19167)
19168{
19169 WDI_LowLevelIndType wdiInd;
19170 tTxComplIndMsg halTxComplIndMsg;
19171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19172
19173 /*-------------------------------------------------------------------------
19174 Sanity check
19175 -------------------------------------------------------------------------*/
19176 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19177 ( NULL == pEventData->pEventData ))
19178 {
19179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019181 WDI_ASSERT( 0 );
19182 return WDI_STATUS_E_FAILURE;
19183 }
19184
19185 /*-------------------------------------------------------------------------
19186 Extract indication and send it to UMAC
19187 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019188 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19189 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019190 sizeof(halTxComplIndMsg.txComplParams) );
19191
19192 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019193 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19194 wdiInd.wdiIndicationData.tx_complete_status
19195 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019196
ltimariu034f7d62013-01-24 18:54:33 -080019197 if ( pWDICtx->wdiLowLevelIndCB )
19198 {
19199 /*Notify UMAC*/
19200 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19201 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019202
19203 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019204}/*WDI_ProcessTxCompleteInd*/
19205
Jeff Johnson295189b2012-06-20 16:38:30 -070019206/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019207*@brief Process Noa Start Indication function (called when
19208 an indication of this kind is being received over the
19209 bus from HAL)
19210
19211 @param pWDICtx: pointer to the WLAN DAL context
19212 pEventData: pointer to the event information structure
19213
19214 @see
19215 @return Result of the function call
19216*/
19217WDI_Status
19218WDI_ProcessP2pNoaStartInd
19219(
19220 WDI_ControlBlockType* pWDICtx,
19221 WDI_EventInfoType* pEventData
19222)
19223{
19224 WDI_LowLevelIndType wdiInd;
19225 tNoaStartIndMsg halNoaStartIndMsg;
19226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19227
19228 /*-------------------------------------------------------------------------
19229 Sanity check
19230 -------------------------------------------------------------------------*/
19231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19232 ( NULL == pEventData->pEventData ))
19233 {
19234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19235 "%s: Invalid parameters", __func__);
19236 WDI_ASSERT( 0 );
19237 return WDI_STATUS_E_FAILURE;
19238 }
19239
19240 /*-------------------------------------------------------------------------
19241 Extract indication and send it to UMAC
19242 -------------------------------------------------------------------------*/
19243 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19244 pEventData->pEventData,
19245 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19246
19247 /*Fill in the indication parameters*/
19248 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19249
19250 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19251 = halNoaStartIndMsg.noaStartIndParams.status;
19252
19253 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19254 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19255
19256 /*Notify UMAC*/
19257 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19258
19259 return WDI_STATUS_SUCCESS;
19260}/*WDI_ProcessNoaAttrInd*/
19261
19262/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019263*@brief Process Noa Attr Indication function (called when
19264 an indication of this kind is being received over the
19265 bus from HAL)
19266
19267 @param pWDICtx: pointer to the WLAN DAL context
19268 pEventData: pointer to the event information structure
19269
19270 @see
19271 @return Result of the function call
19272*/
19273WDI_Status
19274WDI_ProcessP2pNoaAttrInd
19275(
19276 WDI_ControlBlockType* pWDICtx,
19277 WDI_EventInfoType* pEventData
19278)
19279{
19280 WDI_LowLevelIndType wdiInd;
19281 tNoaAttrIndMsg halNoaAttrIndMsg;
19282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19283
19284 /*-------------------------------------------------------------------------
19285 Sanity check
19286 -------------------------------------------------------------------------*/
19287 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19288 ( NULL == pEventData->pEventData ))
19289 {
19290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019292 WDI_ASSERT( 0 );
19293 return WDI_STATUS_E_FAILURE;
19294 }
19295
19296 /*-------------------------------------------------------------------------
19297 Extract indication and send it to UMAC
19298 -------------------------------------------------------------------------*/
19299 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19300 pEventData->pEventData,
19301 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19302
19303 /*Fill in the indication parameters*/
19304 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019305
Jeff Johnson295189b2012-06-20 16:38:30 -070019306 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19307 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019308
Jeff Johnson295189b2012-06-20 16:38:30 -070019309 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19310 = halNoaAttrIndMsg.noaAttrIndParams.index;
19311 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19312 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19313 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19314 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019315
Jeff Johnson295189b2012-06-20 16:38:30 -070019316 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19317 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19318 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19319 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19320 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19321 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19322 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19323 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019324
Jeff Johnson295189b2012-06-20 16:38:30 -070019325 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19326 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19327 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19328 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19329 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19330 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19331 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19332 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19333
ltimariu034f7d62013-01-24 18:54:33 -080019334 if ( pWDICtx->wdiLowLevelIndCB )
19335 {
19336 /*Notify UMAC*/
19337 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19338 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019339
19340 return WDI_STATUS_SUCCESS;
19341}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019342
19343/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019344 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019345 an indication of this kind is being received over the
19346 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019347
19348 @param pWDICtx: pointer to the WLAN DAL context
19349 pEventData: pointer to the event information structure
19350
Jeff Johnson295189b2012-06-20 16:38:30 -070019351 @see
19352 @return Result of the function call
19353*/
19354WDI_Status
19355WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019356(
Jeff Johnson295189b2012-06-20 16:38:30 -070019357 WDI_ControlBlockType* pWDICtx,
19358 WDI_EventInfoType* pEventData
19359)
19360{
19361 WDI_LowLevelIndType wdiInd;
19362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019363
Jeff Johnson295189b2012-06-20 16:38:30 -070019364 /*-------------------------------------------------------------------------
19365 Extract indication and send it to UMAC
19366 -------------------------------------------------------------------------*/
19367 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019368 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19369
ltimariu034f7d62013-01-24 18:54:33 -080019370 if ( pWDICtx->wdiLowLevelIndCB )
19371 {
19372 /*Notify UMAC*/
19373 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19374 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019375
Jeff Johnsone7245742012-09-05 17:12:55 -070019376 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019377}/*WDI_ProcessTxPerHitInd*/
19378
Jeff Johnson295189b2012-06-20 16:38:30 -070019379/**
19380 @brief WDI_ProcessFTMCommandReq
19381 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019382
19383 @param pWDICtx: pointer to the WLAN DAL context
19384 pEventData: pointer to the event information structure
19385
Jeff Johnson295189b2012-06-20 16:38:30 -070019386 @see
19387 @return Result of the function call
19388*/
19389WDI_Status
19390WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019391(
Jeff Johnson295189b2012-06-20 16:38:30 -070019392 WDI_ControlBlockType* pWDICtx,
19393 WDI_EventInfoType* pEventData
19394)
19395{
19396 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19397 wpt_uint8 *ftmCommandBuffer = NULL;
19398 wpt_uint16 dataOffset;
19399 wpt_uint16 bufferSize;
19400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019401 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019402 -------------------------------------------------------------------------*/
19403 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19404 ( NULL == pEventData->pEventData))
19405
19406 {
19407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019408 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019411 }
19412
19413 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19414
19415 /* Get MSG Buffer */
19416 WDI_GetMessageBuffer(pWDICtx,
19417 WDI_FTM_CMD_REQ,
19418 ftmCommandReq->bodyLength,
19419 &ftmCommandBuffer,
19420 &dataOffset,
19421 &bufferSize);
19422
19423 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19424 ftmCommandReq->FTMCommandBody,
19425 ftmCommandReq->bodyLength);
19426
19427 /* Send MSG */
19428 return WDI_SendMsg(pWDICtx,
19429 ftmCommandBuffer,
19430 bufferSize,
19431 pEventData->pCBfnc,
19432 pEventData->pUserData,
19433 WDI_FTM_CMD_RESP);
19434}
19435
19436/**
19437 @brief WDI_ProcessFTMCommandRsp
19438 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019439
19440 @param pWDICtx: pointer to the WLAN DAL context
19441 pEventData: pointer to the event information structure
19442
Jeff Johnson295189b2012-06-20 16:38:30 -070019443 @see
19444 @return Result of the function call
19445*/
19446WDI_Status
19447WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019448(
Jeff Johnson295189b2012-06-20 16:38:30 -070019449 WDI_ControlBlockType* pWDICtx,
19450 WDI_EventInfoType* pEventData
19451)
19452{
19453 WDI_FTMCommandRspCb ftmCMDRspCb;
19454 tProcessPttRspParams *ftmCMDRspData = NULL;
19455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19456
19457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 -------------------------------------------------------------------------*/
19460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19461 ( NULL == pEventData->pEventData))
19462 {
19463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019464 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019467 }
19468
19469 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19470
19471 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19472
Jeff Johnsone7245742012-09-05 17:12:55 -070019473 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19474 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019475 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19476
19477 /*Notify UMAC*/
19478 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19479
Jeff Johnsone7245742012-09-05 17:12:55 -070019480 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019481}
Jeff Johnson295189b2012-06-20 16:38:30 -070019482/**
19483 @brief WDI_ProcessHalDumpCmdReq
19484 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019485
19486 @param pWDICtx: pointer to the WLAN DAL context
19487 pEventData: pointer to the event information structure
19488
Jeff Johnson295189b2012-06-20 16:38:30 -070019489 @see
19490 @return Result of the function call
19491*/
19492WDI_Status
19493WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019494(
Jeff Johnson295189b2012-06-20 16:38:30 -070019495 WDI_ControlBlockType* pWDICtx,
19496 WDI_EventInfoType* pEventData
19497)
19498{
19499 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19500 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19501 wpt_uint16 usDataOffset = 0;
19502 wpt_uint16 usSendSize = 0;
19503 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019504 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019505
19506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019507 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019508 -------------------------------------------------------------------------*/
19509 if (( NULL == pEventData ) ||
19510 ( NULL == pEventData->pEventData) ||
19511 ( NULL == pEventData->pCBfnc ))
19512 {
19513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019517 }
19518
19519 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19520 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19521
19522 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019523 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019524 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019525 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019526 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019527 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019529 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019530 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019531 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019532 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019533
Jeff Johnson295189b2012-06-20 16:38:30 -070019534 /*-----------------------------------------------------------------------
19535 Get message buffer
19536 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019537 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019538 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19539 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019540 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019541 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19542 {
19543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19544 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19545 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19546 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019548 }
19549
Jeff Johnsone7245742012-09-05 17:12:55 -070019550 wpalMemoryCopy( pSendBuffer+usDataOffset,
19551 &halDumpCmdReqMsg.dumpCmdReqParams,
19552 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019553
19554 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019555 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019556
19557 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019558 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019559 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019560 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19561 wdiHALDumpCmdRspCb, pEventData->pUserData,
19562 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019563}
19564
19565/**
19566 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019567 Process hal Dump Command Response from HAL, simply route to HDD
19568
19569 @param pWDICtx: pointer to the WLAN DAL context
19570 pEventData: pointer to the event information structure
19571
Jeff Johnson295189b2012-06-20 16:38:30 -070019572 @see
19573 @return Result of the function call
19574*/
19575WDI_Status
19576WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019577(
Jeff Johnson295189b2012-06-20 16:38:30 -070019578 WDI_ControlBlockType* pWDICtx,
19579 WDI_EventInfoType* pEventData
19580)
19581{
19582 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019583 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019584 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19585
19586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019588 -------------------------------------------------------------------------*/
19589 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19590 ( NULL == pEventData->pEventData))
19591 {
19592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019596 }
19597
Jeff Johnsone7245742012-09-05 17:12:55 -070019598 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019599
19600 /*Initialize the WDI Response structure */
19601 wdiHALDumpCmdRsp.usBufferLen = 0;
19602 wdiHALDumpCmdRsp.pBuffer = NULL;
19603
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019604 wpalMemoryCopy( &halDumpCmdRspParams,
19605 pEventData->pEventData,
19606 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019607
19608 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019609 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019610
19611 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019612 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019613 {
19614 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019615 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19616 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19617
19618 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19619 &halDumpCmdRspParams.rspBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019620 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19621 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019622
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 /*Notify UMAC*/
19624 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19625
19626 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19627 {
19628 /* Free the allocated buffer */
19629 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19630 }
19631 return WDI_STATUS_SUCCESS;
19632}
19633
19634/*==========================================================================
19635 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019636
Jeff Johnson295189b2012-06-20 16:38:30 -070019637 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019638 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019639==========================================================================*/
19640/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019641 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019642 when it wishes to send up a notification like the ones
19643 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019644
Jeff Johnson295189b2012-06-20 16:38:30 -070019645 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019646
19647 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019648 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019649 wctsNotifyCBData: the callback data of the user
19650
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019652
19653 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019654*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019655void
Jeff Johnson295189b2012-06-20 16:38:30 -070019656WDI_NotifyMsgCTSCB
19657(
Jeff Johnsone7245742012-09-05 17:12:55 -070019658 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019659 WCTS_NotifyEventType wctsEvent,
19660 void* wctsNotifyCBData
19661)
19662{
Jeff Johnsone7245742012-09-05 17:12:55 -070019663 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19665
19666 if (NULL == pWDICtx )
19667 {
19668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019669 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019671 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019672 }
19673
19674 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19675 {
19676 /* callback presumably occurred after close */
19677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019678 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019679 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 }
19681
19682 if ( WCTS_EVENT_OPEN == wctsEvent )
19683 {
19684 /*Flag must be set atomically as it is checked from incoming request
19685 functions*/
19686 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019687 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019688
19689 /*Nothing to do - so try to dequeue any pending request that may have
19690 occurred while we were trying to establish this*/
19691 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019693 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019694 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019695 {
19696 /*Flag must be set atomically as it is checked from incoming request
19697 functions*/
19698 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019699 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019700
19701 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019702 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 wpalMutexRelease(&pWDICtx->wptMutex);
19704
19705 /*Notify that the Control Channel is closed */
19706 wpalEventSet(&pWDICtx->wctsActionEvent);
19707 }
19708
19709}/*WDI_NotifyMsgCTSCB*/
19710
19711
19712/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019713 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019714 when it wishes to send up a packet received over the
19715 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019716
Jeff Johnson295189b2012-06-20 16:38:30 -070019717 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019718
19719 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 pMsg: the packet
19721 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019722 wctsRxMsgCBData: the callback data of the user
19723
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019725
19726 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019727*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019728void
19729WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019730(
Jeff Johnsone7245742012-09-05 17:12:55 -070019731 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019732 void* pMsg,
19733 wpt_uint32 uLen,
19734 void* wctsRxMsgCBData
19735)
19736{
Jeff Johnsone7245742012-09-05 17:12:55 -070019737 tHalMsgHeader *pHalMsgHeader;
19738 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019739 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19741
19742 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019743 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019744 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019745 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019746 ( uLen < sizeof(tHalMsgHeader)))
19747 {
19748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019749 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019751 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019752 }
19753
19754 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19755 {
19756 /* callback presumably occurred after close */
19757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019758 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019759 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019760 }
19761
Jeff Johnsone7245742012-09-05 17:12:55 -070019762 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019763 context - so no serialization is necessary here
19764 ! - revisit this assumption */
19765
19766 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19767
19768 if ( uLen != pHalMsgHeader->msgLen )
19769 {
19770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19771 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019772 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19773 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019774 }
19775
19776 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19777
19778 /*The message itself starts after the header*/
19779 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19780 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19781 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19782 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19783
19784
19785 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19786 {
19787 /*Stop the timer as the response was received */
19788 /*!UT - check for potential race conditions between stop and response */
19789 wpalTimerStop(&pWDICtx->wptResponseTimer);
19790 }
19791 /* Check if we receive a response message which is not expected */
19792 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19793 {
19794 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19795 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19796 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019797 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019798 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19799 pWDICtx->wdiExpectedResponse);
19800 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19801 return;
19802 }
19803
19804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19805 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19806
19807 /*Post response event to the state machine*/
19808 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19809
19810}/*WDI_RXMsgCTSCB*/
19811
19812
19813/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019814 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019815========================================================================*/
19816
19817/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019818 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019819 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019820
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 @param pWDICtx - pointer to the control block
19822
19823 @return Result of the function call
19824*/
19825WPT_INLINE WDI_Status
19826WDI_CleanCB
19827(
19828 WDI_ControlBlockType* pWDICtx
19829)
19830{
19831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19832
19833 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019834 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019835
Jeff Johnsone7245742012-09-05 17:12:55 -070019836 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019837 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19838 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19839
19840 WDI_ResetAssocSessions( pWDICtx );
19841
19842 return WDI_STATUS_SUCCESS;
19843}/*WDI_CleanCB*/
19844
19845
19846/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019847 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019848
Jeff Johnsone7245742012-09-05 17:12:55 -070019849
19850 @param pWDICtx: pointer to the WLAN DAL context
19851 pEventData: pointer to the event information structure
19852
Jeff Johnson295189b2012-06-20 16:38:30 -070019853 @see
19854 @return Result of the function call
19855*/
19856WPT_INLINE WDI_Status
19857WDI_ProcessRequest
19858(
19859 WDI_ControlBlockType* pWDICtx,
19860 WDI_EventInfoType* pEventData
19861)
19862{
19863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19864
Jeff Johnsone7245742012-09-05 17:12:55 -070019865 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019866 already checked these pointers*/
19867
19868 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19869 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019870 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19872 "Calling request processing function for req %s (%d) %x",
19873 WDI_getReqMsgString(pEventData->wdiRequest),
19874 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19875 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19876 }
19877 else
19878 {
19879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019880 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019881 pEventData->wdiRequest);
19882 return WDI_STATUS_E_NOT_IMPLEMENT;
19883 }
19884}/*WDI_ProcessRequest*/
19885
19886
19887/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019888 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019889 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019890 prefixes it with a send message header
19891
19892 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019893 wdiReqType: type of the request being sent
19894 uBufferLen: message buffer len
19895 pMsgBuffer: resulting allocated buffer
19896 pusDataOffset: offset in the buffer where the caller
19897 can start copying its message data
19898 puBufferSize: the resulting buffer size (offset+buff
19899 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019900
Jeff Johnson295189b2012-06-20 16:38:30 -070019901 @see
19902 @return Result of the function call
19903*/
19904WDI_Status
19905WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019906(
19907 WDI_ControlBlockType* pWDICtx,
19908 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019909 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019910 wpt_uint8** pMsgBuffer,
19911 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019912 wpt_uint16* pusBufferSize
19913)
19914{
19915 tHalMsgHeader halMsgHeader;
19916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19917
Jeff Johnsone7245742012-09-05 17:12:55 -070019918 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019919 again*/
19920
19921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019922 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019923 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019924 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019925 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19926 if ( NULL == *pMsgBuffer )
19927 {
19928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19929 "Unable to allocate message buffer for req %s (%d)",
19930 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019931 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019932 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019933 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019934 }
19935
19936 /*-------------------------------------------------------------------------
19937 Fill in the message header
19938 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019939 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19940 /* Fill msgVersion */
19941#ifdef WLAN_FEATURE_11AC
19942 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019943 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019944 else
19945#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019946 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019947
Jeff Johnsone7245742012-09-05 17:12:55 -070019948 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19949 *pusDataOffset = sizeof(halMsgHeader);
19950 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19951
19952 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019953}/*WDI_GetMessageBuffer*/
19954
19955
19956/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019957 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019958 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019959 the CB
19960
19961 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019962 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019963
Jeff Johnson295189b2012-06-20 16:38:30 -070019964 usSendSize size of the buffer to be sent
19965 pRspCb: response callback - save in the WDI
19966 CB
19967 pUserData: user data associated with the
19968 callback
19969 wdiExpectedResponse: the code of the response that is
19970 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019971
Jeff Johnson295189b2012-06-20 16:38:30 -070019972 @see
19973 @return Result of the function call
19974*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019975WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019976WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070019977(
19978 WDI_ControlBlockType* pWDICtx,
19979 wpt_uint8* pSendBuffer,
19980 wpt_uint32 usSendSize,
19981 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070019982 void* pUserData,
19983 WDI_ResponseEnumType wdiExpectedResponse
19984)
19985{
Jeff Johnsond13512a2012-07-17 11:42:19 -070019986 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019987 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070019988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19989
19990 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019991 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070019992 ------------------------------------------------------------------------*/
19993 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019994 pWDICtx->pfncRspCB = pRspCb;
19995 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019996
19997 /*-----------------------------------------------------------------------
19998 Call the CTS to send this message over - free message afterwards
19999 - notify transport failure
20000 Note: CTS is reponsible for freeing the message buffer.
20001 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020002 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20003 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20004 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020005 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020007 "Failed to send message over the bus - catastrophic failure");
20008
Jeff Johnsond13512a2012-07-17 11:42:19 -070020009 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020010 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020011 else
20012 {
20013 /* even when message was placed in CTS deferred Q, we will treat it
20014 success but log this info
20015 */
20016 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20017 {
20018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20019 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20020 "response %s (%d)",
20021 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20022 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020023 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020024 }
20025 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020026
Jeff Johnsond13512a2012-07-17 11:42:19 -070020027 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020028 if ( NULL != pWDICtx->wdiReqStatusCB )
20029 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020030 /*Inform originator whether request went through or not*/
20031 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20032 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020033 pWDICtx->wdiReqStatusCB = NULL;
20034 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020035 callback(wdiStatus, callbackContext);
20036
20037 /*For WDI requests which have registered a request callback,
20038 inform the WDA caller of the same via setting the return value
20039 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20040 end up repeating the functonality in the req callback for the
20041 WDI_STATUS_E_FAILURE case*/
20042 if (wdiStatus == WDI_STATUS_E_FAILURE)
20043 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020044 }
20045
Jeff Johnsond13512a2012-07-17 11:42:19 -070020046 if ( wdiStatus == WDI_STATUS_SUCCESS )
20047 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020048 /*Start timer for the expected response */
20049 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020050
20051 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020052 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020053 }
20054 else
20055 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020056 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020057 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20058 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020059
Jeff Johnsond13512a2012-07-17 11:42:19 -070020060 return wdiStatus;
20061
Jeff Johnson295189b2012-06-20 16:38:30 -070020062}/*WDI_SendMsg*/
20063
20064
20065
20066/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020067 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020068 the bus using the control transport and saves some info
20069 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020070
20071 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020072 pSendBuffer: buffer to be sent
20073 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020074
Jeff Johnson295189b2012-06-20 16:38:30 -070020075 @see
20076 @return Result of the function call
20077*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020078WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020079WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020080(
20081 WDI_ControlBlockType* pWDICtx,
20082 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020083 wpt_uint32 usSendSize
20084)
20085{
20086 wpt_uint32 uStatus ;
20087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20088
20089 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020090 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020091 Note: CTS is reponsible for freeing the message buffer.
20092 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020093 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020094 (void*)pSendBuffer, usSendSize );
20095
20096 /*Inform Upper MAC about the outcome of the request*/
20097 if ( NULL != pWDICtx->wdiReqStatusCB )
20098 {
20099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20100 "Send indication status : %d", uStatus);
20101
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020102 /* even if CTS placed indication into its deferred Q, we treat it
20103 * as success and let CTS drain its queue as per smd interrupt to CTS
20104 */
20105 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 -070020106 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020107 }
20108
20109 /*If sending of the message failed - it is considered catastrophic and
20110 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020111 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20112 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20113
Jeff Johnson295189b2012-06-20 16:38:30 -070020114 {
20115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020116 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020117
20118 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20119 return WDI_STATUS_E_FAILURE;
20120 }
20121
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020123}/*WDI_SendIndication*/
20124
20125
20126/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020127 @brief WDI_DetectedDeviceError - called internally by DAL when
20128 it has detected a failure in the device
20129
20130 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020131 usErrorCode: error code detected by WDI or received
20132 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020133
Jeff Johnson295189b2012-06-20 16:38:30 -070020134 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020135 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020136*/
20137void
20138WDI_DetectedDeviceError
20139(
20140 WDI_ControlBlockType* pWDICtx,
20141 wpt_uint16 usErrorCode
20142)
20143{
20144 WDI_LowLevelIndType wdiInd;
20145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20146
20147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20148 "Device Error detected code: %d - transitioning to stopped state",
20149 usErrorCode);
20150
20151 wpalMutexAcquire(&pWDICtx->wptMutex);
20152
20153 WDI_STATableStop(pWDICtx);
20154
20155 WDI_ResetAssocSessions(pWDICtx);
20156
20157 /*Set the expected state transition to stopped - because the device
20158 experienced a failure*/
20159 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20160
20161 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020162 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020163
Jeff Johnsone7245742012-09-05 17:12:55 -070020164 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020165
20166 /*TO DO: - there should be an attempt to reset the device here*/
20167
20168 wpalMutexRelease(&pWDICtx->wptMutex);
20169
20170 /*------------------------------------------------------------------------
20171 Notify UMAC if a handler is registered
20172 ------------------------------------------------------------------------*/
20173 if (pWDICtx->wdiLowLevelIndCB)
20174 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020175 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20176 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020177
20178 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20179 }
20180}/*WDI_DetectedDeviceError*/
20181
20182/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020183 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020184 we started on send message has expire - this should
20185 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020186 reply - trigger catastrophic failure
20187 @param
20188
Jeff Johnson295189b2012-06-20 16:38:30 -070020189 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020190
20191 @see
20192 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020193*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020194void
Jeff Johnson295189b2012-06-20 16:38:30 -070020195WDI_ResponseTimerCB
20196(
20197 void *pUserData
20198)
20199{
20200 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20202
20203 if (NULL == pWDICtx )
20204 {
20205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020206 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020207 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020208 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020209 }
20210
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020211 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020212 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020213
20214 /* If response timer is running at this time that means this timer
20215 * event is not for the last request but rather last-to-last request and
20216 * this timer event has come after we recevied respone for last-to-last
20217 * message
20218 */
20219 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20220 {
20221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20222 "WDI_ResponseTimerCB: timer in running state on timer event, "
20223 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20224 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20225 return;
20226 }
20227
Jeff Johnson295189b2012-06-20 16:38:30 -070020228 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
20229 {
20230
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053020231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020233 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020234 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020235 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20236 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 /* WDI timeout means Riva is not responding or SMD communication to Riva
20238 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020239 * is to initiate SSR from APPS
20240 * There is also an option to re-enable wifi, which will eventually
20241 * trigger SSR
20242 */
20243#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070020244 wpalWcnssResetIntr();
20245 /* if this timer fires, it means Riva did not receive the FIQ */
20246 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020247#else
20248 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20249 wpalWlanReload();
20250#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020251 }
20252 else
20253 {
20254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020255 "Timeout occurred but not waiting for any response %d "
20256 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20257 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20258 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020259 }
20260
20261 return;
20262
20263}/*WDI_ResponseTimerCB*/
20264
20265
20266/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020267 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020268
Jeff Johnsone7245742012-09-05 17:12:55 -070020269
20270 @param pWDICtx: pointer to the WLAN DAL context
20271 pEventData: pointer to the event information structure
20272
Jeff Johnson295189b2012-06-20 16:38:30 -070020273 @see
20274 @return Result of the function call
20275*/
20276WPT_INLINE WDI_Status
20277WDI_ProcessResponse
20278(
20279 WDI_ControlBlockType* pWDICtx,
20280 WDI_EventInfoType* pEventData
20281)
20282{
20283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20284
Jeff Johnsone7245742012-09-05 17:12:55 -070020285 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 already checked these pointers
20287 ! - revisit this assumption */
20288 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20289 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020290 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020292 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020293 WDI_getRespMsgString(pEventData->wdiResponse),
20294 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20295 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20296 }
20297 else
20298 {
20299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020300 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020301 pEventData->wdiResponse);
20302 return WDI_STATUS_E_NOT_IMPLEMENT;
20303 }
20304}/*WDI_ProcessResponse*/
20305
20306
20307/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020308 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020309=========================================================================*/
20310
20311/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020312 @brief Utility function used by the DAL Core to help queue a
20313 request that cannot be processed right away.
20314 @param
20315
Jeff Johnson295189b2012-06-20 16:38:30 -070020316 pWDICtx: - pointer to the WDI control block
20317 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020318 queued
20319
20320 @see
20321 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020322*/
20323WDI_Status
20324WDI_QueuePendingReq
20325(
20326 WDI_ControlBlockType* pWDICtx,
20327 WDI_EventInfoType* pEventData
20328)
20329{
Jeff Johnsone7245742012-09-05 17:12:55 -070020330 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020331 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020332 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20334
20335 if ( NULL == pEventDataQueue )
20336 {
20337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020338 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020339 WDI_ASSERT(0);
20340 return WDI_STATUS_MEM_FAILURE;
20341 }
20342
20343 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20344 pEventDataQueue->pUserData = pEventData->pUserData;
20345 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20346 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020347 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020348
20349 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20350 {
20351 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020352
Jeff Johnson295189b2012-06-20 16:38:30 -070020353 if ( NULL == pEventInfo )
20354 {
20355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020356 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020357 WDI_ASSERT(0);
20358 wpalMemoryFree(pEventDataQueue);
20359 return WDI_STATUS_MEM_FAILURE;
20360 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020361
Jeff Johnson295189b2012-06-20 16:38:30 -070020362 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20363
20364 }
20365 pEventDataQueue->pEventData = pEventInfo;
20366
20367 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020368 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020369
Jeff Johnsone7245742012-09-05 17:12:55 -070020370 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020371
20372 return WDI_STATUS_SUCCESS;
20373}/*WDI_QueuePendingReq*/
20374
20375/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020376 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020377 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020378 @param
20379
20380 pMsg - pointer to the message
20381
20382 @see
20383 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020384*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020385void
Jeff Johnson295189b2012-06-20 16:38:30 -070020386WDI_PALCtrlMsgCB
20387(
20388 wpt_msg *pMsg
20389)
20390{
20391 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020392 WDI_ControlBlockType* pWDICtx = NULL;
20393 WDI_Status wdiStatus;
20394 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020395 void* pUserData;
20396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20397
20398 if (( NULL == pMsg )||
20399 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20400 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20401 {
20402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020403 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020404 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020405 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020406 }
20407
20408 /*Transition back to the state that we had before serialization
20409 - serialization transitions us to BUSY to stop any incomming requests
20410 ! TO DO L: possible race condition here if a request comes in between the
20411 state transition and the post function*/
20412
Jeff Johnsone7245742012-09-05 17:12:55 -070020413 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020414
20415 /*-----------------------------------------------------------------------
20416 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020417 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020418 -----------------------------------------------------------------------*/
20419 switch ( pEventData->wdiRequest )
20420 {
20421
Jeff Johnsone7245742012-09-05 17:12:55 -070020422 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020423 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20424 break;
20425
Jeff Johnson295189b2012-06-20 16:38:30 -070020426 case WDI_NV_DOWNLOAD_REQ:
20427 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20428 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20429 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20430 {
20431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020432 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020433 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20434 }
20435 else
20436 {
20437 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20438 }
20439
20440 break;
20441
20442 default:
20443 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20444 break;
20445 }/*switch ( pEventData->wdiRequest )*/
20446
20447 if ( WDI_STATUS_SUCCESS != wdiStatus )
20448 {
20449 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20450
20451 if ( NULL != pfnReqStatusCB )
20452 {
20453 /*Fail the request*/
20454 pfnReqStatusCB( wdiStatus, pUserData);
20455 }
20456 }
20457
20458 /* Free data - that was allocated when queueing*/
20459 if( pEventData != NULL )
20460 {
20461 if( pEventData->pEventData != NULL )
20462 {
20463 wpalMemoryFree(pEventData->pEventData);
20464 }
20465 wpalMemoryFree(pEventData);
20466 }
20467
20468 if( pMsg != NULL )
20469 {
20470 wpalMemoryFree(pMsg);
20471 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020472
Jeff Johnson295189b2012-06-20 16:38:30 -070020473}/*WDI_PALCtrlMsgCB*/
20474
20475/**
20476 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020477 and schedule for execution a pending request
20478 @param
20479
Jeff Johnson295189b2012-06-20 16:38:30 -070020480 pWDICtx: - pointer to the WDI control block
20481 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020482 queued
20483
20484 @see
20485 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020486*/
20487WDI_Status
20488WDI_DequeuePendingReq
20489(
20490 WDI_ControlBlockType* pWDICtx
20491)
20492{
Jeff Johnsone7245742012-09-05 17:12:55 -070020493 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020494 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20497
Jeff Johnsone7245742012-09-05 17:12:55 -070020498 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020499
20500 if ( NULL == pNode )
20501 {
20502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020504 return WDI_STATUS_SUCCESS;
20505 }
20506
20507 /*The node actually points to the 1st element inside the Event Data struct -
20508 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020509 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020510
20511 /*Serialize processing in the control thread
20512 !TO DO: - check to see if these are all the messages params that need
20513 to be filled in*/
20514 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20515
20516 if ( NULL == palMsg )
20517 {
20518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020519 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020521 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020522 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020523 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 palMsg->callback = WDI_PALCtrlMsgCB;
20525 palMsg->ptr = pEventData;
20526
20527 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020528 palMsg->val = pWDICtx->uGlobalState;
20529
Jeff Johnson295189b2012-06-20 16:38:30 -070020530 /*Transition back to BUSY as we need to handle a queued request*/
20531 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020532
Jeff Johnson295189b2012-06-20 16:38:30 -070020533 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20534
20535 return WDI_STATUS_PENDING;
20536}/*WDI_DequeuePendingReq*/
20537
20538
20539/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020540 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020542 away.- The assoc requests will be queued by BSSID
20543 @param
20544
Jeff Johnson295189b2012-06-20 16:38:30 -070020545 pWDICtx: - pointer to the WDI control block
20546 pEventData: pointer to the evnt info that needs to be queued
20547 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020548
20549 @see
20550 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020551*/
20552WDI_Status
20553WDI_QueueNewAssocRequest
20554(
20555 WDI_ControlBlockType* pWDICtx,
20556 WDI_EventInfoType* pEventData,
20557 wpt_macAddr macBSSID
20558)
20559{
Jeff Johnsone7245742012-09-05 17:12:55 -070020560 wpt_uint8 i;
20561 WDI_BSSSessionType* pSession = NULL;
20562 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020563 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020564 void* pEventInfo;
20565 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020567
Jeff Johnsone7245742012-09-05 17:12:55 -070020568
20569 /*------------------------------------------------------------------------
20570 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 ------------------------------------------------------------------------*/
20572 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20573 {
20574 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20575 {
20576 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020577 pSession = &pWDICtx->aBSSSessions[i];
20578 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020579 }
20580 }
20581
20582 if ( i >= WDI_MAX_BSS_SESSIONS )
20583 {
20584 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020587
Jeff Johnson295189b2012-06-20 16:38:30 -070020588 /*------------------------------------------------------------------------
20589 Fill in the BSSID for this session and set the usage flag
20590 ------------------------------------------------------------------------*/
20591 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020592 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020593
20594 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020595 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020596 ------------------------------------------------------------------------*/
20597 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20598 if ( NULL == pEventDataQueue )
20599 {
20600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020601 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020602 WDI_ASSERT(0);
20603 return WDI_STATUS_MEM_FAILURE;
20604 }
20605
20606 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20607 if ( NULL == pSessionIdElement )
20608 {
20609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020610 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020611 WDI_ASSERT(0);
20612 wpalMemoryFree(pEventDataQueue);
20613 return WDI_STATUS_MEM_FAILURE;
20614 }
20615
20616 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20617 if ( NULL == pEventInfo )
20618 {
20619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020620 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020621 WDI_ASSERT(0);
20622 wpalMemoryFree(pSessionIdElement);
20623 wpalMemoryFree(pEventDataQueue);
20624 return WDI_STATUS_MEM_FAILURE;
20625 }
20626
20627 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20628 pEventDataQueue->pUserData = pEventData->pUserData;
20629 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20630 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020631 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020632
20633 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20634 pEventDataQueue->pEventData = pEventInfo;
20635
20636 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020637 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020638
20639 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020640 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020641
Jeff Johnsone7245742012-09-05 17:12:55 -070020642 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020643
20644 /*We need to maintain a separate list that keeps track of the order in which
20645 the new assoc requests are being queued such that we can start processing
20646 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020647 pSessionIdElement->ucIndex = i;
20648 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020649
20650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20651 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020652 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020653
20654 /*Return pending as this is what the status of the request is since it has
20655 been queued*/
20656 return WDI_STATUS_PENDING;
20657}/*WDI_QueueNewAssocRequest*/
20658
20659/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020662 away.- The assoc requests will be queued by BSSID
20663 @param
20664
Jeff Johnson295189b2012-06-20 16:38:30 -070020665 pWDICtx: - pointer to the WDI control block
20666 pSession: - session in which to queue
20667 pEventData: pointer to the event info that needs to be
20668 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020669
20670 @see
20671 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020672*/
20673WDI_Status
20674WDI_QueueAssocRequest
20675(
20676 WDI_ControlBlockType* pWDICtx,
20677 WDI_BSSSessionType* pSession,
20678 WDI_EventInfoType* pEventData
20679)
20680{
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020683 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020685
20686 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 Sanity check
20688 ------------------------------------------------------------------------*/
20689 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20690 {
20691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020693
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 }
20696
20697 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020699 ------------------------------------------------------------------------*/
20700 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20701 if ( NULL == pEventDataQueue )
20702 {
20703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020704 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020705 WDI_ASSERT(0);
20706 return WDI_STATUS_MEM_FAILURE;
20707 }
20708
20709 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20710 if ( NULL == pEventInfo )
20711 {
20712 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20713 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020714 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020715 WDI_ASSERT(0);
20716 wpalMemoryFree(pEventDataQueue);
20717 return WDI_STATUS_MEM_FAILURE;
20718 }
20719
20720 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20721 pEventDataQueue->pUserData = pEventData->pUserData;
20722 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20723 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020724 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020725 pEventDataQueue->pEventData = pEventInfo;
20726
20727 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20728
20729 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020730 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020731
20732 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020733 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020734
Jeff Johnsone7245742012-09-05 17:12:55 -070020735 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020736
20737 /*The result of this operation is pending because the request has been
20738 queued and it will be processed at a later moment in time */
20739 return WDI_STATUS_PENDING;
20740}/*WDI_QueueAssocRequest*/
20741
20742/**
20743 @brief Utility function used by the DAL Core to help dequeue
20744 an association request that was pending
20745 The request will be queued up in front of the main
20746 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020747 @param
20748
Jeff Johnson295189b2012-06-20 16:38:30 -070020749 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020750
20751
20752 @see
20753 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020754*/
20755WDI_Status
20756WDI_DequeueAssocRequest
20757(
20758 WDI_ControlBlockType* pWDICtx
20759)
20760{
Jeff Johnsone7245742012-09-05 17:12:55 -070020761 wpt_list_node* pNode = NULL;
20762 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020763 WDI_BSSSessionType* pSession;
20764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020765
20766 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 Sanity check
20768 ------------------------------------------------------------------------*/
20769 if ( NULL == pWDICtx )
20770 {
20771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020772 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020773
Jeff Johnsone7245742012-09-05 17:12:55 -070020774 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020775 }
20776
20777 /*------------------------------------------------------------------------
20778 An association has been completed => a new association can occur
20779 Check to see if there are any pending associations ->
20780 If so , transfer all the pending requests into the busy queue for
20781 processing
20782 These requests have arrived prior to the requests in the busy queue
20783 (bc they needed to be processed in order to be placed in this queue)
20784 => they will be placed at the front of the busy queue
20785 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020786 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020787
20788 if ( NULL == pNode )
20789 {
20790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020791 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020792 return WDI_STATUS_SUCCESS;
20793 }
20794
20795 /*The node actually points to the 1st element inside the Session Id struct -
20796 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020797 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020798
20799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20800 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20801
20802 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20803 {
20804 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020805
Jeff Johnson295189b2012-06-20 16:38:30 -070020806 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020807 the front of the main waiting queue for subsequent execution*/
20808 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020809 while ( NULL != pNode )
20810 {
20811 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020812 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20813 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020814 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020815 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020816 }
20817 else
20818 {
20819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020820 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 WPAL_ASSERT(0);
20822 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020824 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020825
Jeff Johnson295189b2012-06-20 16:38:30 -070020826 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20827 wpalMemoryFree(pSessionIdElement);
20828 return WDI_STATUS_SUCCESS;
20829}/*WDI_DequeueAssocRequest*/
20830
20831/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020832 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 pending requests - all req cb will be called with
20834 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020835 @param
20836
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020838
20839 @see
20840 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020841*/
20842WDI_Status
20843WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020844(
Jeff Johnson295189b2012-06-20 16:38:30 -070020845 WDI_ControlBlockType* pWDICtx
20846)
20847{
Jeff Johnsone7245742012-09-05 17:12:55 -070020848 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020849 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 void* pUserData;
20852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20853
Jeff Johnsone7245742012-09-05 17:12:55 -070020854 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020855
20856 /*------------------------------------------------------------------------
20857 Go through all the requests and fail them - this will only be called
20858 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020859 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 ------------------------------------------------------------------------*/
20861 while( pNode )
20862 {
20863 /*The node actually points to the 1st element inside the Event Data struct -
20864 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020865 pEventDataQueue = (WDI_EventInfoType*)pNode;
20866
Jeff Johnson295189b2012-06-20 16:38:30 -070020867 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20868 if ( NULL != pfnReqStatusCB )
20869 {
20870 /*Fail the request*/
20871 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20872 }
20873 /* Free data - that was allocated when queueing */
20874 if ( pEventDataQueue->pEventData != NULL )
20875 {
20876 wpalMemoryFree(pEventDataQueue->pEventData);
20877 }
20878 wpalMemoryFree(pEventDataQueue);
20879
20880 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20881 {
20882 break;
20883 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020884 }
20885
Jeff Johnson295189b2012-06-20 16:38:30 -070020886 return WDI_STATUS_SUCCESS;
20887}/*WDI_ClearPendingRequests*/
20888
20889/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020890 @brief Helper routine used to init the BSS Sessions in the WDI control block
20891
20892
20893 @param pWDICtx: pointer to the WLAN DAL context
20894
Jeff Johnson295189b2012-06-20 16:38:30 -070020895 @see
20896*/
20897void
20898WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020899(
Jeff Johnson295189b2012-06-20 16:38:30 -070020900 WDI_ControlBlockType* pWDICtx
20901)
20902{
Jeff Johnsone7245742012-09-05 17:12:55 -070020903 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20905
20906 /*-------------------------------------------------------------------------
20907 No Sanity check
20908 -------------------------------------------------------------------------*/
20909 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20910 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020911 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020912 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20913 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20914 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20915 }
20916}/*WDI_ResetAssocSessions*/
20917
20918/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020919 @brief Helper routine used to find a session based on the BSSID
20920
20921
20922 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020923 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020924 pSession: pointer to the session (if found)
20925
Jeff Johnson295189b2012-06-20 16:38:30 -070020926 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020927 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020928*/
20929wpt_uint8
20930WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020931(
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 WDI_ControlBlockType* pWDICtx,
20933 wpt_macAddr macBSSID,
20934 WDI_BSSSessionType** ppSession
20935)
20936{
Jeff Johnsone7245742012-09-05 17:12:55 -070020937 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020938 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20939
20940 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020941 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020942 -------------------------------------------------------------------------*/
20943 if ( NULL == ppSession )
20944 {
20945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020946 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020947 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020948 }
20949
Jeff Johnsone7245742012-09-05 17:12:55 -070020950 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020951
Jeff Johnsone7245742012-09-05 17:12:55 -070020952 /*------------------------------------------------------------------------
20953 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020954 ------------------------------------------------------------------------*/
20955 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20956 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020957 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20958 (eWLAN_PAL_TRUE ==
20959 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20960 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020961 {
20962 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020963 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020964 return i;
20965 }
20966 }
20967
Jeff Johnsone7245742012-09-05 17:12:55 -070020968 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020969}/*WDI_FindAssocSession*/
20970
20971/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020972 @brief Helper routine used to find a session based on the BSSID
20973
20974
20975 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020976 ucBSSIdx: BSS Index of the session
20977 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020978
Jeff Johnson295189b2012-06-20 16:38:30 -070020979 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020980 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020981*/
20982wpt_uint8
20983WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020984(
Jeff Johnson295189b2012-06-20 16:38:30 -070020985 WDI_ControlBlockType* pWDICtx,
20986 wpt_uint16 ucBSSIdx,
20987 WDI_BSSSessionType** ppSession
20988)
20989{
Jeff Johnsone7245742012-09-05 17:12:55 -070020990 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20992
20993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020994 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020995 -------------------------------------------------------------------------*/
20996 if ( NULL == ppSession )
20997 {
20998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020999 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021000 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021001 }
21002
Jeff Johnsone7245742012-09-05 17:12:55 -070021003 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021004
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 /*------------------------------------------------------------------------
21006 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021007 ------------------------------------------------------------------------*/
21008 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21009 {
21010 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21011 {
21012 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021013 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021014 return i;
21015 }
21016 }
21017
Jeff Johnsone7245742012-09-05 17:12:55 -070021018 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021019}/*WDI_FindAssocSessionByBSSIdx*/
21020
21021/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021022 @brief Helper routine used to find a session based on the BSSID
21023
21024
21025 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021026 ucBSSIdx: BSS Index of the session
21027 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021028
Jeff Johnson295189b2012-06-20 16:38:30 -070021029 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021030 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021031*/
21032wpt_uint8
21033WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021034(
Jeff Johnson295189b2012-06-20 16:38:30 -070021035 WDI_ControlBlockType* pWDICtx,
21036 wpt_uint16 usIdx,
21037 WDI_BSSSessionType** ppSession
21038)
21039{
21040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21041
21042 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021043 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021044 -------------------------------------------------------------------------*/
21045 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21046 {
21047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021048 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021049 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 }
21051
21052 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021053 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021054
21055 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021056
Jeff Johnson295189b2012-06-20 16:38:30 -070021057}/*WDI_FindAssocSessionByBSSIdx*/
21058
21059/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021060 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021062
21063
21064 @param pWDICtx: pointer to the WLAN DAL context
21065 pSession: pointer to the session (if found)
21066
Jeff Johnson295189b2012-06-20 16:38:30 -070021067 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021068 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021069*/
21070wpt_uint8
21071WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021072(
Jeff Johnson295189b2012-06-20 16:38:30 -070021073 WDI_ControlBlockType* pWDICtx,
21074 WDI_BSSSessionType** ppSession
21075)
21076{
Jeff Johnsone7245742012-09-05 17:12:55 -070021077 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 -------------------------------------------------------------------------*/
21082 if ( NULL == ppSession )
21083 {
21084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021085 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021086 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 }
21088
Jeff Johnsone7245742012-09-05 17:12:55 -070021089 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021090
Jeff Johnsone7245742012-09-05 17:12:55 -070021091 /*------------------------------------------------------------------------
21092 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021093 ------------------------------------------------------------------------*/
21094 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21095 {
21096 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21097 {
21098 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021099 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021100 return i;
21101 }
21102 }
21103
Jeff Johnsone7245742012-09-05 17:12:55 -070021104 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021105}/*WDI_FindEmptySession*/
21106
21107
21108/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021109 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021110 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021111
21112
21113 @param pWDICtx: pointer to the WLAN DAL context
21114
Jeff Johnson295189b2012-06-20 16:38:30 -070021115 @see
21116 @return Number of sessions in use
21117*/
21118wpt_uint8
21119WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021120(
Jeff Johnson295189b2012-06-20 16:38:30 -070021121 WDI_ControlBlockType* pWDICtx
21122)
21123{
Jeff Johnsone7245742012-09-05 17:12:55 -070021124 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021125 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021126
21127 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021128 Count all sessions in use
21129 ------------------------------------------------------------------------*/
21130 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21131 {
21132 if ( pWDICtx->aBSSSessions[i].bInUse )
21133 {
21134 ucCount++;
21135 }
21136 }
21137
Jeff Johnsone7245742012-09-05 17:12:55 -070021138 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021139}/*WDI_GetActiveSessionsCount*/
21140
21141/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021142 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021143 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021144
21145
21146 @param pWDICtx: pointer to the WLAN DAL context
21147 pSession: pointer to the session (if found)
21148
Jeff Johnson295189b2012-06-20 16:38:30 -070021149 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021150 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021151*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021152void
Jeff Johnson295189b2012-06-20 16:38:30 -070021153WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021154(
Jeff Johnson295189b2012-06-20 16:38:30 -070021155 WDI_ControlBlockType* pWDICtx,
21156 WDI_BSSSessionType* ppSession
21157)
21158{
21159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 -------------------------------------------------------------------------*/
21162 if ( NULL == ppSession )
21163 {
21164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021165 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021166 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021167 }
21168
Jeff Johnsone7245742012-09-05 17:12:55 -070021169 /*------------------------------------------------------------------------
21170 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021171 ------------------------------------------------------------------------*/
21172 wpal_list_destroy(&ppSession->wptPendingQueue);
21173 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021174 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21175 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21177 wpal_list_init(&ppSession->wptPendingQueue);
21178
21179}/*WDI_DeleteSession*/
21180
21181/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021182 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021184 @param
21185
Jeff Johnson295189b2012-06-20 16:38:30 -070021186 WDI_AddStaParams: - pointer to the WDI Add STA params
21187 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021188
21189 @see
21190 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021191*/
21192void
21193WDI_AddBcastSTAtoSTATable
21194(
21195 WDI_ControlBlockType* pWDICtx,
21196 WDI_AddStaParams * staParams,
21197 wpt_uint16 usBcastStaIdx
21198)
21199{
21200 WDI_AddStaParams wdiAddSTAParam = {0};
21201 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21203
21204 /*---------------------------------------------------------------------
21205 Sanity check
21206 ---------------------------------------------------------------------*/
21207 if ( NULL == staParams )
21208 {
21209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021210 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021211
Jeff Johnsone7245742012-09-05 17:12:55 -070021212 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021213 }
21214
21215 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21216 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21217 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21218 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21219 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21220 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21221 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21222 WDI_MAC_ADDR_LEN );
21223 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21224 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21225 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21226 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21227 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21228 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21229 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021230
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21232}
21233
21234/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021235 @brief NV blob will be divided into fragments of size 4kb and
21236 Sent to HAL
21237
21238 @param pWDICtx: pointer to the WLAN DAL context
21239 pEventData: pointer to the event information structure
21240
Jeff Johnson295189b2012-06-20 16:38:30 -070021241 @see
21242 @return Result of the function call
21243 */
21244
21245WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021246(
Jeff Johnson295189b2012-06-20 16:38:30 -070021247 WDI_ControlBlockType* pWDICtx,
21248 WDI_EventInfoType* pEventData
21249)
21250{
21251
21252 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21253 wpt_uint8* pSendBuffer = NULL;
21254 wpt_uint16 usDataOffset = 0;
21255 wpt_uint16 usSendSize = 0;
21256 wpt_uint16 usCurrentFragmentSize =0;
21257 wpt_uint8* pSrcBuffer = NULL;
21258 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21259 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21260
21261 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21262 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21263 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21264
Jeff Johnsone7245742012-09-05 17:12:55 -070021265 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021266 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21267
21268 /* Update the current Fragment Number */
21269 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21270
21271 /*Update the HAL REQ structure */
21272 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21273 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21274 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21275
21276 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021277 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021278 image will be sent to HAL*/
21279
Jeff Johnsone7245742012-09-05 17:12:55 -070021280 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021281 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021282 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021283 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021284 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021285 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21286 usCurrentFragmentSize = FRAGMENT_SIZE;
21287
21288 /*Update the HAL REQ structure */
21289 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21290 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21291
21292 }
21293 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021294 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021295 usCurrentFragmentSize = FRAGMENT_SIZE;
21296
21297 /*Update the HAL REQ structure */
21298 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21299 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21300 }
21301
21302 /*-----------------------------------------------------------------------
21303 Get message buffer
21304 -----------------------------------------------------------------------*/
21305 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21306 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21307 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021308 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021309 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21310 {
21311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21312 "Unable to get send buffer in NV Download req %x %x ",
21313 pEventData, pwdiNvDownloadReqParams);
21314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021315 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021316 }
21317
21318 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021319 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021320 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21321
21322 /* Appending the NV image fragment */
21323 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21324 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21325 usCurrentFragmentSize);
21326
21327 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021328 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021329
Jeff Johnsone7245742012-09-05 17:12:55 -070021330 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21331 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021332 WDI_NV_DOWNLOAD_RESP);
21333
21334}
Jeff Johnsone7245742012-09-05 17:12:55 -070021335/*============================================================================
21336 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021337 ============================================================================*/
21338/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021339 @brief Helper routine used to find a session based on the BSSID
21340 @param pContext: pointer to the WLAN DAL context
21341 @param pDPContext: pointer to the Datapath context
21342
Jeff Johnson295189b2012-06-20 16:38:30 -070021343 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021344 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021345*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021346WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021347WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21348{
21349 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21350
21351 pCB->pDPContext = pDPContext;
21352 return;
21353}
21354
21355/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021356 @brief Helper routine used to find a session based on the BSSID
21357
21358
21359 @param pContext: pointer to the WLAN DAL context
21360
Jeff Johnson295189b2012-06-20 16:38:30 -070021361 @see
21362 @return pointer to Datapath context
21363*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021364WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021365WDI_DS_GetDatapathContext (void *pContext)
21366{
21367 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21368 return pCB->pDPContext;
21369}
21370/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021371 @brief Helper routine used to find a session based on the BSSID
21372
21373
21374 @param pContext: pointer to the WLAN DAL context
21375 @param pDTDriverContext: pointer to the Transport Driver context
21376
Jeff Johnson295189b2012-06-20 16:38:30 -070021377 @see
21378 @return void
21379*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021380WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021381WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21382{
21383 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21384
21385 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021386 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021387}
21388
21389/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021390 @brief Helper routine used to find a session based on the BSSID
21391
21392
21393 @param pWDICtx: pointer to the WLAN DAL context
21394
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021396 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021397*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021398WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021399WDT_GetTransportDriverContext (void *pContext)
21400{
21401 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021402 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021403}
21404
Jeff Johnsone7245742012-09-05 17:12:55 -070021405/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021406 Helper inline converters
21407 ============================================================================*/
21408/*Convert WDI driver type into HAL driver type*/
21409WPT_STATIC WPT_INLINE WDI_Status
21410WDI_HAL_2_WDI_STATUS
21411(
21412 eHalStatus halStatus
21413)
21414{
Jeff Johnsone7245742012-09-05 17:12:55 -070021415 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021416 the chances of getting inlined*/
21417 switch( halStatus )
21418 {
21419 case eHAL_STATUS_SUCCESS:
21420 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21421 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21422 return WDI_STATUS_SUCCESS;
21423 case eHAL_STATUS_FAILURE:
21424 return WDI_STATUS_E_FAILURE;
21425 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021426 return WDI_STATUS_MEM_FAILURE;
21427 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021428 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021429 default:
21430 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21431 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021432
Jeff Johnsone7245742012-09-05 17:12:55 -070021433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021434}/*WDI_HAL_2_WDI_STATUS*/
21435
21436/*Convert WDI request type into HAL request type*/
21437WPT_STATIC WPT_INLINE tHalHostMsgType
21438WDI_2_HAL_REQ_TYPE
21439(
21440 WDI_RequestEnumType wdiReqType
21441)
21442{
Jeff Johnsone7245742012-09-05 17:12:55 -070021443 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021444 the chances of getting inlined*/
21445 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021446 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021447 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021448 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021449 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021450 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021451 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021452 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021453 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021454 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021455 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021456 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021457 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021458 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021459 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021460 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021461 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021462 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021463 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021464 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021465 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021466 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021467 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021468 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021469 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021470 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021471 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021472 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021473 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021474 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021475 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021476 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021477 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021478 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021479 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021480 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021481 return WLAN_HAL_RMV_STAKEY_REQ;
21482 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021483 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021484 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021485 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021486 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021488 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021489 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021490 case WDI_DEL_BA_REQ:
21491 return WLAN_HAL_DEL_BA_REQ;
21492#ifdef FEATURE_WLAN_CCX
21493 case WDI_TSM_STATS_REQ:
21494 return WLAN_HAL_TSM_STATS_REQ;
21495#endif
21496 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021497 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021498 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021499 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021500 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021501 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021502 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021503 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021504 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021505 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021506 case WDI_ADD_BA_SESSION_REQ:
21507 return WLAN_HAL_ADD_BA_SESSION_REQ;
21508 case WDI_TRIGGER_BA_REQ:
21509 return WLAN_HAL_TRIGGER_BA_REQ;
21510 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021511 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021512 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021513 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021514 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21515 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21516 case WDI_SET_MAX_TX_POWER_REQ:
21517 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070021518 case WDI_SET_TX_POWER_REQ:
21519 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021520 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21521 return WLAN_HAL_SET_P2P_GONOA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021522 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021523 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021524 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021525 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021526 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021527 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021528 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021529 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021530 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021531 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021532 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021533 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021534 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021535 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021536 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021537 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021538 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021539 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021540 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021541 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021542 case WDI_REM_BEACON_FILTER_REQ:
21543 return WLAN_HAL_REM_BCN_FILTER_REQ;
21544 case WDI_SET_RSSI_THRESHOLDS_REQ:
21545 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21546 case WDI_HOST_OFFLOAD_REQ:
21547 return WLAN_HAL_HOST_OFFLOAD_REQ;
21548 case WDI_WOWL_ADD_BC_PTRN_REQ:
21549 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21550 case WDI_WOWL_DEL_BC_PTRN_REQ:
21551 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21552 case WDI_WOWL_ENTER_REQ:
21553 return WLAN_HAL_ENTER_WOWL_REQ;
21554 case WDI_WOWL_EXIT_REQ:
21555 return WLAN_HAL_EXIT_WOWL_REQ;
21556 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21557 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21558 case WDI_NV_DOWNLOAD_REQ:
21559 return WLAN_HAL_DOWNLOAD_NV_REQ;
21560 case WDI_FLUSH_AC_REQ:
21561 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21562 case WDI_BTAMP_EVENT_REQ:
21563 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21564#ifdef WLAN_FEATURE_VOWIFI_11R
21565 case WDI_AGGR_ADD_TS_REQ:
21566 return WLAN_HAL_AGGR_ADD_TS_REQ;
21567#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070021568 case WDI_FTM_CMD_REQ:
21569 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021570 case WDI_ADD_STA_SELF_REQ:
21571 return WLAN_HAL_ADD_STA_SELF_REQ;
21572 case WDI_DEL_STA_SELF_REQ:
21573 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021574#ifdef FEATURE_OEM_DATA_SUPPORT
21575 case WDI_START_OEM_DATA_REQ:
21576 return WLAN_HAL_START_OEM_DATA_REQ;
21577#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021578 case WDI_HOST_RESUME_REQ:
21579 return WLAN_HAL_HOST_RESUME_REQ;
21580 case WDI_HOST_SUSPEND_IND:
21581 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080021582 case WDI_TRAFFIC_STATS_IND:
21583 return WLAN_HAL_CLASS_B_STATS_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021584 case WDI_KEEP_ALIVE_REQ:
21585 return WLAN_HAL_KEEP_ALIVE_REQ;
21586
21587#ifdef FEATURE_WLAN_SCAN_PNO
21588 case WDI_SET_PREF_NETWORK_REQ:
21589 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21590 case WDI_SET_RSSI_FILTER_REQ:
21591 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21592 case WDI_UPDATE_SCAN_PARAMS_REQ:
21593 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21594#endif // FEATURE_WLAN_SCAN_PNO
21595 case WDI_SET_TX_PER_TRACKING_REQ:
21596 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21597#ifdef WLAN_FEATURE_PACKET_FILTERING
21598 case WDI_8023_MULTICAST_LIST_REQ:
21599 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21600 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021601 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021602 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21603 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21604 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21605 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21606#endif // WLAN_FEATURE_PACKET_FILTERING
21607 case WDI_HAL_DUMP_CMD_REQ:
21608 return WLAN_HAL_DUMP_COMMAND_REQ;
21609#ifdef WLAN_FEATURE_GTK_OFFLOAD
21610 case WDI_GTK_OFFLOAD_REQ:
21611 return WLAN_HAL_GTK_OFFLOAD_REQ;
21612 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21613 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21614#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21615
21616 case WDI_INIT_SCAN_CON_REQ:
21617 return WLAN_HAL_INIT_SCAN_CON_REQ;
21618 case WDI_SET_POWER_PARAMS_REQ:
21619 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21620 case WDI_SET_TM_LEVEL_REQ:
21621 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21622 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21623 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021624#ifdef WLAN_FEATURE_11AC
21625 case WDI_UPDATE_VHT_OP_MODE_REQ:
21626 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21627#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021628 case WDI_GET_ROAM_RSSI_REQ:
21629 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021630 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021631 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021632 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021633
Jeff Johnson295189b2012-06-20 16:38:30 -070021634}/*WDI_2_HAL_REQ_TYPE*/
21635
21636/*Convert WDI response type into HAL response type*/
21637WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21638HAL_2_WDI_RSP_TYPE
21639(
21640 tHalHostMsgType halMsg
21641)
21642{
Jeff Johnsone7245742012-09-05 17:12:55 -070021643 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021644 the chances of getting inlined*/
21645 switch( halMsg )
21646 {
21647 case WLAN_HAL_START_RSP:
21648 return WDI_START_RESP;
21649 case WLAN_HAL_STOP_RSP:
21650 return WDI_STOP_RESP;
21651 case WLAN_HAL_INIT_SCAN_RSP:
21652 return WDI_INIT_SCAN_RESP;
21653 case WLAN_HAL_START_SCAN_RSP:
21654 return WDI_START_SCAN_RESP;
21655 case WLAN_HAL_END_SCAN_RSP:
21656 return WDI_END_SCAN_RESP;
21657 case WLAN_HAL_FINISH_SCAN_RSP:
21658 return WDI_FINISH_SCAN_RESP;
21659 case WLAN_HAL_CONFIG_STA_RSP:
21660 return WDI_CONFIG_STA_RESP;
21661 case WLAN_HAL_DELETE_STA_RSP:
21662 return WDI_DEL_STA_RESP;
21663 case WLAN_HAL_CONFIG_BSS_RSP:
21664 return WDI_CONFIG_BSS_RESP;
21665 case WLAN_HAL_DELETE_BSS_RSP:
21666 return WDI_DEL_BSS_RESP;
21667 case WLAN_HAL_JOIN_RSP:
21668 return WDI_JOIN_RESP;
21669 case WLAN_HAL_POST_ASSOC_RSP:
21670 return WDI_POST_ASSOC_RESP;
21671 case WLAN_HAL_SET_BSSKEY_RSP:
21672 return WDI_SET_BSS_KEY_RESP;
21673 case WLAN_HAL_SET_STAKEY_RSP:
21674 return WDI_SET_STA_KEY_RESP;
21675 case WLAN_HAL_RMV_BSSKEY_RSP:
21676 return WDI_RMV_BSS_KEY_RESP;
21677 case WLAN_HAL_RMV_STAKEY_RSP:
21678 return WDI_RMV_STA_KEY_RESP;
21679 case WLAN_HAL_SET_BCASTKEY_RSP:
21680 return WDI_SET_STA_BCAST_KEY_RESP;
21681 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21682 // return WDI_RMV_STA_BCAST_KEY_RESP;
21683 case WLAN_HAL_ADD_TS_RSP:
21684 return WDI_ADD_TS_RESP;
21685 case WLAN_HAL_DEL_TS_RSP:
21686 return WDI_DEL_TS_RESP;
21687 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21688 return WDI_UPD_EDCA_PRMS_RESP;
21689 case WLAN_HAL_ADD_BA_RSP:
21690 return WDI_ADD_BA_RESP;
21691 case WLAN_HAL_DEL_BA_RSP:
21692 return WDI_DEL_BA_RESP;
21693#ifdef FEATURE_WLAN_CCX
21694 case WLAN_HAL_TSM_STATS_RSP:
21695 return WDI_TSM_STATS_RESP;
21696#endif
21697 case WLAN_HAL_CH_SWITCH_RSP:
21698 return WDI_CH_SWITCH_RESP;
21699 case WLAN_HAL_SET_LINK_ST_RSP:
21700 return WDI_SET_LINK_ST_RESP;
21701 case WLAN_HAL_GET_STATS_RSP:
21702 return WDI_GET_STATS_RESP;
21703 case WLAN_HAL_UPDATE_CFG_RSP:
21704 return WDI_UPDATE_CFG_RESP;
21705 case WLAN_HAL_ADD_BA_SESSION_RSP:
21706 return WDI_ADD_BA_SESSION_RESP;
21707 case WLAN_HAL_TRIGGER_BA_RSP:
21708 return WDI_TRIGGER_BA_RESP;
21709 case WLAN_HAL_UPDATE_BEACON_RSP:
21710 return WDI_UPD_BCON_PRMS_RESP;
21711 case WLAN_HAL_SEND_BEACON_RSP:
21712 return WDI_SND_BCON_RESP;
21713 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21714 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21715 /*Indications*/
21716 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21717 return WDI_HAL_RSSI_NOTIFICATION_IND;
21718 case WLAN_HAL_MISSED_BEACON_IND:
21719 return WDI_HAL_MISSED_BEACON_IND;
21720 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21721 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21722 case WLAN_HAL_MIC_FAILURE_IND:
21723 return WDI_HAL_MIC_FAILURE_IND;
21724 case WLAN_HAL_FATAL_ERROR_IND:
21725 return WDI_HAL_FATAL_ERROR_IND;
21726 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21727 return WDI_HAL_DEL_STA_IND;
21728 case WLAN_HAL_COEX_IND:
21729 return WDI_HAL_COEX_IND;
21730 case WLAN_HAL_OTA_TX_COMPL_IND:
21731 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021732 case WLAN_HAL_P2P_NOA_ATTR_IND:
21733 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021734 case WLAN_HAL_P2P_NOA_START_IND:
21735 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021736 case WLAN_HAL_TX_PER_HIT_IND:
21737 return WDI_HAL_TX_PER_HIT_IND;
21738 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21739 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070021740 case WLAN_HAL_SET_TX_POWER_RSP:
21741 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021742 case WLAN_HAL_SET_P2P_GONOA_RSP:
21743 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021744 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021745 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021746 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021747 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021748 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021749 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021750 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021751 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021752 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021753 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021754 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021755 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021756 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021757 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021758 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021759 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021761 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021762 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21763 return WDI_SET_BEACON_FILTER_RESP;
21764 case WLAN_HAL_REM_BCN_FILTER_RSP:
21765 return WDI_REM_BEACON_FILTER_RESP;
21766 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21767 return WDI_SET_RSSI_THRESHOLDS_RESP;
21768 case WLAN_HAL_HOST_OFFLOAD_RSP:
21769 return WDI_HOST_OFFLOAD_RESP;
21770 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21771 return WDI_WOWL_ADD_BC_PTRN_RESP;
21772 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21773 return WDI_WOWL_DEL_BC_PTRN_RESP;
21774 case WLAN_HAL_ENTER_WOWL_RSP:
21775 return WDI_WOWL_ENTER_RESP;
21776 case WLAN_HAL_EXIT_WOWL_RSP:
21777 return WDI_WOWL_EXIT_RESP;
21778 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21779 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21780 case WLAN_HAL_DOWNLOAD_NV_RSP:
21781 return WDI_NV_DOWNLOAD_RESP;
21782 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21783 return WDI_FLUSH_AC_RESP;
21784 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21785 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 case WLAN_HAL_PROCESS_PTT_RSP:
21787 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021788 case WLAN_HAL_ADD_STA_SELF_RSP:
21789 return WDI_ADD_STA_SELF_RESP;
21790case WLAN_HAL_DEL_STA_SELF_RSP:
21791 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021792#ifdef FEATURE_OEM_DATA_SUPPORT
21793 case WLAN_HAL_START_OEM_DATA_RSP:
21794 return WDI_START_OEM_DATA_RESP;
21795#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021796 case WLAN_HAL_HOST_RESUME_RSP:
21797 return WDI_HOST_RESUME_RESP;
21798 case WLAN_HAL_KEEP_ALIVE_RSP:
21799 return WDI_KEEP_ALIVE_RESP;
21800#ifdef FEATURE_WLAN_SCAN_PNO
21801 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21802 return WDI_SET_PREF_NETWORK_RESP;
21803 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021804 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021805 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21806 return WDI_UPDATE_SCAN_PARAMS_RESP;
21807 case WLAN_HAL_PREF_NETW_FOUND_IND:
21808 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21809#endif // FEATURE_WLAN_SCAN_PNO
21810 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21811 return WDI_SET_TX_PER_TRACKING_RESP;
21812#ifdef WLAN_FEATURE_PACKET_FILTERING
21813 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21814 return WDI_8023_MULTICAST_LIST_RESP;
21815 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21816 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21817 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21818 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21819 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21820 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21821#endif // WLAN_FEATURE_PACKET_FILTERING
21822
21823 case WLAN_HAL_DUMP_COMMAND_RSP:
21824 return WDI_HAL_DUMP_CMD_RESP;
21825 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21826 return WDI_SET_POWER_PARAMS_RESP;
21827#ifdef WLAN_FEATURE_VOWIFI_11R
21828 case WLAN_HAL_AGGR_ADD_TS_RSP:
21829 return WDI_AGGR_ADD_TS_RESP;
21830#endif
21831
21832#ifdef WLAN_FEATURE_GTK_OFFLOAD
21833 case WLAN_HAL_GTK_OFFLOAD_RSP:
21834 return WDI_GTK_OFFLOAD_RESP;
21835 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21836 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21837#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21838#ifdef WLAN_WAKEUP_EVENTS
21839 case WLAN_HAL_WAKE_REASON_IND:
21840 return WDI_HAL_WAKE_REASON_IND;
21841#endif // WLAN_WAKEUP_EVENTS
21842
21843 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21844 return WDI_SET_TM_LEVEL_RESP;
21845 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21846 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021847#ifdef WLAN_FEATURE_11AC
21848 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21849 return WDI_UPDATE_VHT_OP_MODE_RESP;
21850#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021851#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
21852 case WLAN_HAL_GET_ROAM_RSSI_RSP:
21853 return WDI_GET_ROAM_RSSI_RESP;
21854#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021855 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021856 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021857 }
21858
21859}/*HAL_2_WDI_RSP_TYPE*/
21860
21861
21862/*Convert WDI driver type into HAL driver type*/
21863WPT_STATIC WPT_INLINE tDriverType
21864WDI_2_HAL_DRV_TYPE
21865(
21866 WDI_DriverType wdiDriverType
21867)
21868{
Jeff Johnsone7245742012-09-05 17:12:55 -070021869 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021870 the chances of getting inlined*/
21871 switch( wdiDriverType )
21872 {
21873 case WDI_DRIVER_TYPE_PRODUCTION:
21874 return eDRIVER_TYPE_PRODUCTION;
21875 case WDI_DRIVER_TYPE_MFG:
21876 return eDRIVER_TYPE_MFG;
21877 case WDI_DRIVER_TYPE_DVT:
21878 return eDRIVER_TYPE_DVT;
21879 }
21880
Jeff Johnsone7245742012-09-05 17:12:55 -070021881 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021882}/*WDI_2_HAL_DRV_TYPE*/
21883
21884
21885/*Convert WDI stop reason into HAL stop reason*/
21886WPT_STATIC WPT_INLINE tHalStopType
21887WDI_2_HAL_STOP_REASON
21888(
21889 WDI_StopType wdiDriverType
21890)
21891{
Jeff Johnsone7245742012-09-05 17:12:55 -070021892 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021893 the chances of getting inlined*/
21894 switch( wdiDriverType )
21895 {
21896 case WDI_STOP_TYPE_SYS_RESET:
21897 return HAL_STOP_TYPE_SYS_RESET;
21898 case WDI_DRIVER_TYPE_MFG:
21899 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21900 case WDI_STOP_TYPE_RF_KILL:
21901 return HAL_STOP_TYPE_RF_KILL;
21902 }
21903
Jeff Johnsone7245742012-09-05 17:12:55 -070021904 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021905}/*WDI_2_HAL_STOP_REASON*/
21906
21907
21908/*Convert WDI scan mode type into HAL scan mode type*/
21909WPT_STATIC WPT_INLINE eHalSysMode
21910WDI_2_HAL_SCAN_MODE
21911(
21912 WDI_ScanMode wdiScanMode
21913)
21914{
Jeff Johnsone7245742012-09-05 17:12:55 -070021915 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021916 the chances of getting inlined*/
21917 switch( wdiScanMode )
21918 {
21919 case WDI_SCAN_MODE_NORMAL:
21920 return eHAL_SYS_MODE_NORMAL;
21921 case WDI_SCAN_MODE_LEARN:
21922 return eHAL_SYS_MODE_LEARN;
21923 case WDI_SCAN_MODE_SCAN:
21924 return eHAL_SYS_MODE_SCAN;
21925 case WDI_SCAN_MODE_PROMISC:
21926 return eHAL_SYS_MODE_PROMISC;
21927 case WDI_SCAN_MODE_SUSPEND_LINK:
21928 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021929 case WDI_SCAN_MODE_ROAM_SCAN:
21930 return eHAL_SYS_MODE_ROAM_SCAN;
21931 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21932 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021933 }
21934
Jeff Johnsone7245742012-09-05 17:12:55 -070021935 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021936}/*WDI_2_HAL_SCAN_MODE*/
21937
21938/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021939WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021940WDI_2_HAL_SEC_CH_OFFSET
21941(
21942 WDI_HTSecondaryChannelOffset wdiSecChOffset
21943)
21944{
Jeff Johnsone7245742012-09-05 17:12:55 -070021945 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021946 the chances of getting inlined*/
21947 switch( wdiSecChOffset )
21948 {
21949 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021950 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021951 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021952 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021953 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021954 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21955#ifdef WLAN_FEATURE_11AC
21956 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21957 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21958 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21959 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21960 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21961 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21962 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21963 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21964 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21965 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21966 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21967 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21968 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21969 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21970#endif
21971 default:
21972 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 }
21974
Jeff Johnsone7245742012-09-05 17:12:55 -070021975 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021976}/*WDI_2_HAL_SEC_CH_OFFSET*/
21977
21978/*Convert WDI BSS type into HAL BSS type*/
21979WPT_STATIC WPT_INLINE tSirBssType
21980WDI_2_HAL_BSS_TYPE
21981(
21982 WDI_BssType wdiBSSType
21983)
21984{
Jeff Johnsone7245742012-09-05 17:12:55 -070021985 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021986 the chances of getting inlined*/
21987 switch( wdiBSSType )
21988 {
21989 case WDI_INFRASTRUCTURE_MODE:
21990 return eSIR_INFRASTRUCTURE_MODE;
21991 case WDI_INFRA_AP_MODE:
21992 return eSIR_INFRA_AP_MODE;
21993 case WDI_IBSS_MODE:
21994 return eSIR_IBSS_MODE;
21995 case WDI_BTAMP_STA_MODE:
21996 return eSIR_BTAMP_STA_MODE;
21997 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021998 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021999 case WDI_BSS_AUTO_MODE:
22000 return eSIR_AUTO_MODE;
22001 }
22002
Jeff Johnsone7245742012-09-05 17:12:55 -070022003 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022004}/*WDI_2_HAL_BSS_TYPE*/
22005
22006/*Convert WDI NW type into HAL NW type*/
22007WPT_STATIC WPT_INLINE tSirNwType
22008WDI_2_HAL_NW_TYPE
22009(
22010 WDI_NwType wdiNWType
22011)
22012{
Jeff Johnsone7245742012-09-05 17:12:55 -070022013 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022014 the chances of getting inlined*/
22015 switch( wdiNWType )
22016 {
22017 case WDI_11A_NW_TYPE:
22018 return eSIR_11A_NW_TYPE;
22019 case WDI_11B_NW_TYPE:
22020 return eSIR_11B_NW_TYPE;
22021 case WDI_11G_NW_TYPE:
22022 return eSIR_11G_NW_TYPE;
22023 case WDI_11N_NW_TYPE:
22024 return eSIR_11N_NW_TYPE;
22025 }
22026
Jeff Johnsone7245742012-09-05 17:12:55 -070022027 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022028}/*WDI_2_HAL_NW_TYPE*/
22029
22030/*Convert WDI chanel bonding type into HAL cb type*/
22031WPT_STATIC WPT_INLINE ePhyChanBondState
22032WDI_2_HAL_CB_STATE
22033(
22034 WDI_PhyChanBondState wdiCbState
22035)
22036{
Jeff Johnsone7245742012-09-05 17:12:55 -070022037 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022038 the chances of getting inlined*/
22039 switch ( wdiCbState )
22040 {
22041 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22042 return PHY_SINGLE_CHANNEL_CENTERED;
22043 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22044 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22045 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22046 return PHY_DOUBLE_CHANNEL_CENTERED;
22047 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22048 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022049#ifdef WLAN_FEATURE_11AC
22050 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22051 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22052 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22053 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22054 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22055 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22056 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22057 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22058 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22059 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22060 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22061 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22062 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22063 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22064#endif
22065 case WDI_MAX_CB_STATE:
22066 default:
22067 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022068 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022069
Jeff Johnson295189b2012-06-20 16:38:30 -070022070 return PHY_CHANNEL_BONDING_STATE_MAX;
22071}/*WDI_2_HAL_CB_STATE*/
22072
22073/*Convert WDI chanel bonding type into HAL cb type*/
22074WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22075WDI_2_HAL_HT_OPER_MODE
22076(
22077 WDI_HTOperatingMode wdiHTOperMode
22078)
22079{
Jeff Johnsone7245742012-09-05 17:12:55 -070022080 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022081 the chances of getting inlined*/
22082 switch ( wdiHTOperMode )
22083 {
22084 case WDI_HT_OP_MODE_PURE:
22085 return eSIR_HT_OP_MODE_PURE;
22086 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22087 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22088 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22089 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22090 case WDI_HT_OP_MODE_MIXED:
22091 return eSIR_HT_OP_MODE_MIXED;
22092 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022093
Jeff Johnson295189b2012-06-20 16:38:30 -070022094 return eSIR_HT_OP_MODE_MAX;
22095}/*WDI_2_HAL_HT_OPER_MODE*/
22096
22097/*Convert WDI mimo PS type into HAL mimo PS type*/
22098WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22099WDI_2_HAL_MIMO_PS
22100(
22101 WDI_HTMIMOPowerSaveState wdiHTOperMode
22102)
22103{
Jeff Johnsone7245742012-09-05 17:12:55 -070022104 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022105 the chances of getting inlined*/
22106 switch ( wdiHTOperMode )
22107 {
22108 case WDI_HT_MIMO_PS_STATIC:
22109 return eSIR_HT_MIMO_PS_STATIC;
22110 case WDI_HT_MIMO_PS_DYNAMIC:
22111 return eSIR_HT_MIMO_PS_DYNAMIC;
22112 case WDI_HT_MIMO_PS_NA:
22113 return eSIR_HT_MIMO_PS_NA;
22114 case WDI_HT_MIMO_PS_NO_LIMIT:
22115 return eSIR_HT_MIMO_PS_NO_LIMIT;
22116 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022117
Jeff Johnson295189b2012-06-20 16:38:30 -070022118 return eSIR_HT_MIMO_PS_MAX;
22119}/*WDI_2_HAL_MIMO_PS*/
22120
22121/*Convert WDI ENC type into HAL ENC type*/
22122WPT_STATIC WPT_INLINE tAniEdType
22123WDI_2_HAL_ENC_TYPE
22124(
22125 WDI_EncryptType wdiEncType
22126)
22127{
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 the chances of getting inlined*/
22130 switch ( wdiEncType )
22131 {
22132 case WDI_ENCR_NONE:
22133 return eSIR_ED_NONE;
22134
22135 case WDI_ENCR_WEP40:
22136 return eSIR_ED_WEP40;
22137
22138 case WDI_ENCR_WEP104:
22139 return eSIR_ED_WEP104;
22140
22141 case WDI_ENCR_TKIP:
22142 return eSIR_ED_TKIP;
22143
22144 case WDI_ENCR_CCMP:
22145 return eSIR_ED_CCMP;
22146
22147 case WDI_ENCR_AES_128_CMAC:
22148 return eSIR_ED_AES_128_CMAC;
22149#if defined(FEATURE_WLAN_WAPI)
22150 case WDI_ENCR_WPI:
22151 return eSIR_ED_WPI;
22152#endif
22153 default:
22154 return eSIR_ED_NOT_IMPLEMENTED;
22155 }
22156
22157}/*WDI_2_HAL_ENC_TYPE*/
22158
22159/*Convert WDI WEP type into HAL WEP type*/
22160WPT_STATIC WPT_INLINE tAniWepType
22161WDI_2_HAL_WEP_TYPE
22162(
22163 WDI_WepType wdiWEPType
22164)
22165{
Jeff Johnsone7245742012-09-05 17:12:55 -070022166 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022167 the chances of getting inlined*/
22168 switch ( wdiWEPType )
22169 {
22170 case WDI_WEP_STATIC:
22171 return eSIR_WEP_STATIC;
22172
22173 case WDI_WEP_DYNAMIC:
22174 return eSIR_WEP_DYNAMIC;
22175 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022176
Jeff Johnson295189b2012-06-20 16:38:30 -070022177 return eSIR_WEP_MAX;
22178}/*WDI_2_HAL_WEP_TYPE*/
22179
22180WPT_STATIC WPT_INLINE tSirLinkState
22181WDI_2_HAL_LINK_STATE
22182(
22183 WDI_LinkStateType wdiLinkState
22184)
22185{
Jeff Johnsone7245742012-09-05 17:12:55 -070022186 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022187 the chances of getting inlined*/
22188 switch ( wdiLinkState )
22189 {
22190 case WDI_LINK_IDLE_STATE:
22191 return eSIR_LINK_IDLE_STATE;
22192
22193 case WDI_LINK_PREASSOC_STATE:
22194 return eSIR_LINK_PREASSOC_STATE;
22195
22196 case WDI_LINK_POSTASSOC_STATE:
22197 return eSIR_LINK_POSTASSOC_STATE;
22198
22199 case WDI_LINK_AP_STATE:
22200 return eSIR_LINK_AP_STATE;
22201
22202 case WDI_LINK_IBSS_STATE:
22203 return eSIR_LINK_IBSS_STATE;
22204
22205 case WDI_LINK_BTAMP_PREASSOC_STATE:
22206 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22207
22208 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22209 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22210
22211 case WDI_LINK_BTAMP_AP_STATE:
22212 return eSIR_LINK_BTAMP_AP_STATE;
22213
22214 case WDI_LINK_BTAMP_STA_STATE:
22215 return eSIR_LINK_BTAMP_STA_STATE;
22216
22217 case WDI_LINK_LEARN_STATE:
22218 return eSIR_LINK_LEARN_STATE;
22219
22220 case WDI_LINK_SCAN_STATE:
22221 return eSIR_LINK_SCAN_STATE;
22222
22223 case WDI_LINK_FINISH_SCAN_STATE:
22224 return eSIR_LINK_FINISH_SCAN_STATE;
22225
22226 case WDI_LINK_INIT_CAL_STATE:
22227 return eSIR_LINK_INIT_CAL_STATE;
22228
22229 case WDI_LINK_FINISH_CAL_STATE:
22230 return eSIR_LINK_FINISH_CAL_STATE;
22231
Jeff Johnson295189b2012-06-20 16:38:30 -070022232 case WDI_LINK_LISTEN_STATE:
22233 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022234
22235 default:
22236 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022237 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022238}
22239
Jeff Johnsone7245742012-09-05 17:12:55 -070022240/*Translate a STA Context from WDI into HAL*/
22241WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022242void
22243WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022244(
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 tConfigStaParams* phalConfigSta,
22246 WDI_ConfigStaReqInfoType* pwdiConfigSta
22247)
22248{
22249 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022250#ifdef WLAN_FEATURE_11AC
22251 /* Get the Version 1 Handler */
22252 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22253 if (WDI_getFwWlanFeatCaps(DOT11AC))
22254 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022255 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022256 }
22257#endif
22258 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 the chances of getting inlined*/
22260
Jeff Johnsone7245742012-09-05 17:12:55 -070022261 wpalMemoryCopy(phalConfigSta->bssId,
22262 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22263
22264 wpalMemoryCopy(phalConfigSta->staMac,
22265 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022266
22267 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22268 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22269 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22270 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22271 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22272 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22273 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22274 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22275 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22276 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22277 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22278 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22279 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22280 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22281 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22282 phalConfigSta->action = pwdiConfigSta->wdiAction;
22283 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22284 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22285 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22286 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22287 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22288 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22289 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022290
Jeff Johnson295189b2012-06-20 16:38:30 -070022291 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22292
Jeff Johnsone7245742012-09-05 17:12:55 -070022293 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022294 pwdiConfigSta->wdiSupportedRates.opRateMode;
22295 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22296 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022297 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022298 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22299 }
22300 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22301 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022303 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22304 }
22305 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22306 {
22307 phalConfigSta->supportedRates.aniLegacyRates[i] =
22308 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22309 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022310 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22312 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22313 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022314 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022315 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22316 }
22317 phalConfigSta->supportedRates.rxHighestDataRate =
22318 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22319
Jeff Johnsone7245742012-09-05 17:12:55 -070022320#ifdef WLAN_FEATURE_11AC
22321 if(phalConfigSta_V1 != NULL)
22322 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022323 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22324 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22325 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22326 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022327 }
22328#endif
22329
Jeff Johnson295189b2012-06-20 16:38:30 -070022330 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022331
Jeff Johnsone7245742012-09-05 17:12:55 -070022332#ifdef WLAN_FEATURE_11AC
22333 if(phalConfigSta_V1 != NULL)
22334 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022335 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22336 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022337 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022338 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22339 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22340
Jeff Johnsone7245742012-09-05 17:12:55 -070022341 }
22342#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022343}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022344
22345/*Translate a Rate set info from WDI into HAL*/
22346WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022347WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022348(
Jeff Johnson295189b2012-06-20 16:38:30 -070022349 tSirMacRateSet* pHalRateSet,
22350 WDI_RateSet* pwdiRateSet
22351)
22352{
Jeff Johnsone7245742012-09-05 17:12:55 -070022353 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22355
22356 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22357 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22358
22359 for ( i = 0; i < pHalRateSet->numRates; i++ )
22360 {
22361 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22362 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022363
Jeff Johnson295189b2012-06-20 16:38:30 -070022364}/*WDI_CopyWDIRateSetToHALRateSet*/
22365
22366
22367/*Translate an EDCA Parameter Record from WDI into HAL*/
22368WPT_STATIC WPT_INLINE void
22369WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022370(
Jeff Johnson295189b2012-06-20 16:38:30 -070022371 tSirMacEdcaParamRecord* phalEdcaParam,
22372 WDI_EdcaParamRecord* pWDIEdcaParam
22373)
22374{
Jeff Johnsone7245742012-09-05 17:12:55 -070022375 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 the chances of getting inlined*/
22377
22378 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22379 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22380 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22381 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22382
22383 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22384 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22385 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22386}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22387
22388
22389/*Copy a management frame header from WDI fmt into HAL fmt*/
22390WPT_STATIC WPT_INLINE void
22391WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22392(
22393 tSirMacMgmtHdr* pmacMgmtHdr,
22394 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22395)
22396{
22397 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22398 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22399 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22400 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22401 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22402 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22403 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22404 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22405 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22406 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22407 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22408
22409 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22410 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22411
Jeff Johnsone7245742012-09-05 17:12:55 -070022412 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022413 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022414 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022416 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022417 pwdiMacMgmtHdr->bssId, 6);
22418
22419 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22420 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22421 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22422
22423}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22424
22425
22426/*Copy config bss parameters from WDI fmt into HAL fmt*/
22427WPT_STATIC WPT_INLINE void
22428WDI_CopyWDIConfigBSSToHALConfigBSS
22429(
22430 tConfigBssParams* phalConfigBSS,
22431 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22432)
22433{
22434
22435 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022436#ifdef WLAN_FEATURE_11AC
22437 /* Get the Version 1 Handler */
22438 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22439 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022440 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022441#endif
22442
Jeff Johnson295189b2012-06-20 16:38:30 -070022443 wpalMemoryCopy( phalConfigBSS->bssId,
22444 pwdiConfigBSS->macBSSID,
22445 WDI_MAC_ADDR_LEN);
22446
22447#ifdef HAL_SELF_STA_PER_BSS
22448 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22449 pwdiConfigBSS->macSelfAddr,
22450 WDI_MAC_ADDR_LEN);
22451#endif
22452
22453 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22454
22455 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22456 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22457
Jeff Johnsone7245742012-09-05 17:12:55 -070022458 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022459 pwdiConfigBSS->ucShortSlotTimeSupported;
22460 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22461 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22462 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22463 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22464 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022465 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022466 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22467 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22468 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22469 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22470 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22471 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22472 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22473 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22474 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22475 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22476 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22477
Jeff Johnsone7245742012-09-05 17:12:55 -070022478 phalConfigBSS->htOperMode =
22479 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022480
22481 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22482 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22483 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22484 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22485
22486#ifdef WLAN_FEATURE_VOWIFI
22487 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22488#endif
22489
22490 /*! Used 32 as magic number because that is how the ssid is declared inside the
22491 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022492 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022493 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22494 pwdiConfigBSS->wdiSSID.ucLength : 32;
22495 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022496 pwdiConfigBSS->wdiSSID.sSSID,
22497 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022498
22499 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22500 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022501
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22503 &pwdiConfigBSS->wdiRateSet);
22504
22505 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22506
22507 if(phalConfigBSS->edcaParamsValid)
22508 {
22509 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22510 &pwdiConfigBSS->wdiBEEDCAParams);
22511 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22512 &pwdiConfigBSS->wdiBKEDCAParams);
22513 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22514 &pwdiConfigBSS->wdiVIEDCAParams);
22515 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22516 &pwdiConfigBSS->wdiVOEDCAParams);
22517 }
22518
Jeff Johnsone7245742012-09-05 17:12:55 -070022519 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022520
22521 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22522
22523#ifdef WLAN_FEATURE_VOWIFI_11R
22524
Jeff Johnsone7245742012-09-05 17:12:55 -070022525 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022526 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022527
Jeff Johnson295189b2012-06-20 16:38:30 -070022528 if( phalConfigBSS->extSetStaKeyParamValid )
22529 {
22530 /*-----------------------------------------------------------------------
22531 Copy the STA Key parameters into the HAL message
22532 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022533 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022534 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22535
Jeff Johnsone7245742012-09-05 17:12:55 -070022536 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022537 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22538
22539 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22540
22541 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22542
22543 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22544
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22546 keyIndex++)
22547 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022548 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022549 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22550 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22551 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22552 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22553 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22554 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022555 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022556 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022557 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022558 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022559 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022560 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22561 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022562 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022563 WDI_MAX_KEY_LENGTH);
22564 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022565 }
22566 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22567 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022568 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022569 sizeof(phalConfigBSS->extSetStaKeyParam) );
22570 }
22571
22572#endif /*WLAN_FEATURE_VOWIFI_11R*/
22573
Jeff Johnsone7245742012-09-05 17:12:55 -070022574#ifdef WLAN_FEATURE_11AC
22575 if(phalConfigBSS_V1 != NULL)
22576 {
22577 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22578 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22579 }
22580#endif
22581
Jeff Johnson295189b2012-06-20 16:38:30 -070022582}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22583
22584
Jeff Johnsone7245742012-09-05 17:12:55 -070022585/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022586 pointed to by user data */
22587WPT_STATIC WPT_INLINE void
22588WDI_ExtractRequestCBFromEvent
22589(
22590 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022591 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022592 void** ppUserData
22593)
22594{
22595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22596 switch ( pEvent->wdiRequest )
22597 {
22598 case WDI_START_REQ:
22599 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22600 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22601 break;
22602 case WDI_STOP_REQ:
22603 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22604 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22605 break;
22606 case WDI_INIT_SCAN_REQ:
22607 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22608 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22609 break;
22610 case WDI_START_SCAN_REQ:
22611 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22612 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22613 break;
22614 case WDI_END_SCAN_REQ:
22615 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22616 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22617 break;
22618 case WDI_FINISH_SCAN_REQ:
22619 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22620 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22621 break;
22622 case WDI_JOIN_REQ:
22623 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22624 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22625 break;
22626 case WDI_CONFIG_BSS_REQ:
22627 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22628 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22629 break;
22630 case WDI_DEL_BSS_REQ:
22631 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22632 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22633 break;
22634 case WDI_POST_ASSOC_REQ:
22635 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22636 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22637 break;
22638 case WDI_DEL_STA_REQ:
22639 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22640 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22641 break;
22642 case WDI_DEL_STA_SELF_REQ:
22643 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22644 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22645 break;
22646
22647 case WDI_SET_BSS_KEY_REQ:
22648 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22649 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22650 break;
22651 case WDI_RMV_BSS_KEY_REQ:
22652 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22653 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22654 break;
22655 case WDI_SET_STA_KEY_REQ:
22656 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22657 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22658 break;
22659 case WDI_RMV_STA_KEY_REQ:
22660 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22661 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22662 break;
22663 case WDI_ADD_TS_REQ:
22664 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22665 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22666 break;
22667 case WDI_DEL_TS_REQ:
22668 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22669 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22670 break;
22671 case WDI_UPD_EDCA_PRMS_REQ:
22672 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22673 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22674 break;
22675 case WDI_ADD_BA_SESSION_REQ:
22676 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22677 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22678 break;
22679 case WDI_DEL_BA_REQ:
22680 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22681 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22682 break;
22683#ifdef FEATURE_WLAN_CCX
22684 case WDI_TSM_STATS_REQ:
22685 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22686 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22687 break;
22688#endif
22689 case WDI_CH_SWITCH_REQ:
22690 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22691 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22692 break;
22693 case WDI_CONFIG_STA_REQ:
22694 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22695 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22696 break;
22697 case WDI_SET_LINK_ST_REQ:
22698 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22699 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22700 break;
22701 case WDI_GET_STATS_REQ:
22702 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22703 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22704 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022705#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22706 case WDI_GET_ROAM_RSSI_REQ:
22707 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22708 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
22709 break;
22710#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022711 case WDI_UPDATE_CFG_REQ:
22712 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22713 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22714 break;
22715 case WDI_ADD_BA_REQ:
22716 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22717 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22718 break;
22719 case WDI_TRIGGER_BA_REQ:
22720 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22721 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22722 break;
22723 case WDI_UPD_BCON_PRMS_REQ:
22724 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22725 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22726 break;
22727 case WDI_SND_BCON_REQ:
22728 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22729 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22730 break;
22731 case WDI_ENTER_BMPS_REQ:
22732 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22733 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22734 break;
22735 case WDI_EXIT_BMPS_REQ:
22736 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22737 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22738 break;
22739 case WDI_ENTER_UAPSD_REQ:
22740 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22741 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22742 break;
22743 case WDI_UPDATE_UAPSD_PARAM_REQ:
22744 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22745 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22746 break;
22747 case WDI_CONFIGURE_RXP_FILTER_REQ:
22748 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22749 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22750 break;
22751 case WDI_SET_BEACON_FILTER_REQ:
22752 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22753 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22754 break;
22755 case WDI_REM_BEACON_FILTER_REQ:
22756 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22757 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022758 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 case WDI_SET_RSSI_THRESHOLDS_REQ:
22760 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22761 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22762 break;
22763 case WDI_HOST_OFFLOAD_REQ:
22764 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22765 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22766 break;
22767 case WDI_WOWL_ADD_BC_PTRN_REQ:
22768 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22769 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22770 break;
22771 case WDI_WOWL_DEL_BC_PTRN_REQ:
22772 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22773 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22774 break;
22775 case WDI_WOWL_ENTER_REQ:
22776 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22777 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22778 break;
22779 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22780 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22781 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22782 break;
22783 case WDI_FLUSH_AC_REQ:
22784 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22785 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22786 break;
22787 case WDI_BTAMP_EVENT_REQ:
22788 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22789 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22790 break;
22791 case WDI_KEEP_ALIVE_REQ:
22792 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22793 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22794 break;
22795 case WDI_SET_TX_PER_TRACKING_REQ:
22796 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22797 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080022798 break;
22799 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
22800 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22801 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
22802 break;
22803 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22804 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22805 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
22806 break;
22807 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22808 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22809 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
22810 break;
22811
Jeff Johnson295189b2012-06-20 16:38:30 -070022812 default:
22813 *ppfnReqCB = NULL;
22814 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022815 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022816 }
22817}/*WDI_ExtractRequestCBFromEvent*/
22818
22819
22820/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022821 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 frame xtl is enabled for a particular STA.
22823
22824 WDI_PostAssocReq must have been called.
22825
Jeff Johnsone7245742012-09-05 17:12:55 -070022826 @param uSTAIdx: STA index
22827
Jeff Johnson295189b2012-06-20 16:38:30 -070022828 @see WDI_PostAssocReq
22829 @return Result of the function call
22830*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022831wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022832WDI_IsHwFrameTxTranslationCapable
22833(
22834 wpt_uint8 uSTAIdx
22835)
22836{
Jeff Johnsone7245742012-09-05 17:12:55 -070022837 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022838 uma value*/
22839 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022840 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022841 ------------------------------------------------------------------------*/
22842 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22843 {
22844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22845 "WDI API call before module is initialized - Fail request");
22846
Jeff Johnsone7245742012-09-05 17:12:55 -070022847 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022848 }
22849
Gopichand Nakkalaba261272013-01-03 15:45:56 -080022850#ifdef WLAN_SOFTAP_VSTA_FEATURE
22851 if (IS_VSTA_IDX(uSTAIdx))
22852 {
22853 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22854 "STA %d is a Virtual STA, "
22855 "HW frame translation disabled", uSTAIdx);
22856 return eWLAN_PAL_FALSE;
22857 }
22858#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070022859
Jeff Johnson295189b2012-06-20 16:38:30 -070022860 return gWDICb.bFrameTransEnabled;
22861}/*WDI_IsHwFrameTxTranslationCapable*/
22862
22863#ifdef FEATURE_WLAN_SCAN_PNO
22864/**
22865 @brief WDI_SetPreferredNetworkList
22866
Jeff Johnsone7245742012-09-05 17:12:55 -070022867 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022868 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022869
Jeff Johnson295189b2012-06-20 16:38:30 -070022870 wdiPNOScanCb: callback for passing back the response
22871 of the Set PNO operation received from the
22872 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022873
Jeff Johnson295189b2012-06-20 16:38:30 -070022874 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022875 callback
22876
Jeff Johnson295189b2012-06-20 16:38:30 -070022877 @return Result of the function call
22878*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022879WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022880WDI_SetPreferredNetworkReq
22881(
22882 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22883 WDI_PNOScanCb wdiPNOScanCb,
22884 void* pUserData
22885)
22886{
22887 WDI_EventInfoType wdiEventData = {{0}};
22888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22889
22890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022891 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022892 ------------------------------------------------------------------------*/
22893 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22894 {
22895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22896 "WDI API call before module is initialized - Fail request");
22897
Jeff Johnsone7245742012-09-05 17:12:55 -070022898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022899 }
22900
22901 /*------------------------------------------------------------------------
22902 Fill in Event data and post to the Main FSM
22903 ------------------------------------------------------------------------*/
22904 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022905 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022906 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022907 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022908 wdiEventData.pUserData = pUserData;
22909
22910 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22911}
22912
22913
22914/**
22915 @brief WDI_SetRssiFilterReq
22916
Jeff Johnsone7245742012-09-05 17:12:55 -070022917 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022918 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022919
Jeff Johnson295189b2012-06-20 16:38:30 -070022920 wdiRssiFilterCb: callback for passing back the response
22921 of the Set RSSI Filter operation received from the
22922 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022923
Jeff Johnson295189b2012-06-20 16:38:30 -070022924 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022925 callback
22926
Jeff Johnson295189b2012-06-20 16:38:30 -070022927 @return Result of the function call
22928*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022929WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022930WDI_SetRssiFilterReq
22931(
22932 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22933 WDI_RssiFilterCb wdiRssiFilterCb,
22934 void* pUserData
22935)
22936{
22937 WDI_EventInfoType wdiEventData = {{0}};
22938 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22939
22940 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022941 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022942 ------------------------------------------------------------------------*/
22943 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22944 {
22945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22946 "WDI API call before module is initialized - Fail request");
22947
Jeff Johnsone7245742012-09-05 17:12:55 -070022948 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022949 }
22950
22951 /*------------------------------------------------------------------------
22952 Fill in Event data and post to the Main FSM
22953 ------------------------------------------------------------------------*/
22954 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022955 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022956 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022957 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022958 wdiEventData.pUserData = pUserData;
22959
22960 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22961}/*WDI_SetRssiFilterReq*/
22962
22963/**
22964 @brief WDI_UpdateScanParamsReq
22965
Jeff Johnsone7245742012-09-05 17:12:55 -070022966 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022967 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022968
Jeff Johnson295189b2012-06-20 16:38:30 -070022969 wdiUpdateScanParamsCb: callback for passing back the response
22970 of the Set PNO operation received from the
22971 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022972
Jeff Johnson295189b2012-06-20 16:38:30 -070022973 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022974 callback
22975
Jeff Johnson295189b2012-06-20 16:38:30 -070022976 @return Result of the function call
22977*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022978WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022979WDI_UpdateScanParamsReq
22980(
22981 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22982 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22983 void* pUserData
22984)
22985{
22986 WDI_EventInfoType wdiEventData = {{0}};
22987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22988
22989 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022990 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022991 ------------------------------------------------------------------------*/
22992 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22993 {
22994 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22995 "WDI API call before module is initialized - Fail request");
22996
Jeff Johnsone7245742012-09-05 17:12:55 -070022997 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 }
22999
23000 /*------------------------------------------------------------------------
23001 Fill in Event data and post to the Main FSM
23002 ------------------------------------------------------------------------*/
23003 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023004 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023005 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023006 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023007 wdiEventData.pUserData = pUserData;
23008
23009 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23010}
23011
23012/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023013 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023014 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023015
23016 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023017 pwdiPNOScanReqParams: pointer to the info received
23018 from upper layers
23019 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023020 and its size
23021
Jeff Johnson295189b2012-06-20 16:38:30 -070023022 @return Result of the function call
23023*/
23024
23025WDI_Status
23026WDI_PackPreferredNetworkList
23027(
23028 WDI_ControlBlockType* pWDICtx,
23029 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23030 wpt_uint8** ppSendBuffer,
23031 wpt_uint16* pSize
23032)
23033{
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023035 wpt_uint16 usDataOffset = 0;
23036 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023037 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023038 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023039 /*-----------------------------------------------------------------------
23040 Get message buffer
23041 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023042 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023043 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023044 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023045 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023046 {
23047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23048 "Unable to get send buffer in Set PNO req %x ",
23049 pwdiPNOScanReqParams);
23050 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023052 }
23053
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023054 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23055
Jeff Johnson295189b2012-06-20 16:38:30 -070023056 /*-------------------------------------------------------------------------
23057 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23058 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023059 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023060 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023061 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023062 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23063
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023064 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023065 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023066 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023067 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023068 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23069
23070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023071 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23073 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23074 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23075
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023076 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 {
23078 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023079 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023080 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23081
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023082 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023083 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023084 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023085
23086 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023087 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023088 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023089
23090 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023091 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023092 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023093
Jeff Johnsone7245742012-09-05 17:12:55 -070023094 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023095 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023096 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023097 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23098 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23099 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23100 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023101
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023102 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023103 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023104 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023105
23106 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023107 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023108 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23109
23110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023111 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023112 pPrefNetwListParams->aNetworks[i].ssId.length,
23113 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023114 }
23115
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023116 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023117 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023118 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23119 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23120 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23121
23122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023123 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023124 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023125 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23126 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23127
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023128 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023129 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023130 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023131 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023132 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023133 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23134 }
23135
23136 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023137 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023138 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23139 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23140 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023141 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023142
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023143 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023144 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023145 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023146
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023147 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023148 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23149 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23150 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023151 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023152
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023153 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023154 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023155 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023156
23157 /*Set the output values*/
23158 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023159 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023160
23161 return WDI_STATUS_SUCCESS;
23162}/*WDI_PackPreferredNetworkList*/
23163
23164/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023165 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023166 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023167
23168 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023169 pwdiPNOScanReqParams: pointer to the info received
23170 from upper layers
23171 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023172 and its size
23173
Jeff Johnson295189b2012-06-20 16:38:30 -070023174 @return Result of the function call
23175*/
23176
23177WDI_Status
23178WDI_PackPreferredNetworkListNew
23179(
23180 WDI_ControlBlockType* pWDICtx,
23181 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23182 wpt_uint8** ppSendBuffer,
23183 wpt_uint16* pSize
23184)
23185{
Jeff Johnsone7245742012-09-05 17:12:55 -070023186 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023187 wpt_uint16 usDataOffset = 0;
23188 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023189 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023190 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023191
23192 /*-----------------------------------------------------------------------
23193 Get message buffer
23194 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023195 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023196 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023197 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023198 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023199 {
23200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23201 "Unable to get send buffer in Set PNO req %x ",
23202 pwdiPNOScanReqParams);
23203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023205 }
23206
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023207 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23208
Jeff Johnson295189b2012-06-20 16:38:30 -070023209 /*-------------------------------------------------------------------------
23210 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23211 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023212 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023214 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23216
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023217 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023218 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023219 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023220 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023221 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23222
23223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023224 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023225 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23226 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23227 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23228
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023229 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023230 {
23231 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023232 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23234
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023235 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023237 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023238
23239 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023240 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023241 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023242
23243 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023244 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023245 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023246
23247 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023248 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023249 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023250
Jeff Johnsone7245742012-09-05 17:12:55 -070023251 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023252 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023253 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023254 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23255
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023256 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023257 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023258 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023259
23260 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023261 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023262 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23263
23264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023265 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023266 pPrefNetwListParams->aNetworks[i].ssId.length,
23267 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023268 }
23269
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023270 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023271 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023272 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23273 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23274 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23275
23276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023277 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023278 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023279 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23280 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23281
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023282 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023283 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023284 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023285 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023286 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023287 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23288 }
23289
23290 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023291 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023292 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23293 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23294 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023295 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023296
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023297 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023298 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023299 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023300
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023301 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023302 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23303 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23304 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023305 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023306
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023307 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023308 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023309 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023310
Jeff Johnson295189b2012-06-20 16:38:30 -070023311
23312 /*Set the output values*/
23313 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023314 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023315
23316 return WDI_STATUS_SUCCESS;
23317}/*WDI_PackPreferredNetworkListNew*/
23318
23319/**
23320 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023321
23322 @param pWDICtx: pointer to the WLAN DAL context
23323 pEventData: pointer to the event information structure
23324
Jeff Johnson295189b2012-06-20 16:38:30 -070023325 @return Result of the function call
23326*/
23327WDI_Status
23328WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023329(
Jeff Johnson295189b2012-06-20 16:38:30 -070023330 WDI_ControlBlockType* pWDICtx,
23331 WDI_EventInfoType* pEventData
23332)
23333{
23334 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23335 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023336 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023337 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023338 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023339
23340 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023341 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023342 -------------------------------------------------------------------------*/
23343 if (( NULL == pEventData ) ||
23344 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23345 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23346 {
23347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023348 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 }
23352
23353 /*-------------------------------------------------------------------------
23354 Pack the PNO request structure based on version
23355 -------------------------------------------------------------------------*/
23356 if ( pWDICtx->wdiPNOVersion > 0 )
23357 {
23358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023359 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023360 pWDICtx->wdiPNOVersion);
23361
23362 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23363 &pSendBuffer, &usSendSize);
23364 }
23365 else
23366 {
23367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023368 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 pWDICtx->wdiPNOVersion);
23370
23371 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23372 &pSendBuffer, &usSendSize);
23373 }
23374
23375 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23376 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23377 {
23378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023379 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023381 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023382 }
23383
23384 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023385 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023386
23387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023388 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023389 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023390 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23391 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023392}
23393
23394/**
23395 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023396
23397 @param pWDICtx: pointer to the WLAN DAL context
23398 pEventData: pointer to the event information structure
23399
Jeff Johnson295189b2012-06-20 16:38:30 -070023400 @see
23401 @return Result of the function call
23402*/
23403WDI_Status
23404WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023405(
Jeff Johnson295189b2012-06-20 16:38:30 -070023406 WDI_ControlBlockType* pWDICtx,
23407 WDI_EventInfoType* pEventData
23408)
23409{
23410 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23411 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023412 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023413 wpt_uint16 usDataOffset = 0;
23414 wpt_uint16 usSendSize = 0;
23415 wpt_uint8 ucRssiThreshold;
23416
23417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023418 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023419 -------------------------------------------------------------------------*/
23420 if (( NULL == pEventData ) ||
23421 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
23422 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
23423 {
23424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023428 }
23429
23430 /*-----------------------------------------------------------------------
23431 Get message buffer
23432 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023433 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023434 sizeof(ucRssiThreshold),
23435 &pSendBuffer, &usDataOffset, &usSendSize))||
23436 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
23437 {
23438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23439 "Unable to get send buffer in Set PNO req %x %x %x",
23440 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
23441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023443 }
23444
23445 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
23446
Jeff Johnsone7245742012-09-05 17:12:55 -070023447 wpalMemoryCopy( pSendBuffer+usDataOffset,
23448 &ucRssiThreshold,
23449 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070023450
23451 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023452 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023453
23454 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023455 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023456 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23458 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023459}
23460
23461
23462/**
23463 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070023464
23465 @param pWDICtx: pointer to the WLAN DAL context
23466 pEventData: pointer to the event information structure
23467
Jeff Johnson295189b2012-06-20 16:38:30 -070023468 @see
23469 @return Result of the function call
23470*/
23471WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023472WDI_PackUpdateScanParamsReq
23473(
23474 WDI_ControlBlockType* pWDICtx,
23475 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23476 wpt_uint8** ppSendBuffer,
23477 wpt_uint16* pSize
23478)
23479{
23480 wpt_uint8* pSendBuffer = NULL;
23481 wpt_uint16 usDataOffset = 0;
23482 wpt_uint16 usSendSize = 0;
23483 tUpdateScanParams updateScanParams = {0};
23484
23485
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023487 "Begin WDI Update Scan Parameters Old Style Params");
23488 /*-----------------------------------------------------------------------
23489 Get message buffer
23490 -----------------------------------------------------------------------*/
23491 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23492 sizeof(updateScanParams),
23493 &pSendBuffer, &usDataOffset, &usSendSize))||
23494 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23495 {
23496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23497 "Unable to get send buffer in Update Scan Params req %x",
23498 pwdiUpdateScanParams);
23499 WDI_ASSERT(0);
23500 return WDI_STATUS_E_FAILURE;
23501 }
23502
23503 //
23504 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23505 //
23506
23507 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23508 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23509
23510 updateScanParams.ucChannelCount =
23511 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23512 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23513 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23514 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
23515
23516 wpalMemoryCopy( updateScanParams.aChannels,
23517 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23518 updateScanParams.ucChannelCount);
23519
23520
23521 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23522 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23523 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23524 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23525 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23526
23527 wpalMemoryCopy( pSendBuffer+usDataOffset,
23528 &updateScanParams,
23529 sizeof(updateScanParams));
23530
23531 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23532 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23533
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023535 "End Update Scan Parameters Old Style");
23536
23537 /*Set the output values*/
23538 *ppSendBuffer = pSendBuffer;
23539 *pSize = usSendSize;
23540
23541 return WDI_STATUS_SUCCESS;
23542}
23543
23544/**
23545 @brief Process Update Scan Params function
23546
23547 @param pWDICtx: pointer to the WLAN DAL context
23548 pEventData: pointer to the event information structure
23549
23550 @see
23551 @return Result of the function call
23552*/
23553WDI_Status
23554WDI_PackUpdateScanParamsReqEx
23555(
23556 WDI_ControlBlockType* pWDICtx,
23557 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23558 wpt_uint8** ppSendBuffer,
23559 wpt_uint16* pSize
23560)
23561{
23562 wpt_uint8* pSendBuffer = NULL;
23563 wpt_uint16 usDataOffset = 0;
23564 wpt_uint16 usSendSize = 0;
23565 tUpdateScanParamsEx updateScanParams = {0};
23566
23567
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023568 /*-----------------------------------------------------------------------
23569 Get message buffer
23570 -----------------------------------------------------------------------*/
23571 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23572 sizeof(updateScanParams),
23573 &pSendBuffer, &usDataOffset, &usSendSize))||
23574 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23575 {
23576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23577 "Unable to get send buffer in Update Scan Params Ex req %x",
23578 pwdiUpdateScanParams);
23579 WDI_ASSERT(0);
23580 return WDI_STATUS_E_FAILURE;
23581 }
23582
23583 //
23584 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23585 //
23586
23587 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23588 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23589
23590 updateScanParams.ucChannelCount =
23591 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23592 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
23593 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23594 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23595
23596 wpalMemoryCopy( updateScanParams.aChannels,
23597 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23598 updateScanParams.ucChannelCount);
23599
23600
23601 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23602 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23603 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23604 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23605 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23606
23607 wpalMemoryCopy( pSendBuffer+usDataOffset,
23608 &updateScanParams,
23609 sizeof(updateScanParams));
23610
23611 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23612 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23613
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023614 /*Set the output values*/
23615 *ppSendBuffer = pSendBuffer;
23616 *pSize = usSendSize;
23617
23618 return WDI_STATUS_SUCCESS;
23619}
23620
23621/**
23622 @brief Process Update Scan Params function
23623
23624 @param pWDICtx: pointer to the WLAN DAL context
23625 pEventData: pointer to the event information structure
23626
23627 @see
23628 @return Result of the function call
23629*/
23630WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023631WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023632(
Jeff Johnson295189b2012-06-20 16:38:30 -070023633 WDI_ControlBlockType* pWDICtx,
23634 WDI_EventInfoType* pEventData
23635)
23636{
23637 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23638 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023639 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023640 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023641 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023642
23643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023645 -------------------------------------------------------------------------*/
23646 if (( NULL == pEventData ) ||
23647 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23648 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23649 {
23650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023651 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023654 }
23655
23656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23657 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023658
23659 //
23660 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23661 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023662 if ( pWDICtx->wlanVersion.revision < 1 )
23663 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023664 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023665 &pSendBuffer, &usSendSize);
23666 }
23667 else
23668 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023669 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23670 &pSendBuffer, &usSendSize);
23671 }
23672
23673 if(WDI_STATUS_SUCCESS != wdiStatus)
23674 {
23675 //memory allocation failed
23676 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023677 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023678
Jeff Johnson295189b2012-06-20 16:38:30 -070023679 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023680 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023681 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023682 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023683 wdiUpdateScanParamsCb, pEventData->pUserData,
23684 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023685}
23686
23687/**
23688 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023689
23690 @param pWDICtx: pointer to the WLAN DAL context
23691 pEventData: pointer to the event information structure
23692
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 @see
23694 @return Result of the function call
23695*/
23696WDI_Status
23697WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023698(
Jeff Johnson295189b2012-06-20 16:38:30 -070023699 WDI_ControlBlockType* pWDICtx,
23700 WDI_EventInfoType* pEventData
23701)
23702{
23703 WDI_LowLevelIndType wdiInd;
23704 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23705
23706
23707 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023708 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023709 -------------------------------------------------------------------------*/
23710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23711 ( NULL == pEventData->pEventData ))
23712 {
23713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023715 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023717 }
23718
23719 /*-------------------------------------------------------------------------
23720 Extract indication and send it to UMAC
23721 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023722 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23723 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 sizeof(tPrefNetwFoundParams));
23725
23726 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023727 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023728
23729 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23730
Jeff Johnsone7245742012-09-05 17:12:55 -070023731 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023732 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023733 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023734
Jeff Johnsone7245742012-09-05 17:12:55 -070023735 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23736 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023737 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23738
23739 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23740 prefNetwFoundInd.prefNetwFoundParams.rssi;
23741
23742 // DEBUG
23743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23744 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23745 wdiInd.wdiIndicationType,
23746 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23747 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23748
ltimariu034f7d62013-01-24 18:54:33 -080023749 if ( pWDICtx->wdiLowLevelIndCB )
23750 {
23751 /*Notify UMAC*/
23752 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
23753 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023754
23755 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023756}
23757
23758/**
23759 @brief Process PNO Rsp function (called when a
23760 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023761
23762 @param pWDICtx: pointer to the WLAN DAL context
23763 pEventData: pointer to the event information structure
23764
Jeff Johnson295189b2012-06-20 16:38:30 -070023765 @see
23766 @return Result of the function call
23767*/
23768WDI_Status
23769WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023770(
Jeff Johnson295189b2012-06-20 16:38:30 -070023771 WDI_ControlBlockType* pWDICtx,
23772 WDI_EventInfoType* pEventData
23773)
23774{
23775 WDI_Status wdiStatus;
23776 eHalStatus halStatus;
23777 WDI_PNOScanCb wdiPNOScanCb = NULL;
23778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23779
23780 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023781 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023782 -------------------------------------------------------------------------*/
23783 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23784 ( NULL == pEventData->pEventData ))
23785 {
23786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023787 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023789 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023790 }
23791
23792
Jeff Johnsone7245742012-09-05 17:12:55 -070023793 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023794
23795 /*-------------------------------------------------------------------------
23796 Extract response and send it to UMAC
23797 -------------------------------------------------------------------------*/
23798 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023799 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023800
23801 /*Notify UMAC*/
23802 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23803
Jeff Johnsone7245742012-09-05 17:12:55 -070023804 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023805}/*WDI_ProcessSetPreferredNetworkRsp*/
23806
23807/**
23808 @brief Process RSSI Filter Rsp function (called when a
23809 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023810
23811 @param pWDICtx: pointer to the WLAN DAL context
23812 pEventData: pointer to the event information structure
23813
Jeff Johnson295189b2012-06-20 16:38:30 -070023814 @see
23815 @return Result of the function call
23816*/
23817WDI_Status
23818WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023819(
Jeff Johnson295189b2012-06-20 16:38:30 -070023820 WDI_ControlBlockType* pWDICtx,
23821 WDI_EventInfoType* pEventData
23822)
23823{
23824 WDI_Status wdiStatus;
23825 eHalStatus halStatus;
23826 WDI_RssiFilterCb wdiRssiFilterCb;
23827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23828
23829 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023830 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023831 -------------------------------------------------------------------------*/
23832 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23833 ( NULL == pEventData->pEventData ))
23834 {
23835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023836 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023837 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023839 }
23840
Jeff Johnsone7245742012-09-05 17:12:55 -070023841 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023842
23843 /*-------------------------------------------------------------------------
23844 Extract response and send it to UMAC
23845 -------------------------------------------------------------------------*/
23846 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023848
23849 /*Notify UMAC*/
23850 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23851
Jeff Johnsone7245742012-09-05 17:12:55 -070023852 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023853}/*WDI_ProcessSetRssiFilterRsp*/
23854
23855/**
23856 @brief Process Update Scan Params Rsp function (called when a
23857 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023858
23859 @param pWDICtx: pointer to the WLAN DAL context
23860 pEventData: pointer to the event information structure
23861
Jeff Johnson295189b2012-06-20 16:38:30 -070023862 @see
23863 @return Result of the function call
23864*/
23865WDI_Status
23866WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023867(
Jeff Johnson295189b2012-06-20 16:38:30 -070023868 WDI_ControlBlockType* pWDICtx,
23869 WDI_EventInfoType* pEventData
23870)
23871{
23872 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023873 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023874 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023875 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23877
23878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023879 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023880 -------------------------------------------------------------------------*/
23881 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23882 ( NULL == pEventData->pEventData ))
23883 {
23884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023885 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023888 }
23889
23890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023891 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023892
Jeff Johnsone7245742012-09-05 17:12:55 -070023893 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023894
23895 /*-------------------------------------------------------------------------
23896 Extract response and send it to UMAC
23897 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023898 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23899 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023900 sizeof(halUpdScanParams.status));
23901
23902 uStatus = halUpdScanParams.status;
23903
23904 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023905 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023906
23907 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023908 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023909
Jeff Johnsone7245742012-09-05 17:12:55 -070023910 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023911
23912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023913 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023914 halUpdScanParams.status);
23915
23916 /*Notify UMAC*/
23917 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23918
Jeff Johnsone7245742012-09-05 17:12:55 -070023919 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023920}
23921#endif // FEATURE_WLAN_SCAN_PNO
23922
23923#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023924WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023925WDI_8023MulticastListReq
23926(
23927 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23928 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23929 void* pUserData
23930)
23931{
23932 WDI_EventInfoType wdiEventData;
23933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23934
23935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023936 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023937
23938 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023939 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 ------------------------------------------------------------------------*/
23941 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23942 {
23943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23944 "WDI API call before module is initialized - Fail request");
23945
Jeff Johnsone7245742012-09-05 17:12:55 -070023946 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023947 }
23948
23949 /*------------------------------------------------------------------------
23950 Fill in Event data and post to the Main FSM
23951 ------------------------------------------------------------------------*/
23952 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023953 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023954 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023955 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023956 wdiEventData.pUserData = pUserData;
23957
23958 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23959}
23960
Jeff Johnsone7245742012-09-05 17:12:55 -070023961WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023962WDI_ReceiveFilterSetFilterReq
23963(
23964 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23965 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23966 void* pUserData
23967)
23968{
23969 WDI_EventInfoType wdiEventData;
23970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23971
23972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023973 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023974
23975 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023977 ------------------------------------------------------------------------*/
23978 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23979 {
23980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23981 "WDI API call before module is initialized - Fail request");
23982
Jeff Johnsone7245742012-09-05 17:12:55 -070023983 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023984 }
23985
23986 /*------------------------------------------------------------------------
23987 Fill in Event data and post to the Main FSM
23988 ------------------------------------------------------------------------*/
23989 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023990 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
23991 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070023992 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
23993 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023994 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 wdiEventData.pUserData = pUserData;
23996
23997
23998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23999}
24000
Jeff Johnsone7245742012-09-05 17:12:55 -070024001WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024002WDI_FilterMatchCountReq
24003(
24004 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
24005 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
24006 void* pUserData
24007)
24008{
24009 WDI_EventInfoType wdiEventData;
24010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24011
24012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024013 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024014
24015 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024016 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024017 ------------------------------------------------------------------------*/
24018 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24019 {
24020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24021 "WDI API call before module is initialized - Fail request");
24022
Jeff Johnsone7245742012-09-05 17:12:55 -070024023 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024024 }
24025
24026 /*------------------------------------------------------------------------
24027 Fill in Event data and post to the Main FSM
24028 ------------------------------------------------------------------------*/
24029 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024030 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024032 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024033 wdiEventData.pUserData = pUserData;
24034
24035
24036 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24037}
24038
Jeff Johnsone7245742012-09-05 17:12:55 -070024039WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024040WDI_ReceiveFilterClearFilterReq
24041(
24042 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
24043 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
24044 void* pUserData
24045)
24046{
24047 WDI_EventInfoType wdiEventData;
24048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24049
24050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024051 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024052
24053 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024054 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024055 ------------------------------------------------------------------------*/
24056 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24057 {
24058 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24059 "WDI API call before module is initialized - Fail request");
24060
Jeff Johnsone7245742012-09-05 17:12:55 -070024061 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024062 }
24063
24064 /*------------------------------------------------------------------------
24065 Fill in Event data and post to the Main FSM
24066 ------------------------------------------------------------------------*/
24067 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024068 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024069 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024070 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024071 wdiEventData.pUserData = pUserData;
24072
24073
24074 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24075}
24076
24077/**
24078 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024079
24080 @param pWDICtx: pointer to the WLAN DAL context
24081 pEventData: pointer to the event information structure
24082
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 @see
24084 @return Result of the function call
24085*/
24086WDI_Status
24087WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024088(
Jeff Johnson295189b2012-06-20 16:38:30 -070024089 WDI_ControlBlockType* pWDICtx,
24090 WDI_EventInfoType* pEventData
24091)
24092{
24093 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
24094 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024095 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024096 wpt_uint16 usDataOffset = 0;
24097 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024098 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024099 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024100 wpt_uint8 ucCurrentBSSSesIdx = 0;
24101 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024102
24103 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024104 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024105
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024106 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
24107 if( NULL == pRcvFltMcAddrListType )
24108 {
24109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24110 "Failed to alloc in WDI_Process8023MulticastListReq");
24111 return WDI_STATUS_E_FAILURE;
24112 }
24113
Jeff Johnson295189b2012-06-20 16:38:30 -070024114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024116 -------------------------------------------------------------------------*/
24117 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024118 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024120 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024121 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
24122 {
24123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024124 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024125 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024126 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024127 return WDI_STATUS_E_FAILURE;
24128 }
24129
24130 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24131 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
24132 &pBSSSes);
24133 if ( NULL == pBSSSes )
24134 {
24135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024136 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024137 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024138 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024139 }
24140
24141 /*-----------------------------------------------------------------------
24142 Get message buffer
24143 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024144 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24145 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024146 sizeof(tHalRcvFltMcAddrListType),
24147 &pSendBuffer, &usDataOffset, &usSendSize))||
24148 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
24149 {
24150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24151 "Unable to get send buffer in "
24152 "WDI_Process8023MulticastListReq() %x %x %x",
24153 pEventData, pwdiFltPktSetMcListReqParamsType,
24154 wdi8023MulticastListCb);
24155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024157 }
24158
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024159 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070024160 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024161 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024162 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024163 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070024164 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
24165 sizeof(tSirMacAddr));
24166 }
24167
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024168 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024169 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024170 pRcvFltMcAddrListType,
24171 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070024172
24173 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024174 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024175
24176
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024177 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024179 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024180 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024181 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024182 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024183 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024184}
24185
24186/**
24187 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024188
24189 @param pWDICtx: pointer to the WLAN DAL context
24190 pEventData: pointer to the event information structure
24191
Jeff Johnson295189b2012-06-20 16:38:30 -070024192 @see
24193 @return Result of the function call
24194*/
24195WDI_Status
24196WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024197(
Jeff Johnson295189b2012-06-20 16:38:30 -070024198 WDI_ControlBlockType* pWDICtx,
24199 WDI_EventInfoType* pEventData
24200)
24201{
24202 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
24203 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024204 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024205 wpt_uint16 usDataOffset = 0;
24206 wpt_uint16 usSendSize = 0;
24207 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024208 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024209 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024210 wpt_uint8 ucCurrentBSSSesIdx = 0;
24211 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024212 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
24213 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024214
24215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024216 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024217
24218 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024219 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024220 -------------------------------------------------------------------------*/
24221 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024222 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070024223 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024224 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024225 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
24226 {
24227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024228 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024230 return WDI_STATUS_E_FAILURE;
24231 }
24232
24233 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24234 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
24235 &pBSSSes);
24236 if ( NULL == pBSSSes )
24237 {
24238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024239 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024240 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024241 }
24242
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024243 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
24244 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024245
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024246 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
24247 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24248 * sizeof(tHalSessionizedRcvPktFilterCfgType));
24249
24250 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
24251 usSessRcvPktFilterCfgSize);
24252
24253 if(NULL == pSessRcvPktFilterCfg)
24254 {
24255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24256 "%s: Failed to allocate memory for "
24257 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024258 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024259 WDI_ASSERT(0);
24260 return WDI_STATUS_E_FAILURE;
24261 }
24262
24263 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
24264
24265 /*-----------------------------------------------------------------------
24266 Get message buffer
24267 -----------------------------------------------------------------------*/
24268
24269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
24270 usSessRcvPktFilterCfgSize,
24271 &pSendBuffer, &usDataOffset, &usSendSize))||
24272 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
24273 {
24274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24275 "Unable to get send buffer in "
24276 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24277 pEventData, pwdiSetRcvPktFilterReqInfo,
24278 wdiReceiveFilterSetFilterCb);
24279 WDI_ASSERT(0);
24280 wpalMemoryFree(pSessRcvPktFilterCfg);
24281 return WDI_STATUS_E_FAILURE;
24282 }
24283
24284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24285 "UsData Off %d UsSend %d cfg %d",usDataOffset,
24286 usSendSize,pSessRcvPktFilterCfg);
24287
24288 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24289 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24290 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24291 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
24292
24293 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
24294
24295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24296 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
24297 pSessRcvPktFilterCfg->filterType);
24298 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24299 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
24300 pSessRcvPktFilterCfg->coleasceTime);
24301
24302 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
24303 {
24304 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
24305 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24306 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
24307 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24308 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
24309 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24310 pSessRcvPktFilterCfg->paramsData[i].dataLength =
24311 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
24312
24313 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
24314 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24315 8);
24316 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
24317 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24318 8);
24319
24320 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24321 "Out:Proto %d Comp Flag %d \n",
24322 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
24323 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
24324
24325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24326 "Data Offset %d Data Len %d\n",
24327 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
24328 pSessRcvPktFilterCfg->paramsData[i].dataLength);
24329
24330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24331 "CData: %d:%d:%d:%d:%d:%d\n",
24332 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
24333 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
24334 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
24335 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
24336 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
24337 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
24338
24339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24340 "MData: %d:%d:%d:%d:%d:%d\n",
24341 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
24342 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
24343 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
24344 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
24345 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
24346 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
24347 }
24348
24349 wpalMemoryCopy( pSendBuffer+usDataOffset,
24350 pSessRcvPktFilterCfg,
24351 usSessRcvPktFilterCfgSize);
24352
24353
24354 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24355 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
24356
24357 wpalMemoryFree(pSessRcvPktFilterCfg);
24358
24359 }
24360 /*If SLM_SESSIONIZATION is not supported then do this */
24361 else
24362 {
24363 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
24364 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24365 * sizeof(tHalRcvPktFilterParams));
24366
24367 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 usRcvPktFilterCfgSize);
24369
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024370 if(NULL == pRcvPktFilterCfg)
24371 {
24372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24373 "%s: Failed to allocate memory for "
24374 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024375 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024376 WDI_ASSERT(0);
24377 return WDI_STATUS_E_FAILURE;
24378 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024379
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024380 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024381
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024382 /*-----------------------------------------------------------------------
24383 Get message buffer
24384 -----------------------------------------------------------------------*/
24385 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024386 usRcvPktFilterCfgSize,
24387 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024388 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
24389 {
24390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070024391 "Unable to get send buffer in "
24392 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24393 pEventData, pwdiSetRcvPktFilterReqInfo,
24394 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024395 WDI_ASSERT(0);
24396 wpalMemoryFree(pRcvPktFilterCfg);
24397 return WDI_STATUS_E_FAILURE;
24398 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024399
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024401 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070024402 usSendSize,usRcvPktFilterCfgSize);
24403
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024404 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24405 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24406 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24407 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070024408
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024410 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024411 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024413 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070024414 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070024415
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024416 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
24417 {
24418 pRcvPktFilterCfg->paramsData[i].protocolLayer =
24419 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24420 pRcvPktFilterCfg->paramsData[i].cmpFlag =
24421 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24422 pRcvPktFilterCfg->paramsData[i].dataOffset =
24423 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24424 pRcvPktFilterCfg->paramsData[i].dataLength =
24425 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070024426
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024427 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024428 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24429 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024430 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070024431 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24432 8);
24433
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024435 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070024436 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070024437 pRcvPktFilterCfg->paramsData[i].cmpFlag);
24438
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24440 "Data Offset %d Data Len %d\n",
24441 pRcvPktFilterCfg->paramsData[i].dataOffset,
24442 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024443
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24445 "CData: %d:%d:%d:%d:%d:%d\n",
24446 pRcvPktFilterCfg->paramsData[i].compareData[0],
24447 pRcvPktFilterCfg->paramsData[i].compareData[1],
24448 pRcvPktFilterCfg->paramsData[i].compareData[2],
24449 pRcvPktFilterCfg->paramsData[i].compareData[3],
24450 pRcvPktFilterCfg->paramsData[i].compareData[4],
24451 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070024452
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24454 "MData: %d:%d:%d:%d:%d:%d\n",
24455 pRcvPktFilterCfg->paramsData[i].dataMask[0],
24456 pRcvPktFilterCfg->paramsData[i].dataMask[1],
24457 pRcvPktFilterCfg->paramsData[i].dataMask[2],
24458 pRcvPktFilterCfg->paramsData[i].dataMask[3],
24459 pRcvPktFilterCfg->paramsData[i].dataMask[4],
24460 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
24461 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024462
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024463 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070024464 pRcvPktFilterCfg,
24465 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024466
24467
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024468 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24469 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024470
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024472 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024473 wpalMemoryFree(pRcvPktFilterCfg);
24474 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024476 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024477 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024478 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024479 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024480 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024481}
24482
24483/**
24484 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024485
24486 @param pWDICtx: pointer to the WLAN DAL context
24487 pEventData: pointer to the event information structure
24488
Jeff Johnson295189b2012-06-20 16:38:30 -070024489 @see
24490 @return Result of the function call
24491*/
24492WDI_Status
24493WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024494(
Jeff Johnson295189b2012-06-20 16:38:30 -070024495 WDI_ControlBlockType* pWDICtx,
24496 WDI_EventInfoType* pEventData
24497)
24498{
24499 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
24500 NULL;
24501 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
24502 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024503 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024504 wpt_uint16 usDataOffset = 0;
24505 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024506 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
24507 wpt_uint8 ucCurrentBSSSesIdx = 0;
24508 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024509
24510 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024511 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024512
24513 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024514 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024515 -------------------------------------------------------------------------*/
24516 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024517 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024518 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024519 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024520 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
24521 {
24522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024523 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024524 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024526 }
24527
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024528 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24529 pwdiRcvFltPktMatchCntReqParamsType->bssId,
24530 &pBSSSes);
24531 if ( NULL == pBSSSes )
24532 {
24533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024534 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024535 return WDI_STATUS_E_FAILURE;
24536 }
24537
Jeff Johnson295189b2012-06-20 16:38:30 -070024538 /*-----------------------------------------------------------------------
24539 Get message buffer
24540 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024541 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24542 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024543 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024544 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024545 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070024546 {
24547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24548 "Unable to get send buffer in "
24549 "WDI_ProcessFilterMatchCountReq() %x %x %x",
24550 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
24551 wdiFilterMatchCountCb);
24552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024554 }
24555
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024556 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
24557 wpalMemoryCopy( pSendBuffer+usDataOffset,
24558 &rcvFltPktMatchCntReqParam,
24559 sizeof(rcvFltPktMatchCntReqParam));
24560
Jeff Johnson295189b2012-06-20 16:38:30 -070024561 //
24562 // Don't need to fill send buffer other than header
24563 //
24564 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024565 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024566
24567
24568 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024569 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024571 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24572 wdiFilterMatchCountCb,
24573 pEventData->pUserData,
24574 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024575}
24576
24577/**
24578 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024579
24580 @param pWDICtx: pointer to the WLAN DAL context
24581 pEventData: pointer to the event information structure
24582
Jeff Johnson295189b2012-06-20 16:38:30 -070024583 @see
24584 @return Result of the function call
24585*/
24586WDI_Status
24587WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024588(
Jeff Johnson295189b2012-06-20 16:38:30 -070024589 WDI_ControlBlockType* pWDICtx,
24590 WDI_EventInfoType* pEventData
24591)
Jeff Johnsone7245742012-09-05 17:12:55 -070024592{
Jeff Johnson295189b2012-06-20 16:38:30 -070024593 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24594 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024595 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024596 wpt_uint16 usDataOffset = 0;
24597 wpt_uint16 usSendSize = 0;
24598 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024599 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024600 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024601
24602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024603 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024604
24605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024607 -------------------------------------------------------------------------*/
24608 if (( NULL == pEventData ) ||
24609 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24610 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024611 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024612 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24613 {
24614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024617 return WDI_STATUS_E_FAILURE;
24618 }
24619
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024620 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024621 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24622 &pBSSSes);
24623 if ( NULL == pBSSSes )
24624 {
24625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024626 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024627 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024628 }
24629
24630 /*-----------------------------------------------------------------------
24631 Get message buffer
24632 -----------------------------------------------------------------------*/
24633 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024634 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024635 sizeof(tHalRcvFltPktClearParam),
24636 &pSendBuffer, &usDataOffset, &usSendSize))||
24637 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24638 {
24639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24640 "Unable to get send buffer in "
24641 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24642 pEventData, pwdiRcvFltPktClearReqParamsType,
24643 wdiRcvFltPktClearFilterCb);
24644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024646 }
24647
24648
24649 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024650 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024651 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024652 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024653
Jeff Johnsone7245742012-09-05 17:12:55 -070024654 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24655 wpalMemoryCopy( pSendBuffer+usDataOffset,
24656 &rcvFltPktClearParam,
24657 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024658
24659 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024660 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024661
24662
24663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024664 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024665 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024666 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024667 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024668 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024669}
24670
24671/**
24672 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024673
24674 @param pWDICtx: pointer to the WLAN DAL context
24675 pEventData: pointer to the event information structure
24676
Jeff Johnson295189b2012-06-20 16:38:30 -070024677 @see
24678 @return Result of the function call
24679*/
24680WDI_Status
24681WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024682(
Jeff Johnson295189b2012-06-20 16:38:30 -070024683 WDI_ControlBlockType* pWDICtx,
24684 WDI_EventInfoType* pEventData
24685)
24686{
Jeff Johnson295189b2012-06-20 16:38:30 -070024687 eHalStatus halStatus;
24688 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024689 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24690 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24692
24693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024694 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024695
24696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024697 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024698 -------------------------------------------------------------------------*/
24699 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24700 ( NULL == pEventData->pEventData ))
24701 {
24702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024706 }
24707
Jeff Johnsone7245742012-09-05 17:12:55 -070024708 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024709
24710 /*-------------------------------------------------------------------------
24711 Extract response and send it to UMAC
24712 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024713 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24714 {
24715 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24716 pEventData->pEventData,
24717 sizeof(halRcvFltPktSetMcListRsp));
24718
24719 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24720 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24721 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24722 halRcvFltPktSetMcListRsp.bssIdx;
24723 }
24724 else
24725 {
24726 halStatus = *((eHalStatus*)pEventData->pEventData);
24727 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24728 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024729
24730 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024731 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024732
Jeff Johnsone7245742012-09-05 17:12:55 -070024733 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024734}
24735
24736/**
24737 @brief Process Set Rsp function (called when a
24738 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024739
24740 @param pWDICtx: pointer to the WLAN DAL context
24741 pEventData: pointer to the event information structure
24742
Jeff Johnson295189b2012-06-20 16:38:30 -070024743 @see
24744 @return Result of the function call
24745*/
24746WDI_Status
24747WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024748(
Jeff Johnson295189b2012-06-20 16:38:30 -070024749 WDI_ControlBlockType* pWDICtx,
24750 WDI_EventInfoType* pEventData
24751)
24752{
Jeff Johnson295189b2012-06-20 16:38:30 -070024753 eHalStatus halStatus;
24754 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024755 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24756 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24758
24759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024760 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024761
24762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024763 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024764 -------------------------------------------------------------------------*/
24765 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24766 ( NULL == pEventData->pEventData ))
24767 {
24768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024769 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024772 }
24773
24774 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024775 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024776
24777 /*-------------------------------------------------------------------------
24778 Extract response and send it to UMAC
24779 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024780 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24781 {
24782 wpalMemoryCopy( &halSetPktFilterRspParams,
24783 pEventData->pEventData,
24784 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024785
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024786 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24787 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24788 }
24789 else
24790 {
24791 halStatus = *((eHalStatus*)pEventData->pEventData);
24792 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24793 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024794 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024795 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024796
Jeff Johnsone7245742012-09-05 17:12:55 -070024797 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024798}
24799
24800/**
24801 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024802
24803 @param pWDICtx: pointer to the WLAN DAL context
24804 pEventData: pointer to the event information structure
24805
Jeff Johnson295189b2012-06-20 16:38:30 -070024806 @see
24807 @return Result of the function call
24808*/
24809WDI_Status
24810WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024811(
Jeff Johnson295189b2012-06-20 16:38:30 -070024812 WDI_ControlBlockType* pWDICtx,
24813 WDI_EventInfoType* pEventData
24814)
24815{
Jeff Johnson295189b2012-06-20 16:38:30 -070024816 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024817 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024818 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24819 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024820
24821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24822
24823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024824 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024825
24826 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024827 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024828 -------------------------------------------------------------------------*/
24829 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24830 ( NULL == pEventData->pEventData ))
24831 {
24832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024833 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024834 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024835 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024836 }
24837
Jeff Johnsone7245742012-09-05 17:12:55 -070024838 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024839
24840 /*-------------------------------------------------------------------------
24841 Extract response and send it to UMAC
24842 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024843 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24844 {
24845 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24846 pEventData->pEventData,
24847 sizeof(halRcvFltrPktMatachRsp));
24848
24849 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24850 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24851 }
24852 else
24853 {
24854 halStatus = *((eHalStatus*)pEventData->pEventData);
24855 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24856 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024857
24858 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024859 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024860
Jeff Johnsone7245742012-09-05 17:12:55 -070024861 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024862}
24863
24864/**
24865 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024866
24867 @param pWDICtx: pointer to the WLAN DAL context
24868 pEventData: pointer to the event information structure
24869
Jeff Johnson295189b2012-06-20 16:38:30 -070024870 @see
24871 @return Result of the function call
24872*/
24873WDI_Status
24874WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024875(
Jeff Johnson295189b2012-06-20 16:38:30 -070024876 WDI_ControlBlockType* pWDICtx,
24877 WDI_EventInfoType* pEventData
24878)
24879{
Jeff Johnson295189b2012-06-20 16:38:30 -070024880 eHalStatus halStatus;
24881 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024882 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24883 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24885
24886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024887 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024888
24889 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024890 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024891 -------------------------------------------------------------------------*/
24892 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24893 ( NULL == pEventData->pEventData ))
24894 {
24895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024899 }
24900
24901 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024902 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024903
24904 /*-------------------------------------------------------------------------
24905 Extract response and send it to UMAC
24906 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024907 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24908 {
24909 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24910 pEventData->pEventData,
24911 sizeof(halRcvFltPktClearRspMsg));
24912
24913 wdiRcvFltPktClearRspParamsType.wdiStatus =
24914 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24915 wdiRcvFltPktClearRspParamsType.bssIdx =
24916 halRcvFltPktClearRspMsg.bssIdx;
24917 }
24918 else
24919 {
24920 halStatus = *((eHalStatus*)pEventData->pEventData);
24921 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24922 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024923
24924 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024925 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024926
Jeff Johnsone7245742012-09-05 17:12:55 -070024927 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024928}
24929#endif // WLAN_FEATURE_PACKET_FILTERING
24930
24931/**
24932 @brief Process Shutdown Rsp function
24933 There is no shutdown response comming from HAL
24934 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024935
Jeff Johnson295189b2012-06-20 16:38:30 -070024936 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024937 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024938
24939 @see
24940 @return Result of the function call
24941*/
24942WDI_Status
24943WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024944(
Jeff Johnson295189b2012-06-20 16:38:30 -070024945 WDI_ControlBlockType* pWDICtx,
24946 WDI_EventInfoType* pEventData
24947)
24948{
24949 /*There is no shutdown response comming from HAL - function just kept for
24950 simmetry */
24951 WDI_ASSERT(0);
24952 return WDI_STATUS_SUCCESS;
24953}/*WDI_ProcessShutdownRsp*/
24954
24955/**
24956 @brief WDI_SetPowerParamsReq
24957
Jeff Johnsone7245742012-09-05 17:12:55 -070024958 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024959 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024960
Jeff Johnson295189b2012-06-20 16:38:30 -070024961 wdiPowerParamsCb: callback for passing back the response
24962 of the Set Power Params operation received from the
24963 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024964
Jeff Johnson295189b2012-06-20 16:38:30 -070024965 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024966 callback
24967
Jeff Johnson295189b2012-06-20 16:38:30 -070024968 @return Result of the function call
24969*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024971WDI_SetPowerParamsReq
24972(
24973 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24974 WDI_SetPowerParamsCb wdiPowerParamsCb,
24975 void* pUserData
24976)
24977{
24978 WDI_EventInfoType wdiEventData;
24979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24980
24981 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024982 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024983 ------------------------------------------------------------------------*/
24984 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24985 {
24986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24987 "WDI API call before module is initialized - Fail request");
24988
Jeff Johnsone7245742012-09-05 17:12:55 -070024989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024990 }
24991
24992 /*------------------------------------------------------------------------
24993 Fill in Event data and post to the Main FSM
24994 ------------------------------------------------------------------------*/
24995 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024996 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024997 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024998 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024999 wdiEventData.pUserData = pUserData;
25000
25001 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25002}/*WDI_SetPowerParamsReq*/
25003
25004/**
25005 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025006
25007 @param pWDICtx: pointer to the WLAN DAL context
25008 pEventData: pointer to the event information structure
25009
Jeff Johnson295189b2012-06-20 16:38:30 -070025010 @see
25011 @return Result of the function call
25012*/
25013WDI_Status
25014WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025015(
Jeff Johnson295189b2012-06-20 16:38:30 -070025016 WDI_ControlBlockType* pWDICtx,
25017 WDI_EventInfoType* pEventData
25018)
25019{
25020 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
25021 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025022 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025023 wpt_uint16 usDataOffset = 0;
25024 wpt_uint16 usSendSize = 0;
25025 tSetPowerParamsType powerParams;
25026
25027 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025028 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025029 -------------------------------------------------------------------------*/
25030 if (( NULL == pEventData ) ||
25031 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
25032 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
25033 {
25034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025038 }
25039
25040 /*-----------------------------------------------------------------------
25041 Get message buffer
25042 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025043 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025044 sizeof(powerParams),
25045 &pSendBuffer, &usDataOffset, &usSendSize))||
25046 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
25047 {
25048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25049 "Unable to get send buffer in Set PNO req %x %x %x",
25050 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
25051 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025053 }
25054
25055 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070025056 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070025057 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
25058
25059 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025060 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070025061 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
25062
25063 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025064 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070025065 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
25066
25067 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070025068 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070025069 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
25070
25071 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070025072 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070025073 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
25074
25075 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025076 powerParams.uBETInterval =
25077 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070025078
Jeff Johnsone7245742012-09-05 17:12:55 -070025079
25080 wpalMemoryCopy( pSendBuffer+usDataOffset,
25081 &powerParams,
25082 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025083
25084 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025085 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025086
25087 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025088 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025089 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025090 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25091 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025092}
25093
25094/**
25095 @brief Process Power Params Rsp function (called when a
25096 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025097
25098 @param pWDICtx: pointer to the WLAN DAL context
25099 pEventData: pointer to the event information structure
25100
Jeff Johnson295189b2012-06-20 16:38:30 -070025101 @see
25102 @return Result of the function call
25103*/
25104WDI_Status
25105WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025106(
Jeff Johnson295189b2012-06-20 16:38:30 -070025107 WDI_ControlBlockType* pWDICtx,
25108 WDI_EventInfoType* pEventData
25109)
25110{
25111 WDI_Status wdiStatus;
25112 eHalStatus halStatus;
25113 WDI_SetPowerParamsCb wdiPowerParamsCb;
25114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25115
25116 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025117 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025118 -------------------------------------------------------------------------*/
25119 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25120 ( NULL == pEventData->pEventData ))
25121 {
25122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025123 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025126 }
25127
Jeff Johnsone7245742012-09-05 17:12:55 -070025128 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025129
25130 /*-------------------------------------------------------------------------
25131 Extract response and send it to UMAC
25132 -------------------------------------------------------------------------*/
25133 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025134 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025135
25136 /*Notify UMAC*/
25137 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25138
Jeff Johnsone7245742012-09-05 17:12:55 -070025139 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025140}/*WDI_ProcessSetPowerParamsRsp*/
25141
25142#ifdef WLAN_FEATURE_GTK_OFFLOAD
25143/**
25144 @brief WDI_GTKOffloadReq will be called when the upper MAC
25145 wants to set GTK Rekey Counter while in power save. Upon
25146 the call of this API the WLAN DAL will pack and send a
25147 HAL GTK offload request message to the lower RIVA
25148 sub-system if DAL is in state STARTED.
25149
25150 In state BUSY this request will be queued. Request won't
25151 be allowed in any other state.
25152
25153 WDI_PostAssocReq must have been called.
25154
25155 @param pwdiGtkOffloadParams: the GTK offload as specified
25156 by the Device Interface
25157
25158 wdiGtkOffloadCb: callback for passing back the response
25159 of the GTK offload operation received from the device
25160
25161 pUserData: user data will be passed back with the
25162 callback
25163
25164 @see WDI_PostAssocReq
25165 @return Result of the function call
25166*/
25167WDI_Status
25168WDI_GTKOffloadReq
25169(
25170 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
25171 WDI_GtkOffloadCb wdiGtkOffloadCb,
25172 void* pUserData
25173)
25174{
25175 WDI_EventInfoType wdiEventData = {0};
25176 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25177
25178 /*------------------------------------------------------------------------
25179 Sanity Check
25180 ------------------------------------------------------------------------*/
25181 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25182 {
25183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25184 "WDI API call before module is initialized - Fail request");
25185
25186 return WDI_STATUS_E_NOT_ALLOWED;
25187 }
25188
25189 /*------------------------------------------------------------------------
25190 Fill in Event data and post to the Main FSM
25191 ------------------------------------------------------------------------*/
25192 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
25193 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070025194 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070025195 wdiEventData.pCBfnc = wdiGtkOffloadCb;
25196 wdiEventData.pUserData = pUserData;
25197
25198 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25199}
25200
25201
25202/**
25203 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
25204 MAC wants to get GTK Rekey Counter while in power save.
25205 Upon the call of this API the WLAN DAL will pack and
25206 send a HAL GTK offload request message to the lower RIVA
25207 sub-system if DAL is in state STARTED.
25208
25209 In state BUSY this request will be queued. Request won't
25210 be allowed in any other state.
25211
25212 WDI_PostAssocReq must have been called.
25213
25214 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
25215 Information Message as specified by the
25216 Device Interface
25217
25218 wdiGtkOffloadGetInfoCb: callback for passing back the
25219 response of the GTK offload operation received from the
25220 device
25221
25222 pUserData: user data will be passed back with the
25223 callback
25224
25225 @see WDI_PostAssocReq
25226 @return Result of the function call
25227*/
25228WDI_Status
25229WDI_GTKOffloadGetInfoReq
25230(
25231 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
25232 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
25233 void* pUserData
25234)
25235{
25236 WDI_EventInfoType wdiEventData = {0};
25237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25238
25239 /*------------------------------------------------------------------------
25240 Sanity Check
25241 ------------------------------------------------------------------------*/
25242 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25243 {
25244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25245 "WDI API call before module is initialized - Fail request");
25246
25247 return WDI_STATUS_E_NOT_ALLOWED;
25248 }
25249
25250 /*------------------------------------------------------------------------
25251 Fill in Event data and post to the Main FSM
25252 ------------------------------------------------------------------------*/
25253 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
25254 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
25255 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
25256 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
25257 wdiEventData.pUserData = pUserData;
25258
25259 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25260}
25261
25262
25263/**
25264 @brief Process set GTK Offload Request function
25265
25266 @param pWDICtx: pointer to the WLAN DAL context
25267 pEventData: pointer to the event information structure
25268
25269 @see
25270 @return Result of the function call
25271*/
25272WDI_Status
25273WDI_ProcessGTKOffloadReq
25274(
25275 WDI_ControlBlockType* pWDICtx,
25276 WDI_EventInfoType* pEventData
25277)
25278{
25279 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
25280 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
25281 wpt_uint8* pSendBuffer = NULL;
25282 wpt_uint16 usDataOffset = 0;
25283 wpt_uint16 usSendSize = 0;
25284 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025285 wpt_uint8 ucCurrentSessionId = 0;
25286 WDI_BSSSessionType* pBSSSes = NULL;
25287
Jeff Johnson295189b2012-06-20 16:38:30 -070025288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25289
25290 /*-------------------------------------------------------------------------
25291 Sanity check
25292 -------------------------------------------------------------------------*/
25293 if (( NULL == pEventData ) ||
25294 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
25295 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
25296 {
25297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025299 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025300 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025301 }
25302
25303 /*-----------------------------------------------------------------------
25304 Get message buffer
25305 -----------------------------------------------------------------------*/
25306 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
25307 sizeof(gtkOffloadReqParams),
25308 &pSendBuffer, &usDataOffset, &usSendSize))||
25309 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
25310 {
25311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25312 "Unable to get send buffer in GTK offload req %x %x %x",
25313 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
25314 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025315 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025316 }
25317
25318 //
25319 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
25320 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025321 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25322 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
25323 &pBSSSes);
25324 if ( NULL == pBSSSes )
25325 {
25326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025327 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025328 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025329 }
25330
25331 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
25332
Jeff Johnson295189b2012-06-20 16:38:30 -070025333 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
25334 // Copy KCK
25335 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
25336 // Copy KEK
25337 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
25338 // Copy KeyReplayCounter
25339 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
25340
25341 wpalMemoryCopy( pSendBuffer+usDataOffset,
25342 &gtkOffloadReqParams,
25343 sizeof(gtkOffloadReqParams));
25344
25345 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
25346 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
25347
25348 /*-------------------------------------------------------------------------
25349 Send Get STA Request to HAL
25350 -------------------------------------------------------------------------*/
25351 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25352 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025353
25354fail:
25355 // Release the message buffer so we don't leak
25356 wpalMemoryFree(pSendBuffer);
25357
25358failRequest:
25359 //WDA should have failure check to avoid the memory leak
25360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025361}
25362
25363
25364/**
25365 @brief Process GTK Offload Get Information Request function
25366
25367 @param pWDICtx: pointer to the WLAN DAL context
25368 pEventData: pointer to the event information structure
25369
25370 @see
25371 @return Result of the function call
25372*/
25373WDI_Status
25374WDI_ProcessGTKOffloadGetInfoReq
25375(
25376 WDI_ControlBlockType* pWDICtx,
25377 WDI_EventInfoType* pEventData
25378)
25379{
25380 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
25381 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
25382 wpt_uint8* pSendBuffer = NULL;
25383 wpt_uint16 usDataOffset = 0;
25384 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025385 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
25386 wpt_uint8 ucCurrentSessionId = 0;
25387 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025388
25389 /*-------------------------------------------------------------------------
25390 Sanity check
25391 -------------------------------------------------------------------------*/
25392 if (( NULL == pEventData ) ||
25393 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
25394 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
25395 {
25396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025398 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025399 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025400 }
25401
25402 /*-----------------------------------------------------------------------
25403 Get message buffer
25404 -----------------------------------------------------------------------*/
25405 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025406 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025407 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025408 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070025409 {
25410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25411 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
25412 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
25413 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025414 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025415 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025416 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25417 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
25418 &pBSSSes);
25419 if ( NULL == pBSSSes )
25420 {
25421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025422 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025423 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025424 }
25425 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025426
25427 //
25428 // Don't need to fill send buffer other than header
25429 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025430 wpalMemoryCopy( pSendBuffer+usDataOffset,
25431 &halGtkOffloadGetInfoReqParams,
25432 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025433
25434 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
25435 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
25436
25437 /*-------------------------------------------------------------------------
25438 Send Get STA Request to HAL
25439 -------------------------------------------------------------------------*/
25440 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25441 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025442fail:
25443 // Release the message buffer so we don't leak
25444 wpalMemoryFree(pSendBuffer);
25445
25446failRequest:
25447 //WDA should have failure check to avoid the memory leak
25448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025449}
25450
25451/**
25452 @brief Process host offload Rsp function (called when a
25453 response is being received over the bus from HAL)
25454
25455 @param pWDICtx: pointer to the WLAN DAL context
25456 pEventData: pointer to the event information structure
25457
25458 @see
25459 @return Result of the function call
25460*/
25461WDI_Status
25462WDI_ProcessGtkOffloadRsp
25463(
25464 WDI_ControlBlockType* pWDICtx,
25465 WDI_EventInfoType* pEventData
25466)
25467{
Jeff Johnson295189b2012-06-20 16:38:30 -070025468 eHalStatus halStatus;
25469 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025470 tHalGtkOffloadRspParams halGtkOffloadRspParams;
25471 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25473
25474 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
25475
25476 /*-------------------------------------------------------------------------
25477 Sanity check
25478 -------------------------------------------------------------------------*/
25479 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25480 ( NULL == pEventData->pEventData))
25481 {
25482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025483 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025484 WDI_ASSERT(0);
25485 return WDI_STATUS_E_FAILURE;
25486 }
25487
25488 /*-------------------------------------------------------------------------
25489 Extract response and send it to UMAC
25490 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025491 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25492 {
25493 wpalMemoryCopy( &halGtkOffloadRspParams,
25494 pEventData->pEventData,
25495 sizeof(halGtkOffloadRspParams));
25496
25497 wdiGtkOffloadRsparams.ulStatus =
25498 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
25499 wdiGtkOffloadRsparams.bssIdx =
25500 halGtkOffloadRspParams.bssIdx;
25501 }
25502 else
25503 {
25504 halStatus = *((eHalStatus*)pEventData->pEventData);
25505 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25506 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025507
25508 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025509 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025510
25511 return WDI_STATUS_SUCCESS;
25512}
25513
25514/**
25515 @brief Process GTK Offload Get Information Response function
25516
25517 @param pWDICtx: pointer to the WLAN DAL context
25518 pEventData: pointer to the event information structure
25519
25520 @see
25521 @return Result of the function call
25522*/
25523WDI_Status
25524WDI_ProcessGTKOffloadGetInfoRsp
25525(
25526 WDI_ControlBlockType* pWDICtx,
25527 WDI_EventInfoType* pEventData
25528)
25529{
Jeff Johnson295189b2012-06-20 16:38:30 -070025530 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025531 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025532 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
25533 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025534
25535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25536
25537 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
25538
25539 /*-------------------------------------------------------------------------
25540 Sanity check
25541 -------------------------------------------------------------------------*/
25542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25543 ( NULL == pEventData->pEventData ))
25544 {
25545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025547 WDI_ASSERT(0);
25548 return WDI_STATUS_E_FAILURE;
25549 }
25550
25551 /*-------------------------------------------------------------------------
25552 Extract response and send it to UMAC
25553 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025554 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25555 {
25556 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
25557 pEventData->pEventData,
25558 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025559
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025560 wdiGtkOffloadGetInfoRsparams.ulStatus =
25561 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
25562 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
25563 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
25564 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
25565 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
25566 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
25567 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
25568 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
25569 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
25570 wdiGtkOffloadGetInfoRsparams.bssIdx =
25571 halGtkOffloadGetInfoRspParams.bssIdx;
25572 }
25573 else
25574 {
25575 halStatus = *((eHalStatus*)pEventData->pEventData);
25576 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25577 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025578 /*Notify UMAC*/
25579 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25580 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025581 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025582
25583 return WDI_STATUS_SUCCESS;
25584}
25585#endif // WLAN_FEATURE_GTK_OFFLOAD
25586
25587#ifdef WLAN_WAKEUP_EVENTS
25588WDI_Status
25589WDI_ProcessWakeReasonInd
25590(
25591 WDI_ControlBlockType* pWDICtx,
25592 WDI_EventInfoType* pEventData
25593)
25594{
25595 WDI_LowLevelIndType *pWdiInd;
25596 tpWakeReasonParams pWakeReasonParams;
25597 wpt_uint32 allocSize = 0;
25598
25599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025600 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025601
25602 /*-------------------------------------------------------------------------
25603 Sanity check
25604 -------------------------------------------------------------------------*/
25605 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25606 ( NULL == pEventData->pEventData ))
25607 {
25608 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025609 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025610 WDI_ASSERT( 0 );
25611 return WDI_STATUS_E_FAILURE;
25612 }
25613
25614 /*-------------------------------------------------------------------------
25615 Extract indication and send it to UMAC
25616 -------------------------------------------------------------------------*/
25617 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25618
25619 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25620
25621 //Allocate memory for WDI_WakeReasonIndType structure
25622 pWdiInd = wpalMemoryAllocate(allocSize) ;
25623
25624 if(NULL == pWdiInd)
25625 {
25626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25627 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025628 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025629 WDI_ASSERT(0);
25630 return WDI_STATUS_E_FAILURE;
25631 }
25632
25633 wpalMemoryZero(pWdiInd, allocSize);
25634
25635 /* Fill in the indication parameters*/
25636 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25637 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25638 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25639 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25640 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25641 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25642 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25643 &(pWakeReasonParams->aDataStart[0]),
25644 pWakeReasonParams->ulStoredDataLen);
25645
ltimariu034f7d62013-01-24 18:54:33 -080025646
25647 if ( pWDICtx->wdiLowLevelIndCB )
25648 {
25649 /*Notify UMAC*/
25650 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25651 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025652
25653 //Free memory allocated for WDI_WakeReasonIndType structure
25654 wpalMemoryFree(pWdiInd);
25655
25656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025657 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025658
25659 return WDI_STATUS_SUCCESS;
25660}
25661#endif // WLAN_WAKEUP_EVENTS
25662
25663void WDI_GetWcnssCompiledApiVersion
25664(
25665 WDI_WlanVersionType *pWcnssApiVersion
25666)
25667{
25668 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25669 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25670 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25671 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25672}
25673
25674/**
25675 @brief Process Set TM Level Rsp function (called when a
25676 response is being received over the bus from HAL)
25677
25678 @param pWDICtx: pointer to the WLAN DAL context
25679 pEventData: pointer to the event information structure
25680
25681 @see
25682 @return Result of the function call
25683*/
25684WDI_Status
25685WDI_ProcessSetTmLevelRsp
25686(
25687 WDI_ControlBlockType* pWDICtx,
25688 WDI_EventInfoType* pEventData
25689)
25690{
25691 WDI_Status wdiStatus;
25692 eHalStatus halStatus;
25693 WDI_SetTmLevelCb wdiSetTmLevelCb;
25694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25695
25696 /*-------------------------------------------------------------------------
25697 Sanity check
25698 -------------------------------------------------------------------------*/
25699 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25700 ( NULL == pEventData->pEventData ))
25701 {
25702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025704 WDI_ASSERT(0);
25705 return WDI_STATUS_E_FAILURE;
25706 }
25707
25708 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25709
25710 /*-------------------------------------------------------------------------
25711 Extract response and send it to UMAC
25712 -------------------------------------------------------------------------*/
25713 halStatus = *((eHalStatus*)pEventData->pEventData);
25714 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25715
25716 /*Notify UMAC*/
25717 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25718
25719 return WDI_STATUS_SUCCESS;
25720}/*WDI_ProcessSetTmLevelRsp*/
25721
25722/**
25723 @brief Process Set Thermal Mitigation level Changed request
25724
25725 @param pWDICtx: pointer to the WLAN DAL context
25726 pEventData: pointer to the event information structure
25727
25728 @see
25729 @return Result of the function call
25730*/
25731WDI_Status
25732WDI_ProcessSetTmLevelReq
25733(
25734 WDI_ControlBlockType* pWDICtx,
25735 WDI_EventInfoType* pEventData
25736)
25737{
25738 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25739 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25740 wpt_uint8* pSendBuffer = NULL;
25741 wpt_uint16 usDataOffset = 0;
25742 wpt_uint16 usSendSize = 0;
25743 tSetThermalMitgationType halTmMsg;
25744
25745 /*-------------------------------------------------------------------------
25746 Sanity check
25747 -------------------------------------------------------------------------*/
25748 if (( NULL == pEventData ) ||
25749 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25750 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25751 {
25752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025754 WDI_ASSERT(0);
25755 return WDI_STATUS_E_FAILURE;
25756 }
25757
25758 /*-----------------------------------------------------------------------
25759 Get message buffer
25760 -----------------------------------------------------------------------*/
25761 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25762 sizeof(halTmMsg),
25763 &pSendBuffer, &usDataOffset, &usSendSize))||
25764 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25765 {
25766 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25767 "Unable to get send buffer in Set PNO req %x %x %x",
25768 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25769 WDI_ASSERT(0);
25770 return WDI_STATUS_E_FAILURE;
25771 }
25772
25773 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25774 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25775
25776 wpalMemoryCopy( pSendBuffer+usDataOffset,
25777 &halTmMsg,
25778 sizeof(halTmMsg));
25779
25780 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25781 pWDICtx->pfncRspCB = NULL;
25782 /*-------------------------------------------------------------------------
25783 Send Get STA Request to HAL
25784 -------------------------------------------------------------------------*/
25785 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25786 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25787}
25788
25789/* Fill the value from the global features enabled array to the global capabilities
25790 * bitmap struct
25791 */
25792static void
25793FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25794{
25795 wpt_int8 i;
25796 for (i=0; i<len; i++)
25797 {
25798 setFeatCaps(fCaps, enabledFeat[i]);
25799 }
25800}
25801
25802/**
25803 @brief WDI_featureCapsExchangeReq
25804 Post feature capability bitmap exchange event.
25805 Host will send its own capability to FW in this req and
25806 expect FW to send its capability back as a bitmap in Response
25807
25808 @param
25809
25810 wdiFeatureCapsExchangeCb: callback called on getting the response.
25811 It is kept to mantain similarity between WDI reqs and if needed, can
25812 be used in future. Currently, It is set to NULL
25813
25814 pUserData: user data will be passed back with the
25815 callback
25816
25817 @see
25818 @return Result of the function call
25819*/
25820WDI_Status
25821WDI_featureCapsExchangeReq
25822(
25823 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25824 void* pUserData
25825)
25826{
25827 WDI_EventInfoType wdiEventData;
25828 wpt_int32 fCapsStructSize;
25829
25830 /*------------------------------------------------------------------------
25831 Sanity Check
25832 ------------------------------------------------------------------------*/
25833 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25834 {
25835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25836 "WDI API call before module is initialized - Fail request");
25837
25838 return WDI_STATUS_E_NOT_ALLOWED;
25839 }
25840
25841 /* Allocate memory separately for global variable carrying FW caps */
25842 fCapsStructSize = sizeof(tWlanFeatCaps);
25843 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25844 if ( NULL == gpHostWlanFeatCaps )
25845 {
25846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25847 "Cannot allocate memory for host capability info\n");
25848 WDI_ASSERT(0);
25849 return WDI_STATUS_MEM_FAILURE;
25850 }
25851
25852 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25853
25854 /*------------------------------------------------------------------------
25855 Fill in Event data and post to the Main FSM
25856 ------------------------------------------------------------------------*/
25857 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25858 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25860 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025861 gpHostWlanFeatCaps->featCaps[0],
25862 gpHostWlanFeatCaps->featCaps[1],
25863 gpHostWlanFeatCaps->featCaps[2],
25864 gpHostWlanFeatCaps->featCaps[3]
25865 );
25866
25867 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25868 wdiEventData.pEventData = gpHostWlanFeatCaps;
25869 wdiEventData.uEventDataSize = fCapsStructSize;
25870 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25871 wdiEventData.pUserData = pUserData;
25872
25873 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25874}
25875
25876/**
Yathishd8713192012-12-10 14:21:35 -080025877 @brief Disable Active mode offload in Host
25878
25879 @param void
25880 @see
25881 @return void
25882*/
25883void
25884WDI_disableCapablityFeature(wpt_uint8 feature_index)
25885{
25886 supportEnabledFeatures[feature_index] = 0;
25887 return;
25888}
25889
25890/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025891 @brief Process Host-FW Capability Exchange Request function
25892
25893 @param pWDICtx: pointer to the WLAN DAL context
25894 pEventData: pointer to the event information structure
25895
25896 @see
25897 @return Result of the function call
25898*/
25899WDI_Status
25900WDI_ProcessFeatureCapsExchangeReq
25901(
25902 WDI_ControlBlockType* pWDICtx,
25903 WDI_EventInfoType* pEventData
25904)
25905{
25906 wpt_uint8* pSendBuffer = NULL;
25907 wpt_uint16 usDataOffset = 0;
25908 wpt_uint16 usSendSize = 0;
25909 wpt_uint16 usLen = 0;
25910
25911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25912
25913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025914 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025915
25916 /*-------------------------------------------------------------------------
25917 Sanity check
25918 -------------------------------------------------------------------------*/
25919 /* Call back function is NULL since not required for cap exchange req */
25920 if (( NULL == pEventData ) ||
25921 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25922 {
25923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025925 WDI_ASSERT(0);
25926 return WDI_STATUS_E_FAILURE;
25927 }
25928
25929 /*-----------------------------------------------------------------------
25930 Get message buffer
25931 -----------------------------------------------------------------------*/
25932 usLen = sizeof(tWlanFeatCaps);
25933
25934 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25935 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25936 usLen,
25937 &pSendBuffer, &usDataOffset, &usSendSize))||
25938 ( usSendSize < (usDataOffset + usLen )))
25939 {
25940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25941 "Unable to get send buffer in feat caps exchange req %x %x",
25942 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25943 WDI_ASSERT(0);
25944 return WDI_STATUS_E_FAILURE;
25945 }
25946
25947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025948 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025949 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25950 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25951 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25952 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25953 );
25954
25955 /* Copy host caps after the offset in the send buffer */
25956 wpalMemoryCopy( pSendBuffer+usDataOffset,
25957 (tWlanFeatCaps *)pEventData->pEventData,
25958 usLen);
25959
25960 /*-------------------------------------------------------------------------
25961 Send Start Request to HAL
25962 -------------------------------------------------------------------------*/
25963 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25964 (WDI_StartRspCb)pEventData->pCBfnc,
25965 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25966
25967}/*WDI_ProcessFeatureCapsExchangeReq*/
25968
25969/**
25970 @brief Process Host-FW Capability Exchange Response function
25971
25972 @param pWDICtx: pointer to the WLAN DAL context
25973 pEventData: pointer to the event information structure
25974
25975 @see
25976 @return Result of the function call
25977*/
25978WDI_Status
25979WDI_ProcessFeatureCapsExchangeRsp
25980(
25981 WDI_ControlBlockType* pWDICtx,
25982 WDI_EventInfoType* pEventData
25983)
25984{
25985 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25986 wpt_int32 fCapsStructSize;
25987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25988
25989 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025990 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025991
25992 /*-------------------------------------------------------------------------
25993 Sanity check
25994 -------------------------------------------------------------------------*/
25995 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25996 ( NULL == pEventData->pEventData ))
25997 {
25998 /* It will go here when riva is old (doesn't understand this msg) and host is new */
25999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026000 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026001 WDI_ASSERT(0);
26002 return WDI_STATUS_E_FAILURE;
26003 }
26004
26005 /* Allocate memory separately for global variable carrying FW caps */
26006 fCapsStructSize = sizeof(tWlanFeatCaps);
26007 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26008 if ( NULL == gpFwWlanFeatCaps )
26009 {
26010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26011 "Cannot allocate memory for host capability info\n");
26012 WDI_ASSERT(0);
26013 return WDI_STATUS_MEM_FAILURE;
26014 }
26015
26016 /*-------------------------------------------------------------------------
26017 Unpack HAL Response Message - the header was already extracted by the
26018 main Response Handling procedure
26019 -------------------------------------------------------------------------*/
26020 /*-------------------------------------------------------------------------
26021 Extract response and send it to UMAC
26022 -------------------------------------------------------------------------*/
26023
26024 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
26025 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070026026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26027 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026028 gpFwWlanFeatCaps->featCaps[0],
26029 gpFwWlanFeatCaps->featCaps[1],
26030 gpFwWlanFeatCaps->featCaps[2],
26031 gpFwWlanFeatCaps->featCaps[3]
26032 );
Jeff Johnson295189b2012-06-20 16:38:30 -070026033 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
26034
26035 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
26036 if (wdiFeatureCapsExchangeCb != NULL)
26037 wdiFeatureCapsExchangeCb(NULL, NULL);
26038
26039 return WDI_STATUS_SUCCESS;
26040}
26041
Mohit Khanna4a70d262012-09-11 16:30:12 -070026042#ifdef WLAN_FEATURE_11AC
26043WDI_Status
26044WDI_ProcessUpdateVHTOpModeRsp
26045(
26046 WDI_ControlBlockType* pWDICtx,
26047 WDI_EventInfoType* pEventData
26048)
26049{
26050 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26051 WDI_Status wdiStatus;
26052 eHalStatus halStatus;
26053
26054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26055
26056 /*-------------------------------------------------------------------------
26057 Sanity check
26058 -------------------------------------------------------------------------*/
26059 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26060 ( NULL == pEventData->pEventData))
26061 {
26062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026063 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026064 WDI_ASSERT(0);
26065 return WDI_STATUS_E_FAILURE;
26066 }
26067 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
26068
26069 /*-------------------------------------------------------------------------
26070 Extract response and send it to UMAC
26071 -------------------------------------------------------------------------*/
26072 halStatus = *((eHalStatus*)pEventData->pEventData);
26073 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26074
26075 /*Notify UMAC*/
26076 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
26077
26078 return WDI_STATUS_SUCCESS;
26079}
26080#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026081/**
26082 @brief WDI_getHostWlanFeatCaps
26083 WDI API that returns whether the feature passed to it as enum value in
26084 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
26085 variable storing host capability bitmap to find this. This can be used by
26086 other moduels to decide certain things like call different APIs based on
26087 whether a particular feature is supported.
26088
26089 @param
26090
26091 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
26092
26093 @see
26094 @return
26095 0 - if the feature is NOT supported in host
26096 any non-zero value - if the feature is SUPPORTED in host.
26097*/
26098wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
26099{
26100 wpt_uint8 featSupported = 0;
26101 if (gpHostWlanFeatCaps != NULL)
26102 {
26103 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
26104 }
26105 else
26106 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026108 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026109 }
26110 return featSupported;
26111}
26112
26113/**
26114 @brief WDI_getFwWlanFeatCaps
26115 WDI API that returns whether the feature passed to it as enum value in
26116 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
26117 variable storing host capability bitmap to find this. This can be used by
26118 other moduels to decide certain things like call different APIs based on
26119 whether a particular feature is supported.
26120
26121 @param
26122
26123 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
26124 in wlan_hal_msg.h.
26125
26126 @see
26127 @return
26128 0 - if the feature is NOT supported in FW
26129 any non-zero value - if the feature is SUPPORTED in FW.
26130*/
26131wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
26132{
26133 wpt_uint8 featSupported = 0;
26134 if (gpFwWlanFeatCaps != NULL)
26135 {
26136 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
26137 }
26138 else
26139 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026141 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026142 }
26143 return featSupported;
26144}
Mohit Khanna4a70d262012-09-11 16:30:12 -070026145
26146#ifdef WLAN_FEATURE_11AC
26147WDI_Status
26148WDI_ProcessUpdateVHTOpModeReq
26149(
26150 WDI_ControlBlockType* pWDICtx,
26151 WDI_EventInfoType* pEventData
26152)
26153{
26154 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
26155 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26156 wpt_uint8* pSendBuffer = NULL;
26157 wpt_uint16 usDataOffset = 0;
26158 wpt_uint16 usSendSize = 0;
26159
26160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26161
26162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026163 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026164
26165 /*-------------------------------------------------------------------------
26166 Sanity check
26167 -------------------------------------------------------------------------*/
26168 if (( NULL == pEventData ) ||
26169 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
26170 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
26171 {
26172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026173 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026174 WDI_ASSERT(0);
26175 return WDI_STATUS_E_FAILURE;
26176 }
26177
26178 /*-----------------------------------------------------------------------
26179 Get message buffer
26180 -----------------------------------------------------------------------*/
26181 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
26182 sizeof(WDI_UpdateVHTOpMode),
26183 &pSendBuffer, &usDataOffset, &usSendSize))||
26184 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
26185 {
26186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26187 "Unable to get send buffer in update vht opMode req");
26188 WDI_ASSERT(0);
26189 return WDI_STATUS_E_FAILURE;
26190 }
26191
26192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26193 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
26194
26195 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
26196 sizeof(WDI_UpdateVHTOpMode));
26197
26198 /*-------------------------------------------------------------------------
26199 Send Start Request to HAL
26200 -------------------------------------------------------------------------*/
26201 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26202 wdiVHTOpModeCb,
26203 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
26204
26205}
26206
26207WDI_Status
26208WDI_UpdateVHTOpModeReq
26209(
26210 WDI_UpdateVHTOpMode *pData,
26211 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
26212 void* pUserData
26213)
26214{
26215 WDI_EventInfoType wdiEventData;
26216
26217 /*------------------------------------------------------------------------
26218 Sanity Check
26219 ------------------------------------------------------------------------*/
26220 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26221 {
26222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26223 "WDI API call before module is initialized - Fail request");
26224
26225 return WDI_STATUS_E_NOT_ALLOWED;
26226 }
26227
26228 /*------------------------------------------------------------------------
26229 Fill in Event data and post to the Main FSM
26230 ------------------------------------------------------------------------*/
26231 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
26232 wdiEventData.pEventData = pData;
26233 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
26234 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
26235 wdiEventData.pUserData = pUserData;
26236
26237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26238 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
26239
26240 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26241
26242}
26243#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026244
26245/**
26246 @brief WDI_TransportChannelDebug -
26247 Display DXE Channel debugging information
26248 User may request to display DXE channel snapshot
26249 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026250
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080026251 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026252 @param enableStallDetect : Enable stall detect feature
26253 This feature will take effect to data performance
26254 Not integrate till fully verification
26255 @see
26256 @return none
26257*/
26258void WDI_TransportChannelDebug
26259(
26260 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026261 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026262)
26263{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026264 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026265 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070026266}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026267/**
26268 @brief WDI_SsrTimerCB
26269 Callback function for SSR timer, if this is called then the graceful
26270 shutdown for Riva did not happen.
26271
26272 @param pUserData : user data to timer
26273
26274 @see
26275 @return none
26276*/
26277void
26278WDI_SsrTimerCB
26279(
26280 void *pUserData
26281)
26282{
26283 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
26284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26285
26286 if (NULL == pWDICtx )
26287 {
26288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026289 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026290 WDI_ASSERT(0);
26291 return;
26292 }
26293 wpalRivaSubystemRestart();
26294
26295 return;
26296
26297}/*WDI_SsrTimerCB*/