blob: a69837c7cbd64803f0d4dc78ec4d72d26ce957e8 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#include "pttMsgApi.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700106
107/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700108 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700109 ===========================================================================*/
110#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
111
Jeff Johnsone7245742012-09-05 17:12:55 -0700112#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
113#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
114
Yathishd8713192012-12-10 14:21:35 -0800115#define FEATURE_NOT_SUPPORTED 128
Jeff Johnson295189b2012-06-20 16:38:30 -0700116
117#ifdef FEATURE_WLAN_SCAN_PNO
118#define WDI_PNO_VERSION_MASK 0x8000
119#endif
120
121/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* array of features supported. Need to add a new feature
126 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
127 */
128static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800129 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800130#ifdef WLAN_SOFTAP_VSTA_FEATURE
131 ,SAP32STA
132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800135#ifdef FEATURE_WLAN_TDLS
Yathishd8713192012-12-10 14:21:35 -0800136 ,TDLS
137#else
138 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800139#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800140 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathishd8713192012-12-10 14:21:35 -0800141#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
142 ,WLANACTIVE_OFFLOAD
143#else
144 ,FEATURE_NOT_SUPPORTED
145#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800146 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700147
148/*--------------------------------------------------------------------------
149 WLAN DAL State Machine
150 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700151WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700152{
153 /*WDI_INIT_ST*/
154 {{
155 WDI_MainStart, /*WDI_START_EVENT*/
156 NULL, /*WDI_STOP_EVENT*/
157 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
158 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
159 WDI_MainClose, /*WDI_CLOSE_EVENT*/
160 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
161 }},
162
163 /*WDI_STARTED_ST*/
164 {{
165 WDI_MainStartStarted, /*WDI_START_EVENT*/
166 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
167 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
168 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
169 NULL, /*WDI_CLOSE_EVENT*/
170 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
171 }},
172
173 /*WDI_STOPPED_ST*/
174 {{
175 WDI_MainStart, /*WDI_START_EVENT*/
176 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
177 NULL, /*WDI_REQUEST_EVENT*/
178 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
179 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700180 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700181 }},
182
183 /*WDI_BUSY_ST*/
184 {{
185 WDI_MainStartBusy, /*WDI_START_EVENT*/
186 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
187 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
188 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
189 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
190 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
191 }}
192};
193
Jeff Johnsone7245742012-09-05 17:12:55 -0700194/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700195 DAL Request Processing Array - the functions in this table will only be
196 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700197 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700198 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700199WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700200{
201 /*INIT*/
202 WDI_ProcessStartReq, /* WDI_START_REQ */
203 WDI_ProcessStopReq, /* WDI_STOP_REQ */
204 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
205
206 /*SCAN*/
207 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
208 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
209 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
210 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
211
212 /*ASSOCIATION*/
213 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
214 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
215 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
216 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
217 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
218
219 /* Security */
220 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
221 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
222 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
223 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
224
225 /* QoS and BA APIs */
226 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
227 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
228 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
229 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
230 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
231
232 /* Miscellaneous Control APIs */
233 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
234 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
235 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
236 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
237 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
238
239 /*BA APIs*/
240 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
241 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
242
243 /*Beacon processing APIs*/
244 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
245 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
246
247 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
248 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
249 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
250 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700251 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700252 /* PowerSave APIs */
253 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
254 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
255 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
256 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
257 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
258 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
259 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
260 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
261 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
262 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
263 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
264 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
265 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
266 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
267 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
268 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
269 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
270 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
271 /*NV Download APIs*/
272 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
273 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
274 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
275#ifdef WLAN_FEATURE_VOWIFI_11R
276 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
277#else
278 NULL,
279#endif /* WLAN_FEATURE_VOWIFI_11R */
280 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
281 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700282 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700283
284#ifdef FEATURE_OEM_DATA_SUPPORT
285 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
286#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700287 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700288#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700289 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700290
291 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700292
293#ifdef FEATURE_WLAN_SCAN_PNO
294 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
295 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
296 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
297#else
298 NULL,
299 NULL,
300 NULL,
301#endif /* FEATURE_WLAN_SCAN_PNO */
302
303 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700304
Jeff Johnson295189b2012-06-20 16:38:30 -0700305#ifdef WLAN_FEATURE_PACKET_FILTERING
306 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700307 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700308 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700309 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700310 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700311 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700313 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700314#else
315 NULL,
316 NULL,
317 NULL,
318 NULL,
319#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700320 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700321 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
322 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
323
324 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
325#ifdef FEATURE_WLAN_CCX
326 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
327#else
328 NULL,
329#endif
330
331#ifdef WLAN_FEATURE_GTK_OFFLOAD
332 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
333 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
334#else
335 NULL,
336 NULL,
337#endif // WLAN_FEATURE_GTK_OFFLOAD
338
339 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
340 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700341#ifdef WLAN_FEATURE_11AC
342 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800343#else
344 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700345#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800346#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
347 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
348#else
schangd82195a2013-03-13 18:41:24 -0700349 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800350#endif
schangd82195a2013-03-13 18:41:24 -0700351 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
352 /*-------------------------------------------------------------------------
353 Indications
354 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700355 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800356 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700357};
358
359
Jeff Johnsone7245742012-09-05 17:12:55 -0700360/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700361 DAL Request Processing Array - the functions in this table will only be
362 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700363 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700364 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700365WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700366{
367 /*INIT*/
368 WDI_ProcessStartRsp, /* WDI_START_RESP */
369 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
370 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
371
372 /*SCAN*/
373 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
374 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
375 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
376 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
377
378 /* ASSOCIATION*/
379 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
380 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
381 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
382 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
383 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
384
385 /* Security */
386 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
387 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
388 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
389 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
390
391 /* QoS and BA APIs */
392 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
393 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
394 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
395 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
396 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
397
398 /* Miscellaneous Control APIs */
399 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
400 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
401 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
402 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
403 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
404
405 /* BA APIs*/
406 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
407 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700408
Jeff Johnson295189b2012-06-20 16:38:30 -0700409 /* IBSS APIs*/
410 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
411 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
412
413 /*Soft AP APIs*/
414 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
415 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
416 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
417 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
418
419 /* PowerSave APIs */
420 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
421 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
422 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
423 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
424 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
425 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
426 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
427 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
428 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
429 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
430 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
431 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
432 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
433 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
434 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
435 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
436 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
437 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700438
Jeff Johnson295189b2012-06-20 16:38:30 -0700439
440 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
441
442 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
443 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
444#ifdef WLAN_FEATURE_VOWIFI_11R
445 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
446#else
447 NULL,
448#endif /* WLAN_FEATURE_VOWIFI_11R */
449 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
450 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700451#ifdef FEATURE_OEM_DATA_SUPPORT
452 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
453#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700454 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700455#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700456 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
457
Jeff Johnson295189b2012-06-20 16:38:30 -0700458 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700459
Jeff Johnson295189b2012-06-20 16:38:30 -0700460 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700461
Jeff Johnsone7245742012-09-05 17:12:55 -0700462 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
463
Jeff Johnson295189b2012-06-20 16:38:30 -0700464#ifdef FEATURE_WLAN_SCAN_PNO
465 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
466 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
467 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
468#else
469 NULL,
470 NULL,
471 NULL,
472#endif // FEATURE_WLAN_SCAN_PNO
473
474 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
475
476 /*---------------------------------------------------------------------
477 Indications
478 ---------------------------------------------------------------------*/
479#ifdef WLAN_FEATURE_PACKET_FILTERING
480 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700481 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700482 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700483 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700484 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700485 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700486 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700487 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700488#else
489 NULL,
490 NULL,
491 NULL,
492 NULL,
493#endif // WLAN_FEATURE_PACKET_FILTERING
494
495 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
496 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
497
498 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
499#ifdef FEATURE_WLAN_CCX
500 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
501#else
502 NULL,
503#endif
504
505#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700506 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
507 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700508#else
509 NULL,
510 NULL,
511#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700512 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
513 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700514#ifdef WLAN_FEATURE_11AC
515 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700516#else
517 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700518#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800519#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
520 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
521#else
522 NULL,
523#endif
schangd82195a2013-03-13 18:41:24 -0700524 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700525
526 /*---------------------------------------------------------------------
527 Indications
528 ---------------------------------------------------------------------*/
529 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
530 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
531 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
532 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
533 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
534 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
535
536 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
537
538 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
539
Jeff Johnson295189b2012-06-20 16:38:30 -0700540 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700541
542#ifdef FEATURE_WLAN_SCAN_PNO
543 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
544#else
545 NULL,
546#endif // FEATURE_WLAN_SCAN_PNO
547
548#ifdef WLAN_WAKEUP_EVENTS
549 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
550#else // WLAN_WAKEUP_EVENTS
551 NULL,
552#endif // WLAN_WAKEUP_EVENTS
553
554 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800555
Viral Modi9dc288a2012-12-10 13:09:21 -0800556 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700557};
558
559
Jeff Johnsone7245742012-09-05 17:12:55 -0700560/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700561 WLAN DAL Global Control Block
562 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700563WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700564static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
565
Jeff Johnsone7245742012-09-05 17:12:55 -0700566const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700567
568/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700569WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700570void* WDI_GET_PAL_CTX( void )
571{
Jeff Johnsone7245742012-09-05 17:12:55 -0700572 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700573}/*WDI_GET_PAL_CTX*/
574
Jeff Johnsone7245742012-09-05 17:12:55 -0700575/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700576 Helper inline converters
577 ============================================================================*/
578/*Convert WDI driver type into HAL driver type*/
579WPT_STATIC WPT_INLINE WDI_Status
580WDI_HAL_2_WDI_STATUS
581(
582 eHalStatus halStatus
583);
584
585/*Convert WDI request type into HAL request type*/
586WPT_STATIC WPT_INLINE tHalHostMsgType
587WDI_2_HAL_REQ_TYPE
588(
589 WDI_RequestEnumType wdiReqType
590);
591
592/*Convert WDI response type into HAL response type*/
593WPT_STATIC WPT_INLINE WDI_ResponseEnumType
594HAL_2_WDI_RSP_TYPE
595(
596 tHalHostMsgType halMsg
597);
598
599/*Convert WDI driver type into HAL driver type*/
600WPT_STATIC WPT_INLINE tDriverType
601WDI_2_HAL_DRV_TYPE
602(
603 WDI_DriverType wdiDriverType
604);
605
606/*Convert WDI stop reason into HAL stop reason*/
607WPT_STATIC WPT_INLINE tHalStopType
608WDI_2_HAL_STOP_REASON
609(
610 WDI_StopType wdiStopType
611);
612
613/*Convert WDI scan mode type into HAL scan mode type*/
614WPT_STATIC WPT_INLINE eHalSysMode
615WDI_2_HAL_SCAN_MODE
616(
617 WDI_ScanMode wdiScanMode
618);
619
620/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700621WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700622WDI_2_HAL_SEC_CH_OFFSET
623(
624 WDI_HTSecondaryChannelOffset wdiSecChOffset
625);
626
627/*Convert WDI BSS type into HAL BSS type*/
628WPT_STATIC WPT_INLINE tSirBssType
629WDI_2_HAL_BSS_TYPE
630(
631 WDI_BssType wdiBSSType
632);
633
634/*Convert WDI NW type into HAL NW type*/
635WPT_STATIC WPT_INLINE tSirNwType
636WDI_2_HAL_NW_TYPE
637(
638 WDI_NwType wdiNWType
639);
640
641/*Convert WDI chanel bonding type into HAL cb type*/
642WPT_STATIC WPT_INLINE ePhyChanBondState
643WDI_2_HAL_CB_STATE
644(
645 WDI_PhyChanBondState wdiCbState
646);
647
648/*Convert WDI chanel bonding type into HAL cb type*/
649WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
650WDI_2_HAL_HT_OPER_MODE
651(
652 WDI_HTOperatingMode wdiHTOperMode
653);
654
655/*Convert WDI mimo PS type into HAL mimo PS type*/
656WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
657WDI_2_HAL_MIMO_PS
658(
659 WDI_HTMIMOPowerSaveState wdiHTOperMode
660);
661
662/*Convert WDI ENC type into HAL ENC type*/
663WPT_STATIC WPT_INLINE tAniEdType
664WDI_2_HAL_ENC_TYPE
665(
666 WDI_EncryptType wdiEncType
667);
668
669/*Convert WDI WEP type into HAL WEP type*/
670WPT_STATIC WPT_INLINE tAniWepType
671WDI_2_HAL_WEP_TYPE
672(
673 WDI_WepType wdiWEPType
674);
675
676/*Convert WDI Link State into HAL Link State*/
677WPT_STATIC WPT_INLINE tSirLinkState
678WDI_2_HAL_LINK_STATE
679(
680 WDI_LinkStateType wdiLinkState
681);
682
Jeff Johnsone7245742012-09-05 17:12:55 -0700683/*Translate a STA Context from WDI into HAL*/
684WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700685void
686WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700687(
Jeff Johnson295189b2012-06-20 16:38:30 -0700688 tConfigStaParams* phalConfigSta,
689 WDI_ConfigStaReqInfoType* pwdiConfigSta
690);
Jeff Johnsone7245742012-09-05 17:12:55 -0700691
692/*Translate a Rate set info from WDI into HAL*/
693WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700694WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700695(
Jeff Johnson295189b2012-06-20 16:38:30 -0700696 tSirMacRateSet* pHalRateSet,
697 WDI_RateSet* pwdiRateSet
698);
699
700/*Translate an EDCA Parameter Record from WDI into HAL*/
701WPT_STATIC WPT_INLINE void
702WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700703(
Jeff Johnson295189b2012-06-20 16:38:30 -0700704 tSirMacEdcaParamRecord* phalEdcaParam,
705 WDI_EdcaParamRecord* pWDIEdcaParam
706);
707
708/*Copy a management frame header from WDI fmt into HAL fmt*/
709WPT_STATIC WPT_INLINE void
710WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
711(
712 tSirMacMgmtHdr* pmacMgmtHdr,
713 WDI_MacMgmtHdr* pwdiMacMgmtHdr
714);
715
716/*Copy config bss parameters from WDI fmt into HAL fmt*/
717WPT_STATIC WPT_INLINE void
718WDI_CopyWDIConfigBSSToHALConfigBSS
719(
720 tConfigBssParams* phalConfigBSS,
721 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
722);
723
Jeff Johnsone7245742012-09-05 17:12:55 -0700724/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700725 pointed to by user data */
726WPT_STATIC WPT_INLINE void
727WDI_ExtractRequestCBFromEvent
728(
729 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700730 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700731 void** ppUserData
732);
733
734wpt_uint8
735WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700736(
Jeff Johnson295189b2012-06-20 16:38:30 -0700737 WDI_ControlBlockType* pWDICtx,
738 WDI_BSSSessionType** ppSession
739);
740
741void
742WDI_AddBcastSTAtoSTATable
743(
744 WDI_ControlBlockType* pWDICtx,
745 WDI_AddStaParams * staParams,
746 wpt_uint16 usBcastStaIdx
747);
748
749WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700750(
Jeff Johnson295189b2012-06-20 16:38:30 -0700751 WDI_ControlBlockType* pWDICtx,
752 WDI_EventInfoType* pEventData
753);
754
755void
756WDI_SetPowerStateCb
757(
758 wpt_status status,
759 unsigned int dxePhyAddr,
760 void *pContext
761);
762
763#define CASE_RETURN_STRING( str ) \
764 case ( ( str ) ): return( #str ); break \
765
766/**
767 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700768
769 @param wdiReqMsgId: WDI Message request Id
770
771 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700772 @return Result of the function call
773*/
774static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
775{
776 switch (wdiReqMsgId)
777 {
778 CASE_RETURN_STRING( WDI_START_REQ );
779 CASE_RETURN_STRING( WDI_STOP_REQ );
780 CASE_RETURN_STRING( WDI_CLOSE_REQ );
781 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
782 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
783 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
784 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
785 CASE_RETURN_STRING( WDI_JOIN_REQ );
786 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
787 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
788 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
789 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
790 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
791 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
792 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
793 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
794 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
795 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
796 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
797 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
798 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
799 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
800 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
801 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
802 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
803 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
804 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
805 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
806 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
807 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
808 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
809 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
810 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
811 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
812 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
813 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
814 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
815 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
816 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
817 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
818 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
819 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
820 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
821 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
822 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
823 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
824 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
825 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
826 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
827 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
828 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
829 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
830 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
831 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
832 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
833 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
834 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
835 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
836 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
837 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700838 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700839 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
840 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
841 #ifdef FEATURE_WLAN_SCAN_PNO
842 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
843 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
844 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
845 #endif
846 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
847 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
848 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
849 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
850 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
851 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
852 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
853 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
854 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800855 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800856 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700857 default:
858 return "Unknown WDI MessageId";
859 }
860}
861
862
863
864/**
865 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700866
867 @param wdiRespMsgId: WDI Message response Id
868
869 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700870 @return Result of the function call
871*/
872static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
873{
874 switch (wdiRespMsgId)
875 {
876 CASE_RETURN_STRING( WDI_START_RESP );
877 CASE_RETURN_STRING( WDI_STOP_RESP );
878 CASE_RETURN_STRING( WDI_CLOSE_RESP );
879 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
880 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
881 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
882 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
883 CASE_RETURN_STRING( WDI_JOIN_RESP );
884 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
885 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
886 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
887 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
888 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
889 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
890 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
891 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
892 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
893 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
894 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
895 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
896 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
897 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
898 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
899 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
900 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
901 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
902 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
903 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
904 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
905 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
906 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
907 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
908 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
909 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
910 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
911 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
912 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
913 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
914 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
915 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
916 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
917 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
918 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
919 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
920 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
921 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
922 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
923 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
924 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
925 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
926 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
927 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
928 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
929 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
930 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
931 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
932 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
933 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
934 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
935 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700936 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700937 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
938 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
939 #ifdef FEATURE_WLAN_SCAN_PNO
940 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
941 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
942 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
943 #endif
944 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
945 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
946 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
947 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
948 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
949 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
950 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
951 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800952 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700953 default:
954 return "Unknown WDI MessageId";
955 }
956}
957
958/**
959 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700960
961 @param halStatusId: HAL status Id
962
963 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700964 @return Result of the function call
965*/
966static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
967{
968 switch (halStatusId)
969 {
970 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
971 CASE_RETURN_STRING( PAL_STATUS_INVAL );
972 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
973 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
974 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
975 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
976 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
977 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
978 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
979 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
980 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
981 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
982 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
983 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
984 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
985 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
986 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
987 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
988 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
989 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
990 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
991 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
992 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
993 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
994 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
995 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
996 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
997 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
998 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
999 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1000 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1001 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1002 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1003 default:
1004 return "Unknown HAL status";
1005 }
1006}
1007
Jeff Johnsone7245742012-09-05 17:12:55 -07001008/*========================================================================
1009
Jeff Johnson295189b2012-06-20 16:38:30 -07001010 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001011
Jeff Johnson295189b2012-06-20 16:38:30 -07001012==========================================================================*/
1013
1014/**
1015 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001016
Jeff Johnson295189b2012-06-20 16:38:30 -07001017 DAL will allocate all the resources it needs. It will open PAL, it will also
1018 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001019 DXE/SMD or any other drivers that they need.
1020
Jeff Johnson295189b2012-06-20 16:38:30 -07001021 @param pOSContext: pointer to the OS context provided by the UMAC
1022 will be passed on to PAL on Open
1023 ppWDIGlobalCtx: output pointer of Global Context
1024 pWdiDevCapability: output pointer of device capability
1025
1026 @return Result of the function call
1027*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001028WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001029WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001030(
Jeff Johnson295189b2012-06-20 16:38:30 -07001031 void* pOSContext,
1032 void** ppWDIGlobalCtx,
1033 WDI_DeviceCapabilityType* pWdiDevCapability,
1034 unsigned int driverType
1035)
1036{
1037 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001038 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001039 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001040 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1042
1043 /*---------------------------------------------------------------------
1044 Sanity check
1045 ---------------------------------------------------------------------*/
1046 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1047 {
1048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1049 "Invalid input parameters in WDI_Init");
1050
Jeff Johnsone7245742012-09-05 17:12:55 -07001051 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001052 }
1053
1054 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001055 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001056 ---------------------------------------------------------------------*/
1057 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1058 {
1059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1060 "WDI module already initialized - return");
1061
Jeff Johnsone7245742012-09-05 17:12:55 -07001062 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001063 }
1064
1065 /*Module is now initialized - this flag is to ensure the fact that multiple
1066 init will not happen on WDI
1067 !! - potential race does exist because read and set are not atomic,
1068 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001069 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001070
1071 /*Setup the control block */
1072 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001073 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001074
1075 /*Setup the STA Table*/
1076 wdiStatus = WDI_STATableInit(&gWDICb);
1077 if ( WDI_STATUS_SUCCESS != wdiStatus )
1078 {
1079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1080 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001081 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001082 goto fail_STATableInit;
1083 }
1084
1085 /*------------------------------------------------------------------------
1086 Open the PAL
1087 ------------------------------------------------------------------------*/
1088 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1089 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1090 {
1091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1092 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001093 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001094 goto fail_wpalOpen;
1095 }
1096
1097 /*Initialize main synchro mutex - it will be used to ensure integrity of
1098 the main WDI Control Block*/
1099 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1100 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1101 {
1102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1103 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001104 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001105 goto fail_mutex;
1106 }
1107
1108 /*Initialize the response timer - it will be used to time all messages
1109 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001110 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1111 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001112 &gWDICb);
1113 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1114 {
1115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1116 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001117 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001118 goto fail_timer;
1119 }
1120
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001121 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1122 WDI_SsrTimerCB,
1123 &gWDICb);
1124 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1125 {
1126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1127 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001128 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001129 goto fail_timer2;
1130 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001131 /* Initialize the WDI Pending Request Queue*/
1132 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1133 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1134 {
1135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1136 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001137 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001138 goto fail_pend_queue;
1139 }
1140
1141 /*Init WDI Pending Assoc Id Queue */
1142 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1143 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1144 {
1145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1146 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001147 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001148 goto fail_assoc_queue;
1149 }
1150
1151 /*Initialize the BSS sessions pending Queue */
1152 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1153 {
1154 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1155 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1156 {
1157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1158 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001159 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001160 goto fail_bss_queue;
1161 }
1162 }
1163
1164 /*Indicate the control block is sufficiently initialized for callbacks*/
1165 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1166
1167 /*------------------------------------------------------------------------
1168 Initialize the Data Path Utility Module
1169 ------------------------------------------------------------------------*/
1170 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1171 if ( WDI_STATUS_SUCCESS != wdiStatus )
1172 {
1173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1174 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001175 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001176 goto fail_dp_util_init;
1177 }
1178
1179 /* Init Set power state event */
1180 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001181 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001182 {
1183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1184 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001185 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001186 goto fail_power_event;
1187 }
1188
1189 /* Init WCTS action event */
1190 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001191 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001192 {
1193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1194 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001195 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001196 goto fail_wcts_event;
1197 }
1198
1199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001200 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001201 ------------------------------------------------------------------------*/
1202 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1203 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001204 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001205 wctsCBs.wctsRxMsgCBData = &gWDICb;
1206
Jeff Johnsone7245742012-09-05 17:12:55 -07001207 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001208 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001209 WDI_CT_CHANNEL_SIZE,
1210 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001211
1212 if ( NULL == gWDICb.wctsHandle )
1213 {
1214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001215 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001216 goto fail_wcts_open;
1217 }
1218
1219 gWDICb.driverMode = (tDriverType)driverType;
1220 /* FTM mode not need to open Transport Driver */
1221 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001222 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001223 /*------------------------------------------------------------------------
1224 Open the Data Transport
1225 ------------------------------------------------------------------------*/
1226 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1227 {
1228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001229 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001230 goto fail_wdts_open;
1231 }
1232 }
1233
1234 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001235 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001236
1237 /*Send the context as a ptr to the global WDI Control Block*/
1238 *ppWDIGlobalCtx = &gWDICb;
1239
1240 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001241 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001242 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1243 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1244 return WDI_STATUS_SUCCESS;
1245
1246 /* ERROR handlers
1247 Undo everything that completed successfully */
1248
1249 fail_wdts_open:
1250 {
1251 wpt_status eventStatus;
1252
1253 /* Closing WCTS in this scenario is tricky since it has to close
1254 the SMD channel and then we get notified asynchronously when
1255 the channel has been closed. So we take some of the logic from
1256 the "normal" close procedure in WDI_Close()
1257 */
1258
1259 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001260 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001261 {
1262 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001263 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001264 }
1265
1266 WCTS_CloseTransport(gWDICb.wctsHandle);
1267
1268 /* Wait for WCTS to close the control transport. If we were able
1269 to reset the event flag, then we'll wait for the event,
1270 otherwise we'll wait for a maximum amount of time required for
1271 the channel to be closed */
1272 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1273 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001274 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001275 WDI_WCTS_ACTION_TIMEOUT);
1276 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1277 {
1278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001279 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001280 }
1281 }
1282 else
1283 {
1284 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1285 }
1286 }
1287 fail_wcts_open:
1288 wpalEventDelete(&gWDICb.wctsActionEvent);
1289 fail_wcts_event:
1290 wpalEventDelete(&gWDICb.setPowerStateEvent);
1291 fail_power_event:
1292 WDI_DP_UtilsExit(&gWDICb);
1293 fail_dp_util_init:
1294 gWDICb.magic = 0;
1295 fail_bss_queue:
1296 /* entries 0 thru i-1 were successfully initialized */
1297 while (0 < i)
1298 {
1299 i--;
1300 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1301 }
1302 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1303 fail_assoc_queue:
1304 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1305 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001306 wpalTimerDelete(&gWDICb.ssrTimer);
1307 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001308 wpalTimerDelete(&gWDICb.wptResponseTimer);
1309 fail_timer:
1310 wpalMutexDelete(&gWDICb.wptMutex);
1311 fail_mutex:
1312 wpalClose(gWDICb.pPALContext);
1313 fail_wpalOpen:
1314 WDI_STATableClose(&gWDICb);
1315 fail_STATableInit:
1316 gWDIInitialized = eWLAN_PAL_FALSE;
1317
1318 return WDI_STATUS_E_FAILURE;
1319
1320}/*WDI_Init*/;
1321
1322/**
1323 @brief WDI_Start will be called when the upper MAC is ready to
1324 commence operation with the WLAN Device. Upon the call
1325 of this API the WLAN DAL will pack and send a HAL Start
1326 message to the lower RIVA sub-system if the SMD channel
1327 has been fully opened and the RIVA subsystem is up.
1328
1329 If the RIVA sub-system is not yet up and running DAL
1330 will queue the request for Open and will wait for the
1331 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001332 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001333
1334 WDI_Init must have been called.
1335
Jeff Johnsone7245742012-09-05 17:12:55 -07001336 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001337 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001338
Jeff Johnson295189b2012-06-20 16:38:30 -07001339 wdiStartRspCb: callback for passing back the response of
1340 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001341
Jeff Johnson295189b2012-06-20 16:38:30 -07001342 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001343 callback
1344
Jeff Johnson295189b2012-06-20 16:38:30 -07001345 @see WDI_Start
1346 @return Result of the function call
1347*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001348WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001349WDI_Start
1350(
1351 WDI_StartReqParamsType* pwdiStartParams,
1352 WDI_StartRspCb wdiStartRspCb,
1353 void* pUserData
1354)
1355{
1356 WDI_EventInfoType wdiEventData;
1357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1358
1359 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001360 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001361 ------------------------------------------------------------------------*/
1362 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1363 {
1364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1365 "WDI API call before module is initialized - Fail request");
1366
Jeff Johnsone7245742012-09-05 17:12:55 -07001367 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001368 }
1369
1370 /*------------------------------------------------------------------------
1371 Fill in Event data and post to the Main FSM
1372 ------------------------------------------------------------------------*/
1373 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001374 wdiEventData.pEventData = pwdiStartParams;
1375 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1376 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001377 wdiEventData.pUserData = pUserData;
1378
1379 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1380
1381}/*WDI_Start*/
1382
1383/**
1384 @brief WDI_Stop will be called when the upper MAC is ready to
1385 stop any operation with the WLAN Device. Upon the call
1386 of this API the WLAN DAL will pack and send a HAL Stop
1387 message to the lower RIVA sub-system if the DAL Core is
1388 in started state.
1389
1390 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001391
1392 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001393
1394 WDI_Start must have been called.
1395
Jeff Johnsone7245742012-09-05 17:12:55 -07001396 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001397 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001398
Jeff Johnson295189b2012-06-20 16:38:30 -07001399 wdiStopRspCb: callback for passing back the response of
1400 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001401
Jeff Johnson295189b2012-06-20 16:38:30 -07001402 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001403 callback
1404
Jeff Johnson295189b2012-06-20 16:38:30 -07001405 @see WDI_Start
1406 @return Result of the function call
1407*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001408WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001409WDI_Stop
1410(
1411 WDI_StopReqParamsType* pwdiStopParams,
1412 WDI_StopRspCb wdiStopRspCb,
1413 void* pUserData
1414)
1415{
1416 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001417 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1419
1420 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001421 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001422 ------------------------------------------------------------------------*/
1423 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1424 {
1425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1426 "WDI API call before module is initialized - Fail request");
1427
Jeff Johnsone7245742012-09-05 17:12:55 -07001428 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001429 }
1430
Jeff Johnson43971f52012-07-17 12:26:56 -07001431 /*Access to the global state must be locked before cleaning */
1432 wpalMutexAcquire(&pWDICtx->wptMutex);
1433
1434 /*Clear all pending request*/
1435 WDI_ClearPendingRequests(pWDICtx);
1436
1437 /*We have completed cleaning unlock now*/
1438 wpalMutexRelease(&pWDICtx->wptMutex);
1439
Jeff Johnson295189b2012-06-20 16:38:30 -07001440 /* Free the global variables */
1441 wpalMemoryFree(gpHostWlanFeatCaps);
1442 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001443 gpHostWlanFeatCaps = NULL;
1444 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001445
1446 /*------------------------------------------------------------------------
1447 Fill in Event data and post to the Main FSM
1448 ------------------------------------------------------------------------*/
1449 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001450 wdiEventData.pEventData = pwdiStopParams;
1451 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1452 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001453 wdiEventData.pUserData = pUserData;
1454
1455 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1456
1457}/*WDI_Stop*/
1458
1459
1460
1461/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001462 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001463 needs to interact with DAL. DAL will free its control
1464 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001465
1466 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001467
1468 WDI_Stop must have been called.
1469
1470 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001471
Jeff Johnson295189b2012-06-20 16:38:30 -07001472 @see WDI_Stop
1473 @return Result of the function call
1474*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001475WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001476WDI_Close
1477(
1478 void
1479)
1480{
1481 wpt_uint8 i;
1482 WDI_EventInfoType wdiEventData;
1483 wpt_status wptStatus;
1484 wpt_status eventStatus;
1485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1486
1487 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001488 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001489 ------------------------------------------------------------------------*/
1490 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1491 {
1492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1493 "WDI API call before module is initialized - Fail request");
1494
Jeff Johnsone7245742012-09-05 17:12:55 -07001495 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001496 }
1497
1498 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1499 (the control transport will be closed by the FSM and we'll want
1500 to wait until that completes)*/
1501 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001502 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001503 {
1504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001505 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001506 /* fall through and try to finish closing via the FSM */
1507 }
1508
1509 /*------------------------------------------------------------------------
1510 Fill in Event data and post to the Main FSM
1511 ------------------------------------------------------------------------*/
1512 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001513 wdiEventData.pEventData = NULL;
1514 wdiEventData.uEventDataSize = 0;
1515 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001516 wdiEventData.pUserData = NULL;
1517
1518 gWDIInitialized = eWLAN_PAL_FALSE;
1519
1520 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1521
1522 /*Wait for WCTS to close the control transport
1523 (but only if we were able to reset the event flag*/
1524 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1525 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001526 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001527 WDI_WCTS_ACTION_TIMEOUT);
1528 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1529 {
1530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001531 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001532 }
1533 }
1534
1535 /* Destroy the WCTS action event */
1536 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1537 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1538 {
1539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1540 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001541 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001542 }
1543
1544 /* Destroy the Set Power State event */
1545 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1546 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1547 {
1548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1549 "WDI Close failed to destroy an event");
1550
Jeff Johnsone7245742012-09-05 17:12:55 -07001551 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001552 }
1553
1554 /*------------------------------------------------------------------------
1555 Closes the Data Path Utility Module
1556 ------------------------------------------------------------------------*/
1557 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1558 {
1559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1560 "WDI Init failed to close the DP Util Module");
1561
Jeff Johnsone7245742012-09-05 17:12:55 -07001562 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001563 }
1564
1565 /*destroy the BSS sessions pending Queue */
1566 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1567 {
1568 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1569 }
1570
1571 /* destroy the WDI Pending Assoc Id Request Queue*/
1572 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1573
1574 /* destroy the WDI Pending Request Queue*/
1575 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001576
Jeff Johnson295189b2012-06-20 16:38:30 -07001577 /*destroy the response timer */
1578 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1579
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001580 /*destroy the SSR timer */
1581 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1582
Jeff Johnson295189b2012-06-20 16:38:30 -07001583 /*invalidate the main synchro mutex */
1584 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1585 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1586 {
1587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1588 "Failed to delete mutex %d", wptStatus);
1589 WDI_ASSERT(0);
1590 }
1591
1592 /*Clear control block. note that this will clear the "magic"
1593 which will inhibit all asynchronous callbacks*/
1594 WDI_CleanCB(&gWDICb);
1595
1596 return wptStatus;
1597
1598}/*WDI_Close*/
1599
1600/**
1601 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1602 This will do most of the WDI stop & close
1603 operations without doing any handshake with Riva
1604
1605 This will also make sure that the control transport
1606 will NOT be closed.
1607
1608 This request will not be queued.
1609
1610
1611 WDI_Start must have been called.
1612
1613 @param closeTransport: Close control channel if this is set
1614
1615 @return Result of the function call
1616*/
1617WDI_Status
1618WDI_Shutdown
1619(
1620 wpt_boolean closeTransport
1621)
1622{
1623 WDI_EventInfoType wdiEventData;
1624 wpt_status wptStatus;
1625 int i = 0;
1626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1627
1628 /*------------------------------------------------------------------------
1629 Sanity Check
1630 ------------------------------------------------------------------------*/
1631 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1632 {
1633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1634 "WDI API call before module is initialized - Fail request");
1635
1636 return WDI_STATUS_E_NOT_ALLOWED;
1637 }
1638
1639 /*------------------------------------------------------------------------
1640 Fill in Event data and post to the Main FSM
1641 ------------------------------------------------------------------------*/
1642 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1643 wdiEventData.pEventData = NULL;
1644 wdiEventData.uEventDataSize = 0;
1645
1646 /* Shutdown will not be queued, if the state is busy timer will be
1647 * stopped & this message will be processed.*/
1648 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1649 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1650 {
1651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001652 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001653 }
1654 /* Destroy the Set Power State event */
1655 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1656 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1657 {
1658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1659 "WDI Close failed to destroy an event");
1660
1661 WDI_ASSERT(0);
1662 }
1663 /*------------------------------------------------------------------------
1664 Closes the Data Path Utility Module
1665 ------------------------------------------------------------------------*/
1666 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1667 {
1668 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1669 "WDI Init failed to close the DP Util Module");
1670
1671 WDI_ASSERT(0);
1672 }
1673 if ( closeTransport )
1674 {
1675 /* Close control transport, called from module unload */
1676 WCTS_CloseTransport(gWDICb.wctsHandle);
1677 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001678 else
1679 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001680 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001681 the pending messages in the transport queue */
1682 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1683 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001684 /*destroy the BSS sessions pending Queue */
1685 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1686 {
1687 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1688 }
1689
1690 /* destroy the WDI Pending Assoc Id Request Queue*/
1691 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1692 /* destroy the WDI Pending Request Queue*/
1693 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1694 /*destroy the response timer */
1695 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001696 /*destroy the SSR timer */
1697 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001698
1699 /*invalidate the main synchro mutex */
1700 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1701 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1702 {
1703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001704 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001705 WDI_ASSERT(0);
1706 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001707 /* Free the global variables */
1708 wpalMemoryFree(gpHostWlanFeatCaps);
1709 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001710 gpHostWlanFeatCaps = NULL;
1711 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001712 /*Clear control block. note that this will clear the "magic"
1713 which will inhibit all asynchronous callbacks*/
1714 WDI_CleanCB(&gWDICb);
1715 return wptStatus;
1716
1717}/*WDI_Shutdown*/
1718
1719
Jeff Johnsone7245742012-09-05 17:12:55 -07001720/*========================================================================
1721
Jeff Johnson295189b2012-06-20 16:38:30 -07001722 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001723
Jeff Johnson295189b2012-06-20 16:38:30 -07001724==========================================================================*/
1725
1726/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001727 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001728 the WLAN Device to get ready for a scan procedure. Upon
1729 the call of this API the WLAN DAL will pack and send a
1730 HAL Init Scan request message to the lower RIVA
1731 sub-system if DAL is in state STARTED.
1732
1733 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001734 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001735
1736 WDI_Start must have been called.
1737
1738 @param wdiInitScanParams: the init scan parameters as specified
1739 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001740
Jeff Johnson295189b2012-06-20 16:38:30 -07001741 wdiInitScanRspCb: callback for passing back the response
1742 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001743
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001745 callback
1746
Jeff Johnson295189b2012-06-20 16:38:30 -07001747 @see WDI_Start
1748 @return Result of the function call
1749*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001750WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001751WDI_InitScanReq
1752(
1753 WDI_InitScanReqParamsType* pwdiInitScanParams,
1754 WDI_InitScanRspCb wdiInitScanRspCb,
1755 void* pUserData
1756)
1757{
1758 WDI_EventInfoType wdiEventData;
1759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1760
1761 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001762 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001763 ------------------------------------------------------------------------*/
1764 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1765 {
1766 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1767 "WDI API call before module is initialized - Fail request");
1768
Jeff Johnsone7245742012-09-05 17:12:55 -07001769 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001770 }
1771
1772 /*------------------------------------------------------------------------
1773 Fill in Event data and post to the Main FSM
1774 ------------------------------------------------------------------------*/
1775 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001776 wdiEventData.pEventData = pwdiInitScanParams;
1777 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1778 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001779 wdiEventData.pUserData = pUserData;
1780
1781 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1782
1783}/*WDI_InitScanReq*/
1784
1785/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001786 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001787 wishes to change the Scan channel on the WLAN Device.
1788 Upon the call of this API the WLAN DAL will pack and
1789 send a HAL Start Scan request message to the lower RIVA
1790 sub-system if DAL is in state STARTED.
1791
1792 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001793 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001794
1795 WDI_InitScanReq must have been called.
1796
Jeff Johnsone7245742012-09-05 17:12:55 -07001797 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001798 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001799
Jeff Johnson295189b2012-06-20 16:38:30 -07001800 wdiStartScanRspCb: callback for passing back the
1801 response of the start scan operation received from the
1802 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001803
Jeff Johnson295189b2012-06-20 16:38:30 -07001804 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001805 callback
1806
Jeff Johnson295189b2012-06-20 16:38:30 -07001807 @see WDI_InitScanReq
1808 @return Result of the function call
1809*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001810WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001811WDI_StartScanReq
1812(
1813 WDI_StartScanReqParamsType* pwdiStartScanParams,
1814 WDI_StartScanRspCb wdiStartScanRspCb,
1815 void* pUserData
1816)
1817{
1818 WDI_EventInfoType wdiEventData;
1819 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1820
1821 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001822 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001823 ------------------------------------------------------------------------*/
1824 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1825 {
1826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1827 "WDI API call before module is initialized - Fail request");
1828
Jeff Johnsone7245742012-09-05 17:12:55 -07001829 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001830 }
1831
1832 /*------------------------------------------------------------------------
1833 Fill in Event data and post to the Main FSM
1834 ------------------------------------------------------------------------*/
1835 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001836 wdiEventData.pEventData = pwdiStartScanParams;
1837 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1838 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001839 wdiEventData.pUserData = pUserData;
1840
1841 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1842
1843}/*WDI_StartScanReq*/
1844
1845
1846/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001847 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001848 wants to end scanning for a particular channel that it
1849 had set before by calling Scan Start on the WLAN Device.
1850 Upon the call of this API the WLAN DAL will pack and
1851 send a HAL End Scan request message to the lower RIVA
1852 sub-system if DAL is in state STARTED.
1853
1854 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001855 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001856
1857 WDI_StartScanReq must have been called.
1858
Jeff Johnsone7245742012-09-05 17:12:55 -07001859 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001860 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001861
Jeff Johnson295189b2012-06-20 16:38:30 -07001862 wdiEndScanRspCb: callback for passing back the response
1863 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001864
Jeff Johnson295189b2012-06-20 16:38:30 -07001865 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001866 callback
1867
Jeff Johnson295189b2012-06-20 16:38:30 -07001868 @see WDI_StartScanReq
1869 @return Result of the function call
1870*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001871WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001872WDI_EndScanReq
1873(
1874 WDI_EndScanReqParamsType* pwdiEndScanParams,
1875 WDI_EndScanRspCb wdiEndScanRspCb,
1876 void* pUserData
1877)
1878{
1879 WDI_EventInfoType wdiEventData;
1880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1881
1882 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001883 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001884 ------------------------------------------------------------------------*/
1885 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1886 {
1887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1888 "WDI API call before module is initialized - Fail request");
1889
Jeff Johnsone7245742012-09-05 17:12:55 -07001890 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001891 }
1892
1893 /*------------------------------------------------------------------------
1894 Fill in Event data and post to the Main FSM
1895 ------------------------------------------------------------------------*/
1896 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001897 wdiEventData.pEventData = pwdiEndScanParams;
1898 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1899 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001900 wdiEventData.pUserData = pUserData;
1901
1902 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1903
1904}/*WDI_EndScanReq*/
1905
1906
1907/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001908 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001909 completed the scan process on the WLAN Device. Upon the
1910 call of this API the WLAN DAL will pack and send a HAL
1911 Finish Scan Request request message to the lower RIVA
1912 sub-system if DAL is in state STARTED.
1913
1914 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001915 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001916
1917 WDI_InitScanReq must have been called.
1918
Jeff Johnsone7245742012-09-05 17:12:55 -07001919 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001920 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001921
Jeff Johnson295189b2012-06-20 16:38:30 -07001922 wdiFinishScanRspCb: callback for passing back the
1923 response of the finish scan operation received from the
1924 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001925
Jeff Johnson295189b2012-06-20 16:38:30 -07001926 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001927 callback
1928
Jeff Johnson295189b2012-06-20 16:38:30 -07001929 @see WDI_InitScanReq
1930 @return Result of the function call
1931*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001932WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001933WDI_FinishScanReq
1934(
1935 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1936 WDI_FinishScanRspCb wdiFinishScanRspCb,
1937 void* pUserData
1938)
1939{
1940 WDI_EventInfoType wdiEventData;
1941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1942
1943 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001944 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001945 ------------------------------------------------------------------------*/
1946 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1947 {
1948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1949 "WDI API call before module is initialized - Fail request");
1950
Jeff Johnsone7245742012-09-05 17:12:55 -07001951 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001952 }
1953
1954 /*------------------------------------------------------------------------
1955 Fill in Event data and post to the Main FSM
1956 ------------------------------------------------------------------------*/
1957 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001958 wdiEventData.pEventData = pwdiFinishScanParams;
1959 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1960 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 wdiEventData.pUserData = pUserData;
1962
1963 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1964
1965}/*WDI_FinishScanReq*/
1966
Jeff Johnsone7245742012-09-05 17:12:55 -07001967/*========================================================================
1968
Jeff Johnson295189b2012-06-20 16:38:30 -07001969 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001970
Jeff Johnson295189b2012-06-20 16:38:30 -07001971==========================================================================*/
1972
1973/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001974 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07001975 to start an association procedure to a BSS. Upon the
1976 call of this API the WLAN DAL will pack and send a HAL
1977 Join request message to the lower RIVA sub-system if
1978 DAL is in state STARTED.
1979
1980 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001981 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001982
1983 WDI_Start must have been called.
1984
Jeff Johnsone7245742012-09-05 17:12:55 -07001985 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001986 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001987
Jeff Johnson295189b2012-06-20 16:38:30 -07001988 wdiJoinRspCb: callback for passing back the response of
1989 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001990
Jeff Johnson295189b2012-06-20 16:38:30 -07001991 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001992 callback
1993
Jeff Johnson295189b2012-06-20 16:38:30 -07001994 @see WDI_Start
1995 @return Result of the function call
1996*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001997WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001998WDI_JoinReq
1999(
2000 WDI_JoinReqParamsType* pwdiJoinParams,
2001 WDI_JoinRspCb wdiJoinRspCb,
2002 void* pUserData
2003)
2004{
2005 WDI_EventInfoType wdiEventData;
2006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2007
2008 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002010 ------------------------------------------------------------------------*/
2011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2012 {
2013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2014 "WDI API call before module is initialized - Fail request");
2015
Jeff Johnsone7245742012-09-05 17:12:55 -07002016 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002017 }
2018
2019 /*------------------------------------------------------------------------
2020 Fill in Event data and post to the Main FSM
2021 ------------------------------------------------------------------------*/
2022 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002023 wdiEventData.pEventData = pwdiJoinParams;
2024 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2025 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002026 wdiEventData.pUserData = pUserData;
2027
2028 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2029
2030}/*WDI_JoinReq*/
2031
2032/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002033 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002034 wishes to configure the newly acquired or in process of
2035 being acquired BSS to the HW . Upon the call of this API
2036 the WLAN DAL will pack and send a HAL Config BSS request
2037 message to the lower RIVA sub-system if DAL is in state
2038 STARTED.
2039
2040 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002042
2043 WDI_JoinReq must have been called.
2044
Jeff Johnsone7245742012-09-05 17:12:55 -07002045 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002046 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002047
Jeff Johnson295189b2012-06-20 16:38:30 -07002048 wdiConfigBSSRspCb: callback for passing back the
2049 response of the config BSS operation received from the
2050 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002051
Jeff Johnson295189b2012-06-20 16:38:30 -07002052 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 callback
2054
Jeff Johnson295189b2012-06-20 16:38:30 -07002055 @see WDI_JoinReq
2056 @return Result of the function call
2057*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002058WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002059WDI_ConfigBSSReq
2060(
2061 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2062 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2063 void* pUserData
2064)
2065{
2066 WDI_EventInfoType wdiEventData;
2067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2068
2069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002070 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 ------------------------------------------------------------------------*/
2072 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2073 {
2074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2075 "WDI API call before module is initialized - Fail request");
2076
Jeff Johnsone7245742012-09-05 17:12:55 -07002077 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002078 }
2079
2080 /*------------------------------------------------------------------------
2081 Fill in Event data and post to the Main FSM
2082 ------------------------------------------------------------------------*/
2083 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002084 wdiEventData.pEventData = pwdiConfigBSSParams;
2085 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2086 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002087 wdiEventData.pUserData = pUserData;
2088
2089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2090
2091}/*WDI_ConfigBSSReq*/
2092
2093/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002094 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 disassociating from the BSS and wishes to notify HW.
2096 Upon the call of this API the WLAN DAL will pack and
2097 send a HAL Del BSS request message to the lower RIVA
2098 sub-system if DAL is in state STARTED.
2099
2100 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002102
2103 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2104
Jeff Johnsone7245742012-09-05 17:12:55 -07002105 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002107
Jeff Johnson295189b2012-06-20 16:38:30 -07002108 wdiDelBSSRspCb: callback for passing back the response
2109 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002110
Jeff Johnson295189b2012-06-20 16:38:30 -07002111 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002112 callback
2113
2114 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002115 @return Result of the function call
2116*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002117WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002118WDI_DelBSSReq
2119(
2120 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2121 WDI_DelBSSRspCb wdiDelBSSRspCb,
2122 void* pUserData
2123)
2124{
2125 WDI_EventInfoType wdiEventData;
2126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2127
2128 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002129 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002130 ------------------------------------------------------------------------*/
2131 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2132 {
2133 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2134 "WDI API call before module is initialized - Fail request");
2135
Jeff Johnsone7245742012-09-05 17:12:55 -07002136 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002137 }
2138
2139 /*------------------------------------------------------------------------
2140 Fill in Event data and post to the Main FSM
2141 ------------------------------------------------------------------------*/
2142 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002143 wdiEventData.pEventData = pwdiDelBSSParams;
2144 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2145 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002146 wdiEventData.pUserData = pUserData;
2147
2148 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2149
2150}/*WDI_DelBSSReq*/
2151
2152/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002153 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002154 associated to a BSS and wishes to configure HW for
2155 associated state. Upon the call of this API the WLAN DAL
2156 will pack and send a HAL Post Assoc request message to
2157 the lower RIVA sub-system if DAL is in state STARTED.
2158
2159 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002160 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002161
2162 WDI_JoinReq must have been called.
2163
2164 @param wdiPostAssocReqParams: the assoc parameters as specified
2165 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002166
Jeff Johnson295189b2012-06-20 16:38:30 -07002167 wdiPostAssocRspCb: callback for passing back the
2168 response of the post assoc operation received from the
2169 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002170
Jeff Johnson295189b2012-06-20 16:38:30 -07002171 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002172 callback
2173
Jeff Johnson295189b2012-06-20 16:38:30 -07002174 @see WDI_JoinReq
2175 @return Result of the function call
2176*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002177WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002178WDI_PostAssocReq
2179(
2180 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2181 WDI_PostAssocRspCb wdiPostAssocRspCb,
2182 void* pUserData
2183)
2184{
2185 WDI_EventInfoType wdiEventData;
2186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2187
2188 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002189 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002190 ------------------------------------------------------------------------*/
2191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2192 {
2193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2194 "WDI API call before module is initialized - Fail request");
2195
Jeff Johnsone7245742012-09-05 17:12:55 -07002196 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002197 }
2198
2199 /*------------------------------------------------------------------------
2200 Fill in Event data and post to the Main FSM
2201 ------------------------------------------------------------------------*/
2202 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002203 wdiEventData.pEventData = pwdiPostAssocReqParams;
2204 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2205 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002206 wdiEventData.pUserData = pUserData;
2207
2208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2209
2210}/*WDI_PostAssocReq*/
2211
2212/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002213 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002214 association with another STA has ended and the station
2215 must be deleted from HW. Upon the call of this API the
2216 WLAN DAL will pack and send a HAL Del STA request
2217 message to the lower RIVA sub-system if DAL is in state
2218 STARTED.
2219
2220 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002221 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002222
2223 WDI_PostAssocReq must have been called.
2224
Jeff Johnsone7245742012-09-05 17:12:55 -07002225 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002226 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002227
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 wdiDelSTARspCb: callback for passing back the response
2229 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002230
Jeff Johnson295189b2012-06-20 16:38:30 -07002231 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002232 callback
2233
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 @see WDI_PostAssocReq
2235 @return Result of the function call
2236*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002237WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002238WDI_DelSTAReq
2239(
2240 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2241 WDI_DelSTARspCb wdiDelSTARspCb,
2242 void* pUserData
2243)
2244{
2245 WDI_EventInfoType wdiEventData;
2246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2247
2248 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002249 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002250 ------------------------------------------------------------------------*/
2251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2252 {
2253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2254 "WDI API call before module is initialized - Fail request");
2255
Jeff Johnsone7245742012-09-05 17:12:55 -07002256 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002257 }
2258
2259 /*------------------------------------------------------------------------
2260 Fill in Event data and post to the Main FSM
2261 ------------------------------------------------------------------------*/
2262 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002263 wdiEventData.pEventData = pwdiDelSTAParams;
2264 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2265 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002266 wdiEventData.pUserData = pUserData;
2267
2268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2269
2270}/*WDI_DelSTAReq*/
2271
Jeff Johnsone7245742012-09-05 17:12:55 -07002272/*========================================================================
2273
Jeff Johnson295189b2012-06-20 16:38:30 -07002274 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002275
Jeff Johnson295189b2012-06-20 16:38:30 -07002276==========================================================================*/
2277
2278/**
2279 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2280 install a BSS encryption key on the HW. Upon the call of this
2281 API the WLAN DAL will pack and send a Set BSS Key request
2282 message to the lower RIVA sub-system if DAL is in state
2283 STARTED.
2284
2285 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002286 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002287
2288 WDI_PostAssocReq must have been called.
2289
Jeff Johnsone7245742012-09-05 17:12:55 -07002290 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002291 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002292
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 wdiSetBSSKeyRspCb: callback for passing back the
2294 response of the set BSS Key operation received from the
2295 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002296
Jeff Johnson295189b2012-06-20 16:38:30 -07002297 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002298 callback
2299
Jeff Johnson295189b2012-06-20 16:38:30 -07002300 @see WDI_PostAssocReq
2301 @return Result of the function call
2302*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002303WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002304WDI_SetBSSKeyReq
2305(
2306 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2307 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2308 void* pUserData
2309)
2310{
2311 WDI_EventInfoType wdiEventData;
2312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2313
2314 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002315 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002316 ------------------------------------------------------------------------*/
2317 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2318 {
2319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2320 "WDI API call before module is initialized - Fail request");
2321
Jeff Johnsone7245742012-09-05 17:12:55 -07002322 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002323 }
2324
2325 /*------------------------------------------------------------------------
2326 Fill in Event data and post to the Main FSM
2327 ------------------------------------------------------------------------*/
2328 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002329 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2330 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2331 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002332 wdiEventData.pUserData = pUserData;
2333
2334 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2335
2336}/*WDI_SetBSSKeyReq*/
2337
2338/**
2339 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2340 uninstall a BSS key from HW. Upon the call of this API the
2341 WLAN DAL will pack and send a HAL Remove BSS Key request
2342 message to the lower RIVA sub-system if DAL is in state
2343 STARTED.
2344
2345 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002346 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002347
2348 WDI_SetBSSKeyReq must have been called.
2349
Jeff Johnsone7245742012-09-05 17:12:55 -07002350 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002351 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002352
Jeff Johnson295189b2012-06-20 16:38:30 -07002353 wdiRemoveBSSKeyRspCb: callback for passing back the
2354 response of the remove BSS key operation received from
2355 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002356
Jeff Johnson295189b2012-06-20 16:38:30 -07002357 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002358 callback
2359
Jeff Johnson295189b2012-06-20 16:38:30 -07002360 @see WDI_SetBSSKeyReq
2361 @return Result of the function call
2362*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002363WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002364WDI_RemoveBSSKeyReq
2365(
2366 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2367 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2368 void* pUserData
2369)
2370{
2371 WDI_EventInfoType wdiEventData;
2372 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2373
2374 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002375 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002376 ------------------------------------------------------------------------*/
2377 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2378 {
2379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2380 "WDI API call before module is initialized - Fail request");
2381
Jeff Johnsone7245742012-09-05 17:12:55 -07002382 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002383 }
2384
2385 /*------------------------------------------------------------------------
2386 Fill in Event data and post to the Main FSM
2387 ------------------------------------------------------------------------*/
2388 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002389 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2390 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2391 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002392 wdiEventData.pUserData = pUserData;
2393
2394 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2395
2396}/*WDI_RemoveBSSKeyReq*/
2397
2398
2399/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002400 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002401 ready to install a STA(ast) encryption key in HW. Upon
2402 the call of this API the WLAN DAL will pack and send a
2403 HAL Set STA Key request message to the lower RIVA
2404 sub-system if DAL is in state STARTED.
2405
2406 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002407 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002408
2409 WDI_PostAssocReq must have been called.
2410
Jeff Johnsone7245742012-09-05 17:12:55 -07002411 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002412 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002413
Jeff Johnson295189b2012-06-20 16:38:30 -07002414 wdiSetSTAKeyRspCb: callback for passing back the
2415 response of the set STA key operation received from the
2416 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002417
Jeff Johnson295189b2012-06-20 16:38:30 -07002418 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002419 callback
2420
Jeff Johnson295189b2012-06-20 16:38:30 -07002421 @see WDI_PostAssocReq
2422 @return Result of the function call
2423*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002424WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002425WDI_SetSTAKeyReq
2426(
2427 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2428 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2429 void* pUserData
2430)
2431{
2432 WDI_EventInfoType wdiEventData;
2433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2434
2435 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002436 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002437 ------------------------------------------------------------------------*/
2438 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2439 {
2440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2441 "WDI API call before module is initialized - Fail request");
2442
Jeff Johnsone7245742012-09-05 17:12:55 -07002443 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002444 }
2445
2446 /*------------------------------------------------------------------------
2447 Fill in Event data and post to the Main FSM
2448 ------------------------------------------------------------------------*/
2449 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002450 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2451 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2452 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002453 wdiEventData.pUserData = pUserData;
2454
2455 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2456
2457}/*WDI_SetSTAKeyReq*/
2458
2459
2460/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002461 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002462 wants to uninstall a previously set STA key in HW. Upon
2463 the call of this API the WLAN DAL will pack and send a
2464 HAL Remove STA Key request message to the lower RIVA
2465 sub-system if DAL is in state STARTED.
2466
2467 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002468 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002469
2470 WDI_SetSTAKeyReq must have been called.
2471
Jeff Johnsone7245742012-09-05 17:12:55 -07002472 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002473 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002474
Jeff Johnson295189b2012-06-20 16:38:30 -07002475 wdiRemoveSTAKeyRspCb: callback for passing back the
2476 response of the remove STA key operation received from
2477 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002478
Jeff Johnson295189b2012-06-20 16:38:30 -07002479 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 callback
2481
Jeff Johnson295189b2012-06-20 16:38:30 -07002482 @see WDI_SetSTAKeyReq
2483 @return Result of the function call
2484*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002485WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002486WDI_RemoveSTAKeyReq
2487(
2488 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2489 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2490 void* pUserData
2491)
2492{
2493 WDI_EventInfoType wdiEventData;
2494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2495
2496 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002498 ------------------------------------------------------------------------*/
2499 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2500 {
2501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2502 "WDI API call before module is initialized - Fail request");
2503
Jeff Johnsone7245742012-09-05 17:12:55 -07002504 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002505 }
2506
2507 /*------------------------------------------------------------------------
2508 Fill in Event data and post to the Main FSM
2509 ------------------------------------------------------------------------*/
2510 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002511 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2512 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2513 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002514 wdiEventData.pUserData = pUserData;
2515
2516 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2517
2518}/*WDI_RemoveSTAKeyReq*/
2519
2520
2521/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002522 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002523 wants to install a STA Bcast encryption key on the HW.
2524 Upon the call of this API the WLAN DAL will pack and
2525 send a HAL Start request message to the lower RIVA
2526 sub-system if DAL is in state STARTED.
2527
2528 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002529 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002530
2531 WDI_PostAssocReq must have been called.
2532
Jeff Johnsone7245742012-09-05 17:12:55 -07002533 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002534 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002535
Jeff Johnson295189b2012-06-20 16:38:30 -07002536 wdiSetSTABcastKeyRspCb: callback for passing back the
2537 response of the set BSS Key operation received from the
2538 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002539
Jeff Johnson295189b2012-06-20 16:38:30 -07002540 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002541 callback
2542
Jeff Johnson295189b2012-06-20 16:38:30 -07002543 @see WDI_PostAssocReq
2544 @return Result of the function call
2545*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002546WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002547WDI_SetSTABcastKeyReq
2548(
2549 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2550 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2551 void* pUserData
2552)
2553
2554{
2555 WDI_EventInfoType wdiEventData;
2556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2557
2558 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002559 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002560 ------------------------------------------------------------------------*/
2561 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2562 {
2563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2564 "WDI API call before module is initialized - Fail request");
2565
Jeff Johnsone7245742012-09-05 17:12:55 -07002566 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002567 }
2568
2569 /*------------------------------------------------------------------------
2570 Fill in Event data and post to the Main FSM
2571 ------------------------------------------------------------------------*/
2572 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002573 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2574 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2575 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002576 wdiEventData.pUserData = pUserData;
2577
2578 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2579
2580}/*WDI_SetSTABcastKeyReq*/
2581
2582/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002583 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 MAC wants to uninstall a STA Bcast key from HW. Upon the
2585 call of this API the WLAN DAL will pack and send a HAL
2586 Remove STA Bcast Key request message to the lower RIVA
2587 sub-system if DAL is in state STARTED.
2588
2589 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002590 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002591
2592 WDI_SetSTABcastKeyReq must have been called.
2593
Jeff Johnsone7245742012-09-05 17:12:55 -07002594 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002595 parameters as specified by the Device
2596 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002597
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2599 response of the remove STA Bcast key operation received
2600 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002601
Jeff Johnson295189b2012-06-20 16:38:30 -07002602 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002603 callback
2604
Jeff Johnson295189b2012-06-20 16:38:30 -07002605 @see WDI_SetSTABcastKeyReq
2606 @return Result of the function call
2607*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002608WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002609WDI_RemoveSTABcastKeyReq
2610(
2611 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2612 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2613 void* pUserData
2614)
2615{
2616 WDI_EventInfoType wdiEventData;
2617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2618
2619 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002620 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002621 ------------------------------------------------------------------------*/
2622 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2623 {
2624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2625 "WDI API call before module is initialized - Fail request");
2626
Jeff Johnsone7245742012-09-05 17:12:55 -07002627 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002628 }
2629
2630 /*------------------------------------------------------------------------
2631 Fill in Event data and post to the Main FSM
2632 ------------------------------------------------------------------------*/
2633 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002634 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2635 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2636 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002637 wdiEventData.pUserData = pUserData;
2638
2639 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2640
2641}/*WDI_RemoveSTABcastKeyReq*/
2642
2643/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002644 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 MAC wants to set Max Tx Power to HW. Upon the
2646 call of this API the WLAN DAL will pack and send a HAL
2647 Remove STA Bcast Key request message to the lower RIVA
2648 sub-system if DAL is in state STARTED.
2649
2650 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002651 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002652
2653 WDI_SetSTABcastKeyReq must have been called.
2654
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002656 parameters as specified by the Device
2657 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002658
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2660 response of the remove STA Bcast key operation received
2661 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002662
Jeff Johnson295189b2012-06-20 16:38:30 -07002663 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002664 callback
2665
Jeff Johnson295189b2012-06-20 16:38:30 -07002666 @see WDI_SetMaxTxPowerReq
2667 @return Result of the function call
2668*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002669WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002670WDI_SetMaxTxPowerReq
2671(
2672 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2673 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2674 void* pUserData
2675)
2676{
2677 WDI_EventInfoType wdiEventData;
2678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2679
2680 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002681 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002682 ------------------------------------------------------------------------*/
2683 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2684 {
2685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2686 "WDI API call before module is initialized - Fail request");
2687
Jeff Johnsone7245742012-09-05 17:12:55 -07002688 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002689 }
2690
2691 /*------------------------------------------------------------------------
2692 Fill in Event data and post to the Main FSM
2693 ------------------------------------------------------------------------*/
2694 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002695 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2696 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2697 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002698 wdiEventData.pUserData = pUserData;
2699
2700 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2701}
2702
schangd82195a2013-03-13 18:41:24 -07002703/**
2704 @brief WDI_SetTxPowerReq will be called when the upper
2705 MAC wants to set Tx Power to HW.
2706 In state BUSY this request will be queued. Request won't
2707 be allowed in any other state.
2708
2709
2710 @param pwdiSetTxPowerParams: set TS Power parameters
2711 BSSID and target TX Power with dbm included
2712
2713 wdiReqStatusCb: callback for passing back the response
2714
2715 pUserData: user data will be passed back with the
2716 callback
2717
2718 @return Result of the function call
2719*/
2720WDI_Status
2721WDI_SetTxPowerReq
2722(
2723 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2724 WDA_SetTxPowerRspCb wdiReqStatusCb,
2725 void* pUserData
2726)
2727{
2728 WDI_EventInfoType wdiEventData;
2729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2730
2731 /*------------------------------------------------------------------------
2732 Sanity Check
2733 ------------------------------------------------------------------------*/
2734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2735 {
2736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2737 "WDI API call before module is initialized - Fail request");
2738
2739 return WDI_STATUS_E_NOT_ALLOWED;
2740 }
2741
2742 /*------------------------------------------------------------------------
2743 Fill in Event data and post to the Main FSM
2744 ------------------------------------------------------------------------*/
2745 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2746 wdiEventData.pEventData = pwdiSetTxPowerParams;
2747 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2748 wdiEventData.pCBfnc = wdiReqStatusCb;
2749 wdiEventData.pUserData = pUserData;
2750
2751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2752}
2753
Jeff Johnson295189b2012-06-20 16:38:30 -07002754#ifdef FEATURE_WLAN_CCX
2755WDI_Status
2756WDI_TSMStatsReq
2757(
2758 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2759 WDI_TsmRspCb wdiReqStatusCb,
2760 void* pUserData
2761)
2762{
2763 WDI_EventInfoType wdiEventData;
2764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002765 /*------------------------------------------------------------------------
2766 Sanity Check
2767 ------------------------------------------------------------------------*/
2768 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2769 {
2770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2771 "WDI API call before module is initialized - Fail request");
2772
2773 return WDI_STATUS_E_NOT_ALLOWED;
2774 }
2775
2776 /*------------------------------------------------------------------------
2777 Fill in Event data and post to the Main FSM
2778 ------------------------------------------------------------------------*/
2779 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2780 wdiEventData.pEventData = pwdiTsmReqParams;
2781 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2782 wdiEventData.pCBfnc = wdiReqStatusCb;
2783 wdiEventData.pUserData = pUserData;
2784
2785 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2786
2787}
2788#endif
2789
2790/*========================================================================
2791
2792 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002793
Jeff Johnson295189b2012-06-20 16:38:30 -07002794==========================================================================*/
2795
2796/**
2797 @brief WDI_AddTSReq will be called when the upper MAC to inform
2798 the device of a successful add TSpec negotiation. HW
2799 needs to receive the TSpec Info from the UMAC in order
2800 to configure properly the QoS data traffic. Upon the
2801 call of this API the WLAN DAL will pack and send a HAL
2802 Add TS request message to the lower RIVA sub-system if
2803 DAL is in state STARTED.
2804
2805 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002806 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002807
2808 WDI_PostAssocReq must have been called.
2809
2810 @param wdiAddTsReqParams: the add TS parameters as specified by
2811 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002812
Jeff Johnson295189b2012-06-20 16:38:30 -07002813 wdiAddTsRspCb: callback for passing back the response of
2814 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002815
Jeff Johnson295189b2012-06-20 16:38:30 -07002816 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002817 callback
2818
Jeff Johnson295189b2012-06-20 16:38:30 -07002819 @see WDI_PostAssocReq
2820 @return Result of the function call
2821*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002822WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002823WDI_AddTSReq
2824(
2825 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2826 WDI_AddTsRspCb wdiAddTsRspCb,
2827 void* pUserData
2828)
2829{
2830 WDI_EventInfoType wdiEventData;
2831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2832
2833 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 ------------------------------------------------------------------------*/
2836 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2837 {
2838 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2839 "WDI API call before module is initialized - Fail request");
2840
Jeff Johnsone7245742012-09-05 17:12:55 -07002841 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002842 }
2843
2844 /*------------------------------------------------------------------------
2845 Fill in Event data and post to the Main FSM
2846 ------------------------------------------------------------------------*/
2847 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002848 wdiEventData.pEventData = pwdiAddTsReqParams;
2849 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2850 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002851 wdiEventData.pUserData = pUserData;
2852
2853 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2854
2855}/*WDI_AddTSReq*/
2856
2857
2858
2859/**
2860 @brief WDI_DelTSReq will be called when the upper MAC has ended
2861 admission on a specific AC. This is to inform HW that
2862 QoS traffic parameters must be rest. Upon the call of
2863 this API the WLAN DAL will pack and send a HAL Del TS
2864 request message to the lower RIVA sub-system if DAL is
2865 in state STARTED.
2866
2867 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002868 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002869
2870 WDI_AddTSReq must have been called.
2871
2872 @param wdiDelTsReqParams: the del TS parameters as specified by
2873 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002874
Jeff Johnson295189b2012-06-20 16:38:30 -07002875 wdiDelTsRspCb: callback for passing back the response of
2876 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002877
Jeff Johnson295189b2012-06-20 16:38:30 -07002878 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002879 callback
2880
Jeff Johnson295189b2012-06-20 16:38:30 -07002881 @see WDI_AddTSReq
2882 @return Result of the function call
2883*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002884WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002885WDI_DelTSReq
2886(
2887 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2888 WDI_DelTsRspCb wdiDelTsRspCb,
2889 void* pUserData
2890)
2891{
2892 WDI_EventInfoType wdiEventData;
2893 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2894
2895 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002896 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 ------------------------------------------------------------------------*/
2898 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2899 {
2900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2901 "WDI API call before module is initialized - Fail request");
2902
Jeff Johnsone7245742012-09-05 17:12:55 -07002903 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 }
2905
2906 /*------------------------------------------------------------------------
2907 Fill in Event data and post to the Main FSM
2908 ------------------------------------------------------------------------*/
2909 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002910 wdiEventData.pEventData = pwdiDelTsReqParams;
2911 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2912 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002913 wdiEventData.pUserData = pUserData;
2914
2915 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2916
2917}/*WDI_DelTSReq*/
2918
2919
2920
2921/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002922 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002923 wishes to update the EDCA parameters used by HW for QoS
2924 data traffic. Upon the call of this API the WLAN DAL
2925 will pack and send a HAL Update EDCA Params request
2926 message to the lower RIVA sub-system if DAL is in state
2927 STARTED.
2928
2929 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002930 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002931
2932 WDI_PostAssocReq must have been called.
2933
Jeff Johnsone7245742012-09-05 17:12:55 -07002934 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002935 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002936
Jeff Johnson295189b2012-06-20 16:38:30 -07002937 wdiUpdateEDCAParamsRspCb: callback for passing back the
2938 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002939
Jeff Johnson295189b2012-06-20 16:38:30 -07002940 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002941 callback
2942
Jeff Johnson295189b2012-06-20 16:38:30 -07002943 @see WDI_PostAssocReq
2944 @return Result of the function call
2945*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002946WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002947WDI_UpdateEDCAParams
2948(
2949 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2950 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2951 void* pUserData
2952)
2953{
2954 WDI_EventInfoType wdiEventData;
2955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2956
2957 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002958 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002959 ------------------------------------------------------------------------*/
2960 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2961 {
2962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2963 "WDI API call before module is initialized - Fail request");
2964
Jeff Johnsone7245742012-09-05 17:12:55 -07002965 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002966 }
2967
2968 /*------------------------------------------------------------------------
2969 Fill in Event data and post to the Main FSM
2970 ------------------------------------------------------------------------*/
2971 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002972 wdiEventData.pEventData = pwdiUpdateEDCAParams;
2973 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
2974 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002975 wdiEventData.pUserData = pUserData;
2976
2977 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2978
2979}/*WDI_UpdateEDCAParams*/
2980
2981
2982/**
2983 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
2984 successfully a BA session and needs to notify the HW for
2985 the appropriate settings to take place. Upon the call of
2986 this API the WLAN DAL will pack and send a HAL Add BA
2987 request message to the lower RIVA sub-system if DAL is
2988 in state STARTED.
2989
2990 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002991 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002992
2993 WDI_PostAssocReq must have been called.
2994
2995 @param wdiAddBAReqParams: the add BA parameters as specified by
2996 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002997
Jeff Johnson295189b2012-06-20 16:38:30 -07002998 wdiAddBARspCb: callback for passing back the response of
2999 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003000
Jeff Johnson295189b2012-06-20 16:38:30 -07003001 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003002 callback
3003
Jeff Johnson295189b2012-06-20 16:38:30 -07003004 @see WDI_PostAssocReq
3005 @return Result of the function call
3006*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003007WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003008WDI_AddBASessionReq
3009(
3010 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3011 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3012 void* pUserData
3013)
3014{
3015 WDI_EventInfoType wdiEventData;
3016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3017
3018 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003019 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003020 ------------------------------------------------------------------------*/
3021 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3022 {
3023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3024 "WDI API call before module is initialized - Fail request");
3025
Jeff Johnsone7245742012-09-05 17:12:55 -07003026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003027 }
3028
3029 /*------------------------------------------------------------------------
3030 Fill in Event data and post to the Main FSM
3031 ------------------------------------------------------------------------*/
3032 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003033 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3034 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3035 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003036 wdiEventData.pUserData = pUserData;
3037
3038 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3039
3040}/*WDI_AddBASessionReq*/
3041
3042/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003043 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 inform HW that it has deleted a previously created BA
3045 session. Upon the call of this API the WLAN DAL will
3046 pack and send a HAL Del BA request message to the lower
3047 RIVA sub-system if DAL is in state STARTED.
3048
3049 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003050 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003051
3052 WDI_AddBAReq must have been called.
3053
3054 @param wdiDelBAReqParams: the del BA parameters as specified by
3055 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003056
Jeff Johnson295189b2012-06-20 16:38:30 -07003057 wdiDelBARspCb: callback for passing back the response of
3058 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003059
Jeff Johnson295189b2012-06-20 16:38:30 -07003060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003061 callback
3062
Jeff Johnson295189b2012-06-20 16:38:30 -07003063 @see WDI_AddBAReq
3064 @return Result of the function call
3065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003067WDI_DelBAReq
3068(
3069 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3070 WDI_DelBARspCb wdiDelBARspCb,
3071 void* pUserData
3072)
3073{
3074 WDI_EventInfoType wdiEventData;
3075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3076
3077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 ------------------------------------------------------------------------*/
3080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3081 {
3082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3083 "WDI API call before module is initialized - Fail request");
3084
Jeff Johnsone7245742012-09-05 17:12:55 -07003085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003086 }
3087
3088 /*------------------------------------------------------------------------
3089 Fill in Event data and post to the Main FSM
3090 ------------------------------------------------------------------------*/
3091 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003092 wdiEventData.pEventData = pwdiDelBAReqParams;
3093 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3094 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003095 wdiEventData.pUserData = pUserData;
3096
3097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3098
3099}/*WDI_DelBAReq*/
3100
Jeff Johnsone7245742012-09-05 17:12:55 -07003101/*========================================================================
3102
Jeff Johnson295189b2012-06-20 16:38:30 -07003103 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003104
Jeff Johnson295189b2012-06-20 16:38:30 -07003105==========================================================================*/
3106
3107/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003108 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003109 wants to set the power save related configurations of
3110 the WLAN Device. Upon the call of this API the WLAN DAL
3111 will pack and send a HAL Update CFG request message to
3112 the lower RIVA sub-system if DAL is in state STARTED.
3113
3114 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003115 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003116
3117 WDI_Start must have been called.
3118
Jeff Johnsone7245742012-09-05 17:12:55 -07003119 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003120 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003121
Jeff Johnson295189b2012-06-20 16:38:30 -07003122 wdiSetPwrSaveCfgCb: callback for passing back the
3123 response of the set power save cfg operation received
3124 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003125
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003127 callback
3128
Jeff Johnson295189b2012-06-20 16:38:30 -07003129 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003130 @return Result of the function call
3131*/
3132WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003133WDI_SetPwrSaveCfgReq
3134(
3135 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3136 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3137 void* pUserData
3138)
3139{
3140 WDI_EventInfoType wdiEventData;
3141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3142
3143 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003144 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003145 ------------------------------------------------------------------------*/
3146 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3147 {
3148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3149 "WDI API call before module is initialized - Fail request");
3150
Jeff Johnsone7245742012-09-05 17:12:55 -07003151 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003152 }
3153
3154 /*------------------------------------------------------------------------
3155 Fill in Event data and post to the Main FSM
3156 ------------------------------------------------------------------------*/
3157 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003158 wdiEventData.pEventData = pwdiPowerSaveCfg;
3159 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3160 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003161 wdiEventData.pUserData = pUserData;
3162
3163 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3164
3165}/*WDI_SetPwrSaveCfgReq*/
3166
3167/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003168 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003169 request the device to get into IMPS power state. Upon
3170 the call of this API the WLAN DAL will send a HAL Enter
3171 IMPS request message to the lower RIVA sub-system if DAL
3172 is in state STARTED.
3173
3174 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003175 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003176
Jeff Johnsone7245742012-09-05 17:12:55 -07003177
3178 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003179 response of the Enter IMPS operation received from the
3180 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003181
Jeff Johnson295189b2012-06-20 16:38:30 -07003182 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003183 callback
3184
Jeff Johnson295189b2012-06-20 16:38:30 -07003185 @see WDI_Start
3186 @return Result of the function call
3187*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003188WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003189WDI_EnterImpsReq
3190(
3191 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3192 void* pUserData
3193)
3194{
3195 WDI_EventInfoType wdiEventData;
3196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3197
3198 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003199 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003200 ------------------------------------------------------------------------*/
3201 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3202 {
3203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3204 "WDI API call before module is initialized - Fail request");
3205
Jeff Johnsone7245742012-09-05 17:12:55 -07003206 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003207 }
3208
3209 /*------------------------------------------------------------------------
3210 Fill in Event data and post to the Main FSM
3211 ------------------------------------------------------------------------*/
3212 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003213 wdiEventData.pEventData = NULL;
3214 wdiEventData.uEventDataSize = 0;
3215 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003216 wdiEventData.pUserData = pUserData;
3217
3218 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3219
3220}/*WDI_EnterImpsReq*/
3221
3222/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003223 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003224 request the device to get out of IMPS power state. Upon
3225 the call of this API the WLAN DAL will send a HAL Exit
3226 IMPS request message to the lower RIVA sub-system if DAL
3227 is in state STARTED.
3228
3229 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003230 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003231
Jeff Johnson295189b2012-06-20 16:38:30 -07003232
Jeff Johnsone7245742012-09-05 17:12:55 -07003233
3234 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003236
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003238 callback
3239
Jeff Johnson295189b2012-06-20 16:38:30 -07003240 @see WDI_Start
3241 @return Result of the function call
3242*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003243WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003244WDI_ExitImpsReq
3245(
3246 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3247 void* pUserData
3248)
3249{
3250 WDI_EventInfoType wdiEventData;
3251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3252
3253 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003254 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003255 ------------------------------------------------------------------------*/
3256 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3257 {
3258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3259 "WDI API call before module is initialized - Fail request");
3260
Jeff Johnsone7245742012-09-05 17:12:55 -07003261 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003262 }
3263
3264 /*------------------------------------------------------------------------
3265 Fill in Event data and post to the Main FSM
3266 ------------------------------------------------------------------------*/
3267 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003268 wdiEventData.pEventData = NULL;
3269 wdiEventData.uEventDataSize = 0;
3270 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003271 wdiEventData.pUserData = pUserData;
3272
3273 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3274
3275}/*WDI_ExitImpsReq*/
3276
3277/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003278 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003279 request the device to get into BMPS power state. Upon
3280 the call of this API the WLAN DAL will pack and send a
3281 HAL Enter BMPS request message to the lower RIVA
3282 sub-system if DAL is in state STARTED.
3283
3284 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003285 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003286
3287 WDI_PostAssocReq must have been called.
3288
Jeff Johnsone7245742012-09-05 17:12:55 -07003289 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003290 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003291
Jeff Johnson295189b2012-06-20 16:38:30 -07003292 wdiEnterBmpsRspCb: callback for passing back the
3293 response of the Enter BMPS operation received from the
3294 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003295
Jeff Johnson295189b2012-06-20 16:38:30 -07003296 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003297 callback
3298
Jeff Johnson295189b2012-06-20 16:38:30 -07003299 @see WDI_PostAssocReq
3300 @return Result of the function call
3301*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003302WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003303WDI_EnterBmpsReq
3304(
3305 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3306 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3307 void* pUserData
3308)
3309{
3310 WDI_EventInfoType wdiEventData;
3311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3312
3313 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003314 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003315 ------------------------------------------------------------------------*/
3316 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3317 {
3318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3319 "WDI API call before module is initialized - Fail request");
3320
Jeff Johnsone7245742012-09-05 17:12:55 -07003321 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003322 }
3323
3324 /*------------------------------------------------------------------------
3325 Fill in Event data and post to the Main FSM
3326 ------------------------------------------------------------------------*/
3327 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003328 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3329 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3330 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003331 wdiEventData.pUserData = pUserData;
3332
3333 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3334
3335}/*WDI_EnterBmpsReq*/
3336
3337/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003338 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003339 request the device to get out of BMPS power state. Upon
3340 the call of this API the WLAN DAL will pack and send a
3341 HAL Exit BMPS request message to the lower RIVA
3342 sub-system if DAL is in state STARTED.
3343
3344 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003345 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003346
3347 WDI_PostAssocReq must have been called.
3348
Jeff Johnsone7245742012-09-05 17:12:55 -07003349 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003350 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003351
Jeff Johnson295189b2012-06-20 16:38:30 -07003352 wdiExitBmpsRspCb: callback for passing back the response
3353 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003354
Jeff Johnson295189b2012-06-20 16:38:30 -07003355 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003356 callback
3357
Jeff Johnson295189b2012-06-20 16:38:30 -07003358 @see WDI_PostAssocReq
3359 @return Result of the function call
3360*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003361WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003362WDI_ExitBmpsReq
3363(
3364 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3365 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3366 void* pUserData
3367)
3368{
3369 WDI_EventInfoType wdiEventData;
3370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3371
3372 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003373 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003374 ------------------------------------------------------------------------*/
3375 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3376 {
3377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3378 "WDI API call before module is initialized - Fail request");
3379
Jeff Johnsone7245742012-09-05 17:12:55 -07003380 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003381 }
3382
3383 /*------------------------------------------------------------------------
3384 Fill in Event data and post to the Main FSM
3385 ------------------------------------------------------------------------*/
3386 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003387 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3388 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3389 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003390 wdiEventData.pUserData = pUserData;
3391
3392 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3393
3394}/*WDI_ExitBmpsReq*/
3395
3396/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003397 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003398 request the device to get into UAPSD power state. Upon
3399 the call of this API the WLAN DAL will pack and send a
3400 HAL Enter UAPSD request message to the lower RIVA
3401 sub-system if DAL is in state STARTED.
3402
3403 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003404 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003405
3406 WDI_PostAssocReq must have been called.
3407 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003408
3409 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003410 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003411
Jeff Johnson295189b2012-06-20 16:38:30 -07003412 wdiEnterUapsdRspCb: callback for passing back the
3413 response of the Enter UAPSD operation received from the
3414 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003415
Jeff Johnson295189b2012-06-20 16:38:30 -07003416 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003417 callback
3418
Jeff Johnson295189b2012-06-20 16:38:30 -07003419 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3420 @return Result of the function call
3421*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003422WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003423WDI_EnterUapsdReq
3424(
3425 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3426 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3427 void* pUserData
3428)
3429{
3430 WDI_EventInfoType wdiEventData;
3431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3432
3433 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003434 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003435 ------------------------------------------------------------------------*/
3436 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3437 {
3438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3439 "WDI API call before module is initialized - Fail request");
3440
Jeff Johnsone7245742012-09-05 17:12:55 -07003441 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003442 }
3443
3444 /*------------------------------------------------------------------------
3445 Fill in Event data and post to the Main FSM
3446 ------------------------------------------------------------------------*/
3447 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003448 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3449 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3450 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003451 wdiEventData.pUserData = pUserData;
3452
3453 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3454
3455}/*WDI_EnterUapsdReq*/
3456
3457/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003458 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003459 request the device to get out of UAPSD power state. Upon
3460 the call of this API the WLAN DAL will send a HAL Exit
3461 UAPSD request message to the lower RIVA sub-system if
3462 DAL is in state STARTED.
3463
3464 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003465 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003466
3467 WDI_PostAssocReq must have been called.
3468
Jeff Johnsone7245742012-09-05 17:12:55 -07003469 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003470 response of the Exit UAPSD operation received from the
3471 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003472
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003474 callback
3475
Jeff Johnson295189b2012-06-20 16:38:30 -07003476 @see WDI_PostAssocReq
3477 @return Result of the function call
3478*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003479WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003480WDI_ExitUapsdReq
3481(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003482 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003483 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3484 void* pUserData
3485)
3486{
3487 WDI_EventInfoType wdiEventData;
3488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3489
3490 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003491 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003492 ------------------------------------------------------------------------*/
3493 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3494 {
3495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3496 "WDI API call before module is initialized - Fail request");
3497
Jeff Johnsone7245742012-09-05 17:12:55 -07003498 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003499 }
3500
3501 /*------------------------------------------------------------------------
3502 Fill in Event data and post to the Main FSM
3503 ------------------------------------------------------------------------*/
3504 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003505 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3506 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003507 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003508 wdiEventData.pUserData = pUserData;
3509
3510 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3511
3512}/*WDI_ExitUapsdReq*/
3513
3514/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 MAC wants to set the UAPSD related configurations
3517 of an associated STA (while acting as an AP) to the WLAN
3518 Device. Upon the call of this API the WLAN DAL will pack
3519 and send a HAL Update UAPSD params request message to
3520 the lower RIVA sub-system if DAL is in state STARTED.
3521
3522 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003523 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003524
3525 WDI_ConfigBSSReq must have been called.
3526
Jeff Johnsone7245742012-09-05 17:12:55 -07003527 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003528 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003529
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 wdiUpdateUapsdParamsCb: callback for passing back the
3531 response of the update UAPSD params operation received
3532 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003533
Jeff Johnson295189b2012-06-20 16:38:30 -07003534 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003535 callback
3536
Jeff Johnson295189b2012-06-20 16:38:30 -07003537 @see WDI_ConfigBSSReq
3538 @return Result of the function call
3539*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003540WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003541WDI_UpdateUapsdParamsReq
3542(
3543 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3544 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3545 void* pUserData
3546)
3547{
3548 WDI_EventInfoType wdiEventData;
3549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3550
3551 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003552 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003553 ------------------------------------------------------------------------*/
3554 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3555 {
3556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3557 "WDI API call before module is initialized - Fail request");
3558
Jeff Johnsone7245742012-09-05 17:12:55 -07003559 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003560 }
3561
3562 /*------------------------------------------------------------------------
3563 Fill in Event data and post to the Main FSM
3564 ------------------------------------------------------------------------*/
3565 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003566 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003567 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003568 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003569 wdiEventData.pUserData = pUserData;
3570
3571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3572
3573}/*WDI_UpdateUapsdParamsReq*/
3574
3575/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003576 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003577 MAC wants to set the UAPSD related configurations before
3578 requesting for enter UAPSD power state to the WLAN
3579 Device. Upon the call of this API the WLAN DAL will pack
3580 and send a HAL Set UAPSD params request message to
3581 the lower RIVA sub-system if DAL is in state STARTED.
3582
3583 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003584 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003585
3586 WDI_PostAssocReq must have been called.
3587
3588 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3589 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003590
Jeff Johnson295189b2012-06-20 16:38:30 -07003591 wdiSetUapsdAcParamsCb: callback for passing back the
3592 response of the set UAPSD params operation received from
3593 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003594
Jeff Johnson295189b2012-06-20 16:38:30 -07003595 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003596 callback
3597
Jeff Johnson295189b2012-06-20 16:38:30 -07003598 @see WDI_PostAssocReq
3599 @return Result of the function call
3600*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003601WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003602WDI_SetUapsdAcParamsReq
3603(
3604 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3605 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3606 void* pUserData
3607)
3608{
3609 WDI_EventInfoType wdiEventData;
3610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3611
3612 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003613 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003614 ------------------------------------------------------------------------*/
3615 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3616 {
3617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3618 "WDI API call before module is initialized - Fail request");
3619
Jeff Johnsone7245742012-09-05 17:12:55 -07003620 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003621 }
3622
3623 /*------------------------------------------------------------------------
3624 Fill in Event data and post to the Main FSM
3625 ------------------------------------------------------------------------*/
3626 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003627 wdiEventData.pEventData = pwdiUapsdInfo;
3628 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3629 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003630 wdiEventData.pUserData = pUserData;
3631
3632 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3633
3634}/*WDI_SetUapsdAcParamsReq*/
3635
3636/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003637 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003638 MAC wants to set/reset the RXP filters for received pkts
3639 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3640 and send a HAL configure RXP filter request message to
3641 the lower RIVA sub-system.
3642
3643 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003644 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003645
Jeff Johnsone7245742012-09-05 17:12:55 -07003646
3647 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003648 filter as specified by the Device
3649 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003650
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 wdiConfigureRxpFilterCb: callback for passing back the
3652 response of the configure RXP filter operation received
3653 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003654
Jeff Johnson295189b2012-06-20 16:38:30 -07003655 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003656 callback
3657
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 @return Result of the function call
3659*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003660WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003661WDI_ConfigureRxpFilterReq
3662(
3663 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3664 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3665 void* pUserData
3666)
3667{
3668 WDI_EventInfoType wdiEventData;
3669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3670
3671 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003673 ------------------------------------------------------------------------*/
3674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3675 {
3676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3677 "WDI API call before module is initialized - Fail request");
3678
Jeff Johnsone7245742012-09-05 17:12:55 -07003679 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003680 }
3681
3682 /*------------------------------------------------------------------------
3683 Fill in Event data and post to the Main FSM
3684 ------------------------------------------------------------------------*/
3685 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003686 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3687 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3688 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003689 wdiEventData.pUserData = pUserData;
3690
3691 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3692}/*WDI_ConfigureRxpFilterReq*/
3693
3694/**
3695 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3696 wants to set the beacon filters while in power save.
3697 Upon the call of this API the WLAN DAL will pack and
3698 send a Beacon filter request message to the
3699 lower RIVA sub-system.
3700
3701 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003702 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003703
Jeff Johnsone7245742012-09-05 17:12:55 -07003704
3705 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003706 filter as specified by the Device
3707 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003708
Jeff Johnson295189b2012-06-20 16:38:30 -07003709 wdiBeaconFilterCb: callback for passing back the
3710 response of the set beacon filter operation received
3711 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003712
Jeff Johnson295189b2012-06-20 16:38:30 -07003713 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003714 callback
3715
Jeff Johnson295189b2012-06-20 16:38:30 -07003716 @return Result of the function call
3717*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003718WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003719WDI_SetBeaconFilterReq
3720(
3721 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3722 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3723 void* pUserData
3724)
3725{
3726 WDI_EventInfoType wdiEventData;
3727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3728
3729 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003730 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003731 ------------------------------------------------------------------------*/
3732 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3733 {
3734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3735 "WDI API call before module is initialized - Fail request");
3736
Jeff Johnsone7245742012-09-05 17:12:55 -07003737 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003738 }
3739
3740 /*------------------------------------------------------------------------
3741 Fill in Event data and post to the Main FSM
3742 ------------------------------------------------------------------------*/
3743 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003744 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003745 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003746 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003747 wdiEventData.pUserData = pUserData;
3748
3749 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3750}/*WDI_SetBeaconFilterReq*/
3751
3752/**
3753 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3754 wants to remove the beacon filter for particular IE
3755 while in power save. Upon the call of this API the WLAN
3756 DAL will pack and send a remove Beacon filter request
3757 message to the lower RIVA sub-system.
3758
3759 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003760 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003761
Jeff Johnsone7245742012-09-05 17:12:55 -07003762
3763 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003764 filter as specified by the Device
3765 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003766
Jeff Johnson295189b2012-06-20 16:38:30 -07003767 wdiBeaconFilterCb: callback for passing back the
3768 response of the remove beacon filter operation received
3769 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003770
Jeff Johnson295189b2012-06-20 16:38:30 -07003771 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003772 callback
3773
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 @return Result of the function call
3775*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003776WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003777WDI_RemBeaconFilterReq
3778(
3779 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3780 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3781 void* pUserData
3782)
3783{
3784 WDI_EventInfoType wdiEventData;
3785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3786
3787 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003788 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003789 ------------------------------------------------------------------------*/
3790 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3791 {
3792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3793 "WDI API call before module is initialized - Fail request");
3794
Jeff Johnsone7245742012-09-05 17:12:55 -07003795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003796 }
3797
3798 /*------------------------------------------------------------------------
3799 Fill in Event data and post to the Main FSM
3800 ------------------------------------------------------------------------*/
3801 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003802 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003803 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003804 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003805 wdiEventData.pUserData = pUserData;
3806
3807 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3808}/*WDI_RemBeaconFilterReq*/
3809
3810/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003811 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003812 MAC wants to set the RSSI thresholds related
3813 configurations while in power save. Upon the call of
3814 this API the WLAN DAL will pack and send a HAL Set RSSI
3815 thresholds request message to the lower RIVA
3816 sub-system if DAL is in state STARTED.
3817
3818 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003820
3821 WDI_PostAssocReq must have been called.
3822
3823 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3824 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826 wdiSetUapsdAcParamsCb: callback for passing back the
3827 response of the set UAPSD params operation received from
3828 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003829
Jeff Johnson295189b2012-06-20 16:38:30 -07003830 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003831 callback
3832
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 @see WDI_PostAssocReq
3834 @return Result of the function call
3835*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003836WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003837WDI_SetRSSIThresholdsReq
3838(
3839 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3840 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3841 void* pUserData
3842)
3843{
3844 WDI_EventInfoType wdiEventData;
3845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3846
3847 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003848 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003849 ------------------------------------------------------------------------*/
3850 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3851 {
3852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3853 "WDI API call before module is initialized - Fail request");
3854
Jeff Johnsone7245742012-09-05 17:12:55 -07003855 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003856 }
3857
3858 /*------------------------------------------------------------------------
3859 Fill in Event data and post to the Main FSM
3860 ------------------------------------------------------------------------*/
3861 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003862 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003863 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003864 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003865 wdiEventData.pUserData = pUserData;
3866
3867 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3868}/* WDI_SetRSSIThresholdsReq*/
3869
3870/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003871 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003872 wants to set the filter to minimize unnecessary host
3873 wakeup due to broadcast traffic while in power save.
3874 Upon the call of this API the WLAN DAL will pack and
3875 send a HAL host offload request message to the
3876 lower RIVA sub-system if DAL is in state STARTED.
3877
3878 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003880
3881 WDI_PostAssocReq must have been called.
3882
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003885
Jeff Johnson295189b2012-06-20 16:38:30 -07003886 wdiHostOffloadCb: callback for passing back the response
3887 of the host offload operation received from the
3888 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003889
Jeff Johnson295189b2012-06-20 16:38:30 -07003890 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 callback
3892
Jeff Johnson295189b2012-06-20 16:38:30 -07003893 @see WDI_PostAssocReq
3894 @return Result of the function call
3895*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003896WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003897WDI_HostOffloadReq
3898(
3899 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3900 WDI_HostOffloadCb wdiHostOffloadCb,
3901 void* pUserData
3902)
3903{
3904 WDI_EventInfoType wdiEventData;
3905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3906
3907 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003908 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003909 ------------------------------------------------------------------------*/
3910 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3911 {
3912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3913 "WDI API call before module is initialized - Fail request");
3914
Jeff Johnsone7245742012-09-05 17:12:55 -07003915 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003916 }
3917
3918 /*------------------------------------------------------------------------
3919 Fill in Event data and post to the Main FSM
3920 ------------------------------------------------------------------------*/
3921 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003922 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003923 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 wdiEventData.pUserData = pUserData;
3926
3927 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3928}/*WDI_HostOffloadReq*/
3929
3930/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003931 @brief WDI_KeepAliveReq will be called when the upper MAC
3932 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003933 and minimize unnecessary host wakeups due to while in power save.
3934 Upon the call of this API the WLAN DAL will pack and
3935 send a HAL Keep Alive request message to the
3936 lower RIVA sub-system if DAL is in state STARTED.
3937
3938 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003940
3941 WDI_PostAssocReq must have been called.
3942
Jeff Johnsone7245742012-09-05 17:12:55 -07003943 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003944 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003945
Jeff Johnson295189b2012-06-20 16:38:30 -07003946 wdiKeepAliveCb: callback for passing back the response
3947 of the Keep Alive operation received from the
3948 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003949
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003951 callback
3952
Jeff Johnson295189b2012-06-20 16:38:30 -07003953 @see WDI_PostAssocReq
3954 @return Result of the function call
3955*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003956WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003957WDI_KeepAliveReq
3958(
3959 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3960 WDI_KeepAliveCb wdiKeepAliveCb,
3961 void* pUserData
3962)
3963{
3964 WDI_EventInfoType wdiEventData;
3965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3966
3967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003969 ------------------------------------------------------------------------*/
3970 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3971 {
3972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3973 "WDI_KeepAliveReq: WDI API call before module "
3974 "is initialized - Fail request");
3975
Jeff Johnsone7245742012-09-05 17:12:55 -07003976 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003977 }
3978
3979 /*------------------------------------------------------------------------
3980 Fill in Event data and post to the Main FSM
3981 ------------------------------------------------------------------------*/
3982 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003983 wdiEventData.pEventData = pwdiKeepAliveParams;
3984 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
3985 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003986 wdiEventData.pUserData = pUserData;
3987
3988 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3989}/*WDI_KeepAliveReq*/
3990
3991/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003992 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003993 wants to set the Wowl Bcast ptrn to minimize unnecessary
3994 host wakeup due to broadcast traffic while in power
3995 save. Upon the call of this API the WLAN DAL will pack
3996 and send a HAL Wowl Bcast ptrn request message to the
3997 lower RIVA sub-system if DAL is in state STARTED.
3998
3999 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004000 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004001
4002 WDI_PostAssocReq must have been called.
4003
Jeff Johnsone7245742012-09-05 17:12:55 -07004004 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004005 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004006
Jeff Johnson295189b2012-06-20 16:38:30 -07004007 wdiWowlAddBcPtrnCb: callback for passing back the
4008 response of the add Wowl bcast ptrn operation received
4009 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004010
Jeff Johnson295189b2012-06-20 16:38:30 -07004011 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004012 callback
4013
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 @see WDI_PostAssocReq
4015 @return Result of the function call
4016*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004017WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004018WDI_WowlAddBcPtrnReq
4019(
4020 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4021 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4022 void* pUserData
4023)
4024{
4025 WDI_EventInfoType wdiEventData;
4026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4027
4028 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004029 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004030 ------------------------------------------------------------------------*/
4031 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4032 {
4033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4034 "WDI API call before module is initialized - Fail request");
4035
Jeff Johnsone7245742012-09-05 17:12:55 -07004036 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004037 }
4038
4039 /*------------------------------------------------------------------------
4040 Fill in Event data and post to the Main FSM
4041 ------------------------------------------------------------------------*/
4042 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004043 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004044 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004045 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 wdiEventData.pUserData = pUserData;
4047
4048 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4049}/*WDI_WowlAddBcPtrnReq*/
4050
4051/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004053 wants to clear the Wowl Bcast ptrn. Upon the call of
4054 this API the WLAN DAL will pack and send a HAL delete
4055 Wowl Bcast ptrn request message to the lower RIVA
4056 sub-system if DAL is in state STARTED.
4057
4058 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004059 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004060
4061 WDI_WowlAddBcPtrnReq must have been called.
4062
Jeff Johnsone7245742012-09-05 17:12:55 -07004063 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004065
Jeff Johnson295189b2012-06-20 16:38:30 -07004066 wdiWowlDelBcPtrnCb: callback for passing back the
4067 response of the del Wowl bcast ptrn operation received
4068 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004069
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 callback
4072
Jeff Johnson295189b2012-06-20 16:38:30 -07004073 @see WDI_WowlAddBcPtrnReq
4074 @return Result of the function call
4075*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004076WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004077WDI_WowlDelBcPtrnReq
4078(
4079 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4080 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4081 void* pUserData
4082)
4083{
4084 WDI_EventInfoType wdiEventData;
4085 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4086
4087 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004089 ------------------------------------------------------------------------*/
4090 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4091 {
4092 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4093 "WDI API call before module is initialized - Fail request");
4094
Jeff Johnsone7245742012-09-05 17:12:55 -07004095 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004096 }
4097
4098 /*------------------------------------------------------------------------
4099 Fill in Event data and post to the Main FSM
4100 ------------------------------------------------------------------------*/
4101 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004102 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004103 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004104 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004105 wdiEventData.pUserData = pUserData;
4106
4107 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4108}/*WDI_WowlDelBcPtrnReq*/
4109
4110/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004111 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004112 wants to enter the Wowl state to minimize unnecessary
4113 host wakeup while in power save. Upon the call of this
4114 API the WLAN DAL will pack and send a HAL Wowl enter
4115 request message to the lower RIVA sub-system if DAL is
4116 in state STARTED.
4117
4118 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004120
4121 WDI_PostAssocReq must have been called.
4122
Jeff Johnsone7245742012-09-05 17:12:55 -07004123 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004124 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004125
Jeff Johnson295189b2012-06-20 16:38:30 -07004126 wdiWowlEnterReqCb: callback for passing back the
4127 response of the enter Wowl operation received from the
4128 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004129
Jeff Johnson295189b2012-06-20 16:38:30 -07004130 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004131 callback
4132
Jeff Johnson295189b2012-06-20 16:38:30 -07004133 @see WDI_PostAssocReq
4134 @return Result of the function call
4135*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004136WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004137WDI_WowlEnterReq
4138(
4139 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4140 WDI_WowlEnterReqCb wdiWowlEnterCb,
4141 void* pUserData
4142)
4143{
4144 WDI_EventInfoType wdiEventData;
4145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4146
4147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004148 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004149 ------------------------------------------------------------------------*/
4150 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4151 {
4152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4153 "WDI API call before module is initialized - Fail request");
4154
Jeff Johnsone7245742012-09-05 17:12:55 -07004155 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004156 }
4157
4158 /*------------------------------------------------------------------------
4159 Fill in Event data and post to the Main FSM
4160 ------------------------------------------------------------------------*/
4161 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004163 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004164 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004165 wdiEventData.pUserData = pUserData;
4166
4167 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4168}/*WDI_WowlEnterReq*/
4169
4170/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004171 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004172 wants to exit the Wowl state. Upon the call of this API
4173 the WLAN DAL will pack and send a HAL Wowl exit request
4174 message to the lower RIVA sub-system if DAL is in state
4175 STARTED.
4176
4177 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004178 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004179
4180 WDI_WowlEnterReq must have been called.
4181
Jeff Johnsone7245742012-09-05 17:12:55 -07004182 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004183 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004184
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 wdiWowlExitReqCb: callback for passing back the response
4186 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004187
Jeff Johnson295189b2012-06-20 16:38:30 -07004188 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004189 callback
4190
Jeff Johnson295189b2012-06-20 16:38:30 -07004191 @see WDI_WowlEnterReq
4192 @return Result of the function call
4193*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004194WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004195WDI_WowlExitReq
4196(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004197 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004198 WDI_WowlExitReqCb wdiWowlExitCb,
4199 void* pUserData
4200)
4201{
4202 WDI_EventInfoType wdiEventData;
4203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4204
4205 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004206 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 ------------------------------------------------------------------------*/
4208 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4209 {
4210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4211 "WDI API call before module is initialized - Fail request");
4212
Jeff Johnsone7245742012-09-05 17:12:55 -07004213 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004214 }
4215
4216 /*------------------------------------------------------------------------
4217 Fill in Event data and post to the Main FSM
4218 ------------------------------------------------------------------------*/
4219 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004220 wdiEventData.pEventData = pwdiWowlExitParams;
4221 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004222 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004223 wdiEventData.pUserData = pUserData;
4224
4225 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4226}/*WDI_WowlExitReq*/
4227
4228/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004229 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004230 the upper MAC wants to dynamically adjusts the listen
4231 interval based on the WLAN/MSM activity. Upon the call
4232 of this API the WLAN DAL will pack and send a HAL
4233 configure Apps Cpu Wakeup State request message to the
4234 lower RIVA sub-system.
4235
4236 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004237 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004238
Jeff Johnsone7245742012-09-05 17:12:55 -07004239
4240 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 Apps Cpu Wakeup State as specified by the
4242 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004243
Jeff Johnson295189b2012-06-20 16:38:30 -07004244 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4245 back the response of the configure Apps Cpu Wakeup State
4246 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004247
Jeff Johnson295189b2012-06-20 16:38:30 -07004248 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004249 callback
4250
Jeff Johnson295189b2012-06-20 16:38:30 -07004251 @return Result of the function call
4252*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004253WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004254WDI_ConfigureAppsCpuWakeupStateReq
4255(
4256 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4257 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4258 void* pUserData
4259)
4260{
4261 WDI_EventInfoType wdiEventData;
4262 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4263
4264 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004265 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004266 ------------------------------------------------------------------------*/
4267 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4268 {
4269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4270 "WDI API call before module is initialized - Fail request");
4271
Jeff Johnsone7245742012-09-05 17:12:55 -07004272 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004273 }
4274
4275 /*------------------------------------------------------------------------
4276 Fill in Event data and post to the Main FSM
4277 ------------------------------------------------------------------------*/
4278 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004279 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4280 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4281 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004282 wdiEventData.pUserData = pUserData;
4283
4284 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4285}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4286/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004287 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004288 to to perform a flush operation on a given AC. Upon the
4289 call of this API the WLAN DAL will pack and send a HAL
4290 Flush AC request message to the lower RIVA sub-system if
4291 DAL is in state STARTED.
4292
4293 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004294 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004295
4296 WDI_AddBAReq must have been called.
4297
Jeff Johnsone7245742012-09-05 17:12:55 -07004298 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004299 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004300
Jeff Johnson295189b2012-06-20 16:38:30 -07004301 wdiFlushAcRspCb: callback for passing back the response
4302 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004303
Jeff Johnson295189b2012-06-20 16:38:30 -07004304 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004305 callback
4306
Jeff Johnson295189b2012-06-20 16:38:30 -07004307 @see WDI_AddBAReq
4308 @return Result of the function call
4309*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004311WDI_FlushAcReq
4312(
4313 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4314 WDI_FlushAcRspCb wdiFlushAcRspCb,
4315 void* pUserData
4316)
4317{
4318 WDI_EventInfoType wdiEventData;
4319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4320
4321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 ------------------------------------------------------------------------*/
4324 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4325 {
4326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4327 "WDI API call before module is initialized - Fail request");
4328
Jeff Johnsone7245742012-09-05 17:12:55 -07004329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004330 }
4331
4332 /*------------------------------------------------------------------------
4333 Fill in Event data and post to the Main FSM
4334 ------------------------------------------------------------------------*/
4335 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004336 wdiEventData.pEventData = pwdiFlushAcReqParams;
4337 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4338 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004339 wdiEventData.pUserData = pUserData;
4340
4341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4342
4343}/*WDI_FlushAcReq*/
4344
4345/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004346 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004347 wants to notify the lower mac on a BT AMP event. This is
4348 to inform BTC-SLM that some BT AMP event occurred. Upon
4349 the call of this API the WLAN DAL will pack and send a
4350 HAL BT AMP event request message to the lower RIVA
4351 sub-system if DAL is in state STARTED.
4352
4353 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004354 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004355
Jeff Johnsone7245742012-09-05 17:12:55 -07004356
4357 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004358 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004359
Jeff Johnson295189b2012-06-20 16:38:30 -07004360 wdiBtAmpEventRspCb: callback for passing back the
4361 response of the BT AMP event operation received from the
4362 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004363
Jeff Johnson295189b2012-06-20 16:38:30 -07004364 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004365 callback
4366
Jeff Johnson295189b2012-06-20 16:38:30 -07004367 @return Result of the function call
4368*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004369WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004370WDI_BtAmpEventReq
4371(
4372 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4373 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4374 void* pUserData
4375)
4376{
4377 WDI_EventInfoType wdiEventData;
4378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4379
4380 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004381 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004382 ------------------------------------------------------------------------*/
4383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4384 {
4385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4386 "WDI API call before module is initialized - Fail request");
4387
Jeff Johnsone7245742012-09-05 17:12:55 -07004388 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004389 }
4390
4391 /*------------------------------------------------------------------------
4392 Fill in Event data and post to the Main FSM
4393 ------------------------------------------------------------------------*/
4394 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004395 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4396 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4397 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004398 wdiEventData.pUserData = pUserData;
4399
4400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4401
4402}/*WDI_BtAmpEventReq*/
4403
Jeff Johnsone7245742012-09-05 17:12:55 -07004404#ifdef FEATURE_OEM_DATA_SUPPORT
4405/**
4406 @brief WDI_Start Oem Data Req will be called when the upper MAC
4407 wants to notify the lower mac on a oem data Req event.Upon
4408 the call of this API the WLAN DAL will pack and send a
4409 HAL OEM Data Req event request message to the lower RIVA
4410 sub-system if DAL is in state STARTED.
4411
4412 In state BUSY this request will be queued. Request won't
4413 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004414
4415
Jeff Johnsone7245742012-09-05 17:12:55 -07004416
4417 @param pwdiOemDataReqParams: the Oem Data Req as
4418 specified by the Device Interface
4419
4420 wdiStartOemDataRspCb: callback for passing back the
4421 response of the Oem Data Req received from the
4422 device
4423
4424 pUserData: user data will be passed back with the
4425 callback
4426
4427 @return Result of the function call
4428*/
4429WDI_Status
4430WDI_StartOemDataReq
4431(
4432 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4433 WDI_oemDataRspCb wdiOemDataRspCb,
4434 void* pUserData
4435)
4436{
4437 WDI_EventInfoType wdiEventData;
4438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4439
4440 /*------------------------------------------------------------------------
4441 Sanity Check
4442 ------------------------------------------------------------------------*/
4443 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4444 {
4445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4446 "WDI API call before module is initialized - Fail request");
4447
4448 return WDI_STATUS_E_NOT_ALLOWED;
4449 }
4450
4451 /*------------------------------------------------------------------------
4452 Fill in Event data and post to the Main FSM
4453 ------------------------------------------------------------------------*/
4454 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4455 wdiEventData.pEventData = pwdiOemDataReqParams;
4456 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4457 wdiEventData.pCBfnc = wdiOemDataRspCb;
4458 wdiEventData.pUserData = pUserData;
4459
4460 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4461
4462
4463}
4464
4465#endif
4466
4467
4468/*========================================================================
4469
Jeff Johnson295189b2012-06-20 16:38:30 -07004470 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004471
Jeff Johnson295189b2012-06-20 16:38:30 -07004472==========================================================================*/
4473/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004474 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004475 the WLAN HW to change the current channel of operation.
4476 Upon the call of this API the WLAN DAL will pack and
4477 send a HAL Start request message to the lower RIVA
4478 sub-system if DAL is in state STARTED.
4479
4480 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004481 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004482
4483 WDI_Start must have been called.
4484
Jeff Johnsone7245742012-09-05 17:12:55 -07004485 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004486 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004487
Jeff Johnson295189b2012-06-20 16:38:30 -07004488 wdiSwitchChRspCb: callback for passing back the response
4489 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004490
Jeff Johnson295189b2012-06-20 16:38:30 -07004491 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004492 callback
4493
Jeff Johnson295189b2012-06-20 16:38:30 -07004494 @see WDI_Start
4495 @return Result of the function call
4496*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004497WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004498WDI_SwitchChReq
4499(
4500 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4501 WDI_SwitchChRspCb wdiSwitchChRspCb,
4502 void* pUserData
4503)
4504{
4505 WDI_EventInfoType wdiEventData;
4506 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4507
4508 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004509 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004510 ------------------------------------------------------------------------*/
4511 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4512 {
4513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4514 "WDI API call before module is initialized - Fail request");
4515
Jeff Johnsone7245742012-09-05 17:12:55 -07004516 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004517 }
4518
4519 /*------------------------------------------------------------------------
4520 Fill in Event data and post to the Main FSM
4521 ------------------------------------------------------------------------*/
4522 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004523 wdiEventData.pEventData = pwdiSwitchChReqParams;
4524 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4525 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004526 wdiEventData.pUserData = pUserData;
4527
4528 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4529
4530}/*WDI_SwitchChReq*/
4531
4532
4533/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004534 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004535 wishes to add or update a STA in HW. Upon the call of
4536 this API the WLAN DAL will pack and send a HAL Start
4537 message request message to the lower RIVA sub-system if
4538 DAL is in state STARTED.
4539
4540 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004541 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004542
4543 WDI_Start must have been called.
4544
Jeff Johnsone7245742012-09-05 17:12:55 -07004545 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004546 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004547
Jeff Johnson295189b2012-06-20 16:38:30 -07004548 wdiConfigSTARspCb: callback for passing back the
4549 response of the config STA operation received from the
4550 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004551
Jeff Johnson295189b2012-06-20 16:38:30 -07004552 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004553 callback
4554
Jeff Johnson295189b2012-06-20 16:38:30 -07004555 @see WDI_Start
4556 @return Result of the function call
4557*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004558WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004559WDI_ConfigSTAReq
4560(
4561 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4562 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4563 void* pUserData
4564)
4565{
4566 WDI_EventInfoType wdiEventData;
4567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4568
4569 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004570 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004571 ------------------------------------------------------------------------*/
4572 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4573 {
4574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4575 "WDI API call before module is initialized - Fail request");
4576
Jeff Johnsone7245742012-09-05 17:12:55 -07004577 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004578 }
4579
4580 /*------------------------------------------------------------------------
4581 Fill in Event data and post to the Main FSM
4582 ------------------------------------------------------------------------*/
4583 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004584 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4585 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4586 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004587 wdiEventData.pUserData = pUserData;
4588
4589 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4590
4591}/*WDI_ConfigSTAReq*/
4592
4593/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004594 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004595 wants to change the state of an ongoing link. Upon the
4596 call of this API the WLAN DAL will pack and send a HAL
4597 Start message request message to the lower RIVA
4598 sub-system if DAL is in state STARTED.
4599
4600 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004601 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004602
4603 WDI_JoinStartReq must have been called.
4604
Jeff Johnsone7245742012-09-05 17:12:55 -07004605 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004606 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004607
Jeff Johnson295189b2012-06-20 16:38:30 -07004608 wdiSetLinkStateRspCb: callback for passing back the
4609 response of the set link state operation received from
4610 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004611
Jeff Johnson295189b2012-06-20 16:38:30 -07004612 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004613 callback
4614
Jeff Johnson295189b2012-06-20 16:38:30 -07004615 @see WDI_JoinStartReq
4616 @return Result of the function call
4617*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004618WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004619WDI_SetLinkStateReq
4620(
4621 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4622 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4623 void* pUserData
4624)
4625{
4626 WDI_EventInfoType wdiEventData;
4627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4628
4629 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004630 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004631 ------------------------------------------------------------------------*/
4632 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4633 {
4634 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4635 "WDI API call before module is initialized - Fail request");
4636
Jeff Johnsone7245742012-09-05 17:12:55 -07004637 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004638 }
4639
4640 /*------------------------------------------------------------------------
4641 Fill in Event data and post to the Main FSM
4642 ------------------------------------------------------------------------*/
4643 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004644 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4645 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4646 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004647 wdiEventData.pUserData = pUserData;
4648
4649 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4650
4651}/*WDI_SetLinkStateReq*/
4652
4653
4654/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004655 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004656 to get statistics (MIB counters) from the device. Upon
4657 the call of this API the WLAN DAL will pack and send a
4658 HAL Start request message to the lower RIVA sub-system
4659 if DAL is in state STARTED.
4660
4661 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004662 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004663
4664 WDI_Start must have been called.
4665
Jeff Johnsone7245742012-09-05 17:12:55 -07004666 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004667 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004668
Jeff Johnson295189b2012-06-20 16:38:30 -07004669 wdiGetStatsRspCb: callback for passing back the response
4670 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004671
Jeff Johnson295189b2012-06-20 16:38:30 -07004672 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004673 callback
4674
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 @see WDI_Start
4676 @return Result of the function call
4677*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004678WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004679WDI_GetStatsReq
4680(
4681 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4682 WDI_GetStatsRspCb wdiGetStatsRspCb,
4683 void* pUserData
4684)
4685{
4686 WDI_EventInfoType wdiEventData;
4687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4688
4689 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004690 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004691 ------------------------------------------------------------------------*/
4692 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4693 {
4694 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4695 "WDI API call before module is initialized - Fail request");
4696
Jeff Johnsone7245742012-09-05 17:12:55 -07004697 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004698 }
4699
4700 /*------------------------------------------------------------------------
4701 Fill in Event data and post to the Main FSM
4702 ------------------------------------------------------------------------*/
4703 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004704 wdiEventData.pEventData = pwdiGetStatsReqParams;
4705 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4706 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004707 wdiEventData.pUserData = pUserData;
4708
4709 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4710
4711}/*WDI_GetStatsReq*/
4712
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004713#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4714/**
4715 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4716 to get roam rssi from the device. Upon
4717 the call of this API the WLAN DAL will pack and send a
4718 HAL Start request message to the lower RIVA sub-system
4719 if DAL is in state STARTED.
4720
4721 In state BUSY this request will be queued. Request won't
4722 be allowed in any other state.
4723
4724 WDI_Start must have been called.
4725
4726 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4727 specified by the Device Interface
4728
4729 wdiGetRoamRssiRspCb: callback for passing back the response
4730 of the get stats operation received from the device
4731
4732 pUserData: user data will be passed back with the
4733 callback
4734
4735 @see WDI_Start
4736 @return Result of the function call
4737*/
4738WDI_Status
4739WDI_GetRoamRssiReq
4740(
4741 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4742 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4743 void* pUserData
4744)
4745{
4746 WDI_EventInfoType wdiEventData;
4747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4748
4749 /*------------------------------------------------------------------------
4750 Sanity Check
4751 ------------------------------------------------------------------------*/
4752 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4753 {
4754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4755 "WDI API call before module is initialized - Fail request");
4756
4757 return WDI_STATUS_E_NOT_ALLOWED;
4758 }
4759 /*------------------------------------------------------------------------
4760 Fill in Event data and post to the Main FSM
4761 ------------------------------------------------------------------------*/
4762 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4763 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4764 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4765 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4766 wdiEventData.pUserData = pUserData;
4767
4768 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4769
4770}/*WDI_GetRoamRssiReq*/
4771#endif
4772
Jeff Johnson295189b2012-06-20 16:38:30 -07004773
4774/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004775 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004776 it wishes to change the configuration of the WLAN
4777 Device. Upon the call of this API the WLAN DAL will pack
4778 and send a HAL Update CFG request message to the lower
4779 RIVA sub-system if DAL is in state STARTED.
4780
4781 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004782 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004783
4784 WDI_Start must have been called.
4785
Jeff Johnsone7245742012-09-05 17:12:55 -07004786 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004787 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004788
Jeff Johnson295189b2012-06-20 16:38:30 -07004789 wdiUpdateCfgsRspCb: callback for passing back the
4790 response of the update cfg operation received from the
4791 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004792
Jeff Johnson295189b2012-06-20 16:38:30 -07004793 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004794 callback
4795
Jeff Johnson295189b2012-06-20 16:38:30 -07004796 @see WDI_Start
4797 @return Result of the function call
4798*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004799WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004800WDI_UpdateCfgReq
4801(
4802 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4803 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4804 void* pUserData
4805)
4806{
4807 WDI_EventInfoType wdiEventData;
4808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4809
4810 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004811 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004812 ------------------------------------------------------------------------*/
4813 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4814 {
4815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4816 "WDI API call before module is initialized - Fail request");
4817
Jeff Johnsone7245742012-09-05 17:12:55 -07004818 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004819 }
4820
4821 /*------------------------------------------------------------------------
4822 Fill in Event data and post to the Main FSM
4823 ------------------------------------------------------------------------*/
4824 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004825 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4826 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4827 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004828 wdiEventData.pUserData = pUserData;
4829
4830 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4831
4832}/*WDI_UpdateCfgReq*/
4833
4834
4835
4836/**
4837 @brief WDI_AddBAReq will be called when the upper MAC has setup
4838 successfully a BA session and needs to notify the HW for
4839 the appropriate settings to take place. Upon the call of
4840 this API the WLAN DAL will pack and send a HAL Add BA
4841 request message to the lower RIVA sub-system if DAL is
4842 in state STARTED.
4843
4844 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004845 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004846
4847 WDI_PostAssocReq must have been called.
4848
4849 @param wdiAddBAReqParams: the add BA parameters as specified by
4850 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004851
Jeff Johnson295189b2012-06-20 16:38:30 -07004852 wdiAddBARspCb: callback for passing back the response of
4853 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004854
Jeff Johnson295189b2012-06-20 16:38:30 -07004855 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004856 callback
4857
Jeff Johnson295189b2012-06-20 16:38:30 -07004858 @see WDI_PostAssocReq
4859 @return Result of the function call
4860*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004861WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004862WDI_AddBAReq
4863(
4864 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4865 WDI_AddBARspCb wdiAddBARspCb,
4866 void* pUserData
4867)
4868{
4869 WDI_EventInfoType wdiEventData;
4870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4871
4872 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004873 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004874 ------------------------------------------------------------------------*/
4875 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4876 {
4877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4878 "WDI API call before module is initialized - Fail request");
4879
Jeff Johnsone7245742012-09-05 17:12:55 -07004880 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004881 }
4882
4883 /*------------------------------------------------------------------------
4884 Fill in Event data and post to the Main FSM
4885 ------------------------------------------------------------------------*/
4886 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004887 wdiEventData.pEventData = pwdiAddBAReqParams;
4888 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4889 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004890 wdiEventData.pUserData = pUserData;
4891
4892 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4893
4894}/*WDI_AddBAReq*/
4895
4896
4897/**
4898 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4899 successfully a BA session and needs to notify the HW for
4900 the appropriate settings to take place. Upon the call of
4901 this API the WLAN DAL will pack and send a HAL Add BA
4902 request message to the lower RIVA sub-system if DAL is
4903 in state STARTED.
4904
4905 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004906 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004907
4908 WDI_PostAssocReq must have been called.
4909
4910 @param wdiAddBAReqParams: the add BA parameters as specified by
4911 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004912
Jeff Johnson295189b2012-06-20 16:38:30 -07004913 wdiAddBARspCb: callback for passing back the response of
4914 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004915
Jeff Johnson295189b2012-06-20 16:38:30 -07004916 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004917 callback
4918
Jeff Johnson295189b2012-06-20 16:38:30 -07004919 @see WDI_PostAssocReq
4920 @return Result of the function call
4921*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004922WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004923WDI_TriggerBAReq
4924(
4925 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4926 WDI_TriggerBARspCb wdiTriggerBARspCb,
4927 void* pUserData
4928)
4929{
4930 WDI_EventInfoType wdiEventData;
4931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4932
4933 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004934 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004935 ------------------------------------------------------------------------*/
4936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4937 {
4938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4939 "WDI API call before module is initialized - Fail request");
4940
Jeff Johnsone7245742012-09-05 17:12:55 -07004941 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004942 }
4943
4944 /*------------------------------------------------------------------------
4945 Fill in Event data and post to the Main FSM
4946 ------------------------------------------------------------------------*/
4947 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004948 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4949 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4950 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004951 wdiEventData.pUserData = pUserData;
4952
4953 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4954
4955}/*WDI_AddBAReq*/
4956
4957/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004958 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004959 wishes to update any of the Beacon parameters used by HW.
4960 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4961 message to the lower RIVA sub-system if DAL is in state
4962 STARTED.
4963
4964 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004965 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004966
4967 WDI_PostAssocReq must have been called.
4968
Jeff Johnsone7245742012-09-05 17:12:55 -07004969 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004970 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004971
Jeff Johnson295189b2012-06-20 16:38:30 -07004972 wdiUpdateBeaconParamsRspCb: callback for passing back the
4973 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004974
Jeff Johnson295189b2012-06-20 16:38:30 -07004975 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004976 callback
4977
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 @see WDI_PostAssocReq
4979 @return Result of the function call
4980*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004981WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004982WDI_UpdateBeaconParamsReq
4983(
4984 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
4985 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
4986 void* pUserData
4987)
4988{
4989 WDI_EventInfoType wdiEventData;
4990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4991
4992 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004993 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004994 ------------------------------------------------------------------------*/
4995 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4996 {
4997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4998 "WDI API call before module is initialized - Fail request");
4999
Jeff Johnsone7245742012-09-05 17:12:55 -07005000 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005001 }
5002
5003 /*------------------------------------------------------------------------
5004 Fill in Event data and post to the Main FSM
5005 ------------------------------------------------------------------------*/
5006 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005007 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5008 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5009 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005010 wdiEventData.pUserData = pUserData;
5011
5012 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5013
5014}/*WDI_UpdateBeaconParamsReq*/
5015
5016/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005017 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005018 wishes to update the Beacon template used by HW.
5019 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5020 message to the lower RIVA sub-system if DAL is in state
5021 STARTED.
5022
5023 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005024 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005025
5026 WDI_PostAssocReq must have been called.
5027
Jeff Johnsone7245742012-09-05 17:12:55 -07005028 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005029 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005030
Jeff Johnson295189b2012-06-20 16:38:30 -07005031 wdiSendBeaconParamsRspCb: callback for passing back the
5032 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005033
Jeff Johnson295189b2012-06-20 16:38:30 -07005034 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005035 callback
5036
Jeff Johnson295189b2012-06-20 16:38:30 -07005037 @see WDI_PostAssocReq
5038 @return Result of the function call
5039*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005040WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005041WDI_SendBeaconParamsReq
5042(
5043 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5044 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5045 void* pUserData
5046)
5047{
5048 WDI_EventInfoType wdiEventData;
5049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5050
5051 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005052 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005053 ------------------------------------------------------------------------*/
5054 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5055 {
5056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5057 "WDI API call before module is initialized - Fail request");
5058
Jeff Johnsone7245742012-09-05 17:12:55 -07005059 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005060 }
5061
5062 /*------------------------------------------------------------------------
5063 Fill in Event data and post to the Main FSM
5064 ------------------------------------------------------------------------*/
5065 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005066 wdiEventData.pEventData = pwdiSendBeaconParams;
5067 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5068 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005069 wdiEventData.pUserData = pUserData;
5070
5071 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5072
5073}/*WDI_SendBeaconParamsReq*/
5074
5075/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005076 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005077 upper MAC wants to update the probe response template to
5078 be transmitted as Soft AP
5079 Upon the call of this API the WLAN DAL will
5080 pack and send the probe rsp template message to the
5081 lower RIVA sub-system if DAL is in state STARTED.
5082
5083 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005085
5086
Jeff Johnsone7245742012-09-05 17:12:55 -07005087 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005088 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005089
Jeff Johnson295189b2012-06-20 16:38:30 -07005090 wdiSendBeaconParamsRspCb: callback for passing back the
5091 response of the Send Beacon Params operation received
5092 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005093
Jeff Johnson295189b2012-06-20 16:38:30 -07005094 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005095 callback
5096
Jeff Johnson295189b2012-06-20 16:38:30 -07005097 @see WDI_AddBAReq
5098 @return Result of the function call
5099*/
5100
Jeff Johnsone7245742012-09-05 17:12:55 -07005101WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005102WDI_UpdateProbeRspTemplateReq
5103(
5104 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5105 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5106 void* pUserData
5107)
5108{
5109 WDI_EventInfoType wdiEventData;
5110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5111
5112 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005113 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005114 ------------------------------------------------------------------------*/
5115 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5116 {
5117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5118 "WDI API call before module is initialized - Fail request");
5119
Jeff Johnsone7245742012-09-05 17:12:55 -07005120 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005121 }
5122
5123 /*------------------------------------------------------------------------
5124 Fill in Event data and post to the Main FSM
5125 ------------------------------------------------------------------------*/
5126 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005127 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5128 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5129 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005130 wdiEventData.pUserData = pUserData;
5131
5132 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5133
5134}/*WDI_UpdateProbeRspTemplateReq*/
5135
5136/**
5137 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5138 to the NV memory.
5139
5140
5141 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5142 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005143
Jeff Johnson295189b2012-06-20 16:38:30 -07005144 wdiNvDownloadRspCb: callback for passing back the response of
5145 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005146
Jeff Johnson295189b2012-06-20 16:38:30 -07005147 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 callback
5149
Jeff Johnson295189b2012-06-20 16:38:30 -07005150 @see WDI_PostAssocReq
5151 @return Result of the function call
5152*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005153WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005154WDI_NvDownloadReq
5155(
5156 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5157 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5158 void* pUserData
5159)
5160{
5161 WDI_EventInfoType wdiEventData;
5162
5163 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005164 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005165 ------------------------------------------------------------------------*/
5166 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5167 {
5168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5169 "WDI API call before module is initialized - Fail request");
5170
Jeff Johnsone7245742012-09-05 17:12:55 -07005171 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005172 }
5173
5174 /*------------------------------------------------------------------------
5175 Fill in Event data and post to the Main FSM
5176 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005177 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5178 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5179 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5180 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005181 wdiEventData.pUserData = pUserData;
5182
5183 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5184
5185}/*WDI_NVDownloadReq*/
5186
Jeff Johnson295189b2012-06-20 16:38:30 -07005187/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005188 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005189 upper MAC wants to send Notice of Absence
5190 Upon the call of this API the WLAN DAL will
5191 pack and send the probe rsp template message to the
5192 lower RIVA sub-system if DAL is in state STARTED.
5193
5194 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005195 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005196
5197
Jeff Johnsone7245742012-09-05 17:12:55 -07005198 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005199 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005200
Jeff Johnson295189b2012-06-20 16:38:30 -07005201 wdiSendBeaconParamsRspCb: callback for passing back the
5202 response of the Send Beacon Params operation received
5203 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005204
Jeff Johnson295189b2012-06-20 16:38:30 -07005205 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005206 callback
5207
Jeff Johnson295189b2012-06-20 16:38:30 -07005208 @see WDI_AddBAReq
5209 @return Result of the function call
5210*/
5211WDI_Status
5212WDI_SetP2PGONOAReq
5213(
5214 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5215 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5216 void* pUserData
5217)
5218{
5219 WDI_EventInfoType wdiEventData;
5220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5221
5222 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005223 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 ------------------------------------------------------------------------*/
5225 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5226 {
5227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5228 "WDI API call before module is initialized - Fail request");
5229
Jeff Johnsone7245742012-09-05 17:12:55 -07005230 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005231 }
5232
5233 /*------------------------------------------------------------------------
5234 Fill in Event data and post to the Main FSM
5235 ------------------------------------------------------------------------*/
5236 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005237 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5238 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5239 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005240 wdiEventData.pUserData = pUserData;
5241
5242 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5243
5244}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005245
5246/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005247 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005248 UMAC wanted to add STA self while opening any new session
5249 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005250 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005251
5252
Jeff Johnsone7245742012-09-05 17:12:55 -07005253 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005254 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005255
Jeff Johnson295189b2012-06-20 16:38:30 -07005256 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005257 callback
5258
5259 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005260 @return Result of the function call
5261*/
5262WDI_Status
5263WDI_AddSTASelfReq
5264(
5265 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5266 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5267 void* pUserData
5268)
5269{
5270 WDI_EventInfoType wdiEventData;
5271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5272
5273 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005274 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005275 ------------------------------------------------------------------------*/
5276 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5277 {
5278 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5279 "WDI API call before module is initialized - Fail request");
5280
Jeff Johnsone7245742012-09-05 17:12:55 -07005281 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 }
5283
5284 /*------------------------------------------------------------------------
5285 Fill in Event data and post to the Main FSM
5286 ------------------------------------------------------------------------*/
5287 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005288 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5289 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5290 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005291 wdiEventData.pUserData = pUserData;
5292
5293 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5294
5295}/*WDI_AddSTASelfReq*/
5296
5297
Jeff Johnsone7245742012-09-05 17:12:55 -07005298#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005299/**
5300 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5301 the device of a successful add TSpec negotiation. HW
5302 needs to receive the TSpec Info from the UMAC in order
5303 to configure properly the QoS data traffic. Upon the
5304 call of this API the WLAN DAL will pack and send a HAL
5305 Add TS request message to the lower RIVA sub-system if
5306 DAL is in state STARTED.
5307
5308 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005309 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005310
5311 WDI_PostAssocReq must have been called.
5312
5313 @param wdiAddTsReqParams: the add TS parameters as specified by
5314 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005315
Jeff Johnson295189b2012-06-20 16:38:30 -07005316 wdiAddTsRspCb: callback for passing back the response of
5317 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005318
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005320 callback
5321
Jeff Johnson295189b2012-06-20 16:38:30 -07005322 @see WDI_PostAssocReq
5323 @return Result of the function call
5324*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005325WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005326WDI_AggrAddTSReq
5327(
5328 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5329 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5330 void* pUserData
5331)
5332{
5333 WDI_EventInfoType wdiEventData;
5334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5335
5336 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005337 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005338 ------------------------------------------------------------------------*/
5339 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5340 {
5341 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5342 "WDI API call before module is initialized - Fail request");
5343
Jeff Johnsone7245742012-09-05 17:12:55 -07005344 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 }
5346
5347 /*------------------------------------------------------------------------
5348 Fill in Event data and post to the Main FSM
5349 ------------------------------------------------------------------------*/
5350 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005351 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5352 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5353 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005354 wdiEventData.pUserData = pUserData;
5355
5356 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5357
5358}/*WDI_AggrAddTSReq*/
5359
5360#endif /* WLAN_FEATURE_VOWIFI_11R */
5361
Jeff Johnson295189b2012-06-20 16:38:30 -07005362/**
5363 @brief WDI_FTMCommandReq
5364 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005365
5366 @param ftmCommandReq: FTM Command Body
5367 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005368 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005369
Jeff Johnson295189b2012-06-20 16:38:30 -07005370 @see
5371 @return Result of the function call
5372*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005373WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005374WDI_FTMCommandReq
5375(
5376 WDI_FTMCommandReqType *ftmCommandReq,
5377 WDI_FTMCommandRspCb ftmCommandRspCb,
5378 void *pUserData
5379)
5380{
5381 WDI_EventInfoType wdiEventData;
5382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5383
5384 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005385 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005386 ------------------------------------------------------------------------*/
5387 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5388 {
5389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5390 "WDI API call before module is initialized - Fail request");
5391
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 }
5394
5395 /*------------------------------------------------------------------------
5396 Fill in Event data and post to the Main FSM
5397 ------------------------------------------------------------------------*/
5398 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5399 wdiEventData.pEventData = (void *)ftmCommandReq;
5400 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5401 wdiEventData.pCBfnc = ftmCommandRspCb;
5402 wdiEventData.pUserData = pUserData;
5403
5404 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5405}
Jeff Johnson295189b2012-06-20 16:38:30 -07005406/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005407 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005408
5409 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005410 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005411
5412
5413 @param pwdiResumeReqParams: as specified by
5414 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005415
Jeff Johnson295189b2012-06-20 16:38:30 -07005416 wdiResumeReqRspCb: callback for passing back the response of
5417 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005418
Jeff Johnson295189b2012-06-20 16:38:30 -07005419 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005420 callback
5421
5422 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005423 @return Result of the function call
5424*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005425WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005426WDI_HostResumeReq
5427(
5428 WDI_ResumeParamsType* pwdiResumeReqParams,
5429 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5430 void* pUserData
5431)
5432{
5433 WDI_EventInfoType wdiEventData;
5434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5435
5436 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005437 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005438 ------------------------------------------------------------------------*/
5439 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5440 {
5441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5442 "WDI API call before module is initialized - Fail request");
5443
Jeff Johnsone7245742012-09-05 17:12:55 -07005444 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005445 }
5446
5447 /*------------------------------------------------------------------------
5448 Fill in Event data and post to the Main FSM
5449 ------------------------------------------------------------------------*/
5450 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005451 wdiEventData.pEventData = pwdiResumeReqParams;
5452 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5453 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005454 wdiEventData.pUserData = pUserData;
5455
5456 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5457
5458}/*WDI_HostResumeReq*/
5459
5460/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005462
5463 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005464 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005465
5466
5467 @param pwdiDelStaSelfReqParams: as specified by
5468 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005469
Jeff Johnson295189b2012-06-20 16:38:30 -07005470 wdiDelStaSelfRspCb: callback for passing back the response of
5471 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005472
Jeff Johnson295189b2012-06-20 16:38:30 -07005473 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005474 callback
5475
Jeff Johnson295189b2012-06-20 16:38:30 -07005476 @see WDI_PostAssocReq
5477 @return Result of the function call
5478*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005479WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005480WDI_DelSTASelfReq
5481(
5482 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5483 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5484 void* pUserData
5485)
5486{
5487 WDI_EventInfoType wdiEventData;
5488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5489
5490 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005491 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005492 ------------------------------------------------------------------------*/
5493 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5494 {
5495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5496 "WDI API call before module is initialized - Fail request");
5497
Jeff Johnsone7245742012-09-05 17:12:55 -07005498 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005499 }
5500
5501 /*------------------------------------------------------------------------
5502 Fill in Event data and post to the Main FSM
5503 ------------------------------------------------------------------------*/
5504 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005505 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5506 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5507 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005508 wdiEventData.pUserData = pUserData;
5509
5510 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5511
5512}/*WDI_AggrAddTSReq*/
5513
5514/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005515 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5516 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005517 Upon the call of this API the WLAN DAL will pack
5518 and send a HAL Set Tx Per Tracking request message to the
5519 lower RIVA sub-system if DAL is in state STARTED.
5520
5521 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005522 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005523
Jeff Johnsone7245742012-09-05 17:12:55 -07005524 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005525 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005526
Jeff Johnson295189b2012-06-20 16:38:30 -07005527 pwdiSetTxPerTrackingRspCb: callback for passing back the
5528 response of the set Tx PER Tracking configurations operation received
5529 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005530
Jeff Johnson295189b2012-06-20 16:38:30 -07005531 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005532 callback
5533
Jeff Johnson295189b2012-06-20 16:38:30 -07005534 @return Result of the function call
5535*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005536WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005537WDI_SetTxPerTrackingReq
5538(
5539 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5540 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5541 void* pUserData
5542)
5543{
5544 WDI_EventInfoType wdiEventData;
5545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5546
5547 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005548 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005549 ------------------------------------------------------------------------*/
5550 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5551 {
5552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5553 "WDI API call before module is initialized - Fail request");
5554
Jeff Johnsone7245742012-09-05 17:12:55 -07005555 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005556 }
5557
5558 /*------------------------------------------------------------------------
5559 Fill in Event data and post to the Main FSM
5560 ------------------------------------------------------------------------*/
5561 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005562 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005563 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005564 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005565 wdiEventData.pUserData = pUserData;
5566
5567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5568
5569}/*WDI_SetTxPerTrackingReq*/
5570
5571/**
5572 @brief WDI_SetTmLevelReq
5573 If HW Thermal condition changed, driver should react based on new
5574 HW thermal condition.
5575
5576 @param pwdiSetTmLevelReq: New thermal condition information
5577
5578 pwdiSetTmLevelRspCb: callback
5579
5580 usrData: user data will be passed back with the
5581 callback
5582
5583 @return Result of the function call
5584*/
5585WDI_Status
5586WDI_SetTmLevelReq
5587(
5588 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5589 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5590 void *usrData
5591)
5592{
5593 WDI_EventInfoType wdiEventData;
5594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5595
5596 /*------------------------------------------------------------------------
5597 Sanity Check
5598 ------------------------------------------------------------------------*/
5599 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5600 {
5601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5602 "WDI API call before module is initialized - Fail request");
5603
5604 return WDI_STATUS_E_NOT_ALLOWED;
5605 }
5606
5607 /*------------------------------------------------------------------------
5608 Fill in Event data and post to the Main FSM
5609 ------------------------------------------------------------------------*/
5610 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5611 wdiEventData.pEventData = pwdiSetTmLevelReq;
5612 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5613 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5614 wdiEventData.pUserData = usrData;
5615
5616 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5617}
5618
5619/**
5620 @brief WDI_HostSuspendInd
5621
5622 Suspend Indication from the upper layer will be sent
5623 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005624
Jeff Johnson295189b2012-06-20 16:38:30 -07005625 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005626
5627 @see
5628
Jeff Johnson295189b2012-06-20 16:38:30 -07005629 @return Status of the request
5630*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005631WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005632WDI_HostSuspendInd
5633(
5634 WDI_SuspendParamsType* pwdiSuspendIndParams
5635)
5636{
5637
5638 WDI_EventInfoType wdiEventData;
5639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5640
5641 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005642 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005643 ------------------------------------------------------------------------*/
5644 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5645 {
5646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5647 "WDI API call before module is initialized - Fail request");
5648
Jeff Johnsone7245742012-09-05 17:12:55 -07005649 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005650 }
5651
5652 /*------------------------------------------------------------------------
5653 Fill in Event data and post to the Main FSM
5654 ------------------------------------------------------------------------*/
5655 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005656 wdiEventData.pEventData = pwdiSuspendIndParams;
5657 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5658 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005659 wdiEventData.pUserData = NULL;
5660
5661 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5662
5663}/*WDI_HostSuspendInd*/
5664
5665/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005666 @brief WDI_TrafficStatsInd
5667 Traffic Stats from the upper layer will be sent
5668 down to HAL
5669
5670 @param WDI_TrafficStatsIndType
5671
5672 @see
5673
5674 @return Status of the request
5675*/
5676WDI_Status
5677WDI_TrafficStatsInd
5678(
5679 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5680)
5681{
5682
5683 WDI_EventInfoType wdiEventData;
5684 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5685
5686 /*------------------------------------------------------------------------
5687 Sanity Check
5688 ------------------------------------------------------------------------*/
5689 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5690 {
5691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5692 "WDI API call before module is initialized - Fail request");
5693
5694 return WDI_STATUS_E_NOT_ALLOWED;
5695 }
5696
5697 /*------------------------------------------------------------------------
5698 Fill in Event data and post to the Main FSM
5699 ------------------------------------------------------------------------*/
5700 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5701 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5702 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5703 wdiEventData.pCBfnc = NULL;
5704 wdiEventData.pUserData = NULL;
5705
5706 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5707
5708}/*WDI_TrafficStatsInd*/
5709
5710/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 @brief WDI_HALDumpCmdReq
5712 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005713
5714 @param halDumpCmdReqParams: Hal Dump Command Body
5715 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005716 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005717
Jeff Johnson295189b2012-06-20 16:38:30 -07005718 @see
5719 @return Result of the function call
5720*/
5721WDI_Status WDI_HALDumpCmdReq
5722(
5723 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5724 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5725 void *pUserData
5726)
5727{
5728 WDI_EventInfoType wdiEventData;
5729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5730
5731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005733 ------------------------------------------------------------------------*/
5734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5735 {
5736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5737 "WDI API call before module is initialized - Fail request");
5738
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005740 }
5741
5742 /*------------------------------------------------------------------------
5743 Fill in Event data and post to the Main FSM
5744 ------------------------------------------------------------------------*/
5745 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5746 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5747 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5748 wdiEventData.pCBfnc = halDumpCmdRspCb;
5749 wdiEventData.pUserData = pUserData;
5750
5751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5752}
5753
Jeff Johnsone7245742012-09-05 17:12:55 -07005754/*============================================================================
5755
Jeff Johnson295189b2012-06-20 16:38:30 -07005756 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005757
Jeff Johnson295189b2012-06-20 16:38:30 -07005758 ============================================================================*/
5759
5760/**
5761 @brief Main FSM Start function for all states except BUSY
5762
Jeff Johnsone7245742012-09-05 17:12:55 -07005763
5764 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 wdiEV: event posted to the main DAL FSM
5766 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005767 structure
5768
Jeff Johnson295189b2012-06-20 16:38:30 -07005769 @see
5770 @return Result of the function call
5771*/
5772WDI_Status
5773WDI_PostMainEvent
5774(
Jeff Johnsone7245742012-09-05 17:12:55 -07005775 WDI_ControlBlockType* pWDICtx,
5776 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005777 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005778
Jeff Johnson295189b2012-06-20 16:38:30 -07005779)
5780{
Jeff Johnsone7245742012-09-05 17:12:55 -07005781 WDI_Status wdiStatus;
5782 WDI_MainFuncType pfnWDIMainEvHdlr;
5783 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5785
5786 /*-------------------------------------------------------------------------
5787 Sanity check
5788 -------------------------------------------------------------------------*/
5789 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5790 ( wdiEV >= WDI_MAX_EVENT ))
5791 {
5792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5793 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5794 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005796 }
5797
5798 /*Access to the global state must be locked */
5799 wpalMutexAcquire(&pWDICtx->wptMutex);
5800
5801 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005802 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005803
5804 wdiOldState = pWDICtx->uGlobalState;
5805
5806 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005807 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5808 response comes from CCPU for the request sent by host:
5809 the WDI global state will be in WDI_BUSY_ST already, so do not set it to BUSY again.
Jeff Johnson295189b2012-06-20 16:38:30 -07005810 This state will be set to WDI_STARTED_ST in WDI_MainRsp, if it is a expected response.
Jeff Johnsone7245742012-09-05 17:12:55 -07005811 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005812 CCPU:
5813 don't change the state */
5814 if ( WDI_RESPONSE_EVENT != wdiEV)
5815 {
5816 /*Transition to BUSY State - the request is now being processed by the FSM,
5817 if the request fails we shall transition back to the old state, if not
5818 the request will manage its own state transition*/
5819 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5820 }
5821 /* If the state function associated with the EV is NULL it means that this
5822 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005823 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 {
5825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005826 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005828 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005829 }
5830 else
5831 {
5832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005833 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005834 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005835 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005836 }
5837
5838 /* If a request handles itself well it will end up in a success or in a
5839 pending
5840 Success - means that the request was processed and the proper state
5841 transition already occurred or will occur when the resp is received
5842 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005843
Jeff Johnson295189b2012-06-20 16:38:30 -07005844 Pending - means the request could not be processed at this moment in time
5845 because the FSM was already busy so no state transition or dequeueing
5846 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005847
Jeff Johnson295189b2012-06-20 16:38:30 -07005848 Success for synchronous case means that the transition may occur and
5849 processing of pending requests may continue - so it should go through
5850 and restores the state and continue processing queued requests*/
5851 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5852 ( WDI_STATUS_PENDING != wdiStatus ))
5853 {
5854 if ( WDI_RESPONSE_EVENT != wdiEV)
5855 {
5856 /*The request has failed or could not be processed - transition back to
5857 the old state - check to see if anything was queued and try to execute
5858 The dequeue logic should post a message to a thread and return - no
5859 actual processing can occur */
5860 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5861 }
5862 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005863
Jeff Johnson295189b2012-06-20 16:38:30 -07005864 }
5865
5866 /* we have completed processing the event */
5867 wpalMutexRelease(&pWDICtx->wptMutex);
5868
Jeff Johnsone7245742012-09-05 17:12:55 -07005869 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005870
5871}/*WDI_PostMainEvent*/
5872
5873
5874/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005875 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005876--------------------------------------------------------------------------*/
5877/**
5878 @brief Main FSM Start function for all states except BUSY
5879
Jeff Johnsone7245742012-09-05 17:12:55 -07005880
5881 @param pWDICtx: pointer to the WLAN DAL context
5882 pEventData: pointer to the event information structure
5883
Jeff Johnson295189b2012-06-20 16:38:30 -07005884 @see
5885 @return Result of the function call
5886*/
5887WDI_Status
5888WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005889(
Jeff Johnson295189b2012-06-20 16:38:30 -07005890 WDI_ControlBlockType* pWDICtx,
5891 WDI_EventInfoType* pEventData
5892)
5893{
5894
5895 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005896 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005897 ----------------------------------------------------------------------*/
5898 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5899 {
5900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005901 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005902 pWDICtx, pEventData);
5903 return WDI_STATUS_E_FAILURE;
5904 }
5905
5906 wpalMutexAcquire(&pWDICtx->wptMutex);
5907
5908 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005909 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005910 ----------------------------------------------------------------------*/
5911 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5912 {
5913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5914 "Control Transport not yet Open - queueing the request");
5915
5916 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005917 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005918
5919 wpalMutexRelease(&pWDICtx->wptMutex);
5920 return WDI_STATUS_PENDING;
5921 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005922
Jeff Johnson295189b2012-06-20 16:38:30 -07005923 wpalMutexRelease(&pWDICtx->wptMutex);
5924
5925 /*Return Success*/
5926 return WDI_ProcessRequest( pWDICtx, pEventData );
5927
5928}/*WDI_MainStart*/
5929
5930/**
5931 @brief Main FSM Response function for state INIT
5932
Jeff Johnsone7245742012-09-05 17:12:55 -07005933
5934 @param pWDICtx: pointer to the WLAN DAL context
5935 pEventData: pointer to the event information structure
5936
Jeff Johnson295189b2012-06-20 16:38:30 -07005937 @see
5938 @return Result of the function call
5939*/
5940WDI_Status
5941WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005942(
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 WDI_ControlBlockType* pWDICtx,
5944 WDI_EventInfoType* pEventData
5945)
5946{
5947 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005948 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07005949 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005950 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07005951
5952 /*Return Success*/
5953 return WDI_STATUS_E_NOT_ALLOWED;
5954}/* WDI_MainRspInit */
5955
5956/**
5957 @brief Main FSM Close function for all states except BUSY
5958
Jeff Johnsone7245742012-09-05 17:12:55 -07005959
5960 @param pWDICtx: pointer to the WLAN DAL context
5961 pEventData: pointer to the event information structure
5962
Jeff Johnson295189b2012-06-20 16:38:30 -07005963 @see
5964 @return Result of the function call
5965*/
5966WDI_Status
5967WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07005968(
Jeff Johnson295189b2012-06-20 16:38:30 -07005969 WDI_ControlBlockType* pWDICtx,
5970 WDI_EventInfoType* pEventData
5971)
5972{
5973
5974 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005975 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 ----------------------------------------------------------------------*/
5977 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5978 {
5979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005980 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005981 pWDICtx, pEventData);
5982 return WDI_STATUS_E_FAILURE;
5983 }
5984
5985 /*Return Success*/
5986 return WDI_ProcessRequest( pWDICtx, pEventData );
5987
5988}/*WDI_MainClose*/
5989/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005990 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005991--------------------------------------------------------------------------*/
5992/**
5993 @brief Main FSM Start function for state STARTED
5994
Jeff Johnsone7245742012-09-05 17:12:55 -07005995
5996 @param pWDICtx: pointer to the WLAN DAL context
5997 pEventData: pointer to the event information structure
5998
Jeff Johnson295189b2012-06-20 16:38:30 -07005999 @see
6000 @return Result of the function call
6001*/
6002WDI_Status
6003WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006004(
Jeff Johnson295189b2012-06-20 16:38:30 -07006005 WDI_ControlBlockType* pWDICtx,
6006 WDI_EventInfoType* pEventData
6007)
6008{
6009 WDI_StartRspCb wdiStartRspCb = NULL;
6010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6011
6012 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006013 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006014 ----------------------------------------------------------------------*/
6015 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6016 {
6017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006018 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006019 pWDICtx, pEventData);
6020 return WDI_STATUS_E_FAILURE;
6021 }
6022
6023 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006024 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006025 ----------------------------------------------------------------------*/
6026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006027 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006028
6029 wpalMutexAcquire(&pWDICtx->wptMutex);
6030
6031 /*Transition back to started because the post function transitioned us to
6032 busy*/
6033 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6034
6035 /*Check to see if any request is pending*/
6036 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006037
Jeff Johnson295189b2012-06-20 16:38:30 -07006038 wpalMutexRelease(&pWDICtx->wptMutex);
6039
6040 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006041 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6042
Jeff Johnson295189b2012-06-20 16:38:30 -07006043 /*Notify UMAC*/
6044 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6045
6046 /*Return Success*/
6047 return WDI_STATUS_SUCCESS;
6048
6049}/*WDI_MainStartStarted*/
6050
6051/**
6052 @brief Main FSM Stop function for state STARTED
6053
Jeff Johnsone7245742012-09-05 17:12:55 -07006054
6055 @param pWDICtx: pointer to the WLAN DAL context
6056 pEventData: pointer to the event information structure
6057
Jeff Johnson295189b2012-06-20 16:38:30 -07006058 @see
6059 @return Result of the function call
6060*/
6061WDI_Status
6062WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006063(
Jeff Johnson295189b2012-06-20 16:38:30 -07006064 WDI_ControlBlockType* pWDICtx,
6065 WDI_EventInfoType* pEventData
6066)
6067{
6068 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006069 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006070 ----------------------------------------------------------------------*/
6071 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6072 {
6073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006074 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006075 pWDICtx, pEventData);
6076 return WDI_STATUS_E_FAILURE;
6077 }
6078
6079 /*State at this point is BUSY - because we enter this state before posting
6080 an event to the FSM in order to prevent potential race conditions*/
6081
6082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6083 "Processing stop request in FSM");
6084
6085 /*Return Success*/
6086 return WDI_ProcessRequest( pWDICtx, pEventData );
6087
6088}/*WDI_MainStopStarted*/
6089/**
6090 @brief Main FSM Request function for state started
6091
Jeff Johnsone7245742012-09-05 17:12:55 -07006092
6093 @param pWDICtx: pointer to the WLAN DAL context
6094 pEventData: pointer to the event information structure
6095
Jeff Johnson295189b2012-06-20 16:38:30 -07006096 @see
6097 @return Result of the function call
6098*/
6099WDI_Status
6100WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006101(
Jeff Johnson295189b2012-06-20 16:38:30 -07006102 WDI_ControlBlockType* pWDICtx,
6103 WDI_EventInfoType* pEventData
6104)
6105{
6106
6107 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006108 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006109 ----------------------------------------------------------------------*/
6110 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6111 {
6112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006113 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006114 pWDICtx, pEventData);
6115 return WDI_STATUS_E_FAILURE;
6116 }
6117
6118 /*State at this point is BUSY - because we enter this state before posting
6119 an event to the FSM in order to prevent potential race conditions*/
6120
6121 /*Return Success*/
6122 return WDI_ProcessRequest( pWDICtx, pEventData );
6123
6124}/*WDI_MainReqStarted*/
6125
6126/**
6127 @brief Main FSM Response function for all states except INIT
6128
Jeff Johnsone7245742012-09-05 17:12:55 -07006129
6130 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006131 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006132
Jeff Johnson295189b2012-06-20 16:38:30 -07006133 @see
6134 @return Result of the function call
6135*/
6136WDI_Status
6137WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006138(
Jeff Johnson295189b2012-06-20 16:38:30 -07006139 WDI_ControlBlockType* pWDICtx,
6140 WDI_EventInfoType* pEventData
6141)
6142{
Jeff Johnsone7245742012-09-05 17:12:55 -07006143 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006144 wpt_boolean expectedResponse;
6145
6146 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006147 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006148 ----------------------------------------------------------------------*/
6149 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6150 {
6151 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006152 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006153 pWDICtx, pEventData);
6154 return WDI_STATUS_E_FAILURE;
6155 }
6156
6157 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6158 {
6159 /* we received an expected response */
6160 expectedResponse = eWLAN_PAL_TRUE;
6161
6162 /*We expect that we will transition to started after this processing*/
6163 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6164
6165 /* we are no longer expecting a response */
6166 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6167 }
6168 else
6169 {
6170 /* we received an indication or unexpected response */
6171 expectedResponse = eWLAN_PAL_FALSE;
6172 /* for indications no need to update state from what it is right
6173 now, unless it explicitly does it in the indication handler (say
6174 for device failure ind) */
6175 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6176 }
6177
6178 /*Process the response and indication */
6179 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6180
6181 /*Lock the CB as we are about to do a state transition*/
6182 wpalMutexAcquire(&pWDICtx->wptMutex);
6183
6184 /*Transition to the expected state after the response processing
6185 - this should always be started state with the following exceptions:
6186 1. processing of a failed start response
6187 2. device failure detected while processing response
6188 3. stop response received*/
6189 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006190
Jeff Johnson295189b2012-06-20 16:38:30 -07006191 /*Dequeue request that may have been queued while we were waiting for the
6192 response */
6193 if ( expectedResponse )
6194 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006195 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006196 }
6197
6198 wpalMutexRelease(&pWDICtx->wptMutex);
6199
6200 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006201 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006202
6203}/*WDI_MainRsp*/
6204
6205/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006206 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006207--------------------------------------------------------------------------*/
6208/**
6209 @brief Main FSM Stop function for state STOPPED
6210
Jeff Johnsone7245742012-09-05 17:12:55 -07006211
6212 @param pWDICtx: pointer to the WLAN DAL context
6213 pEventData: pointer to the event information structure
6214
Jeff Johnson295189b2012-06-20 16:38:30 -07006215 @see
6216 @return Result of the function call
6217*/
6218WDI_Status
6219WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006220(
Jeff Johnson295189b2012-06-20 16:38:30 -07006221 WDI_ControlBlockType* pWDICtx,
6222 WDI_EventInfoType* pEventData
6223)
6224{
6225 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006226 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 ----------------------------------------------------------------------*/
6228 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6229 {
6230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006231 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006232 pWDICtx, pEventData);
6233 return WDI_STATUS_E_FAILURE;
6234 }
6235
6236 /*We should normally not get a STOP request if we are already stopped
6237 since we should normally be stopped by the UMAC. However in some
6238 error situations we put ourselves in the stopped state without the
6239 UMAC knowing, so when we get a STOP request in this state we still
6240 process it since we need to clean up the underlying state */
6241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6242 "Processing stop request while stopped in FSM");
6243
6244 /*Return Success*/
6245 return WDI_ProcessRequest( pWDICtx, pEventData );
6246
6247}/*WDI_MainStopStopped*/
6248
6249/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006250 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006251--------------------------------------------------------------------------*/
6252/**
6253 @brief Main FSM Start function for state BUSY
6254
Jeff Johnsone7245742012-09-05 17:12:55 -07006255
6256 @param pWDICtx: pointer to the WLAN DAL context
6257 pEventData: pointer to the event information structure
6258
Jeff Johnson295189b2012-06-20 16:38:30 -07006259 @see
6260 @return Result of the function call
6261*/
6262WDI_Status
6263WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006264(
Jeff Johnson295189b2012-06-20 16:38:30 -07006265 WDI_ControlBlockType* pWDICtx,
6266 WDI_EventInfoType* pEventData
6267)
6268{
6269 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006270 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006271 ----------------------------------------------------------------------*/
6272 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6273 {
6274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006275 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006276 pWDICtx, pEventData);
6277 return WDI_STATUS_E_FAILURE;
6278 }
6279
6280 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006281 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006282 ----------------------------------------------------------------------*/
6283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6284 "WDI Busy state - queue start request");
6285
6286 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006287 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006288
6289 /*Return Success*/
6290 return WDI_STATUS_PENDING;
6291}/*WDI_MainStartBusy*/
6292
6293/**
6294 @brief Main FSM Stop function for state BUSY
6295
Jeff Johnsone7245742012-09-05 17:12:55 -07006296
6297 @param pWDICtx: pointer to the WLAN DAL context
6298 pEventData: pointer to the event information structure
6299
Jeff Johnson295189b2012-06-20 16:38:30 -07006300 @see
6301 @return Result of the function call
6302*/
6303WDI_Status
6304WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006305(
Jeff Johnson295189b2012-06-20 16:38:30 -07006306 WDI_ControlBlockType* pWDICtx,
6307 WDI_EventInfoType* pEventData
6308)
6309{
6310 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006311 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006312 ----------------------------------------------------------------------*/
6313 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6314 {
6315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006316 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006317 pWDICtx, pEventData);
6318 return WDI_STATUS_E_FAILURE;
6319 }
6320
6321 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006322 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006323 ----------------------------------------------------------------------*/
6324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6325 "WDI Busy state - queue stop request");
6326
Jeff Johnsone7245742012-09-05 17:12:55 -07006327 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006328 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006329
Jeff Johnson295189b2012-06-20 16:38:30 -07006330}/*WDI_MainStopBusy*/
6331
6332/**
6333 @brief Main FSM Request function for state BUSY
6334
Jeff Johnsone7245742012-09-05 17:12:55 -07006335
6336 @param pWDICtx: pointer to the WLAN DAL context
6337 pEventData: pointer to the event information structure
6338
Jeff Johnson295189b2012-06-20 16:38:30 -07006339 @see
6340 @return Result of the function call
6341*/
6342WDI_Status
6343WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006344(
Jeff Johnson295189b2012-06-20 16:38:30 -07006345 WDI_ControlBlockType* pWDICtx,
6346 WDI_EventInfoType* pEventData
6347)
6348{
6349 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006350 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006351 ----------------------------------------------------------------------*/
6352 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6353 {
6354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006355 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006356 pWDICtx, pEventData);
6357 return WDI_STATUS_E_FAILURE;
6358 }
6359
6360 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006361 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006362 ----------------------------------------------------------------------*/
6363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6364 "WDI Busy state - queue request %d because waiting for response %d",
6365 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6366
Jeff Johnsone7245742012-09-05 17:12:55 -07006367 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006368 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006369
Jeff Johnson295189b2012-06-20 16:38:30 -07006370}/*WDI_MainReqBusy*/
6371/**
6372 @brief Main FSM Close function for state BUSY
6373
Jeff Johnsone7245742012-09-05 17:12:55 -07006374
6375 @param pWDICtx: pointer to the WLAN DAL context
6376 pEventData: pointer to the event information structure
6377
Jeff Johnson295189b2012-06-20 16:38:30 -07006378 @see
6379 @return Result of the function call
6380*/
6381WDI_Status
6382WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006383(
Jeff Johnson295189b2012-06-20 16:38:30 -07006384 WDI_ControlBlockType* pWDICtx,
6385 WDI_EventInfoType* pEventData
6386)
6387{
6388 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006389 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006390 ----------------------------------------------------------------------*/
6391 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6392 {
6393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006394 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006395 pWDICtx, pEventData);
6396 return WDI_STATUS_E_FAILURE;
6397 }
6398
6399 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006400 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006401 ----------------------------------------------------------------------*/
6402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6403 "WDI Busy state - queue close request");
6404
Jeff Johnsone7245742012-09-05 17:12:55 -07006405 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006406 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006407
Jeff Johnson295189b2012-06-20 16:38:30 -07006408}/*WDI_MainCloseBusy*/
6409
6410/**
6411 @brief Main FSM Shutdown function for INIT & STARTED states
6412
6413
6414 @param pWDICtx: pointer to the WLAN DAL context
6415 pEventData: pointer to the event information structure
6416
6417 @see
6418 @return Result of the function call
6419*/
6420WDI_Status
6421WDI_MainShutdown
6422(
6423 WDI_ControlBlockType* pWDICtx,
6424 WDI_EventInfoType* pEventData
6425)
6426{
6427 /*--------------------------------------------------------------------
6428 Sanity Check
6429 ----------------------------------------------------------------------*/
6430 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6431 {
6432 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6433 "Invalid parameters on Main Start %x %x",
6434 pWDICtx, pEventData);
6435 return WDI_STATUS_E_FAILURE;
6436 }
6437
6438 /*State at this point is BUSY - because we enter this state before posting
6439 an event to the FSM in order to prevent potential race conditions*/
6440
6441 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6442 "Processing shutdown request in FSM");
6443
6444 /*Return Success*/
6445 return WDI_ProcessRequest( pWDICtx, pEventData );
6446
6447}/*WDI_MainShutdown*/
6448
6449/**
6450 @brief Main FSM Shutdown function for BUSY state
6451
6452
6453 @param pWDICtx: pointer to the WLAN DAL context
6454 pEventData: pointer to the event information structure
6455
6456 @see
6457 @return Result of the function call
6458*/
6459WDI_Status
6460WDI_MainShutdownBusy
6461(
6462 WDI_ControlBlockType* pWDICtx,
6463 WDI_EventInfoType* pEventData
6464)
6465{
6466 /*--------------------------------------------------------------------
6467 Sanity Check
6468 ----------------------------------------------------------------------*/
6469 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6470 {
6471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6472 "Invalid parameters on Main Start %x %x",
6473 pWDICtx, pEventData);
6474 return WDI_STATUS_E_FAILURE;
6475 }
6476
6477 /* If you are waiting for a HAL response at this stage, you are not
6478 * going to get it. Riva is already shutdown/crashed.
6479 */
6480 wpalTimerStop(&gWDICb.wptResponseTimer);
6481
6482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6483 "Processing shutdown request in FSM: Busy state ");
6484
6485 return WDI_ProcessRequest( pWDICtx, pEventData );
6486
6487}/*WDI_MainShutdownBusy*/
6488
6489
Jeff Johnsone7245742012-09-05 17:12:55 -07006490/*=======================================================================
6491
Jeff Johnson295189b2012-06-20 16:38:30 -07006492 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006493
Jeff Johnson295189b2012-06-20 16:38:30 -07006494*=======================================================================*/
6495
6496/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006497 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006498========================================================================*/
6499/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006500 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006501 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006502
6503 @param pWDICtx: pointer to the WLAN DAL context
6504 pEventData: pointer to the event information structure
6505
Jeff Johnson295189b2012-06-20 16:38:30 -07006506 @see
6507 @return Result of the function call
6508*/
6509WDI_Status
6510WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006511(
Jeff Johnson295189b2012-06-20 16:38:30 -07006512 WDI_ControlBlockType* pWDICtx,
6513 WDI_EventInfoType* pEventData
6514)
6515{
6516 WDI_StartReqParamsType* pwdiStartParams = NULL;
6517 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006518 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006519 wpt_uint16 usDataOffset = 0;
6520 wpt_uint16 usSendSize = 0;
6521
Jeff Johnsone7245742012-09-05 17:12:55 -07006522 tHalMacStartReqMsg halStartReq;
6523 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6525
6526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 -------------------------------------------------------------------------*/
6529 if (( NULL == pEventData ) ||
6530 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6531 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6532 {
6533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006535 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006536 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006537 }
6538
6539 /*-----------------------------------------------------------------------
6540 Get message buffer
6541 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006542 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006543 pwdiStartParams->usConfigBufferLen;
6544
Jeff Johnsone7245742012-09-05 17:12:55 -07006545 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006546 usLen,
6547 &pSendBuffer, &usDataOffset, &usSendSize))||
6548 ( usSendSize < (usDataOffset + usLen )))
6549 {
6550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6551 "Unable to get send buffer in start req %x %x %x",
6552 pEventData, pwdiStartParams, wdiStartRspCb);
6553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006555 }
6556
6557 /*-----------------------------------------------------------------------
6558 Fill in the message
6559 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006560 halStartReq.startReqParams.driverType =
6561 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006562
Jeff Johnsone7245742012-09-05 17:12:55 -07006563 halStartReq.startReqParams.uConfigBufferLen =
6564 pwdiStartParams->usConfigBufferLen;
6565 wpalMemoryCopy( pSendBuffer+usDataOffset,
6566 &halStartReq.startReqParams,
6567 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006568
Jeff Johnsone7245742012-09-05 17:12:55 -07006569 usDataOffset += sizeof(halStartReq.startReqParams);
6570 wpalMemoryCopy( pSendBuffer+usDataOffset,
6571 pwdiStartParams->pConfigBuffer,
6572 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006573
6574 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006575 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006576
6577 /*Save Low Level Ind CB and associated user data - it will be used further
6578 on when an indication is coming from the lower MAC*/
6579 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006580 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006581
Jeff Johnsone7245742012-09-05 17:12:55 -07006582 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006584 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006585 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006586 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006587 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6588
Jeff Johnsone7245742012-09-05 17:12:55 -07006589
Jeff Johnson295189b2012-06-20 16:38:30 -07006590}/*WDI_ProcessStartReq*/
6591
6592/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006593 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006594 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006595
6596 @param pWDICtx: pointer to the WLAN DAL context
6597 pEventData: pointer to the event information structure
6598
Jeff Johnson295189b2012-06-20 16:38:30 -07006599 @see
6600 @return Result of the function call
6601*/
6602WDI_Status
6603WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006604(
Jeff Johnson295189b2012-06-20 16:38:30 -07006605 WDI_ControlBlockType* pWDICtx,
6606 WDI_EventInfoType* pEventData
6607)
6608{
6609 WDI_StopReqParamsType* pwdiStopParams = NULL;
6610 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006611 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006612 wpt_uint16 usDataOffset = 0;
6613 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006614 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006615 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6617
6618 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006619 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006620 -------------------------------------------------------------------------*/
6621 if (( NULL == pEventData ) ||
6622 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6623 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6624 {
6625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006627 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006628 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006629 }
6630
6631 /*-----------------------------------------------------------------------
6632 Get message buffer
6633 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006634 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006635 sizeof(halStopReq.stopReqParams),
6636 &pSendBuffer, &usDataOffset, &usSendSize))||
6637 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6638 {
6639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6640 "Unable to get send buffer in stop req %x %x %x",
6641 pEventData, pwdiStopParams, wdiStopRspCb);
6642 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006643 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006644 }
6645
6646 /*-----------------------------------------------------------------------
6647 Fill in the message
6648 -----------------------------------------------------------------------*/
6649 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6650 pwdiStopParams->wdiStopReason);
6651
Jeff Johnsone7245742012-09-05 17:12:55 -07006652 wpalMemoryCopy( pSendBuffer+usDataOffset,
6653 &halStopReq.stopReqParams,
6654 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006655
6656 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006657 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006658
6659 /*! TO DO: stop the data services */
6660 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6661 {
6662 /*Stop the STA Table !UT- check this logic again
6663 It is safer to do it here than on the response - because a stop is imminent*/
6664 WDI_STATableStop(pWDICtx);
6665
6666 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006667 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6668 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006669 {
6670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6671 "WDI Init failed to reset power state event");
6672
Jeff Johnsone7245742012-09-05 17:12:55 -07006673 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006674 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006675 }
6676 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006677 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6678 if( eWLAN_PAL_STATUS_SUCCESS != status )
6679 {
6680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6681 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6682 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006683 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006684 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006685 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006686 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006687 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006688 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6689 WDI_SET_POWER_STATE_TIMEOUT);
6690 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006691 {
6692 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6693 "WDI Init failed to wait on an event");
6694
Jeff Johnsone7245742012-09-05 17:12:55 -07006695 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006696 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006697 }
6698 }
6699
6700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006701 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006702 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006703 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006704 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6705
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006706fail:
6707 // Release the message buffer so we don't leak
6708 wpalMemoryFree(pSendBuffer);
6709
6710failRequest:
6711 //WDA should have failure check to avoid the memory leak
6712 return WDI_STATUS_E_FAILURE;
6713
Jeff Johnson295189b2012-06-20 16:38:30 -07006714}/*WDI_ProcessStopReq*/
6715
6716/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006717 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006718 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006719
6720 @param pWDICtx: pointer to the WLAN DAL context
6721 pEventData: pointer to the event information structure
6722
Jeff Johnson295189b2012-06-20 16:38:30 -07006723 @see
6724 @return Result of the function call
6725*/
6726WDI_Status
6727WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006728(
Jeff Johnson295189b2012-06-20 16:38:30 -07006729 WDI_ControlBlockType* pWDICtx,
6730 WDI_EventInfoType* pEventData
6731)
6732{
Jeff Johnsone7245742012-09-05 17:12:55 -07006733 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6735
6736 /*Lock control block for cleanup*/
6737 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006738
Jeff Johnson295189b2012-06-20 16:38:30 -07006739 /*Clear all pending request*/
6740 WDI_ClearPendingRequests(pWDICtx);
6741
6742 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006743 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006744
6745 /* Close Data transport*/
6746 /* FTM mode does not open Data Path */
6747 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6748 {
6749 WDTS_Close(pWDICtx);
6750 }
6751
6752 /*Close the STA Table !UT- check this logic again*/
6753 WDI_STATableClose(pWDICtx);
6754
6755 /*close the PAL */
6756 wptStatus = wpalClose(pWDICtx->pPALContext);
6757 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6758 {
6759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6760 "Failed to wpal Close %d", wptStatus);
6761 WDI_ASSERT(0);
6762 }
6763
6764 /*Transition back to init state*/
6765 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6766
6767 wpalMutexRelease(&pWDICtx->wptMutex);
6768
6769 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006770 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006771
Jeff Johnsone7245742012-09-05 17:12:55 -07006772 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006773}/*WDI_ProcessCloseReq*/
6774
6775
6776/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006778===========================================================================*/
6779
6780/**
6781 @brief Process Init Scan Request function (called when Main FSM
6782 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006783
6784 @param pWDICtx: pointer to the WLAN DAL context
6785 pEventData: pointer to the event information structure
6786
Jeff Johnson295189b2012-06-20 16:38:30 -07006787 @see
6788 @return Result of the function call
6789*/
6790WDI_Status
6791WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006792(
Jeff Johnson295189b2012-06-20 16:38:30 -07006793 WDI_ControlBlockType* pWDICtx,
6794 WDI_EventInfoType* pEventData
6795)
6796{
6797 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6798 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006799 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006800 wpt_uint16 usDataOffset = 0;
6801 wpt_uint16 usSendSize = 0;
6802 wpt_uint8 i = 0;
6803
6804 tHalInitScanReqMsg halInitScanReqMsg;
6805
Jeff Johnsone7245742012-09-05 17:12:55 -07006806 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006807 * It shold be removed once host and riva changes are in sync*/
6808 tHalInitScanConReqMsg halInitScanConReqMsg;
6809
6810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6811
6812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006814 -------------------------------------------------------------------------*/
6815 if (( NULL == pEventData ) ||
6816 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6817 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6818 {
6819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006820 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006823 }
6824
6825#if 0
6826 wpalMutexAcquire(&pWDICtx->wptMutex);
6827 /*-----------------------------------------------------------------------
6828 Check to see if SCAN is already in progress - if so reject the req
6829 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006830 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006831 -----------------------------------------------------------------------*/
6832 if ( pWDICtx->bScanInProgress )
6833 {
6834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6835 "Scan is already in progress - subsequent scan is not allowed"
6836 " until the first scan completes");
6837
6838 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006839 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006840 }
6841
Jeff Johnsone7245742012-09-05 17:12:55 -07006842 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6843 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006844
6845 wpalMutexRelease(&pWDICtx->wptMutex);
6846#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08006847 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006848 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006849 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006850 * It shold be removed once host and riva changes are in sync*/
6851 /*-----------------------------------------------------------------------
6852 Get message buffer
6853 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006854 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006855 sizeof(halInitScanConReqMsg.initScanParams),
6856 &pSendBuffer, &usDataOffset, &usSendSize))||
6857 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6858 {
6859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6860 "Unable to get send buffer in init scan req %x %x %x",
6861 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 }
6865
6866
6867 /*-----------------------------------------------------------------------
6868 Fill in the message
6869 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006870 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006871 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6872
6873 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6874 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6875
Jeff Johnsone7245742012-09-05 17:12:55 -07006876 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006877 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006878 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006880 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6882
6883 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6884 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6885
Jeff Johnson295189b2012-06-20 16:38:30 -07006886 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6887 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07006888
Jeff Johnsone7245742012-09-05 17:12:55 -07006889 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006890 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6891
6892 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6893 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006894 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006895 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6896 }
6897
Jeff Johnsone7245742012-09-05 17:12:55 -07006898 wpalMemoryCopy( pSendBuffer+usDataOffset,
6899 &halInitScanConReqMsg.initScanParams,
6900 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006901 }
6902 else
6903 {
6904 /*-----------------------------------------------------------------------
6905 Get message buffer
6906 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006907 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006908 sizeof(halInitScanReqMsg.initScanParams),
6909 &pSendBuffer, &usDataOffset, &usSendSize))||
6910 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6911 {
6912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6913 "Unable to get send buffer in init scan req %x %x %x",
6914 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006916 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006917 }
6918
6919
6920 /*-----------------------------------------------------------------------
6921 Fill in the message
6922 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006923 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006924 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6925
6926 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6927 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6928
Jeff Johnsone7245742012-09-05 17:12:55 -07006929 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006930 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006931 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006932 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006933 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006934 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6935
6936 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6937 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6938
Jeff Johnsone7245742012-09-05 17:12:55 -07006939 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006940 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6941
6942 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6943 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006944 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006945 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6946 }
6947
Jeff Johnsone7245742012-09-05 17:12:55 -07006948 wpalMemoryCopy( pSendBuffer+usDataOffset,
6949 &halInitScanReqMsg.initScanParams,
6950 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006951 }
6952
6953 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006954 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006955
6956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006957 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006958 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006959 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006960 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
6961
6962}/*WDI_ProcessInitScanReq*/
6963
6964/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006965 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006966 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006967
6968 @param pWDICtx: pointer to the WLAN DAL context
6969 pEventData: pointer to the event information structure
6970
Jeff Johnson295189b2012-06-20 16:38:30 -07006971 @see
6972 @return Result of the function call
6973*/
6974WDI_Status
6975WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006976(
Jeff Johnson295189b2012-06-20 16:38:30 -07006977 WDI_ControlBlockType* pWDICtx,
6978 WDI_EventInfoType* pEventData
6979)
6980{
6981 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
6982 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006983 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006984 wpt_uint16 usDataOffset = 0;
6985 wpt_uint16 usSendSize = 0;
6986
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6989
6990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006991 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006992 -------------------------------------------------------------------------*/
6993 if (( NULL == pEventData ) ||
6994 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
6995 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
6996 {
6997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006998 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006999 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007000 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007001 }
7002
7003#if 0
7004 wpalMutexAcquire(&pWDICtx->wptMutex);
7005 /*-----------------------------------------------------------------------
7006 Check to see if SCAN is already in progress - start scan is only
7007 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007008 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007009 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007010 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007011 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7012 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7013 {
7014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7015 "Scan start not allowed in this state %d %d",
7016 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007017
Jeff Johnson295189b2012-06-20 16:38:30 -07007018 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007020 }
7021
Jeff Johnsone7245742012-09-05 17:12:55 -07007022 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007023
7024 wpalMutexRelease(&pWDICtx->wptMutex);
7025#endif
7026
7027 /*-----------------------------------------------------------------------
7028 Get message buffer
7029 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007031 sizeof(halStartScanReqMsg.startScanParams),
7032 &pSendBuffer, &usDataOffset, &usSendSize))||
7033 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7034 {
7035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7036 "Unable to get send buffer in start scan req %x %x %x",
7037 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7038 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007039 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007040 }
7041
Jeff Johnsone7245742012-09-05 17:12:55 -07007042 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007043 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007044 wpalMemoryCopy( pSendBuffer+usDataOffset,
7045 &halStartScanReqMsg.startScanParams,
7046 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007047
7048 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007049 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007050
7051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007052 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007054 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007055 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7056}/*WDI_ProcessStartScanReq*/
7057
7058
7059/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007060 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007061 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007062
7063 @param pWDICtx: pointer to the WLAN DAL context
7064 pEventData: pointer to the event information structure
7065
Jeff Johnson295189b2012-06-20 16:38:30 -07007066 @see
7067 @return Result of the function call
7068*/
7069WDI_Status
7070WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007071(
Jeff Johnson295189b2012-06-20 16:38:30 -07007072 WDI_ControlBlockType* pWDICtx,
7073 WDI_EventInfoType* pEventData
7074)
7075{
7076 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7077 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007078 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007079 wpt_uint16 usDataOffset = 0;
7080 wpt_uint16 usSendSize = 0;
7081
Jeff Johnsone7245742012-09-05 17:12:55 -07007082 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7084
7085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007087 -------------------------------------------------------------------------*/
7088 if (( NULL == pEventData ) ||
7089 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7090 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7091 {
7092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007096 }
7097
Jeff Johnsone7245742012-09-05 17:12:55 -07007098 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7099 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007100 * forwarded to HAL and result in hang*/
7101#if 0
7102 wpalMutexAcquire(&pWDICtx->wptMutex);
7103 /*-----------------------------------------------------------------------
7104 Check to see if SCAN is already in progress - end scan is only
7105 allowed when a scan is ongoing and the state of the scan procedure
7106 is started
7107 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007108 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007109 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7110 {
7111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7112 "End start not allowed in this state %d %d",
7113 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007114
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007116 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007117 }
7118
Jeff Johnsone7245742012-09-05 17:12:55 -07007119 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007120
7121 wpalMutexRelease(&pWDICtx->wptMutex);
7122#endif
7123
7124 /*-----------------------------------------------------------------------
7125 Get message buffer
7126 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007127 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007128 sizeof(halEndScanReqMsg.endScanParams),
7129 &pSendBuffer, &usDataOffset, &usSendSize))||
7130 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7131 {
7132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7133 "Unable to get send buffer in start scan req %x %x %x",
7134 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7135 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007136 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007137 }
7138
7139 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7140
Jeff Johnsone7245742012-09-05 17:12:55 -07007141 wpalMemoryCopy( pSendBuffer+usDataOffset,
7142 &halEndScanReqMsg.endScanParams,
7143 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007144
7145 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007146 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007147
7148 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007149 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007150 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007151 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007152 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7153}/*WDI_ProcessEndScanReq*/
7154
7155
7156/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007157 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007159
7160 @param pWDICtx: pointer to the WLAN DAL context
7161 pEventData: pointer to the event information structure
7162
Jeff Johnson295189b2012-06-20 16:38:30 -07007163 @see
7164 @return Result of the function call
7165*/
7166WDI_Status
7167WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007168(
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 WDI_ControlBlockType* pWDICtx,
7170 WDI_EventInfoType* pEventData
7171)
7172{
7173 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7174 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007175 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007176 wpt_uint16 usDataOffset = 0;
7177 wpt_uint16 usSendSize = 0;
7178 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007179 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007180 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7182
7183 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007184 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007185 -------------------------------------------------------------------------*/
7186 if (( NULL == pEventData ) ||
7187 ( NULL == pEventData->pEventData) ||
7188 ( NULL == pEventData->pCBfnc))
7189 {
7190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007191 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007194 }
7195
7196 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7197 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007198 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7199 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 * forwarded to HAL and result in hang*/
7201#if 0
7202 wpalMutexAcquire(&pWDICtx->wptMutex);
7203 /*-----------------------------------------------------------------------
7204 Check to see if SCAN is already in progress
7205 Finish scan gets invoked any scan states. ie. abort scan
7206 It should be allowed in any states.
7207 -----------------------------------------------------------------------*/
7208 if ( !pWDICtx->bScanInProgress )
7209 {
7210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7211 "Finish start not allowed in this state %d",
7212 pWDICtx->bScanInProgress );
7213
7214 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007215 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007216 }
7217
7218 /*-----------------------------------------------------------------------
7219 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007220 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007222 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7223 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 wpalMutexRelease(&pWDICtx->wptMutex);
7225#endif
7226
7227 if ( pWDICtx->bInBmps )
7228 {
7229 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007230 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7231 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7232 {
7233 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7234 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7235 WDI_ASSERT(0);
7236 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007237 }
7238
7239 /*-----------------------------------------------------------------------
7240 Get message buffer
7241 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007242 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007243 sizeof(halFinishScanReqMsg.finishScanParams),
7244 &pSendBuffer, &usDataOffset, &usSendSize))||
7245 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7246 {
7247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7248 "Unable to get send buffer in start scan req %x %x %x",
7249 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007252 }
7253
Jeff Johnsone7245742012-09-05 17:12:55 -07007254 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007255 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7256
Jeff Johnsone7245742012-09-05 17:12:55 -07007257 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7259
Jeff Johnsone7245742012-09-05 17:12:55 -07007260 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007261 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7262
7263 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7264 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7265
Jeff Johnsone7245742012-09-05 17:12:55 -07007266 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007267 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007268 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007269 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007270 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007271 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7272
Jeff Johnsone7245742012-09-05 17:12:55 -07007273 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7275
7276 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7277 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007278 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007279 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7280 }
7281
7282 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7283 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7284
Jeff Johnsone7245742012-09-05 17:12:55 -07007285 wpalMemoryCopy( pSendBuffer+usDataOffset,
7286 &halFinishScanReqMsg.finishScanParams,
7287 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007288
7289 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007290 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007291
7292 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007293 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007294 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007295 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007296 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7297}/*WDI_ProcessFinishScanReq*/
7298
7299
7300/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007301 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007302==========================================================================*/
7303/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007304 @brief Process BSS Join for a given Session
7305
7306 @param pWDICtx: pointer to the WLAN DAL context
7307 pEventData: pointer to the event information structure
7308
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 @see
7310 @return Result of the function call
7311*/
7312WDI_Status
7313WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007314(
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 WDI_ControlBlockType* pWDICtx,
7316 WDI_JoinReqParamsType* pwdiJoinParams,
7317 WDI_JoinRspCb wdiJoinRspCb,
7318 void* pUserData
7319)
7320{
7321 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007323 wpt_uint16 usDataOffset = 0;
7324 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007325 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007326
Jeff Johnsone7245742012-09-05 17:12:55 -07007327 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7329
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007330 wpalMutexAcquire(&pWDICtx->wptMutex);
7331
Jeff Johnson295189b2012-06-20 16:38:30 -07007332 /*------------------------------------------------------------------------
7333 Check to see if we have any session with this BSSID already stored, we
7334 should not
7335 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007336 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7337 pwdiJoinParams->wdiReqInfo.macBSSID,
7338 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007339
7340 if ( NULL != pBSSSes )
7341 {
7342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007343 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7344 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007345
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007346 /*reset the bAssociationInProgress otherwise the next
7347 *join request will be queued*/
7348 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7349 wpalMutexRelease(&pWDICtx->wptMutex);
7350 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 }
7352
Jeff Johnson295189b2012-06-20 16:38:30 -07007353 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007354 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007355 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007356 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 if ( NULL == pBSSSes )
7358 {
7359
7360 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7361 "DAL has no free sessions - cannot run another join");
7362
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007363 /*reset the bAssociationInProgress otherwise the next
7364 *join request will be queued*/
7365 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007366 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007367 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007368 }
7369
7370 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007371 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7372 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007373 WDI_MAC_ADDR_LEN);
7374
7375 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007378
Jeff Johnson295189b2012-06-20 16:38:30 -07007379 wpalMutexRelease(&pWDICtx->wptMutex);
7380
7381 /*-----------------------------------------------------------------------
7382 Get message buffer
7383 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007385 sizeof(halJoinReqMsg.joinReqParams),
7386 &pSendBuffer, &usDataOffset, &usSendSize))||
7387 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7388 {
7389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7390 "Unable to get send buffer in join req %x %x %x",
7391 pUserData, pwdiJoinParams, wdiJoinRspCb);
7392 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007393 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007394 }
7395
7396 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007397 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007398
7399 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007400 pwdiJoinParams->wdiReqInfo.macSTASelf,
7401 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007402
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7405
7406 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7407
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007408#ifdef WLAN_FEATURE_VOWIFI
7409 halJoinReqMsg.joinReqParams.maxTxPower =
7410 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7411#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007412 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007413 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7414#endif
7415
Jeff Johnsone7245742012-09-05 17:12:55 -07007416 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007417 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7418 wdiSecondaryChannelOffset);
7419
Jeff Johnsone7245742012-09-05 17:12:55 -07007420 wpalMemoryCopy( pSendBuffer+usDataOffset,
7421 &halJoinReqMsg.joinReqParams,
7422 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007423
7424 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007426
7427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007428 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7431 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007432
7433}/*WDI_ProcessBSSSessionJoinReq*/
7434
7435/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007436 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007437 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007438
7439 @param pWDICtx: pointer to the WLAN DAL context
7440 pEventData: pointer to the event information structure
7441
Jeff Johnson295189b2012-06-20 16:38:30 -07007442 @see
7443 @return Result of the function call
7444*/
7445WDI_Status
7446WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007447(
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 WDI_ControlBlockType* pWDICtx,
7449 WDI_EventInfoType* pEventData
7450)
7451{
7452 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7453 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7454 WDI_JoinRspCb wdiJoinRspCb = NULL;
7455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7456
7457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 -------------------------------------------------------------------------*/
7460 if (( NULL == pEventData ) ||
7461 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7462 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7463 {
7464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007468 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007469
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 /*-------------------------------------------------------------------------
7471 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007472 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007473 -------------------------------------------------------------------------*/
7474 wpalMutexAcquire(&pWDICtx->wptMutex);
7475
7476 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7477 {
7478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7479 "Association is currently in progress, queueing new join req");
7480
7481 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 pwdiJoinParams->wdiReqInfo.macBSSID);
7484
7485 wpalMutexRelease(&pWDICtx->wptMutex);
7486
Jeff Johnsone7245742012-09-05 17:12:55 -07007487 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007488 }
7489
7490 /*Starting a new association */
7491 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7492 wpalMutexRelease(&pWDICtx->wptMutex);
7493
7494 /*Process the Join Request*/
7495 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7496 wdiJoinRspCb,pEventData->pUserData);
7497
7498}/*WDI_ProcessJoinReq*/
7499
7500
7501/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007504
7505 @param pWDICtx: pointer to the WLAN DAL context
7506 pEventData: pointer to the event information structure
7507
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 @see
7509 @return Result of the function call
7510*/
7511WDI_Status
7512WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007513(
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 WDI_ControlBlockType* pWDICtx,
7515 WDI_EventInfoType* pEventData
7516)
7517{
7518 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7519 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007520 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007521 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 wpt_uint16 uMsgSize = 0;
7523 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007524 wpt_uint16 usDataOffset = 0;
7525 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007526 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007527
Jeff Johnsone7245742012-09-05 17:12:55 -07007528 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7530
7531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007533 -------------------------------------------------------------------------*/
7534 if (( NULL == pEventData ) ||
7535 ( NULL == pEventData->pEventData ) ||
7536 ( NULL == pEventData->pCBfnc ))
7537 {
7538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 }
7543
7544 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7545 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7546 /*-------------------------------------------------------------------------
7547 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007548 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007549 -------------------------------------------------------------------------*/
7550 wpalMutexAcquire(&pWDICtx->wptMutex);
7551
7552 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007553 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007554 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007555 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7556 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7557 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007558
Jeff Johnsone7245742012-09-05 17:12:55 -07007559 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007560 {
7561#ifdef WLAN_FEATURE_VOWIFI_11R
7562 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007563 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007564 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007565 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007566 if ( NULL == pBSSSes )
7567 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007568
Jeff Johnson295189b2012-06-20 16:38:30 -07007569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7570 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007571
Jeff Johnson295189b2012-06-20 16:38:30 -07007572 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007573 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007574 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007575
Jeff Johnson295189b2012-06-20 16:38:30 -07007576 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007577 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7578 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007579 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007580
Jeff Johnson295189b2012-06-20 16:38:30 -07007581 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007582 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007583 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7584#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007586 * Request in case of IBSS*/
7587 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7588 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7589 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7590 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7591 {
7592 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 if ( NULL == pBSSSes )
7597 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007598
Jeff Johnson295189b2012-06-20 16:38:30 -07007599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7600 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007601
Jeff Johnson295189b2012-06-20 16:38:30 -07007602 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007604 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007605
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007607 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7608 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007609 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007610
Jeff Johnson295189b2012-06-20 16:38:30 -07007611 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007612 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007613 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7614 }
7615 else
7616 {
7617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007618 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7619 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7620 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7621
Jeff Johnson295189b2012-06-20 16:38:30 -07007622 /* for IBSS testing */
7623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007624 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007625 }
7626#endif
7627 }
7628
7629 /*------------------------------------------------------------------------
7630 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007631 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007632 ------------------------------------------------------------------------*/
7633 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7634 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7636 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7637 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7638 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007639
Jeff Johnsone7245742012-09-05 17:12:55 -07007640 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007641
7642 wpalMutexRelease(&pWDICtx->wptMutex);
7643
Jeff Johnsone7245742012-09-05 17:12:55 -07007644 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007645 }
7646
7647 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007648 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7649 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 sizeof(pWDICtx->wdiCachedConfigBssReq));
7651
7652 wpalMutexRelease(&pWDICtx->wptMutex);
7653
Jeff Johnsone7245742012-09-05 17:12:55 -07007654 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7655#ifdef WLAN_FEATURE_11AC
7656 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007657 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007658 else
7659#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007660 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007661
7662 /*-----------------------------------------------------------------------
7663 Get message buffer
7664 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007666 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7667 ( usSendSize < (usDataOffset + uMsgSize )))
7668 {
7669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7670 "Unable to get send buffer in config bss req %x %x %x",
7671 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007674 }
7675
7676 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007677#ifdef WLAN_FEATURE_11AC
7678 if (WDI_getFwWlanFeatCaps(DOT11AC))
7679 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7680 &pwdiConfigBSSParams->wdiReqInfo);
7681 else
7682#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007683 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007684 &pwdiConfigBSSParams->wdiReqInfo);
7685
7686 /* Need to fill in the STA Index to invalid, since at this point we have not
7687 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007688 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007689
7690 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7692
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007693#ifdef WLAN_FEATURE_11AC
7694 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7695 wpalMemoryCopy( pSendBuffer+usDataOffset,
7696 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7697 uMsgSize);
7698 }else
7699#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007700 {
7701 if ( uMsgSize <= sizeof(tConfigBssParams) )
7702 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07007703 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007704 &halConfigBssReqMsg.uBssParams.configBssParams,
7705 uMsgSize);
7706 }
7707 else
7708 {
7709 return WDI_STATUS_E_FAILURE;
7710 }
7711 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007712
7713 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007714 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007715
7716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7720 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007721 WDI_CONFIG_BSS_RESP);
7722
7723}/*WDI_ProcessConfigBSSReq*/
7724
7725
7726/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007727 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007728 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007729
7730 @param pWDICtx: pointer to the WLAN DAL context
7731 pEventData: pointer to the event information structure
7732
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 @see
7734 @return Result of the function call
7735*/
7736WDI_Status
7737WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007738(
Jeff Johnson295189b2012-06-20 16:38:30 -07007739 WDI_ControlBlockType* pWDICtx,
7740 WDI_EventInfoType* pEventData
7741)
7742{
7743 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7744 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007746 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007747 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007748 wpt_uint16 usDataOffset = 0;
7749 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007750 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007751
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7754
7755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 -------------------------------------------------------------------------*/
7758 if (( NULL == pEventData ) ||
7759 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7760 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7761 {
7762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007763 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007764 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007765 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007766 }
7767
7768 /*-------------------------------------------------------------------------
7769 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007770 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007771 -------------------------------------------------------------------------*/
7772 wpalMutexAcquire(&pWDICtx->wptMutex);
7773
7774 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007775 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007777 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7778 pwdiDelBSSParams->ucBssIdx,
7779 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007780
Jeff Johnsone7245742012-09-05 17:12:55 -07007781 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007782 {
7783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007784 "%s: BSS does not yet exist. ucBssIdx %d",
7785 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007786
7787 wpalMutexRelease(&pWDICtx->wptMutex);
7788
7789 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007790 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007791
7792 /*------------------------------------------------------------------------
7793 Check if this BSS is being currently processed or queued,
7794 if queued - queue the new request as well
7795 ------------------------------------------------------------------------*/
7796 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007797 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7799 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7800 __func__, pwdiDelBSSParams->ucBssIdx);
7801
7802 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7803
7804 wpalMutexRelease(&pWDICtx->wptMutex);
7805
7806 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007808
Jeff Johnson295189b2012-06-20 16:38:30 -07007809 /*-----------------------------------------------------------------------
7810 If we receive a Del BSS request for an association that is already in
7811 progress, it indicates that the assoc has failed => we no longer have
7812 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007813 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007814 -----------------------------------------------------------------------*/
7815 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7816 {
7817 /*We can switch to false here because even if a subsequent Join comes in
7818 it will only be processed when DAL transitions out of BUSY state which
7819 happens when the Del BSS request comes */
7820 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7821
7822 /*Former association is complete - prepare next pending assoc for
7823 processing */
7824 WDI_DequeueAssocRequest(pWDICtx);
7825 }
7826
7827 wpalMutexRelease(&pWDICtx->wptMutex);
7828 /*-----------------------------------------------------------------------
7829 Get message buffer
7830 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007832 sizeof(halBssReqMsg.deleteBssParams),
7833 &pSendBuffer, &usDataOffset, &usSendSize))||
7834 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7835 {
7836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7837 "Unable to get send buffer in start req %x %x %x",
7838 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7839 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007840 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 }
7842
7843 /*Fill in the message request structure*/
7844
7845 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007846 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007847
Jeff Johnsone7245742012-09-05 17:12:55 -07007848 wpalMemoryCopy( pSendBuffer+usDataOffset,
7849 &halBssReqMsg.deleteBssParams,
7850 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007851
7852 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007853 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007854
Jeff Johnsone7245742012-09-05 17:12:55 -07007855
Jeff Johnson295189b2012-06-20 16:38:30 -07007856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007857 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007858 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007859 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7861
Jeff Johnsone7245742012-09-05 17:12:55 -07007862
Jeff Johnson295189b2012-06-20 16:38:30 -07007863}/*WDI_ProcessDelBSSReq*/
7864
7865/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007866 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007867 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007868
7869 @param pWDICtx: pointer to the WLAN DAL context
7870 pEventData: pointer to the event information structure
7871
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 @see
7873 @return Result of the function call
7874*/
7875WDI_Status
7876WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007877(
Jeff Johnson295189b2012-06-20 16:38:30 -07007878 WDI_ControlBlockType* pWDICtx,
7879 WDI_EventInfoType* pEventData
7880)
7881{
7882 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7883 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007884 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007885 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007886 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007887 wpt_uint16 usDataOffset = 0;
7888 wpt_uint16 usSendSize = 0;
7889 wpt_uint16 uMsgSize = 0;
7890 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007891 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007892
Jeff Johnsone7245742012-09-05 17:12:55 -07007893 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7895
7896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007897 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007898 -------------------------------------------------------------------------*/
7899 if (( NULL == pEventData ) ||
7900 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7901 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7902 {
7903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007907 }
7908
7909 /*-------------------------------------------------------------------------
7910 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007911 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007912 -------------------------------------------------------------------------*/
7913 wpalMutexAcquire(&pWDICtx->wptMutex);
7914
7915 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007916 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007917 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007918 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7919 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7920 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007921
7922 if ( NULL == pBSSSes )
7923 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7925 "%s: Association sequence for this BSS does not yet exist - "
7926 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7927 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007928
7929 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007930 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007931 }
7932
7933 /*------------------------------------------------------------------------
7934 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007935 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007936 ------------------------------------------------------------------------*/
7937 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7938 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7940 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7941 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007942
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007944
7945 wpalMutexRelease(&pWDICtx->wptMutex);
7946
Jeff Johnsone7245742012-09-05 17:12:55 -07007947 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007948 }
7949
7950 /*-----------------------------------------------------------------------
7951 If Post Assoc was not yet received - the current association must
7952 be in progress
7953 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007954 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7956 {
7957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7958 "Association sequence for this BSS association no longer in "
7959 "progress - not allowed");
7960
7961 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007962 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007963 }
7964
7965 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007966 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007967 -----------------------------------------------------------------------*/
7968 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7969 {
7970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7971 "Post Assoc not allowed before JOIN - failing request");
7972
7973 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007974 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007975 }
7976
7977 wpalMutexRelease(&pWDICtx->wptMutex);
7978
7979 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7980 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7981 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007982 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007983 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7986 ( usSendSize < (usDataOffset + uMsgSize )))
7987 {
7988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7989 "Unable to get send buffer in start req %x %x %x",
7990 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7991 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007992 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 }
7994
7995 /*Copy the STA parameters */
7996 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7997 &pwdiPostAssocParams->wdiSTAParams );
7998
7999 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008000 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008001 WDI_STATableFindStaidByAddr(pWDICtx,
8002 pwdiPostAssocParams->wdiSTAParams.macSTA,
8003 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
8004 {
8005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8006 "This station does not exist in the WDI Station Table %d");
8007 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008008 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008010 }
8011
8012 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008013 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008014 pBSSSes->ucBSSIdx;
8015
8016 /*Copy the BSS parameters */
8017 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8018 &pwdiPostAssocParams->wdiBSSParams);
8019
8020 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 WDI_STATableFindStaidByAddr(pWDICtx,
8023 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008024 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008025 {
8026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8027 "This station does not exist in the WDI Station Table %d");
8028 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008029 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008031 }
8032
8033 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008035 pBSSSes->ucBSSIdx;
8036
Jeff Johnsone7245742012-09-05 17:12:55 -07008037
8038 wpalMemoryCopy( pSendBuffer+usDataOffset,
8039 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8040 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008041
8042 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8043
Jeff Johnsone7245742012-09-05 17:12:55 -07008044 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8045 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8046 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008047
Jeff Johnsone7245742012-09-05 17:12:55 -07008048
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008050 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008051
Jeff Johnsone7245742012-09-05 17:12:55 -07008052
8053 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008056
8057 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8062
Jeff Johnsone7245742012-09-05 17:12:55 -07008063
Jeff Johnson295189b2012-06-20 16:38:30 -07008064}/*WDI_ProcessPostAssocReq*/
8065
8066/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008067 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008069
8070 @param pWDICtx: pointer to the WLAN DAL context
8071 pEventData: pointer to the event information structure
8072
Jeff Johnson295189b2012-06-20 16:38:30 -07008073 @see
8074 @return Result of the function call
8075*/
8076WDI_Status
8077WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008078(
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 WDI_ControlBlockType* pWDICtx,
8080 WDI_EventInfoType* pEventData
8081)
8082{
8083 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8084 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008085 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008086 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008087 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008088 wpt_uint16 usDataOffset = 0;
8089 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8092
Jeff Johnsone7245742012-09-05 17:12:55 -07008093 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8095
8096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008097 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008098 -------------------------------------------------------------------------*/
8099 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8100 ( NULL == pEventData->pCBfnc ))
8101 {
8102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008103 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008106 }
8107
8108 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8109 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8110 /*-------------------------------------------------------------------------
8111 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008112 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008113 -------------------------------------------------------------------------*/
8114 wpalMutexAcquire(&pWDICtx->wptMutex);
8115
8116 /*------------------------------------------------------------------------
8117 Find the BSS for which the request is made and identify WDI session
8118 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8120 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008121 &macBSSID))
8122 {
8123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8124 "This station does not exist in the WDI Station Table %d");
8125 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 }
8128
Jeff Johnsone7245742012-09-05 17:12:55 -07008129 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8130 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008131 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8133 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8134 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008135
8136 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008137 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008138 }
8139
8140 /*------------------------------------------------------------------------
8141 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008142 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008143 ------------------------------------------------------------------------*/
8144 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8145 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8147 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8148 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008149
Jeff Johnsone7245742012-09-05 17:12:55 -07008150 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008151 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008152 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 }
8154
8155 wpalMutexRelease(&pWDICtx->wptMutex);
8156 /*-----------------------------------------------------------------------
8157 Get message buffer
8158 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 sizeof(halDelStaReqMsg.delStaParams),
8161 &pSendBuffer, &usDataOffset, &usSendSize))||
8162 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8163 {
8164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8165 "Unable to get send buffer in start req %x %x %x",
8166 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 }
8170
Jeff Johnsone7245742012-09-05 17:12:55 -07008171 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8172 wpalMemoryCopy( pSendBuffer+usDataOffset,
8173 &halDelStaReqMsg.delStaParams,
8174 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008175
8176 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008177 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008178
8179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008182 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8184
8185}/*WDI_ProcessDelSTAReq*/
8186
8187
8188/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008189 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008190==========================================================================*/
8191/**
8192 @brief Process Set BSS Key Request function (called when Main FSM
8193 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008194
8195 @param pWDICtx: pointer to the WLAN DAL context
8196 pEventData: pointer to the event information structure
8197
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 @see
8199 @return Result of the function call
8200*/
8201WDI_Status
8202WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008203(
Jeff Johnson295189b2012-06-20 16:38:30 -07008204 WDI_ControlBlockType* pWDICtx,
8205 WDI_EventInfoType* pEventData
8206)
8207{
8208 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8209 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008210 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008211 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008212 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008213 wpt_uint16 usDataOffset = 0;
8214 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008215 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008216 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8217 wpt_uint8 keyIndex = 0;
8218
8219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8220
8221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 -------------------------------------------------------------------------*/
8224 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8225 ( NULL == pEventData->pCBfnc ))
8226 {
8227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008228 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008231 }
8232
8233 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8234 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8235 /*-------------------------------------------------------------------------
8236 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008237 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008238 -------------------------------------------------------------------------*/
8239 wpalMutexAcquire(&pWDICtx->wptMutex);
8240
8241 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008243 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8245 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8246 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008247
Jeff Johnsone7245742012-09-05 17:12:55 -07008248 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 {
8250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008251 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8252 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008253
8254 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008255 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008256 }
8257
8258 /*------------------------------------------------------------------------
8259 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008260 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008261 ------------------------------------------------------------------------*/
8262 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8263 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8265 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8266 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008267
Jeff Johnsone7245742012-09-05 17:12:55 -07008268 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008269 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008270 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008271 }
8272
8273
8274 wpalMutexRelease(&pWDICtx->wptMutex);
8275 /*-----------------------------------------------------------------------
8276 Get message buffer
8277 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8280 &pSendBuffer, &usDataOffset, &usSendSize))||
8281 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8282 {
8283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8284 "Unable to get send buffer in set bss key req %x %x %x",
8285 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 }
8289
8290 /*-----------------------------------------------------------------------
8291 Copy the Key parameters into the HAL message
8292 -----------------------------------------------------------------------*/
8293
Jeff Johnsone7245742012-09-05 17:12:55 -07008294 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008295
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8298
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8301
8302 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8303 keyIndex++)
8304 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008305 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008306 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8307 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8308 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8309 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8310 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8311 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008312 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008313 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008314 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8318 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 WDI_MAX_KEY_LENGTH);
8321 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008322
8323 wpalMemoryCopy( pSendBuffer+usDataOffset,
8324 &halSetBssKeyReqMsg.setBssKeyParams,
8325 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008326
8327 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008329
8330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008332 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008333 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8334 wdiSetBSSKeyRspCb, pEventData->pUserData,
8335 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008336
8337}/*WDI_ProcessSetBssKeyReq*/
8338
8339/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008340 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008342
8343 @param pWDICtx: pointer to the WLAN DAL context
8344 pEventData: pointer to the event information structure
8345
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 @see
8347 @return Result of the function call
8348*/
8349WDI_Status
8350WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008351(
Jeff Johnson295189b2012-06-20 16:38:30 -07008352 WDI_ControlBlockType* pWDICtx,
8353 WDI_EventInfoType* pEventData
8354)
8355{
8356 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8357 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008358 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008359 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 wpt_uint16 usDataOffset = 0;
8362 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008363 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008364 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8366
8367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008368 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008369 -------------------------------------------------------------------------*/
8370 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8371 ( NULL == pEventData->pCBfnc ))
8372 {
8373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 }
8378
8379 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8380 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8381 /*-------------------------------------------------------------------------
8382 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008383 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 -------------------------------------------------------------------------*/
8385 wpalMutexAcquire(&pWDICtx->wptMutex);
8386
8387 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008388 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008389 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8391 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8392 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008393
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 {
8396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8398 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008399
8400 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 }
8403
8404 /*------------------------------------------------------------------------
8405 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008406 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008407 ------------------------------------------------------------------------*/
8408 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8409 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8411 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8412 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008413
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008416 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008417 }
8418
8419
8420 wpalMutexRelease(&pWDICtx->wptMutex);
8421
8422 /*-----------------------------------------------------------------------
8423 Get message buffer
8424 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8427 &pSendBuffer, &usDataOffset, &usSendSize))||
8428 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8429 {
8430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8431 "Unable to get send buffer in set bss key req %x %x %x",
8432 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8433 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 }
8436 /*-----------------------------------------------------------------------
8437 Copy the Key parameters into the HAL message
8438 -----------------------------------------------------------------------*/
8439 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8440
Jeff Johnsone7245742012-09-05 17:12:55 -07008441 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8443
8444 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8445
Jeff Johnsone7245742012-09-05 17:12:55 -07008446 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008447 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8448
Jeff Johnsone7245742012-09-05 17:12:55 -07008449 wpalMemoryCopy( pSendBuffer+usDataOffset,
8450 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8451 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008452
8453 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008455
8456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008457 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008458 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008459 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008460 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008462}/*WDI_ProcessRemoveBssKeyReq*/
8463
8464/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008465 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008466 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008467
8468 @param pWDICtx: pointer to the WLAN DAL context
8469 pEventData: pointer to the event information structure
8470
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 @see
8472 @return Result of the function call
8473*/
8474WDI_Status
8475WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008476(
Jeff Johnson295189b2012-06-20 16:38:30 -07008477 WDI_ControlBlockType* pWDICtx,
8478 WDI_EventInfoType* pEventData
8479)
8480{
8481 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8482 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8483 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 wpt_uint16 usDataOffset = 0;
8486 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008488 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008490 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8491 wpt_uint8 keyIndex = 0;
8492
8493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8494
8495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008497 -------------------------------------------------------------------------*/
8498 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8499 ( NULL == pEventData->pCBfnc ))
8500 {
8501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 }
8506
8507 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8508 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8509 /*-------------------------------------------------------------------------
8510 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 -------------------------------------------------------------------------*/
8513 wpalMutexAcquire(&pWDICtx->wptMutex);
8514
8515 /*------------------------------------------------------------------------
8516 Find the BSS for which the request is made and identify WDI session
8517 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008518 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8519 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 &macBSSID))
8521 {
8522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8523 "This station does not exist in the WDI Station Table %d");
8524 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008526 }
8527
Jeff Johnsone7245742012-09-05 17:12:55 -07008528 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8529 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008530 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8532 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8533 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008534
8535 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008536 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008537 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008538
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 /*------------------------------------------------------------------------
8540 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008542 ------------------------------------------------------------------------*/
8543 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8544 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8546 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8547 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008548
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008552 }
8553
8554
8555 wpalMutexRelease(&pWDICtx->wptMutex);
8556 /*-----------------------------------------------------------------------
8557 Get message buffer
8558 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8561 &pSendBuffer, &usDataOffset, &usSendSize))||
8562 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8563 {
8564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8565 "Unable to get send buffer in set bss key req %x %x %x",
8566 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008569 }
8570 /*-----------------------------------------------------------------------
8571 Copy the STA Key parameters into the HAL message
8572 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8575
Jeff Johnsone7245742012-09-05 17:12:55 -07008576 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008577 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8578
8579 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8580
8581 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8582
8583 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8584
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8586 keyIndex++)
8587 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8590 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8591 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8592 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8593 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8594 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008595 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008596 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008597 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008598 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008600 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8601 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008602 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008603 WDI_MAX_KEY_LENGTH);
8604 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008605
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 wpalMemoryCopy( pSendBuffer+usDataOffset,
8607 &halSetStaKeyReqMsg.setStaKeyParams,
8608 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008609
8610 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008612
8613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8617 wdiSetSTAKeyRspCb, pEventData->pUserData,
8618 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008619
8620}/*WDI_ProcessSetSTAKeyReq*/
8621
8622/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008624 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008625
8626 @param pWDICtx: pointer to the WLAN DAL context
8627 pEventData: pointer to the event information structure
8628
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 @see
8630 @return Result of the function call
8631*/
8632WDI_Status
8633WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008634(
Jeff Johnson295189b2012-06-20 16:38:30 -07008635 WDI_ControlBlockType* pWDICtx,
8636 WDI_EventInfoType* pEventData
8637)
8638{
8639 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8640 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8641 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 wpt_uint16 usDataOffset = 0;
8644 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 wpt_macAddr macBSSID;
8647 wpt_uint8 ucCurrentBSSSesIdx;
8648 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8650
8651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 -------------------------------------------------------------------------*/
8654 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8655 ( NULL == pEventData->pCBfnc ))
8656 {
8657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 }
8662
8663 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8664 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8665 /*-------------------------------------------------------------------------
8666 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008667 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008668 -------------------------------------------------------------------------*/
8669 wpalMutexAcquire(&pWDICtx->wptMutex);
8670
8671 /*------------------------------------------------------------------------
8672 Find the BSS for which the request is made and identify WDI session
8673 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8675 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008676 &macBSSID))
8677 {
8678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8679 "This station does not exist in the WDI Station Table %d");
8680 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008682 }
8683
Jeff Johnsone7245742012-09-05 17:12:55 -07008684 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8685 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8688 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8689 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008690
8691 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008693 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008694
Jeff Johnson295189b2012-06-20 16:38:30 -07008695 /*------------------------------------------------------------------------
8696 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 ------------------------------------------------------------------------*/
8699 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8700 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8702 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8703 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008704
Jeff Johnsone7245742012-09-05 17:12:55 -07008705 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008706 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 }
8709
8710
8711
8712 wpalMutexRelease(&pWDICtx->wptMutex);
8713 /*-----------------------------------------------------------------------
8714 Get message buffer
8715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8718 &pSendBuffer, &usDataOffset, &usSendSize))||
8719 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8720 {
8721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8722 "Unable to get send buffer in set bss key req %x %x %x",
8723 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 }
8727
8728 /*-----------------------------------------------------------------------
8729 Copy the Key parameters into the HAL message
8730 -----------------------------------------------------------------------*/
8731
Jeff Johnsone7245742012-09-05 17:12:55 -07008732 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008733 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8734
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008736 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8737
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8740
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008742 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8743
Jeff Johnsone7245742012-09-05 17:12:55 -07008744 wpalMemoryCopy( pSendBuffer+usDataOffset,
8745 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8746 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008747
8748 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008749 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008750
8751 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008753 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008754 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008755 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008756 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008757
8758}/*WDI_ProcessRemoveSTAKeyReq*/
8759
8760/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008763
8764 @param pWDICtx: pointer to the WLAN DAL context
8765 pEventData: pointer to the event information structure
8766
Jeff Johnson295189b2012-06-20 16:38:30 -07008767 @see
8768 @return Result of the function call
8769*/
8770WDI_Status
8771WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008772(
Jeff Johnson295189b2012-06-20 16:38:30 -07008773 WDI_ControlBlockType* pWDICtx,
8774 WDI_EventInfoType* pEventData
8775)
8776{
8777 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8778 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8779 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008780 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008781 wpt_uint16 usDataOffset = 0;
8782 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008783 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008784 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008785 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008786 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8787 wpt_uint8 keyIndex = 0;
8788
8789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8790
8791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 -------------------------------------------------------------------------*/
8794 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8795 ( NULL == pEventData->pCBfnc ))
8796 {
8797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 }
8802
8803 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8804 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8805 /*-------------------------------------------------------------------------
8806 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 -------------------------------------------------------------------------*/
8809 wpalMutexAcquire(&pWDICtx->wptMutex);
8810
8811 /*------------------------------------------------------------------------
8812 Find the BSS for which the request is made and identify WDI session
8813 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8815 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 &macBSSID))
8817 {
8818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8819 "This station does not exist in the WDI Station Table %d");
8820 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008822 }
8823
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8825 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008826 {
8827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008828 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8829 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008830
8831 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008834
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 /*------------------------------------------------------------------------
8836 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 ------------------------------------------------------------------------*/
8839 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8840 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8842 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8843 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008844
Jeff Johnsone7245742012-09-05 17:12:55 -07008845 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008847 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 }
8849
8850
8851 wpalMutexRelease(&pWDICtx->wptMutex);
8852 /*-----------------------------------------------------------------------
8853 Get message buffer
8854 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008855 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8857 &pSendBuffer, &usDataOffset, &usSendSize))||
8858 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8859 {
8860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8861 "Unable to get send buffer in set bss key req %x %x %x",
8862 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8863 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008865 }
8866 /*-----------------------------------------------------------------------
8867 Copy the STA Key parameters into the HAL message
8868 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008869 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8871
Jeff Johnsone7245742012-09-05 17:12:55 -07008872 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008873 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8874
8875 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8876
8877 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8878
8879 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8880
Jeff Johnson295189b2012-06-20 16:38:30 -07008881 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8882 keyIndex++)
8883 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8886 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8887 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8888 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8889 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8890 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008894 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008896 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8897 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008898 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008899 WDI_MAX_KEY_LENGTH);
8900 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008901
Jeff Johnsone7245742012-09-05 17:12:55 -07008902 wpalMemoryCopy( pSendBuffer+usDataOffset,
8903 &halSetStaKeyReqMsg.setStaKeyParams,
8904 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008905
8906 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008907 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008908
8909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008912 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8913 wdiSetSTAKeyRspCb, pEventData->pUserData,
8914 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008915
8916}/*WDI_ProcessSetSTABcastKeyReq*/
8917
8918/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008921
8922 @param pWDICtx: pointer to the WLAN DAL context
8923 pEventData: pointer to the event information structure
8924
Jeff Johnson295189b2012-06-20 16:38:30 -07008925 @see
8926 @return Result of the function call
8927*/
8928WDI_Status
8929WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008930(
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 WDI_ControlBlockType* pWDICtx,
8932 WDI_EventInfoType* pEventData
8933)
8934{
8935 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8936 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8937 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008938 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 wpt_uint16 usDataOffset = 0;
8940 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008941 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008942 wpt_macAddr macBSSID;
8943 wpt_uint8 ucCurrentBSSSesIdx;
8944 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8946
8947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 -------------------------------------------------------------------------*/
8950 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8951 ( NULL == pEventData->pCBfnc ))
8952 {
8953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 }
8958
8959 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8960 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8961 /*-------------------------------------------------------------------------
8962 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008963 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008964 -------------------------------------------------------------------------*/
8965 wpalMutexAcquire(&pWDICtx->wptMutex);
8966
8967 /*------------------------------------------------------------------------
8968 Find the BSS for which the request is made and identify WDI session
8969 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8971 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008972 &macBSSID))
8973 {
8974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8975 "This station does not exist in the WDI Station Table %d");
8976 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008978 }
8979
Jeff Johnsone7245742012-09-05 17:12:55 -07008980 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8981 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008982 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8984 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8985 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008986
8987 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008990
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 /*------------------------------------------------------------------------
8992 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 ------------------------------------------------------------------------*/
8995 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8996 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8998 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8999 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009000
Jeff Johnsone7245742012-09-05 17:12:55 -07009001 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009003 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009004 }
9005
9006
9007
9008 wpalMutexRelease(&pWDICtx->wptMutex);
9009 /*-----------------------------------------------------------------------
9010 Get message buffer
9011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9014 &pSendBuffer, &usDataOffset, &usSendSize))||
9015 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9016 {
9017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9018 "Unable to get send buffer in set bss key req %x %x %x",
9019 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 }
9023
9024 /*-----------------------------------------------------------------------
9025 Copy the Key parameters into the HAL message
9026 -----------------------------------------------------------------------*/
9027
Jeff Johnsone7245742012-09-05 17:12:55 -07009028 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009029 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9030
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9033
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9036
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9039
Jeff Johnsone7245742012-09-05 17:12:55 -07009040 wpalMemoryCopy( pSendBuffer+usDataOffset,
9041 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9042 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009043
9044 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009046
9047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009052 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009053
9054}/*WDI_ProcessRemoveSTABcastKeyReq*/
9055
9056/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009058==========================================================================*/
9059/**
9060 @brief Process Add TSpec Request function (called when Main FSM
9061 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009062
9063 @param pWDICtx: pointer to the WLAN DAL context
9064 pEventData: pointer to the event information structure
9065
Jeff Johnson295189b2012-06-20 16:38:30 -07009066 @see
9067 @return Result of the function call
9068*/
9069WDI_Status
9070WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009071(
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 WDI_ControlBlockType* pWDICtx,
9073 WDI_EventInfoType* pEventData
9074)
9075{
9076 WDI_AddTSReqParamsType* pwdiAddTSParams;
9077 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 wpt_uint16 usDataOffset = 0;
9082 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009083 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009084 wpt_macAddr macBSSID;
9085 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009086
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9088
9089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009091 -------------------------------------------------------------------------*/
9092 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9093 ( NULL == pEventData->pCBfnc ))
9094 {
9095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009096 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 }
9100
9101 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9102 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9103 /*-------------------------------------------------------------------------
9104 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009105 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009106 -------------------------------------------------------------------------*/
9107 wpalMutexAcquire(&pWDICtx->wptMutex);
9108
9109 /*------------------------------------------------------------------------
9110 Find the BSS for which the request is made and identify WDI session
9111 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9113 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009114 &macBSSID))
9115 {
9116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9117 "This station does not exist in the WDI Station Table %d");
9118 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009119 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 }
9121
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9123 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9126 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9127 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009128
9129 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009130 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009131 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009132
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 /*------------------------------------------------------------------------
9134 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009135 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 ------------------------------------------------------------------------*/
9137 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9138 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9140 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9141 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009142
Jeff Johnsone7245742012-09-05 17:12:55 -07009143 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009144 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009145 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009146 }
9147
9148 wpalMutexRelease(&pWDICtx->wptMutex);
9149 /*-----------------------------------------------------------------------
9150 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9154 sizeof(halAddTsParams),
9155 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009156 &usSendSize))||
9157 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9158 {
9159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9160 "Unable to get send buffer in set bss key req %x %x %x",
9161 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009164 }
9165
9166 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9167 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9168
9169 //TSPEC IE
9170 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9171 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009172 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009173 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009175 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009178 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009179 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009181 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009186 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009187 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009188 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009191 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009192 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009193 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009194 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009195 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009198 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009200 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9202
9203 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009208 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009209 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009210 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009211 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009212 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009214 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009215 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009217 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9218
9219 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009220 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009221 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9224
Jeff Johnsone7245742012-09-05 17:12:55 -07009225 wpalMemoryCopy( pSendBuffer+usDataOffset,
9226 &halAddTsParams,
9227 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009228
9229 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009230 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009231
9232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009233 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009234 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009236 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009237 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009238}/*WDI_ProcessAddTSpecReq*/
9239
9240
9241/**
9242 @brief Process Del TSpec Request function (called when Main FSM
9243 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009244
9245 @param pWDICtx: pointer to the WLAN DAL context
9246 pEventData: pointer to the event information structure
9247
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 @see
9249 @return Result of the function call
9250*/
9251WDI_Status
9252WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009253(
Jeff Johnson295189b2012-06-20 16:38:30 -07009254 WDI_ControlBlockType* pWDICtx,
9255 WDI_EventInfoType* pEventData
9256)
9257{
9258 WDI_DelTSReqParamsType* pwdiDelTSParams;
9259 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 wpt_uint16 usDataOffset = 0;
9264 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009265 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9267
9268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009270 -------------------------------------------------------------------------*/
9271 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9272 ( NULL == pEventData->pCBfnc ))
9273 {
9274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009278 }
9279
9280 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9281 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9282
9283 /*-------------------------------------------------------------------------
9284 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009285 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009286 -------------------------------------------------------------------------*/
9287 wpalMutexAcquire(&pWDICtx->wptMutex);
9288
9289 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009290 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009291 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009292 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9293 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9294 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009295
Jeff Johnsone7245742012-09-05 17:12:55 -07009296 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009297 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9299 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9300 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9301
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009303 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 }
9305
9306 /*------------------------------------------------------------------------
9307 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 ------------------------------------------------------------------------*/
9310 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9311 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9313 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9314 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009315
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009318 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 }
9320
9321
9322 wpalMutexRelease(&pWDICtx->wptMutex);
9323 /*-----------------------------------------------------------------------
9324 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9329 &pSendBuffer, &usDataOffset, &usSendSize))||
9330 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9331 {
9332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9333 "Unable to get send buffer in set bss key req %x %x %x",
9334 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9335 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009337 }
9338
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 wpalMemoryCopy( pSendBuffer+usDataOffset,
9340 &pwdiDelTSParams->wdiDelTSInfo,
9341 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009342
9343 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009344 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009345
9346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009347 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9350 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009351}/*WDI_ProcessDelTSpecReq*/
9352
9353/**
9354 @brief Process Update EDCA Params Request function (called when
9355 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009356
9357 @param pWDICtx: pointer to the WLAN DAL context
9358 pEventData: pointer to the event information structure
9359
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 @see
9361 @return Result of the function call
9362*/
9363WDI_Status
9364WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009365(
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 WDI_ControlBlockType* pWDICtx,
9367 WDI_EventInfoType* pEventData
9368)
9369{
9370 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9371 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 wpt_uint16 usDataOffset = 0;
9376 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9379
9380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 -------------------------------------------------------------------------*/
9383 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9384 ( NULL == pEventData->pCBfnc ))
9385 {
9386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009390 }
9391
9392 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9393 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9394 /*-------------------------------------------------------------------------
9395 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009397 -------------------------------------------------------------------------*/
9398 wpalMutexAcquire(&pWDICtx->wptMutex);
9399
9400 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009403 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9404 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9405 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009406
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 {
9409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009410 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9411 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009412
9413 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009414 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009415 }
9416
9417 /*------------------------------------------------------------------------
9418 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009419 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 ------------------------------------------------------------------------*/
9421 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9422 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9424 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9425 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009426
Jeff Johnsone7245742012-09-05 17:12:55 -07009427 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009429 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009430 }
9431
9432
9433 wpalMutexRelease(&pWDICtx->wptMutex);
9434 /*-----------------------------------------------------------------------
9435 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009436 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009437 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009438 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9440 &pSendBuffer, &usDataOffset, &usSendSize))||
9441 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9442 {
9443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9444 "Unable to get send buffer in set bss key req %x %x %x",
9445 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009448 }
9449
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 wpalMemoryCopy( pSendBuffer+usDataOffset,
9451 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9452 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009453
9454 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009456
9457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9461 wdiUpdateEDCARspCb, pEventData->pUserData,
9462 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009463}/*WDI_ProcessUpdateEDCAParamsReq*/
9464
9465/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009468
9469 @param pWDICtx: pointer to the WLAN DAL context
9470 pEventData: pointer to the event information structure
9471
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 @see
9473 @return Result of the function call
9474*/
9475WDI_Status
9476WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009477(
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 WDI_ControlBlockType* pWDICtx,
9479 WDI_EventInfoType* pEventData
9480)
9481{
9482 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9483 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009484 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009485 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009486 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009487 wpt_uint16 usDataOffset = 0;
9488 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009489 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 wpt_macAddr macBSSID;
9491
9492 tAddBASessionReqMsg halAddBASessionReq;
9493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9494
9495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 -------------------------------------------------------------------------*/
9498 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9499 ( NULL == pEventData->pCBfnc ))
9500 {
9501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 }
9506
Jeff Johnsone7245742012-09-05 17:12:55 -07009507 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009508 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009509 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009510 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9511 /*-------------------------------------------------------------------------
9512 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009513 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009514 -------------------------------------------------------------------------*/
9515 wpalMutexAcquire(&pWDICtx->wptMutex);
9516
9517 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009518 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009519 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9521 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 &macBSSID))
9523 {
9524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9525 "This station does not exist in the WDI Station Table %d");
9526 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009528 }
9529
9530
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009532
Jeff Johnsone7245742012-09-05 17:12:55 -07009533 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009534 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9536 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9537 __func__, MAC_ADDR_ARRAY(macBSSID));
9538
Jeff Johnson295189b2012-06-20 16:38:30 -07009539 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 }
9542
9543 /*------------------------------------------------------------------------
9544 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009545 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 ------------------------------------------------------------------------*/
9547 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9548 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9550 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9551 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009552
Jeff Johnsone7245742012-09-05 17:12:55 -07009553 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009554 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 }
9557
9558
9559 wpalMutexRelease(&pWDICtx->wptMutex);
9560 /*-----------------------------------------------------------------------
9561 Get message buffer
9562 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9564 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 sizeof(halAddBASessionReq.addBASessionParams),
9566 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009568 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9569 {
9570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9571 "Unable to get send buffer in Add BA session req %x %x %x",
9572 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 }
9576
9577 halAddBASessionReq.addBASessionParams.staIdx =
9578 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9579 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9580 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9581 WDI_MAC_ADDR_LEN);
9582 halAddBASessionReq.addBASessionParams.baTID =
9583 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9584 halAddBASessionReq.addBASessionParams.baPolicy =
9585 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9586 halAddBASessionReq.addBASessionParams.baBufferSize =
9587 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9588 halAddBASessionReq.addBASessionParams.baTimeout =
9589 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9590 halAddBASessionReq.addBASessionParams.baSSN =
9591 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9592 halAddBASessionReq.addBASessionParams.baDirection =
9593 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9594
Jeff Johnsone7245742012-09-05 17:12:55 -07009595 wpalMemoryCopy( pSendBuffer+usDataOffset,
9596 &halAddBASessionReq.addBASessionParams,
9597 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009598
9599 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009601
9602 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009604 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009605 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9606 wdiAddBASessionRspCb, pEventData->pUserData,
9607 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009608}/*WDI_ProcessAddBASessionReq*/
9609
9610/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009612 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009613
9614 @param pWDICtx: pointer to the WLAN DAL context
9615 pEventData: pointer to the event information structure
9616
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 @see
9618 @return Result of the function call
9619*/
9620WDI_Status
9621WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009622(
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 WDI_ControlBlockType* pWDICtx,
9624 WDI_EventInfoType* pEventData
9625)
9626{
9627 WDI_DelBAReqParamsType* pwdiDelBAParams;
9628 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009629 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009630 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 wpt_uint16 usDataOffset = 0;
9633 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009634 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 wpt_macAddr macBSSID;
9636 tDelBAParams halDelBAparam;
9637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9638
9639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 -------------------------------------------------------------------------*/
9642 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9643 ( NULL == pEventData->pCBfnc ))
9644 {
9645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009649 }
9650
9651 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9652 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9653 /*-------------------------------------------------------------------------
9654 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009655 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009656 -------------------------------------------------------------------------*/
9657 wpalMutexAcquire(&pWDICtx->wptMutex);
9658
9659 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009662 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9663 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 &macBSSID))
9665 {
9666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9667 "This station does not exist in the WDI Station Table %d");
9668 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 }
9671
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009673
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009675 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9677 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9678 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009679
9680 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009681 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009682 }
9683
9684 /*------------------------------------------------------------------------
9685 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 ------------------------------------------------------------------------*/
9688 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9689 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9691 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9692 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009693
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009697 }
9698
9699 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 sizeof(halDelBAparam),
9702 &pSendBuffer, &usDataOffset, &usSendSize))||
9703 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9704 {
9705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9706 "Unable to get send buffer for DEL BA req %x %x %x",
9707 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 }
9711
9712 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9713 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9714 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9715
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 wpalMemoryCopy( pSendBuffer+usDataOffset,
9717 &halDelBAparam,
9718 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009719
9720 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009722
9723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009725 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9727 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009728}/*WDI_ProcessDelBAReq*/
9729
9730#ifdef FEATURE_WLAN_CCX
9731
9732WDI_Status
9733WDI_ProcessTSMStatsReq
9734(
9735 WDI_ControlBlockType* pWDICtx,
9736 WDI_EventInfoType* pEventData
9737)
9738{
9739 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9740 WDI_TsmRspCb wdiTSMRspCb;
9741 wpt_uint8 ucCurrentBSSSesIdx = 0;
9742 WDI_BSSSessionType* pBSSSes = NULL;
9743 wpt_uint8* pSendBuffer = NULL;
9744 wpt_uint16 usDataOffset = 0;
9745 wpt_uint16 usSendSize = 0;
9746 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9747 tTsmStatsParams halTsmStatsReqParams = {0};
9748
9749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9750
9751 /*-------------------------------------------------------------------------
9752 Sanity check
9753 -------------------------------------------------------------------------*/
9754 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9755 ( NULL == pEventData->pCBfnc ))
9756 {
9757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009759 WDI_ASSERT(0);
9760 return WDI_STATUS_E_FAILURE;
9761 }
9762
9763 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9764 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9765 /*-------------------------------------------------------------------------
9766 Check to see if we are in the middle of an association, if so queue, if
9767 not it means it is free to process request
9768 -------------------------------------------------------------------------*/
9769 wpalMutexAcquire(&pWDICtx->wptMutex);
9770
9771 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9772 if ( NULL == pBSSSes )
9773 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9775 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9776 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009777
9778 wpalMutexRelease(&pWDICtx->wptMutex);
9779 return WDI_STATUS_E_NOT_ALLOWED;
9780 }
9781
9782 /*------------------------------------------------------------------------
9783 Check if this BSS is being currently processed or queued,
9784 if queued - queue the new request as well
9785 ------------------------------------------------------------------------*/
9786 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9787 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9789 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9790 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009791
9792 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9793 wpalMutexRelease(&pWDICtx->wptMutex);
9794 return wdiStatus;
9795 }
9796
9797 wpalMutexRelease(&pWDICtx->wptMutex);
9798 /*-----------------------------------------------------------------------
9799 Get message buffer
9800 ! TO DO : proper conversion into the HAL Message Request Format
9801 -----------------------------------------------------------------------*/
9802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9803 sizeof(halTsmStatsReqParams),
9804 &pSendBuffer, &usDataOffset, &usSendSize))||
9805 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9806 {
9807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9808 "Unable to get send buffer in set bss key req %x %x %x",
9809 pEventData, pwdiTSMParams, wdiTSMRspCb);
9810 WDI_ASSERT(0);
9811 return WDI_STATUS_E_FAILURE;
9812 }
9813
9814 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9815 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9816 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9817 WDI_MAC_ADDR_LEN);
9818 wpalMemoryCopy( pSendBuffer+usDataOffset,
9819 &halTsmStatsReqParams,
9820 sizeof(halTsmStatsReqParams));
9821
9822 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9823 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9824
9825 /*-------------------------------------------------------------------------
9826 Send TSM Stats Request to HAL
9827 -------------------------------------------------------------------------*/
9828 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9829 wdiTSMRspCb, pEventData->pUserData,
9830 WDI_TSM_STATS_RESP);
9831}/*WDI_ProcessTSMStatsReq*/
9832
9833#endif
9834
9835
9836/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009839
9840 @param pWDICtx: pointer to the WLAN DAL context
9841 pEventData: pointer to the event information structure
9842
Jeff Johnson295189b2012-06-20 16:38:30 -07009843 @see
9844 @return Result of the function call
9845*/
9846WDI_Status
9847WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009848(
Jeff Johnson295189b2012-06-20 16:38:30 -07009849 WDI_ControlBlockType* pWDICtx,
9850 WDI_EventInfoType* pEventData
9851)
9852{
9853 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9854 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009855 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009856 wpt_uint16 usDataOffset = 0;
9857 wpt_uint16 usSendSize = 0;
9858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9859
9860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009861 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009862 -------------------------------------------------------------------------*/
9863 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9864 ( NULL == pEventData->pCBfnc ))
9865 {
9866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 }
9871
9872 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9873 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9874 /*-----------------------------------------------------------------------
9875 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009876 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009877 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009878 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009879 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9880 &pSendBuffer, &usDataOffset, &usSendSize))||
9881 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9882 {
9883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9884 "Unable to get send buffer in set bss key req %x %x %x",
9885 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009888 }
9889
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 wpalMemoryCopy( pSendBuffer+usDataOffset,
9891 &pwdiFlushAcParams->wdiFlushAcInfo,
9892 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009893
9894 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009896
9897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009899 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009900 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9901 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009902}/*WDI_ProcessFlushAcReq*/
9903
9904/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009905 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009906 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009907
9908 @param pWDICtx: pointer to the WLAN DAL context
9909 pEventData: pointer to the event information structure
9910
Jeff Johnson295189b2012-06-20 16:38:30 -07009911 @see
9912 @return Result of the function call
9913*/
9914WDI_Status
9915WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009916(
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 WDI_ControlBlockType* pWDICtx,
9918 WDI_EventInfoType* pEventData
9919)
9920{
9921 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9922 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009924 wpt_uint16 usDataOffset = 0;
9925 wpt_uint16 usSendSize = 0;
9926
9927 tBtAmpEventMsg haltBtAmpEventMsg;
9928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9929
9930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 -------------------------------------------------------------------------*/
9933 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9934 ( NULL == pEventData->pCBfnc ))
9935 {
9936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 }
9941
9942 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9943 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9944 /*-----------------------------------------------------------------------
9945 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009946 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009947 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9950 &pSendBuffer, &usDataOffset, &usSendSize))||
9951 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9952 {
9953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9954 "Unable to get send buffer in BT AMP event req %x %x %x",
9955 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 }
9959
Jeff Johnsone7245742012-09-05 17:12:55 -07009960 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009961 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 wpalMemoryCopy( pSendBuffer+usDataOffset,
9963 &haltBtAmpEventMsg.btAmpEventParams,
9964 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009965
9966 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009968
9969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009970 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9973 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009974}/*WDI_ProcessBtAmpEventReq*/
9975
9976/**
9977 @brief Process Add STA self Request function (called when Main FSM
9978 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009979
9980 @param pWDICtx: pointer to the WLAN DAL context
9981 pEventData: pointer to the event information structure
9982
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 @see
9984 @return Result of the function call
9985*/
9986WDI_Status
9987WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009988(
Jeff Johnson295189b2012-06-20 16:38:30 -07009989 WDI_ControlBlockType* pWDICtx,
9990 WDI_EventInfoType* pEventData
9991)
9992{
9993 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9994 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009995 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009996 wpt_uint16 usDataOffset = 0;
9997 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009998 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10000
10001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010002 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010003 -------------------------------------------------------------------------*/
10004 if (( NULL == pEventData ) ||
10005 ( NULL == pEventData->pEventData) ||
10006 ( NULL == pEventData->pCBfnc))
10007 {
10008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010009 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010010 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 }
10013
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010015 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010017 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10018 /*-----------------------------------------------------------------------
10019 Get message buffer
10020 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10022 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 sizeof(tAddStaSelfParams),
10024 &pSendBuffer, &usDataOffset, &usSendSize))||
10025 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
10026 {
10027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10028 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10029 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 }
10033
10034 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010035 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010036 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10037
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
10040
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
10042 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010043
10044 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010046
10047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10051 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10052 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010053}/*WDI_ProcessAddSTASelfReq*/
10054
10055
10056
10057/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010058 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010059 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010060
10061 @param pWDICtx: pointer to the WLAN DAL context
10062 pEventData: pointer to the event information structure
10063
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 @see
10065 @return Result of the function call
10066*/
10067WDI_Status
10068WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010069(
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 WDI_ControlBlockType* pWDICtx,
10071 WDI_EventInfoType* pEventData
10072)
10073{
10074 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10075 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 wpt_uint16 usDataOffset = 0;
10078 wpt_uint16 usSendSize = 0;
10079 tDelStaSelfParams halSetDelSelfSTAParams;
10080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10081
10082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010084 -------------------------------------------------------------------------*/
10085 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10086 ( NULL == pEventData->pCBfnc ))
10087 {
10088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010092 }
10093
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10096 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10097
10098 /*-----------------------------------------------------------------------
10099 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010100 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010101 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010102 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010103 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10104 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010105 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10107 {
10108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10109 "Unable to get send buffer in Del Sta Self req %x %x %x",
10110 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 }
10114
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010116 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10117
Jeff Johnsone7245742012-09-05 17:12:55 -070010118 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10119 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010120
10121 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010122 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010123
10124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010125 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010126 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010127 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10128 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010129 WDI_DEL_STA_SELF_RESP);
10130
10131}
10132
Jeff Johnsone7245742012-09-05 17:12:55 -070010133#ifdef FEATURE_OEM_DATA_SUPPORT
10134/**
10135 @brief Process Start Oem Data Request function (called when Main
10136 FSM allows it)
10137
10138 @param pWDICtx: pointer to the WLAN DAL context
10139 pEventData: pointer to the event information structure
10140
10141 @see
10142 @return Result of the function call
10143*/
10144WDI_Status
10145WDI_ProcessStartOemDataReq
10146(
10147 WDI_ControlBlockType* pWDICtx,
10148 WDI_EventInfoType* pEventData
10149)
10150{
10151 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10152 WDI_oemDataRspCb wdiOemDataRspCb;
10153 wpt_uint8* pSendBuffer = NULL;
10154 wpt_uint16 usDataOffset = 0;
10155 wpt_uint16 usSendSize = 0;
10156 wpt_uint16 reqLen;
10157 tStartOemDataReqParams* halStartOemDataReqParams;
10158
10159 /*-------------------------------------------------------------------------
10160 Sanity check
10161 -------------------------------------------------------------------------*/
10162 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10163 ( NULL == pEventData->pCBfnc ))
10164 {
10165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010166 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010167 WDI_ASSERT(0);
10168 return WDI_STATUS_E_FAILURE;
10169 }
10170
10171 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10172 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10173
10174 /*-----------------------------------------------------------------------
10175 Get message buffer
10176 -----------------------------------------------------------------------*/
10177
10178 reqLen = sizeof(tStartOemDataReqParams);
10179
10180 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10181 WDI_START_OEM_DATA_REQ, reqLen,
10182 &pSendBuffer, &usDataOffset, &usSendSize))||
10183 (usSendSize < (usDataOffset + reqLen)))
10184 {
10185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10186 "Unable to get send buffer in Start Oem Data req %x %x %x",
10187 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10188 WDI_ASSERT(0);
10189 return WDI_STATUS_E_FAILURE;
10190 }
10191
10192 //copying WDI OEM DATA REQ PARAMS to shared memory
10193 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10194
10195 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10196 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10197
10198 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10199 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10200
10201 /*-------------------------------------------------------------------------
10202 Send Start Request to HAL
10203 -------------------------------------------------------------------------*/
10204 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10205 wdiOemDataRspCb, pEventData->pUserData,
10206 WDI_START_OEM_DATA_RESP);
10207}/*WDI_ProcessStartOemDataReq*/
10208#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010209
10210/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010212 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010213
10214 @param pWDICtx: pointer to the WLAN DAL context
10215 pEventData: pointer to the event information structure
10216
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 @see
10218 @return Result of the function call
10219*/
10220WDI_Status
10221WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010222(
Jeff Johnson295189b2012-06-20 16:38:30 -070010223 WDI_ControlBlockType* pWDICtx,
10224 WDI_EventInfoType* pEventData
10225)
10226{
10227 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10228 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010229 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010230 wpt_uint16 usDataOffset = 0;
10231 wpt_uint16 usSendSize = 0;
10232 tHalWlanHostResumeReqParam halResumeReqParams;
10233
10234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10235
10236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010238 -------------------------------------------------------------------------*/
10239 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10240 ( NULL == pEventData->pCBfnc ))
10241 {
10242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010243 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010245 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010246 }
10247
10248 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10249 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10250
10251 /*-----------------------------------------------------------------------
10252 Get message buffer
10253 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10256 &pSendBuffer, &usDataOffset, &usSendSize))||
10257 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10258 {
10259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010260 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010261 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10262 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 }
10265
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010267 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010268
10269 wpalMemoryCopy( pSendBuffer+usDataOffset,
10270 &halResumeReqParams,
10271 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010272
10273 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010274 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010275
10276 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010279 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10280 wdiHostResumeRspCb, pEventData->pUserData,
10281 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010282}/*WDI_ProcessHostResumeReq*/
10283
10284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010287
10288 @param pWDICtx: pointer to the WLAN DAL context
10289 pEventData: pointer to the event information structure
10290
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 @see
10292 @return Result of the function call
10293*/
10294WDI_Status
10295WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010296(
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 WDI_ControlBlockType* pWDICtx,
10298 WDI_EventInfoType* pEventData
10299)
10300{
10301 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10302 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 wpt_uint16 usDataOffset = 0;
10305 wpt_uint16 usSendSize = 0;
10306 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10308
10309 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010310 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 -------------------------------------------------------------------------*/
10312 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10313 ( NULL == pEventData->pCBfnc ))
10314 {
10315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010316 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 }
10320
10321 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10322 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010323
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 /*-----------------------------------------------------------------------
10325 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010326 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010327 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010329 sizeof(halTxPerTrackingReqParam),
10330 &pSendBuffer, &usDataOffset, &usSendSize))||
10331 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10332 {
10333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10334 "Unable to get send buffer in set tx per tracking req %x %x %x",
10335 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10336 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010338 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010339
Jeff Johnson295189b2012-06-20 16:38:30 -070010340 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10341 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10342 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10343 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010344
10345 wpalMemoryCopy( pSendBuffer+usDataOffset,
10346 &halTxPerTrackingReqParam,
10347 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010348
10349 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010351
10352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010354 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010355 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10356 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010357}/*WDI_ProcessSetTxPerTrackingReq*/
10358
10359/*=========================================================================
10360 Indications
10361=========================================================================*/
10362
10363/**
10364 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010365
10366 @param pWDICtx: pointer to the WLAN DAL context
10367 pEventData: pointer to the event information structure
10368
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 @see
10370 @return Result of the function call
10371*/
10372WDI_Status
10373WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010374(
Jeff Johnson295189b2012-06-20 16:38:30 -070010375 WDI_ControlBlockType* pWDICtx,
10376 WDI_EventInfoType* pEventData
10377)
10378{
10379 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010380 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010381 wpt_uint16 usDataOffset = 0;
10382 wpt_uint16 usSendSize = 0;
10383 WDI_Status wdiStatus;
10384 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10386
10387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 -------------------------------------------------------------------------*/
10390 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10391 {
10392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010393 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 }
10397
10398 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10399
10400 /*-----------------------------------------------------------------------
10401 Get message buffer
10402 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10404 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010405 sizeof(halWlanSuspendIndparams),
10406 &pSendBuffer, &usDataOffset, &usSendSize))||
10407 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10408 {
10409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10410 "Unable to get send buffer in Suspend Ind ");
10411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 }
10414
10415 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10416 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10417
Jeff Johnsone7245742012-09-05 17:12:55 -070010418 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010419 WDI_GetActiveSessionsCount(pWDICtx);
10420
Jeff Johnsone7245742012-09-05 17:12:55 -070010421 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10422 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010423
10424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010425 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010426 -------------------------------------------------------------------------*/
10427 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010428 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010429
Jeff Johnsone7245742012-09-05 17:12:55 -070010430 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010431 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10432}/*WDI_ProcessHostSuspendInd*/
10433
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010434
10435
10436/**
10437 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10438
10439 @param pWDICtx: pointer to the WLAN DAL context
10440 pEventData: pointer to the event information structure
10441
10442 @see
10443 @return Result of the function call
10444*/
10445WDI_Status
10446WDI_ProcessTrafficStatsInd
10447(
10448 WDI_ControlBlockType* pWDICtx,
10449 WDI_EventInfoType* pEventData
10450)
10451{
10452 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10453 wpt_uint8* pSendBuffer = NULL;
10454 wpt_uint16 usDataOffset = 0;
10455 wpt_uint16 usSendSize = 0;
10456 WDI_Status wdiStatus;
10457 tStatsClassBIndParams* pStatsClassBIndParams;
10458 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10459
10460 /*-------------------------------------------------------------------------
10461 Sanity check
10462 -------------------------------------------------------------------------*/
10463 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10464 {
10465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10466 "%s: Invalid parameters in Traffic Stats ind",__func__);
10467 WDI_ASSERT(0);
10468 return WDI_STATUS_E_FAILURE;
10469 }
10470
10471 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10472
10473 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10474 {
10475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10476 "%s: Invalid parameters in Traffic Stats ind",__func__);
10477 WDI_ASSERT(0);
10478 return WDI_STATUS_E_FAILURE;
10479 }
10480
10481 /*-----------------------------------------------------------------------
10482 Get message buffer
10483 -----------------------------------------------------------------------*/
10484 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10485 WDI_TRAFFIC_STATS_IND,
10486 sizeof(tStatsClassBIndParams),
10487 &pSendBuffer, &usDataOffset, &usSendSize))||
10488 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10489 {
10490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10491 "Unable to get send buffer in Traffic Stats Ind ");
10492 WDI_ASSERT(0);
10493 return WDI_STATUS_E_FAILURE;
10494 }
10495
10496 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10497
10498 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10499
10500 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10501 pTrafficStatsIndParams->pTrafficStats,
10502 pTrafficStatsIndParams->length);
10503
10504 /*-------------------------------------------------------------------------
10505 Send Suspend Request to HAL
10506 -------------------------------------------------------------------------*/
10507 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10508 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10509
10510 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10511 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10512}/*WDI_ProcessTrafficStatsInd*/
10513
Jeff Johnson295189b2012-06-20 16:38:30 -070010514/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010515 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010516==========================================================================*/
10517/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010518 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010519 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010520
10521 @param pWDICtx: pointer to the WLAN DAL context
10522 pEventData: pointer to the event information structure
10523
Jeff Johnson295189b2012-06-20 16:38:30 -070010524 @see
10525 @return Result of the function call
10526*/
10527WDI_Status
10528WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010529(
Jeff Johnson295189b2012-06-20 16:38:30 -070010530 WDI_ControlBlockType* pWDICtx,
10531 WDI_EventInfoType* pEventData
10532)
10533{
10534 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10535 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010536 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010537 wpt_uint16 usDataOffset = 0;
10538 wpt_uint16 usSendSize = 0;
10539 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10541
10542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 -------------------------------------------------------------------------*/
10545 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10546 ( NULL == pEventData->pCBfnc ))
10547 {
10548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010549 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010550 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010552 }
10553
10554 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10555 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10556 /*-----------------------------------------------------------------------
10557 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010558 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010559 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 sizeof(halSwitchChannelReq.switchChannelParams),
10562 &pSendBuffer, &usDataOffset, &usSendSize))||
10563 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10564 {
10565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10566 "Unable to get send buffer in channel switch req %x %x %x",
10567 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010570 }
10571
Jeff Johnsone7245742012-09-05 17:12:55 -070010572 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010573 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010574#ifndef WLAN_FEATURE_VOWIFI
10575 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010576 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10577#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010579 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10580
10581#ifdef WLAN_FEATURE_VOWIFI
10582 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10585 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10586 WDI_MAC_ADDR_LEN);
10587 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10588 pwdiSwitchChParams->wdiChInfo.macBSSId,
10589 WDI_MAC_ADDR_LEN);
10590#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 wpalMemoryCopy( pSendBuffer+usDataOffset,
10592 &halSwitchChannelReq.switchChannelParams,
10593 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010594
10595 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010596 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010597
10598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010599 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010600 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10602 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010603}/*WDI_ProcessChannelSwitchReq*/
10604
10605/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010608
10609 @param pWDICtx: pointer to the WLAN DAL context
10610 pEventData: pointer to the event information structure
10611
Jeff Johnson295189b2012-06-20 16:38:30 -070010612 @see
10613 @return Result of the function call
10614*/
10615WDI_Status
10616WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010617(
Jeff Johnson295189b2012-06-20 16:38:30 -070010618 WDI_ControlBlockType* pWDICtx,
10619 WDI_EventInfoType* pEventData
10620)
10621{
10622 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10623 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010624 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010626 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 wpt_uint16 usDataOffset = 0;
10628 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010629 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010630
Jeff Johnsone7245742012-09-05 17:12:55 -070010631 tConfigStaReqMsg halConfigStaReqMsg;
10632 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10634
10635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010637 -------------------------------------------------------------------------*/
10638 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10639 ( NULL == pEventData->pCBfnc ))
10640 {
10641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 }
10646
10647 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10648 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10649 /*-------------------------------------------------------------------------
10650 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010651 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010652 -------------------------------------------------------------------------*/
10653 wpalMutexAcquire(&pWDICtx->wptMutex);
10654
10655 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010656 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010657 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10659 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10660 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010661
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10665 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10666 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010667
10668 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 }
10671
10672 /*------------------------------------------------------------------------
10673 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010674 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010675 ------------------------------------------------------------------------*/
10676 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10677 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10679 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10680 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010681
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010683 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010685 }
10686
10687 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010688
10689 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10690#ifdef WLAN_FEATURE_11AC
10691 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010692 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 else
10694#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010695 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010696
Jeff Johnson295189b2012-06-20 16:38:30 -070010697 /*-----------------------------------------------------------------------
10698 Get message buffer
10699 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010700 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10701 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010704 {
10705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10706 "Unable to get send buffer in config sta req %x %x %x",
10707 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010710 }
10711
10712 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 &pwdiConfigSTAParams->wdiReqInfo);
10715
10716 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10717 {
10718 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010720 WDI_STATableFindStaidByAddr(pWDICtx,
10721 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 {
10724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10725 "This station does not exist in the WDI Station Table %d");
10726 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010727 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010729 }
10730 }
10731 else
10732 {
10733 /* Need to fill in the STA Index to invalid, since at this point we have not
10734 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010735 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010736 }
10737
10738 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010739 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010740
Jeff Johnsone7245742012-09-05 17:12:55 -070010741 wpalMemoryCopy( pSendBuffer+usDataOffset,
10742 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010743 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010744
10745 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010747
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10749 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010750 sizeof(pWDICtx->wdiCachedConfigStaReq));
10751
10752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10756 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010757}/*WDI_ProcessConfigStaReq*/
10758
10759
10760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010761 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010762 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010763
10764 @param pWDICtx: pointer to the WLAN DAL context
10765 pEventData: pointer to the event information structure
10766
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 @see
10768 @return Result of the function call
10769*/
10770WDI_Status
10771WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010772(
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 WDI_ControlBlockType* pWDICtx,
10774 WDI_EventInfoType* pEventData
10775)
10776{
10777 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10778 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010779 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010780 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010781 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010782 wpt_uint16 usDataOffset = 0;
10783 wpt_uint16 usSendSize = 0;
10784 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010785 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010786 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10787
10788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010789 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010790 -------------------------------------------------------------------------*/
10791 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10792 ( NULL == pEventData->pCBfnc ))
10793 {
10794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 }
10799
10800 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10801 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10802 /*-------------------------------------------------------------------------
10803 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 -------------------------------------------------------------------------*/
10806 wpalMutexAcquire(&pWDICtx->wptMutex);
10807
10808 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010809 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010810 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10812 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10813 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010814
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010818 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10819 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 }
10821 else
10822 {
10823 /*------------------------------------------------------------------------
10824 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 ------------------------------------------------------------------------*/
10827 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10828 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10830 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10831 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10832
10833 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010834 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010835 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 }
10837 }
10838 /* If the link is set to enter IDLE - the Session allocated for this BSS
10839 will be deleted on the Set Link State response coming from HAL
10840 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10843
10844 wpalMutexRelease(&pWDICtx->wptMutex);
10845 /*-----------------------------------------------------------------------
10846 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010848 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010849
10850 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010851 sizeof(halLinkStateReqMsg),
10852 &pSendBuffer, &usDataOffset, &usSendSize))||
10853 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10854 {
10855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10856 "Unable to get send buffer in set bss key req %x %x %x",
10857 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10858 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 }
10861
10862 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10863 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10864
10865 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10866 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10867
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10870
Jeff Johnsone7245742012-09-05 17:12:55 -070010871 wpalMemoryCopy( pSendBuffer+usDataOffset,
10872 &halLinkStateReqMsg,
10873 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010874
10875 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010876 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010877
10878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010879 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010880 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010881 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10882 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010883}/*WDI_ProcessSetLinkStateReq*/
10884
10885
10886/**
10887 @brief Process Get Stats Request function (called when Main FSM
10888 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010889
10890 @param pWDICtx: pointer to the WLAN DAL context
10891 pEventData: pointer to the event information structure
10892
Jeff Johnson295189b2012-06-20 16:38:30 -070010893 @see
10894 @return Result of the function call
10895*/
10896WDI_Status
10897WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010898(
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 WDI_ControlBlockType* pWDICtx,
10900 WDI_EventInfoType* pEventData
10901)
10902{
10903 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
10904 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010905 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 wpt_uint16 usDataOffset = 0;
10907 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010908 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010909 WDI_BSSSessionType* pBSSSes = NULL;
10910 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 tHalStatsReqMsg halStatsReqMsg;
10913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10914
10915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010916 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010917 -------------------------------------------------------------------------*/
10918 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10919 ( NULL == pEventData->pCBfnc ) )
10920 {
10921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010925 }
10926
10927 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10928 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10929
10930 /*-------------------------------------------------------------------------
10931 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010932 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010933 -------------------------------------------------------------------------*/
10934 wpalMutexAcquire(&pWDICtx->wptMutex);
10935
10936 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010938 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10940 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010941 &macBSSID))
10942 {
10943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10944 "This station does not exist in the WDI Station Table %d");
10945 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 }
10948
Jeff Johnsone7245742012-09-05 17:12:55 -070010949 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10950 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010951 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10953 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10954 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010955
10956 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010957 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010958 }
10959
10960 /*------------------------------------------------------------------------
10961 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010962 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 ------------------------------------------------------------------------*/
10964 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10965 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10967 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10968 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010969
Jeff Johnsone7245742012-09-05 17:12:55 -070010970 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010971 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010972 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010973 }
10974
10975
10976 wpalMutexRelease(&pWDICtx->wptMutex);
10977
10978 /*-----------------------------------------------------------------------
10979 Get message buffer
10980 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010982 sizeof(halStatsReqMsg.statsReqParams),
10983 &pSendBuffer, &usDataOffset, &usSendSize))||
10984 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10985 {
10986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10987 "Unable to get send buffer in set bss key req %x %x %x",
10988 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010991 }
10992
Jeff Johnsone7245742012-09-05 17:12:55 -070010993 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010994 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010995 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010996 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010997 wpalMemoryCopy( pSendBuffer+usDataOffset,
10998 &halStatsReqMsg.statsReqParams,
10999 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011000
11001 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011002 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011003
11004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011006 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011007 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11008 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011009}/*WDI_ProcessGetStatsReq*/
11010
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011011#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11012/**
11013 @brief Process Get Roam Rssi Request function (called when Main FSM
11014 allows it)
11015
11016 @param pWDICtx: pointer to the WLAN DAL context
11017 pEventData: pointer to the event information structure
11018
11019 @see
11020 @return Result of the function call
11021*/
11022WDI_Status
11023WDI_ProcessGetRoamRssiReq
11024(
11025 WDI_ControlBlockType* pWDICtx,
11026 WDI_EventInfoType* pEventData
11027)
11028{
11029 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11030 WDI_GetStatsRspCb wdiGetStatsRspCb;
11031 wpt_uint8* pSendBuffer = NULL;
11032 wpt_uint16 usDataOffset = 0;
11033 wpt_uint16 usSendSize = 0;
11034 wpt_uint8 ucCurrentBSSSesIdx = 0;
11035 WDI_BSSSessionType* pBSSSes = NULL;
11036 wpt_macAddr macBSSID;
11037 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11038 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11040 /*-------------------------------------------------------------------------
11041 Sanity check
11042 -------------------------------------------------------------------------*/
11043 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11044 ( NULL == pEventData->pCBfnc ) )
11045 {
11046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11047 "%s: Invalid parameters", __func__);
11048 WDI_ASSERT(0);
11049 return WDI_STATUS_E_FAILURE;
11050 }
11051
11052 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11053 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11054
11055 /*-------------------------------------------------------------------------
11056 Check to see if we are in the middle of an association, if so queue, if
11057 not it means it is free to process request
11058 -------------------------------------------------------------------------*/
11059 wpalMutexAcquire(&pWDICtx->wptMutex);
11060
11061 /*------------------------------------------------------------------------
11062 Find the BSS for which the request is made
11063 ------------------------------------------------------------------------*/
11064 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11065 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11066 &macBSSID))
11067 {
11068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11069 "This station does not exist in the WDI Station Table %d");
11070 wpalMutexRelease(&pWDICtx->wptMutex);
11071 return WDI_STATUS_E_FAILURE;
11072 }
11073
11074 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11075 if ( NULL == pBSSSes )
11076 {
11077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11078 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11079 __func__, MAC_ADDR_ARRAY(macBSSID));
11080
11081 wpalMutexRelease(&pWDICtx->wptMutex);
11082 return WDI_STATUS_E_NOT_ALLOWED;
11083 }
11084
11085 /*------------------------------------------------------------------------
11086 Check if this BSS is being currently processed or queued,
11087 if queued - queue the new request as well
11088 ------------------------------------------------------------------------*/
11089 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11090 {
11091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11092 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11093 __func__, MAC_ADDR_ARRAY(macBSSID));
11094
11095 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11096 wpalMutexRelease(&pWDICtx->wptMutex);
11097 return wdiStatus;
11098 }
11099
11100 wpalMutexRelease(&pWDICtx->wptMutex);
11101
11102 /*-----------------------------------------------------------------------
11103 Get message buffer
11104 -----------------------------------------------------------------------*/
11105 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11106 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11107 &pSendBuffer, &usDataOffset, &usSendSize))||
11108 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11109 {
11110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11111 "Unable to get send buffer in set bss key req %x %x %x",
11112 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11113 WDI_ASSERT(0);
11114 return WDI_STATUS_E_FAILURE;
11115 }
11116
11117 halRssiRoamReqMsg.roamRssiReqParams.staId =
11118 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11119 wpalMemoryCopy( pSendBuffer+usDataOffset,
11120 &halRssiRoamReqMsg.roamRssiReqParams,
11121 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11122
11123 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11124 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11125
11126 /*-------------------------------------------------------------------------
11127 Send Get STA Request to HAL
11128 -------------------------------------------------------------------------*/
11129 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11130 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11131}/*WDI_ProcessGetRoamRssiReq*/
11132#endif
11133
Jeff Johnson295189b2012-06-20 16:38:30 -070011134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011135 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011136 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011137
11138 @param pWDICtx: pointer to the WLAN DAL context
11139 pEventData: pointer to the event information structure
11140
Jeff Johnson295189b2012-06-20 16:38:30 -070011141 @see
11142 @return Result of the function call
11143*/
11144WDI_Status
11145WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011146(
Jeff Johnson295189b2012-06-20 16:38:30 -070011147 WDI_ControlBlockType* pWDICtx,
11148 WDI_EventInfoType* pEventData
11149)
11150{
11151 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11152 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11153
Jeff Johnsone7245742012-09-05 17:12:55 -070011154 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011155 wpt_uint16 usDataOffset = 0;
11156 wpt_uint16 usSendSize = 0;
11157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11158
11159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011161 -------------------------------------------------------------------------*/
11162 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11163 ( NULL == pEventData->pCBfnc))
11164 {
11165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 }
11170
11171 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11172 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11173
11174 /*-----------------------------------------------------------------------
11175 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011176 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011177 -----------------------------------------------------------------------*/
11178
Jeff Johnsone7245742012-09-05 17:12:55 -070011179 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011180 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11181 &pSendBuffer, &usDataOffset, &usSendSize))||
11182 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11183 {
11184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11185 "Unable to get send buffer in set bss key req %x %x %x",
11186 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011189 }
11190
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 wpalMemoryCopy( pSendBuffer+usDataOffset,
11192 &pwdiUpdateCfgParams->uConfigBufferLen,
11193 sizeof(wpt_uint32));
11194 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11195 pwdiUpdateCfgParams->pConfigBuffer,
11196 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011197
11198 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011200
11201 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011202 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011203 -------------------------------------------------------------------------*/
11204
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11206 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011207
11208}/*WDI_ProcessUpdateCfgReq*/
11209
11210
11211/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011214
11215 @param pWDICtx: pointer to the WLAN DAL context
11216 pEventData: pointer to the event information structure
11217
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 @see
11219 @return Result of the function call
11220*/
11221WDI_Status
11222WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011223(
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 WDI_ControlBlockType* pWDICtx,
11225 WDI_EventInfoType* pEventData
11226)
11227{
11228 WDI_AddBAReqParamsType* pwdiAddBAParams;
11229 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011230 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011231 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011232 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011233 wpt_uint16 usDataOffset = 0;
11234 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011236 wpt_macAddr macBSSID;
11237
11238 tAddBAReqMsg halAddBAReq;
11239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11240
11241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011243 -------------------------------------------------------------------------*/
11244 if (( NULL == pEventData ) ||
11245 ( NULL == pEventData->pEventData) ||
11246 ( NULL == pEventData->pCBfnc ))
11247 {
11248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011252 }
11253
11254 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11255 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11256
11257 /*-------------------------------------------------------------------------
11258 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011259 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011260 -------------------------------------------------------------------------*/
11261 wpalMutexAcquire(&pWDICtx->wptMutex);
11262
11263 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011264 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011265 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011266 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11267 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011268 &macBSSID))
11269 {
11270 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11271 "This station does not exist in the WDI Station Table %d");
11272 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011274 }
11275
Jeff Johnsone7245742012-09-05 17:12:55 -070011276 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11277 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011278 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11280 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11281 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011282
11283 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011284 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 }
11286
11287 /*------------------------------------------------------------------------
11288 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011289 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011290 ------------------------------------------------------------------------*/
11291 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11292 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11294 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11295 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011296
Jeff Johnsone7245742012-09-05 17:12:55 -070011297 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011298 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011299 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011300 }
11301
11302
11303 wpalMutexRelease(&pWDICtx->wptMutex);
11304 /*-----------------------------------------------------------------------
11305 Get message buffer
11306 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011307 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011308 sizeof(halAddBAReq.addBAParams),
11309 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011310 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011311 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11312 {
11313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11314 "Unable to get send buffer in Add BA req %x %x %x",
11315 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011318 }
11319
Jeff Johnsone7245742012-09-05 17:12:55 -070011320 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011321 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11322 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11323#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011325 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11326#endif
11327
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 wpalMemoryCopy( pSendBuffer+usDataOffset,
11329 &halAddBAReq.addBAParams,
11330 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011331
11332 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011333 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011334
11335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011336 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011337 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011338 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11339 wdiAddBARspCb, pEventData->pUserData,
11340 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011341}/*WDI_ProcessAddBAReq*/
11342
11343
11344
11345/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011346 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011347 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011348
11349 @param pWDICtx: pointer to the WLAN DAL context
11350 pEventData: pointer to the event information structure
11351
Jeff Johnson295189b2012-06-20 16:38:30 -070011352 @see
11353 @return Result of the function call
11354*/
11355WDI_Status
11356WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011357(
Jeff Johnson295189b2012-06-20 16:38:30 -070011358 WDI_ControlBlockType* pWDICtx,
11359 WDI_EventInfoType* pEventData
11360)
11361{
11362 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11363 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011364 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011365 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011366 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011367 wpt_uint16 usDataOffset = 0;
11368 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011369 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011370 wpt_uint16 index;
11371 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011372
Jeff Johnson295189b2012-06-20 16:38:30 -070011373 tTriggerBAReqMsg halTriggerBAReq;
11374 tTriggerBaReqCandidate* halTriggerBACandidate;
11375 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11377
11378 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011380 -------------------------------------------------------------------------*/
11381 if (( NULL == pEventData ) ||
11382 ( NULL == pEventData->pEventData ) ||
11383 ( NULL == pEventData->pCBfnc ))
11384 {
11385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011389 }
11390
11391 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11392 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11393 /*-------------------------------------------------------------------------
11394 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011395 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011396 -------------------------------------------------------------------------*/
11397 wpalMutexAcquire(&pWDICtx->wptMutex);
11398
11399 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011400 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011401 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011402 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11403 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011404 &macBSSID))
11405 {
11406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11407 "This station does not exist in the WDI Station Table %d");
11408 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011410 }
11411
Jeff Johnsone7245742012-09-05 17:12:55 -070011412 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11413 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11416 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11417 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011418
11419 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011420 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011421 }
11422
11423 /*------------------------------------------------------------------------
11424 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011426 ------------------------------------------------------------------------*/
11427 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11428 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11430 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11431 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011432
Jeff Johnsone7245742012-09-05 17:12:55 -070011433 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011434 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011435 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011436 }
11437
11438
11439 wpalMutexRelease(&pWDICtx->wptMutex);
11440 /*-----------------------------------------------------------------------
11441 Get message buffer
11442 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11444 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011445 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011446 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11448 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011449 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011450 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011451 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011452 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11453 {
11454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11455 "Unable to get send buffer in Trigger BA req %x %x %x",
11456 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011459 }
11460
Jeff Johnsone7245742012-09-05 17:12:55 -070011461 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011462 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11465
Jeff Johnsone7245742012-09-05 17:12:55 -070011466 wpalMemoryCopy( pSendBuffer+usDataOffset,
11467 &halTriggerBAReq.triggerBAParams,
11468 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011469
Jeff Johnsone7245742012-09-05 17:12:55 -070011470 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011471 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11472 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11473 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011474
11475 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 index++)
11477 {
11478 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11479 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11480 halTriggerBACandidate++;
11481 wdiTriggerBACandidate++;
11482 }
11483
11484 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011485 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011486
11487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011488 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11491 wdiTriggerBARspCb, pEventData->pUserData,
11492 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011493}/*WDI_ProcessTriggerBAReq*/
11494
11495
11496
11497/**
11498 @brief Process Update Beacon Params Request function (called when Main FSM
11499 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011500
11501 @param pWDICtx: pointer to the WLAN DAL context
11502 pEventData: pointer to the event information structure
11503
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 @see
11505 @return Result of the function call
11506*/
11507WDI_Status
11508WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011509(
Jeff Johnson295189b2012-06-20 16:38:30 -070011510 WDI_ControlBlockType* pWDICtx,
11511 WDI_EventInfoType* pEventData
11512)
11513{
11514 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11515 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011516 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011517 wpt_uint16 usDataOffset = 0;
11518 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011519 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11521
11522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 -------------------------------------------------------------------------*/
11525 if (( NULL == pEventData ) ||
11526 ( NULL == pEventData->pEventData) ||
11527 ( NULL == pEventData->pCBfnc))
11528 {
11529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011533 }
11534
11535 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11536 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11537 /*-----------------------------------------------------------------------
11538 Get message buffer
11539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 sizeof(halUpdateBeaconParams),
11542 &pSendBuffer, &usDataOffset, &usSendSize))||
11543 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11544 {
11545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11546 "Unable to get send buffer in set bss key req %x %x %x",
11547 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 }
11551
11552 /*BSS Index of the BSS*/
11553 halUpdateBeaconParams.bssIdx =
11554 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11555 /*shortPreamble mode. HAL should update all the STA rates when it
11556 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011558 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11559 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011560 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011561 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11562 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011564 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11565
11566 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011568 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011569 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011570 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011571 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011572 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011573 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011574 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011575 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011577 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011578 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11579 halUpdateBeaconParams.fRIFSMode =
11580 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011582 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11583
Jeff Johnsone7245742012-09-05 17:12:55 -070011584 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11585 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011586
11587 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011588 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011589
11590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011591 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011592 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011593 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11594 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011595}/*WDI_ProcessUpdateBeaconParamsReq*/
11596
11597
11598
11599/**
11600 @brief Process Send Beacon template Request function (called when Main FSM
11601 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011602
11603 @param pWDICtx: pointer to the WLAN DAL context
11604 pEventData: pointer to the event information structure
11605
Jeff Johnson295189b2012-06-20 16:38:30 -070011606 @see
11607 @return Result of the function call
11608*/
11609WDI_Status
11610WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011611(
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 WDI_ControlBlockType* pWDICtx,
11613 WDI_EventInfoType* pEventData
11614)
11615{
11616 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11617 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011618 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011619 wpt_uint16 usDataOffset = 0;
11620 wpt_uint16 usSendSize = 0;
11621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11622
11623 tSendBeaconReqMsg halSendBeaconReq;
11624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011626 -------------------------------------------------------------------------*/
11627 if (( NULL == pEventData ) ||
11628 ( NULL == pEventData->pEventData ) ||
11629 ( NULL == pEventData->pCBfnc ))
11630 {
11631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 }
11636
11637 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11638 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11639 /*-----------------------------------------------------------------------
11640 Get message buffer
11641 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 sizeof(halSendBeaconReq.sendBeaconParam),
11644 &pSendBuffer, &usDataOffset, &usSendSize))||
11645 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11646 {
11647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11648 "Unable to get send buffer in send beacon req %x %x %x",
11649 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 }
11653
11654 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11655 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11656 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011657 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011658 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11659 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11660 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11661 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070011664 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070011666
Jeff Johnsone7245742012-09-05 17:12:55 -070011667 wpalMemoryCopy( pSendBuffer+usDataOffset,
11668 &halSendBeaconReq.sendBeaconParam,
11669 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011670
11671 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011672 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011673
11674 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011677 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11678 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011679}/*WDI_ProcessSendBeaconParamsReq*/
11680
11681/**
11682 @brief Process Update Beacon Params Request function (called when Main FSM
11683 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011684
11685 @param pWDICtx: pointer to the WLAN DAL context
11686 pEventData: pointer to the event information structure
11687
Jeff Johnson295189b2012-06-20 16:38:30 -070011688 @see
11689 @return Result of the function call
11690*/
11691WDI_Status
11692WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011693(
Jeff Johnson295189b2012-06-20 16:38:30 -070011694 WDI_ControlBlockType* pWDICtx,
11695 WDI_EventInfoType* pEventData
11696)
11697{
11698 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11699 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011701 wpt_uint16 usDataOffset = 0;
11702 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011703 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11705
11706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011708 -------------------------------------------------------------------------*/
11709 if (( NULL == pEventData ) ||
11710 ( NULL == pEventData->pEventData) ||
11711 ( NULL == pEventData->pCBfnc))
11712 {
11713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011717 }
11718
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011721 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011722 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11723 /*-----------------------------------------------------------------------
11724 Get message buffer
11725 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011726 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 sizeof(halUpdateProbeRspTmplParams),
11728 &pSendBuffer, &usDataOffset, &usSendSize))||
11729 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11730 {
11731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11732 "Unable to get send buffer in set bss key req %x %x %x",
11733 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011736 }
11737
11738 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 WDI_MAC_ADDR_LEN);
11741
Jeff Johnsone7245742012-09-05 17:12:55 -070011742 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011743 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11744
11745 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11746 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011747 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011748
11749
11750 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11751 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11752 WDI_PROBE_REQ_BITMAP_IE_LEN);
11753
Jeff Johnsone7245742012-09-05 17:12:55 -070011754 wpalMemoryCopy( pSendBuffer+usDataOffset,
11755 &halUpdateProbeRspTmplParams,
11756 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011757
11758 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011759 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011760
11761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011762 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011763 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011764 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11765 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11766 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011767}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11768
11769/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011770 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011771 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011772
11773 @param pWDICtx: pointer to the WLAN DAL context
11774 pEventData: pointer to the event information structure
11775
Jeff Johnson295189b2012-06-20 16:38:30 -070011776 @see
11777 @return Result of the function call
11778*/
11779WDI_Status
11780WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011781(
Jeff Johnson295189b2012-06-20 16:38:30 -070011782 WDI_ControlBlockType* pWDICtx,
11783 WDI_EventInfoType* pEventData
11784)
11785{
11786
11787 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11788 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11789
11790 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011791 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011792 -------------------------------------------------------------------------*/
11793 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011794 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011795 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011796 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011797 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11798 {
11799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011800 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 }
11804
11805 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11808
11809 /*cache the wdi nv request message here if the the first fragment
11810 * To issue the request to HAL for the next fragment */
11811 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11812 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11814 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11816
11817 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11818 pWDICtx->pRspCBUserData = pEventData->pUserData;
11819 }
11820
11821 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11822}
11823
11824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011825 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011826 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011827
11828 @param pWDICtx: pointer to the WLAN DAL context
11829 pEventData: pointer to the event information structure
11830
Jeff Johnson295189b2012-06-20 16:38:30 -070011831 @see
11832 @return Result of the function call
11833*/
11834WDI_Status WDI_ProcessSetMaxTxPowerReq
11835(
11836 WDI_ControlBlockType* pWDICtx,
11837 WDI_EventInfoType* pEventData
11838)
11839{
11840 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11841 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011842 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011843 wpt_uint16 usDataOffset = 0;
11844 wpt_uint16 usSendSize = 0;
11845 tSetMaxTxPwrReq halSetMaxTxPower;
11846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11847
11848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 -------------------------------------------------------------------------*/
11851 if (( NULL == pEventData ) ||
11852 ( NULL == pEventData->pEventData ) ||
11853 ( NULL == pEventData->pCBfnc ))
11854 {
11855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011856 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011859 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011860 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011861 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011862 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011863 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11864
11865 /*-----------------------------------------------------------------------
11866 Get message buffer
11867 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011868if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011869 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11870 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011871 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011872)))
11873 {
11874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11875 "Unable to get Set Max Tx Power req %x %x %x",
11876 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011879 }
11880
11881 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11882 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11883 WDI_MAC_ADDR_LEN);
11884
11885 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11886 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11887 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011888 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011889 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011890
11891 wpalMemoryCopy( pSendBuffer+usDataOffset,
11892 &halSetMaxTxPower.setMaxTxPwrParams,
11893 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011894
11895 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011896 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011897
11898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011901 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11902 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11903 WDI_SET_MAX_TX_POWER_RESP);
11904
Jeff Johnson295189b2012-06-20 16:38:30 -070011905}
11906
schangd82195a2013-03-13 18:41:24 -070011907/**
11908 @brief Process Set Tx Power Request function (called when Main
11909 FSM allows it)
11910
11911 @param pWDICtx: pointer to the WLAN DAL context
11912 pEventData: pointer to the event information structure
11913
11914 @see
11915 @return Result of the function call
11916*/
11917WDI_Status WDI_ProcessSetTxPowerReq
11918(
11919 WDI_ControlBlockType* pWDICtx,
11920 WDI_EventInfoType* pEventData
11921)
11922{
11923 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
11924 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
11925 wpt_uint8* pSendBuffer = NULL;
11926 wpt_uint16 usDataOffset = 0;
11927 wpt_uint16 usSendSize = 0;
11928 tSetTxPwrReqMsg *halSetTxPower = NULL;;
11929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11930
11931 /*-------------------------------------------------------------------------
11932 Sanity check
11933 -------------------------------------------------------------------------*/
11934 if (( NULL == pEventData ) ||
11935 ( NULL == pEventData->pEventData ) ||
11936 ( NULL == pEventData->pCBfnc ))
11937 {
11938 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11939 "%s: Invalid parameters", __func__);
11940 WDI_ASSERT(0);
11941 return WDI_STATUS_E_FAILURE;
11942 }
11943
11944 pwdiSetTxPowerParams =
11945 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
11946 wdiSetTxPowerRspCb =
11947 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
11948
11949 /*-----------------------------------------------------------------------
11950 Get message buffer
11951 -----------------------------------------------------------------------*/
11952 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
11953 sizeof(tSetTxPwrReqParams),
11954 &pSendBuffer, &usDataOffset, &usSendSize))||
11955 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
11956 )))
11957 {
11958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11959 "Unable to get Set Max Tx Power req %x %x %x",
11960 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
11961 WDI_ASSERT(0);
11962 return WDI_STATUS_E_FAILURE;
11963 }
11964
11965 halSetTxPower = (tSetTxPwrReqMsg *)(pSendBuffer+usDataOffset);
11966 halSetTxPower->setTxPwrReqParams.txPower =
11967 pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
11968 halSetTxPower->setTxPwrReqParams.bssIdx =
11969 pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
11970
11971 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
11972 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
11973
11974 /*-------------------------------------------------------------------------
11975 Send Set Tx Power Request to HAL
11976 -------------------------------------------------------------------------*/
11977 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11978 wdiSetTxPowerRspCb, pEventData->pUserData,
11979 WDI_SET_TX_POWER_RESP);
11980}
Jeff Johnson295189b2012-06-20 16:38:30 -070011981
11982/**
11983 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11984 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011985
11986 @param pWDICtx: pointer to the WLAN DAL context
11987 pEventData: pointer to the event information structure
11988
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 @see
11990 @return Result of the function call
11991*/
11992WDI_Status
11993WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011994(
Jeff Johnson295189b2012-06-20 16:38:30 -070011995 WDI_ControlBlockType* pWDICtx,
11996 WDI_EventInfoType* pEventData
11997)
11998{
11999 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12000 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012001 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012002 wpt_uint16 usDataOffset = 0;
12003 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012004 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12006
12007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012008 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012009 -------------------------------------------------------------------------*/
12010 if (( NULL == pEventData ) ||
12011 ( NULL == pEventData->pEventData) ||
12012 ( NULL == pEventData->pCBfnc))
12013 {
12014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012018 }
12019
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12024 /*-----------------------------------------------------------------------
12025 Get message buffer
12026 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012027 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12028 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012029 sizeof(halSetP2PGONOAParams),
12030 &pSendBuffer, &usDataOffset, &usSendSize))||
12031 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12032 {
12033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12034 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12035 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12036 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012037 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012038 }
12039
Jeff Johnsone7245742012-09-05 17:12:55 -070012040 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012041 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012043 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12044 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012047 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012048 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012049 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012050 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012051 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012052 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12053
Jeff Johnsone7245742012-09-05 17:12:55 -070012054 wpalMemoryCopy( pSendBuffer+usDataOffset,
12055 &halSetP2PGONOAParams,
12056 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012057
12058 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012059 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012060
12061 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012064 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12065 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12066 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012067}/*WDI_ProcessP2PGONOAReq*/
12068
Jeff Johnson295189b2012-06-20 16:38:30 -070012069
12070
12071/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012072 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012073 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012074 @param None
12075
12076 @see
12077 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012078*/
12079void
12080WDI_SetPowerStateCb
12081(
12082 wpt_status status,
12083 unsigned int dxePhyAddr,
12084 void *pContext
12085)
12086{
12087 wpt_status wptStatus;
12088 WDI_ControlBlockType *pCB = NULL;
12089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12090 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12091 {
12092 //it shouldn't happen, put an error msg
12093 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012094 /*
12095 * Trigger the event to bring the Enter BMPS req function to come
12096 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012097*/
12098 if( NULL != pContext )
12099 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012100 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012101 }
12102 else
12103 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012104 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012105 pCB = &gWDICb;
12106 }
12107 pCB->dxePhyAddr = dxePhyAddr;
12108 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12109 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12110 {
12111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12112 "Failed to set an event");
12113
Jeff Johnsone7245742012-09-05 17:12:55 -070012114 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012115 }
12116 return;
12117}
12118
12119
12120/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012121 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012122 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012123
12124 @param pWDICtx: pointer to the WLAN DAL context
12125 pEventData: pointer to the event information structure
12126
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 @see
12128 @return Result of the function call
12129*/
12130WDI_Status
12131WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012132(
Jeff Johnson295189b2012-06-20 16:38:30 -070012133 WDI_ControlBlockType* pWDICtx,
12134 WDI_EventInfoType* pEventData
12135)
12136{
Jeff Johnson43971f52012-07-17 12:26:56 -070012137 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012138 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012140 wpt_uint16 usDataOffset = 0;
12141 wpt_uint16 usSendSize = 0;
12142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12143
12144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012146 -------------------------------------------------------------------------*/
12147 if (( NULL == pEventData ) ||
12148 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12149 {
12150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012152 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012153 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 }
12155
12156 /*-----------------------------------------------------------------------
12157 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 0,
12162 &pSendBuffer, &usDataOffset, &usSendSize))||
12163 ( usSendSize < (usDataOffset )))
12164 {
12165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12166 "Unable to get send buffer in Enter IMPS req %x %x",
12167 pEventData, wdiEnterImpsRspCb);
12168 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012169 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 }
12171
12172 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012173 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12174 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012175 {
12176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12177 "WDI Init failed to reset an event");
12178
Jeff Johnsone7245742012-09-05 17:12:55 -070012179 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012180 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012181 }
12182
12183 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012184 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12185 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12187 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12188 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012189 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012190 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012191
12192 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012193 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012194 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012195 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12196 WDI_SET_POWER_STATE_TIMEOUT);
12197 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012198 {
12199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12200 "WDI Init failed to wait on an event");
12201
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012203 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 }
12205
12206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012207 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012208 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012209 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12210 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012211
12212fail:
12213 // Release the message buffer so we don't leak
12214 wpalMemoryFree(pSendBuffer);
12215
12216failRequest:
12217 //WDA should have failure check to avoid the memory leak
12218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012219}/*WDI_ProcessEnterImpsReq*/
12220
12221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012222 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012223 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012224
12225 @param pWDICtx: pointer to the WLAN DAL context
12226 pEventData: pointer to the event information structure
12227
Jeff Johnson295189b2012-06-20 16:38:30 -070012228 @see
12229 @return Result of the function call
12230*/
12231WDI_Status
12232WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012233(
Jeff Johnson295189b2012-06-20 16:38:30 -070012234 WDI_ControlBlockType* pWDICtx,
12235 WDI_EventInfoType* pEventData
12236)
12237{
12238 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012239 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012240 wpt_uint16 usDataOffset = 0;
12241 wpt_uint16 usSendSize = 0;
12242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12243
12244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012246 -------------------------------------------------------------------------*/
12247 if (( NULL == pEventData ) ||
12248 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12249 {
12250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012251 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012254 }
12255
12256 /*-----------------------------------------------------------------------
12257 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012258 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012259 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012260 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012261 0,
12262 &pSendBuffer, &usDataOffset, &usSendSize))||
12263 ( usSendSize < (usDataOffset )))
12264 {
12265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12266 "Unable to get send buffer in Exit IMPS req %x %x",
12267 pEventData, wdiExitImpsRspCb);
12268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012270 }
12271
12272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012273 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012274 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012275 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12276 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012277}/*WDI_ProcessExitImpsReq*/
12278
12279/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012280 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012281 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012282
12283 @param pWDICtx: pointer to the WLAN DAL context
12284 pEventData: pointer to the event information structure
12285
Jeff Johnson295189b2012-06-20 16:38:30 -070012286 @see
12287 @return Result of the function call
12288*/
12289WDI_Status
12290WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012291(
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 WDI_ControlBlockType* pWDICtx,
12293 WDI_EventInfoType* pEventData
12294)
12295{
12296 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12297 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012299 wpt_uint16 usDataOffset = 0;
12300 wpt_uint16 usSendSize = 0;
12301 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012302 wpt_status wptStatus;
12303
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12305
12306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 -------------------------------------------------------------------------*/
12309 if (( NULL == pEventData ) ||
12310 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12311 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12312 {
12313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012314 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012315 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012316 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012317 }
12318
12319 /*-----------------------------------------------------------------------
12320 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012321 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012322 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 sizeof(enterBmpsReq),
12325 &pSendBuffer, &usDataOffset, &usSendSize))||
12326 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12327 {
12328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12329 "Unable to get send buffer in Enter BMPS req %x %x %x",
12330 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12331 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012332 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012333 }
12334
12335 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012336 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12337 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012338 {
12339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12340 "WDI Init failed to reset an event");
12341
Jeff Johnsone7245742012-09-05 17:12:55 -070012342 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012343 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012344 }
12345
12346 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012347 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12348 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12349 {
12350 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12351 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12352 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012353 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012354 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012355
12356/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012357 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012358 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012359 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12360 WDI_SET_POWER_STATE_TIMEOUT);
12361 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012362 {
12363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12364 "WDI Init failed to wait on an event");
12365
Jeff Johnsone7245742012-09-05 17:12:55 -070012366 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012367 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012368 }
12369
12370 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12371
12372 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12373 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12374 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12375 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12376
12377 // For CCX and 11R Roaming
12378 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12379 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12380 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12381
12382 wpalMemoryCopy( pSendBuffer+usDataOffset,
12383 &enterBmpsReq,
12384 sizeof(enterBmpsReq));
12385
12386 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012387 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012388
12389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012390 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012391 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012392 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12393 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012394
12395fail:
12396 // Release the message buffer so we don't leak
12397 wpalMemoryFree(pSendBuffer);
12398
12399failRequest:
12400 //WDA should have failure check to avoid the memory leak
12401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012402}/*WDI_ProcessEnterBmpsReq*/
12403
12404/**
12405 @brief Process Exit BMPS Request function (called when Main FSM
12406 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012407
12408 @param pWDICtx: pointer to the WLAN DAL context
12409 pEventData: pointer to the event information structure
12410
Jeff Johnson295189b2012-06-20 16:38:30 -070012411 @see
12412 @return Result of the function call
12413*/
12414WDI_Status
12415WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012416(
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 WDI_ControlBlockType* pWDICtx,
12418 WDI_EventInfoType* pEventData
12419)
12420{
12421 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12422 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012423 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012424 wpt_uint16 usDataOffset = 0;
12425 wpt_uint16 usSendSize = 0;
12426 tHalExitBmpsReqParams exitBmpsReq;
12427 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12428
12429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012430 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012431 -------------------------------------------------------------------------*/
12432 if (( NULL == pEventData ) ||
12433 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12434 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12435 {
12436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012437 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012440 }
12441
12442 /*-----------------------------------------------------------------------
12443 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012444 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012445 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012446 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012447 sizeof(exitBmpsReq),
12448 &pSendBuffer, &usDataOffset, &usSendSize))||
12449 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12450 {
12451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12452 "Unable to get send buffer in Exit BMPS req %x %x %x",
12453 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012456 }
12457 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12458
Jeff Johnsone7245742012-09-05 17:12:55 -070012459 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12460
Jeff Johnson295189b2012-06-20 16:38:30 -070012461 wpalMemoryCopy( pSendBuffer+usDataOffset,
12462 &exitBmpsReq,
12463 sizeof(exitBmpsReq));
12464
12465 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012466 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012467
12468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012471 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12472 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012473}/*WDI_ProcessExitBmpsReq*/
12474
12475/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012476 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012477 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012478
12479 @param pWDICtx: pointer to the WLAN DAL context
12480 pEventData: pointer to the event information structure
12481
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 @see
12483 @return Result of the function call
12484*/
12485WDI_Status
12486WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012487(
Jeff Johnson295189b2012-06-20 16:38:30 -070012488 WDI_ControlBlockType* pWDICtx,
12489 WDI_EventInfoType* pEventData
12490)
12491{
12492 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12493 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012494 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012495 wpt_uint16 usDataOffset = 0;
12496 wpt_uint16 usSendSize = 0;
12497 tUapsdReqParams enterUapsdReq;
12498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12499
12500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 -------------------------------------------------------------------------*/
12503 if (( NULL == pEventData ) ||
12504 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12505 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12506 {
12507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012511 }
12512
12513 /*-----------------------------------------------------------------------
12514 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012515 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012516 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012517 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 sizeof(enterUapsdReq),
12519 &pSendBuffer, &usDataOffset, &usSendSize))||
12520 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12521 {
12522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12523 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12524 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012527 }
12528
12529 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12530 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12531 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12532 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12533 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12534 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12535 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12536 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012537 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012538
Jeff Johnsone7245742012-09-05 17:12:55 -070012539 wpalMemoryCopy( pSendBuffer+usDataOffset,
12540 &enterUapsdReq,
12541 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012542
12543 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012544 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012545
12546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012548 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012549 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12550 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012551}/*WDI_ProcessEnterUapsdReq*/
12552
12553/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012554 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012556
12557 @param pWDICtx: pointer to the WLAN DAL context
12558 pEventData: pointer to the event information structure
12559
Jeff Johnson295189b2012-06-20 16:38:30 -070012560 @see
12561 @return Result of the function call
12562*/
12563WDI_Status
12564WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012565(
Jeff Johnson295189b2012-06-20 16:38:30 -070012566 WDI_ControlBlockType* pWDICtx,
12567 WDI_EventInfoType* pEventData
12568)
12569{
12570 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012572 wpt_uint16 usDataOffset = 0;
12573 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012574 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12575 wpt_uint8 bssIdx = 0;
12576
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12578
12579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 -------------------------------------------------------------------------*/
12582 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012583 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012584 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12585 {
12586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012590 }
12591
12592 /*-----------------------------------------------------------------------
12593 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012594 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012596 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012597 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012598 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012599 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012600 {
12601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12602 "Unable to get send buffer in Exit UAPSD req %x %x",
12603 pEventData, wdiExitUapsdRspCb);
12604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012606 }
12607
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012608 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12609
12610 wpalMemoryCopy( pSendBuffer+usDataOffset,
12611 &bssIdx,
12612 sizeof(wpt_uint8));
12613
12614 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12615 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12616
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012618 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012619 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012620 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12621 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012622}/*WDI_ProcessExitUapsdReq*/
12623
12624/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012625 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012627
12628 @param pWDICtx: pointer to the WLAN DAL context
12629 pEventData: pointer to the event information structure
12630
Jeff Johnson295189b2012-06-20 16:38:30 -070012631 @see
12632 @return Result of the function call
12633*/
12634WDI_Status
12635WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012636(
Jeff Johnson295189b2012-06-20 16:38:30 -070012637 WDI_ControlBlockType* pWDICtx,
12638 WDI_EventInfoType* pEventData
12639)
12640{
12641 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12642 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012643 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012644 wpt_uint16 usDataOffset = 0;
12645 wpt_uint16 usSendSize = 0;
12646 tUapsdInfo uapsdAcParamsReq;
12647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12648
12649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 -------------------------------------------------------------------------*/
12652 if (( NULL == pEventData ) ||
12653 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12654 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12655 {
12656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012657 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012659 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012660 }
12661
12662 /*-----------------------------------------------------------------------
12663 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012666 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012667 sizeof(uapsdAcParamsReq),
12668 &pSendBuffer, &usDataOffset, &usSendSize))||
12669 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12670 {
12671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12672 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12673 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012676 }
12677
12678 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12679 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12680 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12681 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12682 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12683 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12684
Jeff Johnsone7245742012-09-05 17:12:55 -070012685 wpalMemoryCopy( pSendBuffer+usDataOffset,
12686 &uapsdAcParamsReq,
12687 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012688
12689 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012691
12692 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012693 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012694 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012695 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12696 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012697}/*WDI_ProcessSetUapsdAcParamsReq*/
12698
12699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012700 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012702
12703 @param pWDICtx: pointer to the WLAN DAL context
12704 pEventData: pointer to the event information structure
12705
Jeff Johnson295189b2012-06-20 16:38:30 -070012706 @see
12707 @return Result of the function call
12708*/
12709WDI_Status
12710WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012711(
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 WDI_ControlBlockType* pWDICtx,
12713 WDI_EventInfoType* pEventData
12714)
12715{
12716 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12717 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012718 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012719 wpt_uint16 usDataOffset = 0;
12720 wpt_uint16 usSendSize = 0;
12721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12722
12723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012725 -------------------------------------------------------------------------*/
12726 if (( NULL == pEventData ) ||
12727 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12728 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12729 {
12730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 }
12735
12736 /*-----------------------------------------------------------------------
12737 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012738 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012739 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012740 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012741 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12742 &pSendBuffer, &usDataOffset, &usSendSize))||
12743 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12744 {
12745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12746 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12747 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12748 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012749 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012750 }
12751
Jeff Johnsone7245742012-09-05 17:12:55 -070012752 wpalMemoryCopy( pSendBuffer+usDataOffset,
12753 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12754 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012755
12756 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012758
12759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012760 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012761 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12763 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012764}/*WDI_ProcessUpdateUapsdParamsReq*/
12765
12766/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012767 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012768 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012769
12770 @param pWDICtx: pointer to the WLAN DAL context
12771 pEventData: pointer to the event information structure
12772
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 @see
12774 @return Result of the function call
12775*/
12776WDI_Status
12777WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012778(
Jeff Johnson295189b2012-06-20 16:38:30 -070012779 WDI_ControlBlockType* pWDICtx,
12780 WDI_EventInfoType* pEventData
12781)
12782{
12783 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12784 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012785 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012786 wpt_uint16 usDataOffset = 0;
12787 wpt_uint16 usSendSize = 0;
12788 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12789
12790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12791
12792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012793 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 -------------------------------------------------------------------------*/
12795 if (( NULL == pEventData ) ||
12796 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12797 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12798 {
12799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012800 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 }
12804
12805 /*-----------------------------------------------------------------------
12806 Get message buffer
12807 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012808 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012809 sizeof(halRxpFilterParams),
12810 &pSendBuffer, &usDataOffset, &usSendSize))||
12811 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12812 {
12813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12814 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12815 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012818 }
12819
Jeff Johnsone7245742012-09-05 17:12:55 -070012820 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012821 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012822 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012823 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12824
Jeff Johnsone7245742012-09-05 17:12:55 -070012825 wpalMemoryCopy( pSendBuffer+usDataOffset,
12826 &halRxpFilterParams,
12827 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012828
12829 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012830 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012831
12832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012833 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12836 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012837}/*WDI_ProcessConfigureRxpFilterReq*/
12838
12839/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012840 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012841 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012842
12843 @param pWDICtx: pointer to the WLAN DAL context
12844 pEventData: pointer to the event information structure
12845
Jeff Johnson295189b2012-06-20 16:38:30 -070012846 @see
12847 @return Result of the function call
12848*/
12849WDI_Status
12850WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012851(
Jeff Johnson295189b2012-06-20 16:38:30 -070012852 WDI_ControlBlockType* pWDICtx,
12853 WDI_EventInfoType* pEventData
12854)
12855{
12856 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12857 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012858 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 wpt_uint16 usDataOffset = 0;
12860 wpt_uint16 usSendSize = 0;
12861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12862
12863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 -------------------------------------------------------------------------*/
12866 if (( NULL == pEventData ) ||
12867 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12868 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12869 {
12870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012874 }
12875
12876 /*-----------------------------------------------------------------------
12877 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12882 &pSendBuffer, &usDataOffset, &usSendSize))||
12883 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12884 {
12885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12886 "Unable to get send buffer in Set beacon filter req %x %x %x",
12887 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12888 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 }
12891
Jeff Johnsone7245742012-09-05 17:12:55 -070012892 wpalMemoryCopy( pSendBuffer+usDataOffset,
12893 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12894 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12895 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12896 &pwdiBeaconFilterParams->aFilters[0],
12897 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012898
12899 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012901
12902 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12906 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012907}/*WDI_ProcessSetBeaconFilterReq*/
12908
12909/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012910 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012912
12913 @param pWDICtx: pointer to the WLAN DAL context
12914 pEventData: pointer to the event information structure
12915
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 @see
12917 @return Result of the function call
12918*/
12919WDI_Status
12920WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012921(
Jeff Johnson295189b2012-06-20 16:38:30 -070012922 WDI_ControlBlockType* pWDICtx,
12923 WDI_EventInfoType* pEventData
12924)
12925{
12926 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12927 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012928 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 wpt_uint16 usDataOffset = 0;
12930 wpt_uint16 usSendSize = 0;
12931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12932
12933 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012934 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012935 -------------------------------------------------------------------------*/
12936 if (( NULL == pEventData ) ||
12937 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12938 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12939 {
12940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012944 }
12945
12946 /*-----------------------------------------------------------------------
12947 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012948 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012949 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012950 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012951 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12952 &pSendBuffer, &usDataOffset, &usSendSize))||
12953 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12954 {
12955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12956 "Unable to get send buffer in remove beacon filter req %x %x %x",
12957 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012960 }
12961
Jeff Johnsone7245742012-09-05 17:12:55 -070012962 wpalMemoryCopy( pSendBuffer+usDataOffset,
12963 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12964 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012965
12966 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012967 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012968
12969 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012970 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012971 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012972 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12973 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012974}
12975
12976/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012977 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012978 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012979
12980 @param pWDICtx: pointer to the WLAN DAL context
12981 pEventData: pointer to the event information structure
12982
Jeff Johnson295189b2012-06-20 16:38:30 -070012983 @see
12984 @return Result of the function call
12985*/
12986WDI_Status
12987WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012988(
Jeff Johnson295189b2012-06-20 16:38:30 -070012989 WDI_ControlBlockType* pWDICtx,
12990 WDI_EventInfoType* pEventData
12991)
12992{
12993 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12994 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012995 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 wpt_uint16 usDataOffset = 0;
12997 wpt_uint16 usSendSize = 0;
12998 tHalRSSIThresholds rssiThresholdsReq;
12999 WDI_Status ret_status = 0;
13000 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13001
13002 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013003 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013004 -------------------------------------------------------------------------*/
13005 if (( NULL == pEventData ) ||
13006 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13007 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13008 {
13009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013010 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013013 }
13014
13015 /*-----------------------------------------------------------------------
13016 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013017 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013018 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013019 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013020 sizeof(rssiThresholdsReq),
13021 &pSendBuffer, &usDataOffset, &usSendSize))||
13022 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13023 {
13024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13025 "Unable to get send buffer in remove beacon filter req %x %x %x",
13026 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13027 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013028 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013029 }
13030
Jeff Johnsone7245742012-09-05 17:12:55 -070013031 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013032 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013033 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013034 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013036 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013037 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013038 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013039 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013040 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013042 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013043 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013044 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013045 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013046 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013048 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13051
Jeff Johnsone7245742012-09-05 17:12:55 -070013052 wpalMemoryCopy( pSendBuffer+usDataOffset,
13053 &rssiThresholdsReq,
13054 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013055
13056 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013057 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013058
13059 /*-------------------------------------------------------------------------
13060 Send Set threshold req to HAL
13061 -------------------------------------------------------------------------*/
13062 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13063 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13064 {
13065 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13066 // req. Then as a result of processing the threshold cross ind, we trigger
13067 // a Set threshold req, then we need to indicate to WDI that it needs to
13068 // go to busy state as a result of the indication as we sent a req in the
13069 // same WDI context.
13070 // Hence expected state transition is to busy.
13071 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13072 }
13073
13074 return ret_status;
13075}
13076
13077/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013078 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013079 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013080
13081 @param pWDICtx: pointer to the WLAN DAL context
13082 pEventData: pointer to the event information structure
13083
Jeff Johnson295189b2012-06-20 16:38:30 -070013084 @see
13085 @return Result of the function call
13086*/
13087WDI_Status
13088WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013089(
Jeff Johnson295189b2012-06-20 16:38:30 -070013090 WDI_ControlBlockType* pWDICtx,
13091 WDI_EventInfoType* pEventData
13092)
13093{
13094 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13095 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013096 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013097 wpt_uint16 usDataOffset = 0;
13098 wpt_uint16 usSendSize = 0;
13099 tHalHostOffloadReq hostOffloadParams;
13100 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013101 wpt_uint8 ucCurrentBSSSesIdx = 0;
13102 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013103
13104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13105
13106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013108 -------------------------------------------------------------------------*/
13109 if (( NULL == pEventData ) ||
13110 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13111 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13112 {
13113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013114 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013115 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013116 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013117 }
13118
13119 /*-----------------------------------------------------------------------
13120 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013121 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013123 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013124 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13125 &pSendBuffer, &usDataOffset, &usSendSize))||
13126 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13127 {
13128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13129 "Unable to get send buffer in host offload req %x %x %x",
13130 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13131 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013132 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013133 }
13134
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013135 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13136 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13137 &pBSSSes);
13138 if ( NULL == pBSSSes )
13139 {
13140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013141 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013142 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013143 }
13144
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13146 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013147
Jeff Johnson295189b2012-06-20 16:38:30 -070013148 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13149 {
13150 // ARP Offload
13151 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13152 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13153 4);
13154 }
13155 else
13156 {
13157 // NS Offload
13158 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13159 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13160 16);
13161
13162#ifdef WLAN_NS_OFFLOAD
13163 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13164 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13165 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13166 16);
13167 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13168 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13169 16);
13170 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13171 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13172 16);
13173 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13174 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13175 16);
13176 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13177 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13178 6);
13179 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13180 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13181 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070013182
Jeff Johnson295189b2012-06-20 16:38:30 -070013183#endif // WLAN_NS_OFFLOAD
13184 }
13185
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013186 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13187
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 // copy hostOffloadParams into pSendBuffer
13189 wpalMemoryCopy( pSendBuffer+usDataOffset,
13190 &hostOffloadParams,
13191 sizeof(hostOffloadParams));
13192
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013193 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013194 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013195 // copy nsOffloadParams into pSendBuffer
13196 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 &nsOffloadParams,
13198 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013199 }
13200 else
13201 {
13202#ifdef WLAN_NS_OFFLOAD
13203 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13204 {
13205 // copy nsOffloadParams into pSendBuffer
13206 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13207 &nsOffloadParams,
13208 sizeof(nsOffloadParams));
13209 }
13210#endif
13211 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013212
13213 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013215
13216 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13220 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013221
13222fail:
13223 // Release the message buffer so we don't leak
13224 wpalMemoryFree(pSendBuffer);
13225
13226failRequest:
13227 //WDA should have failure check to avoid the memory leak
13228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013229}/*WDI_ProcessHostOffloadReq*/
13230
13231/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013232 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013234
13235 @param pWDICtx: pointer to the WLAN DAL context
13236 pEventData: pointer to the event information structure
13237
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 @see
13239 @return Result of the function call
13240*/
13241WDI_Status
13242WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013243(
Jeff Johnson295189b2012-06-20 16:38:30 -070013244 WDI_ControlBlockType* pWDICtx,
13245 WDI_EventInfoType* pEventData
13246)
13247{
13248 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13249 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013250 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013251 wpt_uint16 usDataOffset = 0;
13252 wpt_uint16 usSendSize = 0;
13253 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013254 wpt_uint8 ucCurrentBSSSesIdx = 0;
13255 WDI_BSSSessionType* pBSSSes = NULL;
13256
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13258
13259 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013261 -------------------------------------------------------------------------*/
13262 if (( NULL == pEventData ) ||
13263 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13264 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13265 {
13266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13267 "Invalid parameters in Keep Alive req");
13268 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013269 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 }
13271
13272 /*-----------------------------------------------------------------------
13273 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 sizeof(keepAliveReq),
13278 &pSendBuffer, &usDataOffset, &usSendSize))||
13279 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13280 {
13281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13282 "Unable to get send buffer in keep alive req %x %x %x",
13283 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13284 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013285 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 }
13287
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013288 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13289 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13290 &pBSSSes);
13291 if ( NULL == pBSSSes )
13292 {
13293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013294 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013295 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013296 }
13297
Jeff Johnson295189b2012-06-20 16:38:30 -070013298 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13299 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13300
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013301 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013302
Jeff Johnson295189b2012-06-20 16:38:30 -070013303 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13304 {
13305 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13306 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13307 HAL_IPV4_ADDR_LEN);
13308 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13309 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013310 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013311 wpalMemoryCopy(keepAliveReq.destMacAddr,
13312 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13313 HAL_MAC_ADDR_LEN);
13314 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013315
13316 wpalMemoryCopy( pSendBuffer+usDataOffset,
13317 &keepAliveReq,
13318 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013319
13320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13321 "Process keep alive req %d",sizeof(keepAliveReq));
13322
13323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13324 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13325
13326 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013327 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013328
13329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13330 "Sending keep alive req to HAL");
13331
13332 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013334 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013335 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13336 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013337
13338fail:
13339 // Release the message buffer so we don't leak
13340 wpalMemoryFree(pSendBuffer);
13341
13342failRequest:
13343 //WDA should have failure check to avoid the memory leak
13344 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013345}/*WDI_ProcessKeepAliveReq*/
13346
13347
13348/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013349 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013350 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013351
13352 @param pWDICtx: pointer to the WLAN DAL context
13353 pEventData: pointer to the event information structure
13354
Jeff Johnson295189b2012-06-20 16:38:30 -070013355 @see
13356 @return Result of the function call
13357*/
13358WDI_Status
13359WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013360(
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 WDI_ControlBlockType* pWDICtx,
13362 WDI_EventInfoType* pEventData
13363)
13364{
13365 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13366 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013367 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013368 wpt_uint16 usDataOffset = 0;
13369 wpt_uint16 usSendSize = 0;
13370 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013371 wpt_uint8 ucCurrentBSSSesIdx = 0;
13372 WDI_BSSSessionType* pBSSSes = NULL;
13373
Jeff Johnson295189b2012-06-20 16:38:30 -070013374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13375
13376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 -------------------------------------------------------------------------*/
13379 if (( NULL == pEventData ) ||
13380 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13381 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13382 {
13383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013386 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013387 }
13388
13389 /*-----------------------------------------------------------------------
13390 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013391 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013392 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013393 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013394 sizeof(wowlAddBcPtrnReq),
13395 &pSendBuffer, &usDataOffset, &usSendSize))||
13396 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13397 {
13398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13399 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13400 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13401 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013402 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 }
13404
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013405 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13406 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13407 &pBSSSes);
13408 if ( NULL == pBSSSes )
13409 {
13410 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013411 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013412 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013413 }
13414
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013417 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013418 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013419 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013420 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13423
13424 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13425 {
13426 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13427 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13428 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13429 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13430 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13431 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13432 }
13433 else
13434 {
13435 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13436 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13437 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13438 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13439 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13440 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13441
13442 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13443 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13444 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13445 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13446 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13447 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13448 }
13449
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013450 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13451
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 wpalMemoryCopy( pSendBuffer+usDataOffset,
13453 &wowlAddBcPtrnReq,
13454 sizeof(wowlAddBcPtrnReq));
13455
13456 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013457 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013458
13459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013460 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13463 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013464fail:
13465 // Release the message buffer so we don't leak
13466 wpalMemoryFree(pSendBuffer);
13467
13468failRequest:
13469 //WDA should have failure check to avoid the memory leak
13470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013471}/*WDI_ProcessWowlAddBcPtrnReq*/
13472
13473/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013476
13477 @param pWDICtx: pointer to the WLAN DAL context
13478 pEventData: pointer to the event information structure
13479
Jeff Johnson295189b2012-06-20 16:38:30 -070013480 @see
13481 @return Result of the function call
13482*/
13483WDI_Status
13484WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013485(
Jeff Johnson295189b2012-06-20 16:38:30 -070013486 WDI_ControlBlockType* pWDICtx,
13487 WDI_EventInfoType* pEventData
13488)
13489{
13490 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13491 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 wpt_uint16 usDataOffset = 0;
13494 wpt_uint16 usSendSize = 0;
13495 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013496 wpt_uint8 ucCurrentBSSSesIdx = 0;
13497 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13499
13500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013502 -------------------------------------------------------------------------*/
13503 if (( NULL == pEventData ) ||
13504 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13505 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13506 {
13507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013509 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013510 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013511 }
13512
13513 /*-----------------------------------------------------------------------
13514 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013515 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013517 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 sizeof(wowlDelBcPtrnReq),
13519 &pSendBuffer, &usDataOffset, &usSendSize))||
13520 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13521 {
13522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13523 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13524 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13525 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013526 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013527 }
13528
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013529 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13530 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13531 &pBSSSes);
13532 if ( NULL == pBSSSes )
13533 {
13534 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013535 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013536 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013537 }
13538
Jeff Johnsone7245742012-09-05 17:12:55 -070013539 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013540 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013541
13542 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13543
Jeff Johnsone7245742012-09-05 17:12:55 -070013544 wpalMemoryCopy( pSendBuffer+usDataOffset,
13545 &wowlDelBcPtrnReq,
13546 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013547
13548 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013549 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013550
13551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013552 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013553 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013554 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13555 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013556
13557fail:
13558 // Release the message buffer so we don't leak
13559 wpalMemoryFree(pSendBuffer);
13560
13561failRequest:
13562 //WDA should have failure check to avoid the memory leak
13563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013564}/*WDI_ProcessWowlDelBcPtrnReq*/
13565
13566/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013567 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013568 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013569
13570 @param pWDICtx: pointer to the WLAN DAL context
13571 pEventData: pointer to the event information structure
13572
Jeff Johnson295189b2012-06-20 16:38:30 -070013573 @see
13574 @return Result of the function call
13575*/
13576WDI_Status
13577WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013578(
Jeff Johnson295189b2012-06-20 16:38:30 -070013579 WDI_ControlBlockType* pWDICtx,
13580 WDI_EventInfoType* pEventData
13581)
13582{
13583 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13584 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013585 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013586 wpt_uint16 usDataOffset = 0;
13587 wpt_uint16 usSendSize = 0;
13588 tHalWowlEnterParams wowlEnterReq;
13589 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13590
13591 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013592 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013593 -------------------------------------------------------------------------*/
13594 if (( NULL == pEventData ) ||
13595 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13596 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13597 {
13598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013602 }
13603
13604 /*-----------------------------------------------------------------------
13605 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013606 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013607 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013608 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013609 sizeof(wowlEnterReq),
13610 &pSendBuffer, &usDataOffset, &usSendSize))||
13611 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13612 {
13613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13614 "Unable to get send buffer in Wowl enter req %x %x %x",
13615 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13616 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 }
13619
Jeff Johnsone7245742012-09-05 17:12:55 -070013620 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013621 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013622 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013623 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013624 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013625 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013626 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013627 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013628 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013629 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013631 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013633 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013634 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013635 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13636
13637#ifdef WLAN_WAKEUP_EVENTS
13638 wowlEnterReq.ucWoWEAPIDRequestEnable =
13639 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13640
13641 wowlEnterReq.ucWoWEAPOL4WayEnable =
13642 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13643
13644 wowlEnterReq.ucWowNetScanOffloadMatch =
13645 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13646
13647 wowlEnterReq.ucWowGTKRekeyError =
13648 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13649
13650 wowlEnterReq.ucWoWBSSConnLoss =
13651 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13652#endif // WLAN_WAKEUP_EVENTS
13653
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013654 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13655
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13657 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13658 sizeof(tSirMacAddr));
13659
Jeff Johnsone7245742012-09-05 17:12:55 -070013660 wpalMemoryCopy( pSendBuffer+usDataOffset,
13661 &wowlEnterReq,
13662 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013663
13664 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013665 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013666
13667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013668 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013669 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13671 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013672}/*WDI_ProcessWowlEnterReq*/
13673
13674/**
13675 @brief Process Wowl exit Request function (called when Main FSM
13676 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013677
13678 @param pWDICtx: pointer to the WLAN DAL context
13679 pEventData: pointer to the event information structure
13680
Jeff Johnson295189b2012-06-20 16:38:30 -070013681 @see
13682 @return Result of the function call
13683*/
13684WDI_Status
13685WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013686(
Jeff Johnson295189b2012-06-20 16:38:30 -070013687 WDI_ControlBlockType* pWDICtx,
13688 WDI_EventInfoType* pEventData
13689)
13690{
13691 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013692 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013693 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013694 wpt_uint16 usDataOffset = 0;
13695 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013696 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13698
13699 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013700 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 -------------------------------------------------------------------------*/
13702 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013703 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013704 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13705 {
13706 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013707 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013708 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013710 }
13711
13712 /*-----------------------------------------------------------------------
13713 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013717 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013718 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013719 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 {
13721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13722 "Unable to get send buffer in Wowl Exit req %x %x",
13723 pEventData, wdiWowlExitCb);
13724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 }
13727
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013728 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13729
13730 wpalMemoryCopy( pSendBuffer+usDataOffset,
13731 &wowlExitparams,
13732 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013734 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013736 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13737 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013738}/*WDI_ProcessWowlExitReq*/
13739
13740/**
13741 @brief Process Configure Apps Cpu Wakeup State Request function
13742 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013743
13744 @param pWDICtx: pointer to the WLAN DAL context
13745 pEventData: pointer to the event information structure
13746
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 @see
13748 @return Result of the function call
13749*/
13750WDI_Status
13751WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013752(
Jeff Johnson295189b2012-06-20 16:38:30 -070013753 WDI_ControlBlockType* pWDICtx,
13754 WDI_EventInfoType* pEventData
13755)
13756{
13757 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13758 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013759 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013760 wpt_uint16 usDataOffset = 0;
13761 wpt_uint16 usSendSize = 0;
13762 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13764
13765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 -------------------------------------------------------------------------*/
13768 if (( NULL == pEventData ) ||
13769 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13770 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13771 {
13772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013773 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013774 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013775 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013776 }
13777
13778 /*-----------------------------------------------------------------------
13779 Get message buffer
13780 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 sizeof(halCfgAppsCpuWakeupStateReqParams),
13783 &pSendBuffer, &usDataOffset, &usSendSize))||
13784 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13785 {
13786 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13787 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13788 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013791 }
13792
Jeff Johnsone7245742012-09-05 17:12:55 -070013793 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013794 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13795
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 wpalMemoryCopy( pSendBuffer+usDataOffset,
13797 &halCfgAppsCpuWakeupStateReqParams,
13798 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013799
13800 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013801 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013802
13803 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013804 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013805 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013806 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13807 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13808 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013809}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13810
13811#ifdef WLAN_FEATURE_VOWIFI_11R
13812/**
13813 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13814 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013815
13816 @param pWDICtx: pointer to the WLAN DAL context
13817 pEventData: pointer to the event information structure
13818
Jeff Johnson295189b2012-06-20 16:38:30 -070013819 @see
13820 @return Result of the function call
13821*/
13822WDI_Status
13823WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013824(
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 WDI_ControlBlockType* pWDICtx,
13826 WDI_EventInfoType* pEventData
13827)
13828{
13829 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13830 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013831 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 wpt_uint16 usDataOffset = 0;
13835 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013836 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 wpt_macAddr macBSSID;
13838 tAggrAddTsReq halAggrAddTsReq;
13839 int i;
13840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13841
13842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 -------------------------------------------------------------------------*/
13845 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13846 ( NULL == pEventData->pCBfnc ))
13847 {
13848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013849 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013852 }
13853 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13854 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13855 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13856 /*-------------------------------------------------------------------------
13857 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013858 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013859 -------------------------------------------------------------------------*/
13860 wpalMutexAcquire(&pWDICtx->wptMutex);
13861
13862 /*------------------------------------------------------------------------
13863 Find the BSS for which the request is made and identify WDI session
13864 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013865 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13866 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013867 &macBSSID))
13868 {
13869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13870 "This station does not exist in the WDI Station Table %d");
13871 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013873 }
13874
Jeff Johnsone7245742012-09-05 17:12:55 -070013875 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13876 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013877 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13879 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13880 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013881
13882 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013883 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013884 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013885
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 /*------------------------------------------------------------------------
13887 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013888 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 ------------------------------------------------------------------------*/
13890 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13891 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13893 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13894 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013895
Jeff Johnsone7245742012-09-05 17:12:55 -070013896 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013898 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013899 }
13900
13901 wpalMutexRelease(&pWDICtx->wptMutex);
13902 /*-----------------------------------------------------------------------
13903 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013904 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013905 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013906 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013907 sizeof(tAggrAddTsParams),
13908 &pSendBuffer, &usDataOffset, &usSendSize))||
13909 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13910 {
13911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13912 "Unable to get send buffer in set bss key req %x %x %x",
13913 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013916 }
13917
Jeff Johnsone7245742012-09-05 17:12:55 -070013918 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013919 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013920 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013921 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13922
13923 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13924 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013925 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013926 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013927 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013928 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013929 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13931 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013932 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13934 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013935 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013936 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13937 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013938 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013939 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13940 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013941 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013942 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13943 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13946 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013947 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013948 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13949 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013950 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013951 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13952 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013953 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013955 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013956 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013957
13958
13959 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013960 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013961 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013962 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013967 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013968 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013970 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013971 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013973 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013974 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013975 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013976 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013977 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013978 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013983 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013984 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013985 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013986 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013987 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13989 }
13990
Jeff Johnsone7245742012-09-05 17:12:55 -070013991 wpalMemoryCopy( pSendBuffer+usDataOffset,
13992 &halAggrAddTsReq,
13993 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013994
13995 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013997
13998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014002 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014004}/*WDI_ProcessAggrAddTSpecReq*/
14005#endif /* WLAN_FEATURE_VOWIFI_11R */
14006
14007/**
14008 @brief Process Shutdown Request function (called when Main FSM
14009 allows it)
14010
14011 @param pWDICtx: pointer to the WLAN DAL context
14012 pEventData: pointer to the event information structure
14013
14014 @see
14015 @return Result of the function call
14016*/
14017WDI_Status
14018WDI_ProcessShutdownReq
14019(
14020 WDI_ControlBlockType* pWDICtx,
14021 WDI_EventInfoType* pEventData
14022 )
14023{
14024 wpt_status wptStatus;
14025
14026
14027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14028
14029 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014030 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 -------------------------------------------------------------------------*/
14032 if ( NULL == pEventData )
14033 {
14034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014036 WDI_ASSERT(0);
14037 return WDI_STATUS_E_FAILURE;
14038 }
14039
14040 wpalMutexAcquire(&pWDICtx->wptMutex);
14041
14042
14043 gWDIInitialized = eWLAN_PAL_FALSE;
14044 /*! TO DO: stop the data services */
14045 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14046 {
14047 /*Stop the STA Table !UT- check this logic again
14048 It is safer to do it here than on the response - because a stop is imminent*/
14049 WDI_STATableStop(pWDICtx);
14050
14051 /* Stop Transport Driver, DXE */
14052 WDTS_Stop(pWDICtx);
14053 }
14054
14055 /*Clear all pending request*/
14056 WDI_ClearPendingRequests(pWDICtx);
14057 /* Close Data transport*/
14058 /* FTM mode does not open Data Path */
14059 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14060 {
14061 WDTS_Close(pWDICtx);
14062 }
14063 /*Close the STA Table !UT- check this logic again*/
14064 WDI_STATableClose(pWDICtx);
14065 /*close the PAL */
14066 wptStatus = wpalClose(pWDICtx->pPALContext);
14067 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14068 {
14069 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14070 "Failed to wpal Close %d", wptStatus);
14071 WDI_ASSERT(0);
14072 }
14073
14074 /*Transition back to init state*/
14075 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14076
14077 wpalMutexRelease(&pWDICtx->wptMutex);
14078
14079 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014080 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014081
14082
Jeff Johnsone7245742012-09-05 17:12:55 -070014083 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014084}/*WDI_ProcessShutdownReq*/
14085
14086/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014087 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014088========================================================================*/
14089
14090/**
14091 @brief Process Start Response function (called when a response
14092 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014093
14094 @param pWDICtx: pointer to the WLAN DAL context
14095 pEventData: pointer to the event information structure
14096
Jeff Johnson295189b2012-06-20 16:38:30 -070014097 @see
14098 @return Result of the function call
14099*/
14100WDI_Status
14101WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014102(
Jeff Johnson295189b2012-06-20 16:38:30 -070014103 WDI_ControlBlockType* pWDICtx,
14104 WDI_EventInfoType* pEventData
14105)
14106{
14107 WDI_StartRspParamsType wdiRspParams;
14108 WDI_StartRspCb wdiStartRspCb = NULL;
14109
14110 tHalMacStartRspParams* startRspParams;
14111
14112#ifndef HAL_SELF_STA_PER_BSS
14113 WDI_AddStaParams wdiAddSTAParam = {0};
14114#endif
14115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14116
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 -------------------------------------------------------------------------*/
14121 if (( NULL == pEventData ) ||
14122 ( NULL == pEventData->pEventData) ||
14123 ( NULL == wdiStartRspCb ))
14124 {
14125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014129 }
14130
14131 /*-------------------------------------------------------------------------
14132 Extract response and send it to UMAC
14133 -------------------------------------------------------------------------*/
14134 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14135 {
14136 // not enough data was received
14137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14138 "Invalid response length in Start Resp Expect %x Rcvd %x",
14139 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14140 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 }
14143
14144 /*-------------------------------------------------------------------------
14145 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014146 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014147 -------------------------------------------------------------------------*/
14148 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14149
14150 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14151 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14152 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14153 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14154 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14155 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14156 wdiRspParams.wlanReportedVersion.major =
14157 startRspParams->wcnssWlanVersion.major;
14158 wdiRspParams.wlanReportedVersion.minor =
14159 startRspParams->wcnssWlanVersion.minor;
14160 wdiRspParams.wlanReportedVersion.version =
14161 startRspParams->wcnssWlanVersion.version;
14162 wdiRspParams.wlanReportedVersion.revision =
14163 startRspParams->wcnssWlanVersion.revision;
14164 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14165 startRspParams->wcnssCrmVersionString,
14166 sizeof(wdiRspParams.wcnssSoftwareVersion));
14167 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14168 startRspParams->wcnssWlanVersionString,
14169 sizeof(wdiRspParams.wcnssHardwareVersion));
14170 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14171
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014172 /*Save the HAL Version*/
14173 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14174
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 wpalMutexAcquire(&pWDICtx->wptMutex);
14176 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14177 {
14178 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14179
14180 /*Cache the start response for further use*/
14181 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014182 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014183 sizeof(pWDICtx->wdiCachedStartRspParams));
14184
14185 }
14186 else
14187 {
14188 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14189 "Failed to start device with status %s(%d)",
14190 WDI_getHALStatusMsgString(startRspParams->status),
14191 startRspParams->status);
14192
14193 /*Set the expected state transition to stopped - because the start has
14194 failed*/
14195 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14196
14197 wpalMutexRelease(&pWDICtx->wptMutex);
14198
14199 /*Notify UMAC*/
14200 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014201
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14203
14204 /*Although the response is an error - it was processed by our function
14205 so as far as the caller is concerned this is a succesful reponse processing*/
14206 return WDI_STATUS_SUCCESS;
14207 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014208
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 wpalMutexRelease(&pWDICtx->wptMutex);
14210
14211 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14212 {
14213 /* FTM mode does not need to execute below */
14214 /* Notify UMAC */
14215 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14216 return WDI_STATUS_SUCCESS;
14217 }
14218
14219 /* START the Data transport */
14220 WDTS_startTransport(pWDICtx);
14221
14222 /*Start the STA Table !- check this logic again*/
14223 WDI_STATableStart(pWDICtx);
14224
14225#ifndef HAL_SELF_STA_PER_BSS
14226 /* Store the Self STA Index */
14227 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14228
14229 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14230 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14231 WDI_MAC_ADDR_LEN);
14232
14233 /* At this point add the self-STA */
14234
14235 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14236 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14237 /*! TO DO: wdiAddSTAParam.dpuSig */
14238 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14239 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14240 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14241
14242 //all DPU indices are the same for self STA
14243 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14244 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014245 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014246 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14247 WDI_MAC_ADDR_LEN);
14248 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14249 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14250
14251 /* Note: Since we don't get an explicit config STA request for self STA, we
14252 add the self STA upon receiving the Start response message. But the
14253 self STA entry in the table is deleted when WDI gets an explicit delete STA
14254 request */
14255 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14256#endif
14257
14258 /*Notify UMAC*/
14259 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14260
Jeff Johnsone7245742012-09-05 17:12:55 -070014261 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014262}/*WDI_ProcessStartRsp*/
14263
14264
14265/**
14266 @brief Process Stop Response function (called when a response
14267 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014268
14269 @param pWDICtx: pointer to the WLAN DAL context
14270 pEventData: pointer to the event information structure
14271
Jeff Johnson295189b2012-06-20 16:38:30 -070014272 @see
14273 @return Result of the function call
14274*/
14275WDI_Status
14276WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014277(
Jeff Johnson295189b2012-06-20 16:38:30 -070014278 WDI_ControlBlockType* pWDICtx,
14279 WDI_EventInfoType* pEventData
14280)
14281{
14282 WDI_Status wdiStatus;
14283 WDI_StopRspCb wdiStopRspCb = NULL;
14284
Jeff Johnsone7245742012-09-05 17:12:55 -070014285 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14287
Jeff Johnsone7245742012-09-05 17:12:55 -070014288 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014291 -------------------------------------------------------------------------*/
14292 if (( NULL == pEventData ) ||
14293 ( NULL == pEventData->pEventData) ||
14294 ( NULL == wdiStopRspCb ))
14295 {
14296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 }
14301
14302 /*-------------------------------------------------------------------------
14303 Extract response and send it to UMAC
14304 -------------------------------------------------------------------------*/
14305 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14306 {
14307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14308 "Invalid response length in Stop Resp %x %x",
14309 pEventData->uEventDataSize);
14310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 }
14313
14314 /*-------------------------------------------------------------------------
14315 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014316 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014317 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014318 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14319 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 sizeof(halMacStopRspMsg.stopRspParams));
14321
Jeff Johnsone7245742012-09-05 17:12:55 -070014322 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014323
14324 wpalMutexAcquire(&pWDICtx->wptMutex);
14325
14326 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 --------------------------------------------------------------------------*/
14329 if ( WDI_STATUS_SUCCESS != wdiStatus )
14330 {
14331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14332 "Failed to stop the device with status %s (%d)",
14333 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14334 halMacStopRspMsg.stopRspParams.status);
14335
Jeff Johnsone7245742012-09-05 17:12:55 -070014336 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14337
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014341
Jeff Johnson295189b2012-06-20 16:38:30 -070014342 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14343
14344 /*Transition now as WDI may get preempted imediately after it sends
14345 up the Stop Response and it will not get to process the state transition
14346 from Main Rsp function*/
14347 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14348 wpalMutexRelease(&pWDICtx->wptMutex);
14349
14350 /*! TO DO: - STOP the Data transport */
14351
14352 /*Notify UMAC*/
14353 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14354
Jeff Johnsone7245742012-09-05 17:12:55 -070014355 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014356}/*WDI_ProcessStopRsp*/
14357
14358/**
14359 @brief Process Close Rsp function (called when a response
14360 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014361
14362 @param pWDICtx: pointer to the WLAN DAL context
14363 pEventData: pointer to the event information structure
14364
Jeff Johnson295189b2012-06-20 16:38:30 -070014365 @see
14366 @return Result of the function call
14367*/
14368WDI_Status
14369WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014370(
Jeff Johnson295189b2012-06-20 16:38:30 -070014371 WDI_ControlBlockType* pWDICtx,
14372 WDI_EventInfoType* pEventData
14373)
14374{
14375 /*There is no close response comming from HAL - function just kept for
14376 simmetry */
14377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014378 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014379}/*WDI_ProcessCloseRsp*/
14380
14381
14382/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014383 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014384============================================================================*/
14385
14386/**
14387 @brief Process Init Scan Rsp function (called when a response
14388 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014389
14390 @param pWDICtx: pointer to the WLAN DAL context
14391 pEventData: pointer to the event information structure
14392
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 @see
14394 @return Result of the function call
14395*/
14396WDI_Status
14397WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014398(
Jeff Johnson295189b2012-06-20 16:38:30 -070014399 WDI_ControlBlockType* pWDICtx,
14400 WDI_EventInfoType* pEventData
14401)
14402{
14403 WDI_Status wdiStatus;
14404 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014405 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014406 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14408
14409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014410 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 -------------------------------------------------------------------------*/
14412 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14413 ( NULL == pEventData->pEventData))
14414 {
14415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014416 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 }
14420
14421 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14422 if( NULL == wdiInitScanRspCb)
14423 {
14424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014425 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 }
14429
14430 /*-------------------------------------------------------------------------
14431 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014432 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014434 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14435 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 sizeof(halInitScanRspMsg.initScanRspParams));
14437
Jeff Johnsone7245742012-09-05 17:12:55 -070014438 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014439
14440 if ( pWDICtx->bInBmps )
14441 {
14442 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014443 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14444 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14445 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14446 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14447 WDI_ASSERT(0);
14448 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014449 }
14450
14451 /*Notify UMAC*/
14452 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14453
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014455}/*WDI_ProcessInitScanRsp*/
14456
14457
14458/**
14459 @brief Process Start Scan Rsp function (called when a response
14460 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014461
14462 @param pWDICtx: pointer to the WLAN DAL context
14463 pEventData: pointer to the event information structure
14464
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 @see
14466 @return Result of the function call
14467*/
14468WDI_Status
14469WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014470(
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 WDI_ControlBlockType* pWDICtx,
14472 WDI_EventInfoType* pEventData
14473)
14474{
14475 WDI_StartScanRspParamsType wdiStartScanParams;
14476 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014477
14478 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14480
14481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014482 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 -------------------------------------------------------------------------*/
14484 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14485 ( NULL == pEventData->pEventData))
14486 {
14487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014490 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 }
14492
14493 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14494 if( NULL == wdiStartScanRspCb)
14495 {
14496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014497 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014500 }
14501
14502 /*-------------------------------------------------------------------------
14503 Extract response and send it to UMAC
14504 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014505 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14506 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014507 sizeof(halStartScanRspMsg.startScanRspParams));
14508
14509 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14510 halStartScanRspMsg.startScanRspParams.status);
14511#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014512 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014513 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014514 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014515 halStartScanRspMsg.startScanRspParams.startTSF,
14516 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014517#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014518
14519 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14520 {
14521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14522 "Start scan failed with status %s (%d)",
14523 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14524 halStartScanRspMsg.startScanRspParams.status);
14525 /* send the status to UMAC, don't return from here*/
14526 }
14527
14528 /*Notify UMAC*/
14529 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14530
Jeff Johnsone7245742012-09-05 17:12:55 -070014531 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014532
14533}/*WDI_ProcessStartScanRsp*/
14534
14535
14536/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014537 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014538 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014539
14540 @param pWDICtx: pointer to the WLAN DAL context
14541 pEventData: pointer to the event information structure
14542
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 @see
14544 @return Result of the function call
14545*/
14546WDI_Status
14547WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014548(
Jeff Johnson295189b2012-06-20 16:38:30 -070014549 WDI_ControlBlockType* pWDICtx,
14550 WDI_EventInfoType* pEventData
14551)
14552{
14553 WDI_Status wdiStatus;
14554 tHalEndScanRspMsg halEndScanRspMsg;
14555 WDI_EndScanRspCb wdiEndScanRspCb;
14556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14557
14558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014560 -------------------------------------------------------------------------*/
14561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14562 ( NULL == pEventData->pEventData))
14563 {
14564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014568 }
14569
14570 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14571
14572 /*-------------------------------------------------------------------------
14573 Extract response and send it to UMAC
14574 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014575 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14576 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014577 sizeof(halEndScanRspMsg.endScanRspParams));
14578
Jeff Johnsone7245742012-09-05 17:12:55 -070014579 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014580
14581 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14582 {
14583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14584 "End Scan failed with status %s (%d )",
14585 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14586 halEndScanRspMsg.endScanRspParams.status);
14587 /* send the status to UMAC, don't return from here*/
14588 }
14589
14590 /*Notify UMAC*/
14591 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14592
Jeff Johnsone7245742012-09-05 17:12:55 -070014593 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014594}/*WDI_ProcessEndScanRsp*/
14595
14596
14597/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014598 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014600
14601 @param pWDICtx: pointer to the WLAN DAL context
14602 pEventData: pointer to the event information structure
14603
Jeff Johnson295189b2012-06-20 16:38:30 -070014604 @see
14605 @return Result of the function call
14606*/
14607WDI_Status
14608WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014609(
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 WDI_ControlBlockType* pWDICtx,
14611 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014612)
Jeff Johnson295189b2012-06-20 16:38:30 -070014613{
14614 WDI_Status wdiStatus;
14615 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014616
14617 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14619
14620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014622 -------------------------------------------------------------------------*/
14623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14624 ( NULL == pEventData->pEventData))
14625 {
14626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014630 }
14631
14632 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14633
14634 /*-------------------------------------------------------------------------
14635 Extract response and send it to UMAC
14636 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14638 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014639 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14640
Jeff Johnsone7245742012-09-05 17:12:55 -070014641 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014642
14643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014644 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 halFinishScanRspMsg.finishScanRspParams.status);
14646
14647 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14648 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14649 {
14650 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14651 "Finish Scan failed with status %s (%d)",
14652 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14653 halFinishScanRspMsg.finishScanRspParams.status);
14654 /* send the status to UMAC, don't return from here*/
14655 }
14656
14657 /*Notify UMAC*/
14658 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14659
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014661}/*WDI_ProcessFinishScanRsp*/
14662
14663/**
14664 @brief Process Join Response function (called when a response
14665 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014666
14667 @param pWDICtx: pointer to the WLAN DAL context
14668 pEventData: pointer to the event information structure
14669
Jeff Johnson295189b2012-06-20 16:38:30 -070014670 @see
14671 @return Result of the function call
14672*/
14673WDI_Status
14674WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014675(
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 WDI_ControlBlockType* pWDICtx,
14677 WDI_EventInfoType* pEventData
14678)
14679{
14680 WDI_Status wdiStatus;
14681 WDI_JoinRspCb wdiJoinRspCb;
14682 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014683
14684 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14686
14687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 -------------------------------------------------------------------------*/
14690 if (( NULL == pWDICtx ) ||
14691 ( NULL == pWDICtx->pfncRspCB ) ||
14692 ( NULL == pEventData ) ||
14693 ( NULL == pEventData->pEventData))
14694 {
14695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014696 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 }
14700
14701 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14702
14703 /*-------------------------------------------------------------------------
14704 Extract response and send it to UMAC
14705 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14707 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014708 sizeof(halJoinRspMsg.joinRspParams));
14709
Jeff Johnsone7245742012-09-05 17:12:55 -070014710 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014711
14712 wpalMutexAcquire(&pWDICtx->wptMutex);
14713
14714 /*-----------------------------------------------------------------------
14715 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014716 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014718 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014719 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14720 {
14721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14723 "association no longer in progress %d - mysterious HAL response",
14724 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014725
Jeff Johnsone7245742012-09-05 17:12:55 -070014726 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014727 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014729 }
14730
14731 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14732
14733 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014734 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 -----------------------------------------------------------------------*/
14736 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14737 {
14738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14739 "Join only allowed in Joining state - failure state is %d "
14740 "strange HAL response", pBSSSes->wdiAssocState);
14741
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14743
Jeff Johnson295189b2012-06-20 16:38:30 -070014744 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 }
14747
14748
14749 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 -----------------------------------------------------------------------*/
14752 if ( WDI_STATUS_SUCCESS != wdiStatus )
14753 {
14754 /*Association was failed by HAL - remove session*/
14755 WDI_DeleteSession(pWDICtx, pBSSSes);
14756
14757 /*Association no longer in progress */
14758 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14759
14760 /*Association no longer in progress - prepare pending assoc for processing*/
14761 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014762
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 }
14764 else
14765 {
14766 /*Transition to state Joining - this may be redundant as we are supposed
14767 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 }
14770
14771 wpalMutexRelease(&pWDICtx->wptMutex);
14772
14773 /*Notify UMAC*/
14774 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14775
Jeff Johnsone7245742012-09-05 17:12:55 -070014776 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014777}/*WDI_ProcessJoinRsp*/
14778
14779
14780/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014781 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014782 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014783
14784 @param pWDICtx: pointer to the WLAN DAL context
14785 pEventData: pointer to the event information structure
14786
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 @see
14788 @return Result of the function call
14789*/
14790WDI_Status
14791WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014792(
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 WDI_ControlBlockType* pWDICtx,
14794 WDI_EventInfoType* pEventData
14795)
14796{
14797 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14798 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014799 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 WDI_BSSSessionType* pBSSSes = NULL;
14801
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14804 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014805
Jeff Johnson295189b2012-06-20 16:38:30 -070014806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14807
14808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 -------------------------------------------------------------------------*/
14811 if (( NULL == pEventData ) ||
14812 ( NULL == pEventData->pEventData))
14813 {
14814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014815 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014816 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014817 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014818 }
14819
14820 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14821
14822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014823 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14826 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 sizeof(halConfigBssRspMsg.configBssRspParams));
14828
14829 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14830 halConfigBssRspMsg.configBssRspParams.status);
14831 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14832 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014833 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014834 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14835 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014836
Jeff Johnson295189b2012-06-20 16:38:30 -070014837 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014838
14839 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014840 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014841
14842 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014843 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014844
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014846
Jeff Johnson295189b2012-06-20 16:38:30 -070014847 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014849 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14850 #endif
14851 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14852 halConfigBssRspMsg.configBssRspParams.staMac,
14853 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014854
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 wpalMutexAcquire(&pWDICtx->wptMutex);
14856 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014859 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14860 wdiConfigBSSParams.macBSSID,
14861 &pBSSSes);
14862
Jeff Johnson295189b2012-06-20 16:38:30 -070014863 /*-----------------------------------------------------------------------
14864 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014865 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 -----------------------------------------------------------------------*/
14867 if ( NULL == pBSSSes )
14868 {
14869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14870 "Association sequence for this BSS does not yet exist "
14871 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014872
14873 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14874
Jeff Johnson295189b2012-06-20 16:38:30 -070014875 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014876 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014877 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014878
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 /*Save data for this BSS*/
14880 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14881 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014882 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014883 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014884 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014890 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014891 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14892 pBSSSes->bcastStaIdx =
14893 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014894
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014896
Jeff Johnson295189b2012-06-20 16:38:30 -070014897 /*-------------------------------------------------------------------------
14898 Add Peer STA
14899 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014900 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14902 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014903
Jeff Johnson295189b2012-06-20 16:38:30 -070014904 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014905 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 wdiAddSTAParam.ucHTCapable =
14908 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14909 wdiAddSTAParam.ucStaType =
14910 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14911
Jeff Johnson295189b2012-06-20 16:38:30 -070014912 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14914 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014916
14917 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14918 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14919 WDI_MAC_ADDR_LEN);
14920
Jeff Johnson295189b2012-06-20 16:38:30 -070014921 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014922 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014923 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014924 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014929 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014930 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014932 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014934
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14936 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014937
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14939 /*-------------------------------------------------------------------------
14940 Add Broadcast STA only in AP mode
14941 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014942 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014943 WDI_BSS_OPERATIONAL_MODE_AP )
14944 {
14945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14946 "Add BCAST STA to table for index: %d",
14947 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014948
14949 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014950 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014951
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14953 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14954 }
14955 wpalMutexRelease(&pWDICtx->wptMutex);
14956 }
14957 else
14958 {
14959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14960 "Config BSS RSP failed with status : %s(%d)",
14961 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014962 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 halConfigBssRspMsg.configBssRspParams.status);
14964
Jeff Johnsone7245742012-09-05 17:12:55 -070014965
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 /*Association was failed by HAL - remove session*/
14967 WDI_DeleteSession(pWDICtx, pBSSSes);
14968
14969 /*Association no longer in progress */
14970 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14971
14972 /*Association no longer in progress - prepare pending assoc for processing*/
14973 WDI_DequeueAssocRequest(pWDICtx);
14974
14975 }
14976
14977 /*Notify UMAC*/
14978 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14979
Jeff Johnsone7245742012-09-05 17:12:55 -070014980 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014981}/*WDI_ProcessConfigBSSRsp*/
14982
14983
14984/**
14985 @brief Process Del BSS Response function (called when a response
14986 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014987
14988 @param pWDICtx: pointer to the WLAN DAL context
14989 pEventData: pointer to the event information structure
14990
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 @see
14992 @return Result of the function call
14993*/
14994WDI_Status
14995WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014996(
Jeff Johnson295189b2012-06-20 16:38:30 -070014997 WDI_ControlBlockType* pWDICtx,
14998 WDI_EventInfoType* pEventData
14999)
15000{
15001 WDI_DelBSSRspParamsType wdiDelBSSParams;
15002 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015003 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015004 WDI_BSSSessionType* pBSSSes = NULL;
15005
Jeff Johnsone7245742012-09-05 17:12:55 -070015006 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15008
15009 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015010 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015011 -------------------------------------------------------------------------*/
15012 if (( NULL == pEventData ) ||
15013 ( NULL == pEventData->pEventData))
15014 {
15015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015016 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015018 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015019 }
15020
15021 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15022
15023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015024 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015025 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15027 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015028 sizeof(halDelBssRspMsg.deleteBssRspParams));
15029
15030
15031 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015032 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015033
15034 wpalMutexAcquire(&pWDICtx->wptMutex);
15035
15036 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015037 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015038 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15040 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15041 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015042
15043 /*-----------------------------------------------------------------------
15044 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015045 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015046 -----------------------------------------------------------------------*/
15047 if ( NULL == pBSSSes )
15048 {
15049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15050 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015051 "association no longer in progress - mysterious HAL response");
15052
15053 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15054
15055 wpalMutexRelease(&pWDICtx->wptMutex);
15056 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015057 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015058
15059 /*Extract BSSID for the response to UMAC*/
15060 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15061 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15062
15063 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15064
15065 /*-----------------------------------------------------------------------
15066 The current session will be deleted
15067 -----------------------------------------------------------------------*/
15068 WDI_DeleteSession(pWDICtx, pBSSSes);
15069
15070
15071 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15072 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015074 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015075 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015076
15077 /* Delete the STA's in this BSS */
15078 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15079
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 wpalMutexRelease(&pWDICtx->wptMutex);
15081
15082 /*Notify UMAC*/
15083 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15084
Jeff Johnsone7245742012-09-05 17:12:55 -070015085 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015086}/*WDI_ProcessDelBSSRsp*/
15087
15088/**
15089 @brief Process Post Assoc Rsp function (called when a response
15090 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015091
15092 @param pWDICtx: pointer to the WLAN DAL context
15093 pEventData: pointer to the event information structure
15094
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 @see
15096 @return Result of the function call
15097*/
15098WDI_Status
15099WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015100(
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 WDI_ControlBlockType* pWDICtx,
15102 WDI_EventInfoType* pEventData
15103)
15104{
15105 WDI_PostAssocRspParamsType wdiPostAssocParams;
15106 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015107 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015108 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015109 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15111
15112 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015113 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015114 -------------------------------------------------------------------------*/
15115 if (( NULL == pEventData ) ||
15116 ( NULL == pEventData->pEventData))
15117 {
15118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015119 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015120 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015121 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 }
15123
15124 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15125
15126 /*-------------------------------------------------------------------------
15127 Extract response and send it to UMAC
15128 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015129 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15130 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015131 sizeof(halPostAssocRspMsg.postAssocRspParams));
15132
15133 /*Extract the Post Assoc STA Params */
15134
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015136 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015137 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015138 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015139 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015140 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15141
Jeff Johnsone7245742012-09-05 17:12:55 -070015142 wdiPostAssocParams.wdiStatus =
15143 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015144
15145 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15146 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015147 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15148 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015149 WDI_MAC_ADDR_LEN);
15150
15151 /* Extract Post Assoc BSS Params */
15152
Jeff Johnsone7245742012-09-05 17:12:55 -070015153 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15154 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15155 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015156
15157 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15158 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015159 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15161 .macSTA, WDI_MAC_ADDR_LEN);
15162
Jeff Johnsone7245742012-09-05 17:12:55 -070015163 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015164 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15165
Jeff Johnsone7245742012-09-05 17:12:55 -070015166 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15168
15169 wdiPostAssocParams.bssParams.ucBSSIdx =
15170 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15171
Jeff Johnsone7245742012-09-05 17:12:55 -070015172 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15174
15175 wpalMutexAcquire(&pWDICtx->wptMutex);
15176
15177 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015182 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015183
15184 /*-----------------------------------------------------------------------
15185 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 -----------------------------------------------------------------------*/
15188 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15191 {
15192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15193 "Association sequence for this BSS does not yet exist or "
15194 "association no longer in progress - mysterious HAL response");
15195
Jeff Johnsone7245742012-09-05 17:12:55 -070015196 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15197
Jeff Johnson295189b2012-06-20 16:38:30 -070015198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015200 }
15201
15202 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 -----------------------------------------------------------------------*/
15205 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15206 {
15207 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15208 "Post Assoc not allowed before JOIN - failing request "
15209 "strange HAL response");
15210
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15212
Jeff Johnson295189b2012-06-20 16:38:30 -070015213 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015214 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015215 }
15216
15217 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015218 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015219 -----------------------------------------------------------------------*/
15220 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15221 {
15222 /*Association was failed by HAL - remove session*/
15223 WDI_DeleteSession(pWDICtx, pBSSSes);
15224 }
15225 else
15226 {
15227 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015228 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015229
15230 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015231 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015232 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015233 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015235 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015236 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015237 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015238 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15239
Jeff Johnsone7245742012-09-05 17:12:55 -070015240 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15242 }
15243
15244 /*Association no longer in progress */
15245 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15246
15247 /*Association no longer in progress - prepare pending assoc for processing*/
15248 WDI_DequeueAssocRequest(pWDICtx);
15249
15250 wpalMutexRelease(&pWDICtx->wptMutex);
15251
15252 /*Notify UMAC*/
15253 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15254
Jeff Johnsone7245742012-09-05 17:12:55 -070015255 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015256}/*WDI_ProcessPostAssocRsp*/
15257
15258/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015260 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015261
15262 @param pWDICtx: pointer to the WLAN DAL context
15263 pEventData: pointer to the event information structure
15264
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 @see
15266 @return Result of the function call
15267*/
15268WDI_Status
15269WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015270(
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 WDI_ControlBlockType* pWDICtx,
15272 WDI_EventInfoType* pEventData
15273)
15274{
15275 WDI_DelSTARspParamsType wdiDelSTARsp;
15276 WDI_DelSTARspCb wdiDelSTARspCb;
15277 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15280
15281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015283 -------------------------------------------------------------------------*/
15284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15285 ( NULL == pEventData->pEventData))
15286 {
15287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 }
15292
15293 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15294
15295 /*-------------------------------------------------------------------------
15296 Extract response and send it to UMAC
15297 -------------------------------------------------------------------------*/
15298 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 sizeof(halDelStaRspMsg.delStaRspParams));
15301
15302 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015303 wdiDelSTARsp.wdiStatus =
15304 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015305
15306 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15307
15308 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15309 if(staType == WDI_STA_ENTRY_SELF)
15310 {
15311 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15312
15313 /* At this point add the self-STA */
15314
15315 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15316 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15317 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15318
15319#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15320#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15321
15322 //all DPU indices are the same for self STA
15323 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15324 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15325 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15326 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15327 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15328 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015329
15330 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015331 }
15332 else
15333 {
15334 //Delete the station in the table
15335 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15336 }
15337
15338 /*Notify UMAC*/
15339 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15340
Jeff Johnsone7245742012-09-05 17:12:55 -070015341 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015342}/*WDI_ProcessDelSTARsp*/
15343
15344
15345/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015346 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015347==========================================================================*/
15348
15349/**
15350 @brief Process Set BSS Key Rsp function (called when a response
15351 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015352
15353 @param pWDICtx: pointer to the WLAN DAL context
15354 pEventData: pointer to the event information structure
15355
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 @see
15357 @return Result of the function call
15358*/
15359WDI_Status
15360WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015361(
Jeff Johnson295189b2012-06-20 16:38:30 -070015362 WDI_ControlBlockType* pWDICtx,
15363 WDI_EventInfoType* pEventData
15364)
15365{
15366 WDI_Status wdiStatus;
15367 eHalStatus halStatus;
15368 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15369 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15370
15371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015373 -------------------------------------------------------------------------*/
15374 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15375 ( NULL == pEventData->pEventData))
15376 {
15377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015378 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015381 }
15382
15383 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15384
15385 /*-------------------------------------------------------------------------
15386 Extract response and send it to UMAC
15387 -------------------------------------------------------------------------*/
15388 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015389 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015390
15391 if ( eHAL_STATUS_SUCCESS != halStatus )
15392 {
15393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15394 "Set BSS Key failed with status %s (%d)",
15395 WDI_getHALStatusMsgString(halStatus),
15396 halStatus);
15397 /* send the status to UMAC, don't return from here*/
15398 }
15399
15400 /*Notify UMAC*/
15401 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15402
Jeff Johnsone7245742012-09-05 17:12:55 -070015403 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015404}/*WDI_ProcessSetBssKeyRsp*/
15405
15406/**
15407 @brief Process Remove BSS Key Rsp function (called when a response
15408 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015409
15410 @param pWDICtx: pointer to the WLAN DAL context
15411 pEventData: pointer to the event information structure
15412
Jeff Johnson295189b2012-06-20 16:38:30 -070015413 @see
15414 @return Result of the function call
15415*/
15416WDI_Status
15417WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015418(
Jeff Johnson295189b2012-06-20 16:38:30 -070015419 WDI_ControlBlockType* pWDICtx,
15420 WDI_EventInfoType* pEventData
15421)
15422{
15423 WDI_Status wdiStatus;
15424 eHalStatus halStatus;
15425 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15427
15428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 -------------------------------------------------------------------------*/
15431 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15432 ( NULL == pEventData->pEventData))
15433 {
15434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015438 }
15439
15440 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15441
15442 /*-------------------------------------------------------------------------
15443 Extract response and send it to UMAC
15444 -------------------------------------------------------------------------*/
15445 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015446 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015447
15448 if ( eHAL_STATUS_SUCCESS != halStatus )
15449 {
15450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15451 "Remove BSS Key failed with status %s (%d )",
15452 WDI_getHALStatusMsgString(halStatus),
15453 halStatus);
15454 /* send the status to UMAC, don't return from here*/
15455 }
15456
15457 /*Notify UMAC*/
15458 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15459
Jeff Johnsone7245742012-09-05 17:12:55 -070015460 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015461}/*WDI_ProcessSetBssKeyRsp*/
15462
15463
15464/**
15465 @brief Process Set STA Key Rsp function (called when a response
15466 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015467
15468 @param pWDICtx: pointer to the WLAN DAL context
15469 pEventData: pointer to the event information structure
15470
Jeff Johnson295189b2012-06-20 16:38:30 -070015471 @see
15472 @return Result of the function call
15473*/
15474WDI_Status
15475WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015476(
Jeff Johnson295189b2012-06-20 16:38:30 -070015477 WDI_ControlBlockType* pWDICtx,
15478 WDI_EventInfoType* pEventData
15479)
15480{
15481 WDI_Status wdiStatus;
15482 eHalStatus halStatus;
15483 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15485
15486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015488 -------------------------------------------------------------------------*/
15489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15490 ( NULL == pEventData->pEventData))
15491 {
15492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015496 }
15497
15498 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15499
15500 /*-------------------------------------------------------------------------
15501 Extract response and send it to UMAC
15502 -------------------------------------------------------------------------*/
15503 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015505
15506 if ( eHAL_STATUS_SUCCESS != halStatus )
15507 {
15508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15509 "Set STA Key failed with status %s (%d)",
15510 WDI_getHALStatusMsgString(halStatus),
15511 halStatus);
15512 /* send the status to UMAC, don't return from here*/
15513 }
15514
15515 /*Notify UMAC*/
15516 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15517
Jeff Johnsone7245742012-09-05 17:12:55 -070015518 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015519}/*WDI_ProcessSetSTAKeyRsp*/
15520
15521/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015522 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015523 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015524
15525 @param pWDICtx: pointer to the WLAN DAL context
15526 pEventData: pointer to the event information structure
15527
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 @see
15529 @return Result of the function call
15530*/
15531WDI_Status
15532WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015533(
Jeff Johnson295189b2012-06-20 16:38:30 -070015534 WDI_ControlBlockType* pWDICtx,
15535 WDI_EventInfoType* pEventData
15536)
15537{
15538 WDI_Status wdiStatus;
15539 eHalStatus halStatus;
15540 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15542
15543 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015544 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015545 -------------------------------------------------------------------------*/
15546 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15547 ( NULL == pEventData->pEventData))
15548 {
15549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015550 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015553 }
15554
15555 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15556
15557 /*-------------------------------------------------------------------------
15558 Extract response and send it to UMAC
15559 -------------------------------------------------------------------------*/
15560 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015561 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015562
15563 if ( eHAL_STATUS_SUCCESS != halStatus )
15564 {
15565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15566 "Remove STA Key failed with status %s (%d)",
15567 WDI_getHALStatusMsgString(halStatus),
15568 halStatus);
15569 /* send the status to UMAC, don't return from here*/
15570 }
15571
15572 /*Notify UMAC*/
15573 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15574
Jeff Johnsone7245742012-09-05 17:12:55 -070015575 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015576}/*WDI_ProcessRemoveStaKeyRsp*/
15577
15578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015579 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015580 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015581
15582 @param pWDICtx: pointer to the WLAN DAL context
15583 pEventData: pointer to the event information structure
15584
Jeff Johnson295189b2012-06-20 16:38:30 -070015585 @see
15586 @return Result of the function call
15587*/
15588WDI_Status
15589WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015590(
Jeff Johnson295189b2012-06-20 16:38:30 -070015591 WDI_ControlBlockType* pWDICtx,
15592 WDI_EventInfoType* pEventData
15593)
15594{
15595 WDI_Status wdiStatus;
15596 eHalStatus halStatus;
15597 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15599
15600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015602 -------------------------------------------------------------------------*/
15603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15604 ( NULL == pEventData->pEventData))
15605 {
15606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015610 }
15611
15612 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15613
15614 /*-------------------------------------------------------------------------
15615 Extract response and send it to UMAC
15616 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015617 wpalMemoryCopy( &halStatus,
15618 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015619 sizeof(halStatus));
15620
Jeff Johnsone7245742012-09-05 17:12:55 -070015621 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015622
15623 if ( eHAL_STATUS_SUCCESS != halStatus )
15624 {
15625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15626 "Set STA Key failed with status %s (%d)",
15627 WDI_getHALStatusMsgString(halStatus),
15628 halStatus);
15629 /* send the status to UMAC, don't return from here*/
15630 }
15631
15632 /*Notify UMAC*/
15633 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15634
Jeff Johnsone7245742012-09-05 17:12:55 -070015635 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015636}/*WDI_ProcessSetSTABcastKeyRsp*/
15637
15638/**
15639 @brief Process Remove STA Bcast Key Rsp function (called when a
15640 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015641
15642 @param pWDICtx: pointer to the WLAN DAL context
15643 pEventData: pointer to the event information structure
15644
Jeff Johnson295189b2012-06-20 16:38:30 -070015645 @see
15646 @return Result of the function call
15647*/
15648WDI_Status
15649WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015650(
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 WDI_ControlBlockType* pWDICtx,
15652 WDI_EventInfoType* pEventData
15653)
15654{
15655 WDI_Status wdiStatus;
15656 eHalStatus halStatus;
15657 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15658 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15659
15660 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 -------------------------------------------------------------------------*/
15663 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15664 ( NULL == pEventData->pEventData))
15665 {
15666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015667 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015668 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015670 }
15671
15672 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15673
15674 /*-------------------------------------------------------------------------
15675 Extract response and send it to UMAC
15676 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015677 wpalMemoryCopy( &halStatus,
15678 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 sizeof(halStatus));
15680
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015682
15683 if ( eHAL_STATUS_SUCCESS != halStatus )
15684 {
15685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15686 "Remove STA Key failed with status %s (%d)",
15687 WDI_getHALStatusMsgString(halStatus),
15688 halStatus);
15689 /* send the status to UMAC, don't return from here*/
15690 }
15691
15692 /*Notify UMAC*/
15693 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15694
Jeff Johnsone7245742012-09-05 17:12:55 -070015695 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015696}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15697
15698
15699/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015700 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015701==========================================================================*/
15702
15703/**
15704 @brief Process Add TSpec Rsp function (called when a response
15705 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015706
15707 @param pWDICtx: pointer to the WLAN DAL context
15708 pEventData: pointer to the event information structure
15709
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 @see
15711 @return Result of the function call
15712*/
15713WDI_Status
15714WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015715(
Jeff Johnson295189b2012-06-20 16:38:30 -070015716 WDI_ControlBlockType* pWDICtx,
15717 WDI_EventInfoType* pEventData
15718)
15719{
15720 WDI_Status wdiStatus;
15721 eHalStatus halStatus;
15722 WDI_AddTsRspCb wdiAddTsRspCb;
15723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15724
15725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 -------------------------------------------------------------------------*/
15728 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15729 ( NULL == pEventData->pEventData))
15730 {
15731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015735 }
15736
15737 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15738
15739 /*-------------------------------------------------------------------------
15740 Extract response and send it to UMAC
15741 -------------------------------------------------------------------------*/
15742 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015744
15745 /*Notify UMAC*/
15746 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15747
Jeff Johnsone7245742012-09-05 17:12:55 -070015748 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015749}/*WDI_ProcessAddTSpecRsp*/
15750
15751
15752/**
15753 @brief Process Del TSpec Rsp function (called when a response
15754 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015755
15756 @param pWDICtx: pointer to the WLAN DAL context
15757 pEventData: pointer to the event information structure
15758
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 @see
15760 @return Result of the function call
15761*/
15762WDI_Status
15763WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015764(
Jeff Johnson295189b2012-06-20 16:38:30 -070015765 WDI_ControlBlockType* pWDICtx,
15766 WDI_EventInfoType* pEventData
15767)
15768{
15769 WDI_Status wdiStatus;
15770 eHalStatus halStatus;
15771 WDI_DelTsRspCb wdiDelTsRspCb;
15772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15773
15774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015776 -------------------------------------------------------------------------*/
15777 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15778 ( NULL == pEventData->pEventData))
15779 {
15780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 }
15785
15786 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15787
15788 /*-------------------------------------------------------------------------
15789 Extract response and send it to UMAC
15790 -------------------------------------------------------------------------*/
15791 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015793
15794 /*Notify UMAC*/
15795 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15796
Jeff Johnsone7245742012-09-05 17:12:55 -070015797 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015798}/*WDI_ProcessDelTSpecRsp*/
15799
15800/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015803
15804 @param pWDICtx: pointer to the WLAN DAL context
15805 pEventData: pointer to the event information structure
15806
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 @see
15808 @return Result of the function call
15809*/
15810WDI_Status
15811WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015812(
Jeff Johnson295189b2012-06-20 16:38:30 -070015813 WDI_ControlBlockType* pWDICtx,
15814 WDI_EventInfoType* pEventData
15815)
15816{
15817 WDI_Status wdiStatus;
15818 eHalStatus halStatus;
15819 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15821
15822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 -------------------------------------------------------------------------*/
15825 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15826 ( NULL == pEventData->pEventData))
15827 {
15828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 }
15833
15834 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15835
15836 /*-------------------------------------------------------------------------
15837 Extract response and send it to UMAC
15838 -------------------------------------------------------------------------*/
15839 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015840 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015841
15842 /*Notify UMAC*/
15843 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15844
Jeff Johnsone7245742012-09-05 17:12:55 -070015845 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015846}/*WDI_ProcessUpdateEDCAParamsRsp*/
15847
15848
15849/**
15850 @brief Process Add BA Rsp function (called when a response
15851 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015852
15853 @param pWDICtx: pointer to the WLAN DAL context
15854 pEventData: pointer to the event information structure
15855
Jeff Johnson295189b2012-06-20 16:38:30 -070015856 @see
15857 @return Result of the function call
15858*/
15859WDI_Status
15860WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015861(
Jeff Johnson295189b2012-06-20 16:38:30 -070015862 WDI_ControlBlockType* pWDICtx,
15863 WDI_EventInfoType* pEventData
15864)
15865{
15866 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15867
15868 tAddBASessionRspParams halBASessionRsp;
15869 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15870
Jeff Johnsone7245742012-09-05 17:12:55 -070015871
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15873
15874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015875 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015876 -------------------------------------------------------------------------*/
15877 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15878 ( NULL == pEventData->pEventData))
15879 {
15880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015881 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015882 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015884 }
15885
15886 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15887
15888 /*-------------------------------------------------------------------------
15889 Extract response and send it to UMAC
15890 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 wpalMemoryCopy( &halBASessionRsp,
15892 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015893 sizeof(halBASessionRsp));
15894
15895 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15896
Jeff Johnson43971f52012-07-17 12:26:56 -070015897 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015898 {
15899 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15900 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15901 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15902 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15903 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15904 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15905 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15906 }
15907
15908 /*Notify UMAC*/
15909 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15910
Jeff Johnsone7245742012-09-05 17:12:55 -070015911 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015912}/*WDI_ProcessAddSessionBARsp*/
15913
15914
15915/**
15916 @brief Process Del BA Rsp function (called when a response
15917 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015918
15919 @param pWDICtx: pointer to the WLAN DAL context
15920 pEventData: pointer to the event information structure
15921
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 @see
15923 @return Result of the function call
15924*/
15925WDI_Status
15926WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015927(
Jeff Johnson295189b2012-06-20 16:38:30 -070015928 WDI_ControlBlockType* pWDICtx,
15929 WDI_EventInfoType* pEventData
15930)
15931{
15932 WDI_Status wdiStatus;
15933 eHalStatus halStatus;
15934 WDI_DelBARspCb wdiDelBARspCb;
15935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15936
15937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015939 -------------------------------------------------------------------------*/
15940 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15941 ( NULL == pEventData->pEventData))
15942 {
15943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015944 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 }
15948
15949 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15950
15951 /*-------------------------------------------------------------------------
15952 Extract response and send it to UMAC
15953 -------------------------------------------------------------------------*/
15954 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015956
15957 if ( eHAL_STATUS_SUCCESS == halStatus )
15958 {
15959 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15960 }
15961
15962 /*Notify UMAC*/
15963 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15964
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015966}/*WDI_ProcessDelBARsp*/
15967
15968#ifdef FEATURE_WLAN_CCX
15969/**
15970 @brief Process TSM Stats Rsp function (called when a response
15971 is being received over the bus from HAL)
15972
15973 @param pWDICtx: pointer to the WLAN DAL context
15974 pEventData: pointer to the event information structure
15975
15976 @see
15977 @return Result of the function call
15978*/
15979WDI_Status
15980WDI_ProcessTsmStatsRsp
15981(
15982 WDI_ControlBlockType* pWDICtx,
15983 WDI_EventInfoType* pEventData
15984)
15985{
15986 WDI_TsmRspCb wdiTsmStatsRspCb;
15987 tTsmStatsRspMsg halTsmStatsRspMsg;
15988 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15990
15991 /*-------------------------------------------------------------------------
15992 Sanity check
15993 -------------------------------------------------------------------------*/
15994 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15995 ( NULL == pEventData->pEventData))
15996 {
15997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015998 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015999 WDI_ASSERT(0);
16000 return WDI_STATUS_E_FAILURE;
16001 }
16002
16003 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16004
16005 /*-------------------------------------------------------------------------
16006 Unpack HAL Response Message - the header was already extracted by the
16007 main Response Handling procedure
16008 -------------------------------------------------------------------------*/
16009 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16010 pEventData->pEventData,
16011 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16012
16013 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16014 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16015 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16016 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16017 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16018 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16019 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16020 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16021 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16022 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16023 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16024 halTsmStatsRspMsg.tsmStatsRspParams.status);
16025
16026 /*Notify UMAC*/
16027 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16028
16029 return WDI_STATUS_SUCCESS;
16030}/*WDI_ProcessTsmStatsRsp*/
16031
16032#endif
16033
16034
16035
16036/**
16037 @brief Process Flush AC Rsp function (called when a response
16038 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016039
16040 @param pWDICtx: pointer to the WLAN DAL context
16041 pEventData: pointer to the event information structure
16042
Jeff Johnson295189b2012-06-20 16:38:30 -070016043 @see
16044 @return Result of the function call
16045*/
16046WDI_Status
16047WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016048(
Jeff Johnson295189b2012-06-20 16:38:30 -070016049 WDI_ControlBlockType* pWDICtx,
16050 WDI_EventInfoType* pEventData
16051)
16052{
16053 WDI_Status wdiStatus;
16054 eHalStatus halStatus;
16055 WDI_FlushAcRspCb wdiFlushAcRspCb;
16056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16057
16058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016060 -------------------------------------------------------------------------*/
16061 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16062 ( NULL == pEventData->pEventData))
16063 {
16064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 }
16069
16070 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16071
16072 /*-------------------------------------------------------------------------
16073 Extract response and send it to UMAC
16074 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016075 wpalMemoryCopy( &halStatus,
16076 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 sizeof(halStatus));
16078
Jeff Johnsone7245742012-09-05 17:12:55 -070016079 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016080
16081 /*Notify UMAC*/
16082 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16083
Jeff Johnsone7245742012-09-05 17:12:55 -070016084 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016085}/*WDI_ProcessFlushAcRsp*/
16086
16087/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016088 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016089 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016090
16091 @param pWDICtx: pointer to the WLAN DAL context
16092 pEventData: pointer to the event information structure
16093
Jeff Johnson295189b2012-06-20 16:38:30 -070016094 @see
16095 @return Result of the function call
16096*/
16097WDI_Status
16098WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016099(
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 WDI_ControlBlockType* pWDICtx,
16101 WDI_EventInfoType* pEventData
16102)
16103{
16104 WDI_Status wdiStatus;
16105 eHalStatus halStatus;
16106 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16108
16109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 -------------------------------------------------------------------------*/
16112 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16113 ( NULL == pEventData->pEventData))
16114 {
16115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016116 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016119 }
16120
16121 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16122
16123 /*-------------------------------------------------------------------------
16124 Extract response and send it to UMAC
16125 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 wpalMemoryCopy( &halStatus,
16127 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016128 sizeof(halStatus));
16129
Jeff Johnsone7245742012-09-05 17:12:55 -070016130 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016131
16132 /*Notify UMAC*/
16133 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16134
Jeff Johnsone7245742012-09-05 17:12:55 -070016135 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016136}/*WDI_ProcessBtAmpEventRsp*/
16137
16138
16139/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016142
16143 @param pWDICtx: pointer to the WLAN DAL context
16144 pEventData: pointer to the event information structure
16145
Jeff Johnson295189b2012-06-20 16:38:30 -070016146 @see
16147 @return Result of the function call
16148*/
16149WDI_Status
16150WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016151(
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 WDI_ControlBlockType* pWDICtx,
16153 WDI_EventInfoType* pEventData
16154)
16155{
16156 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16157 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16158 tAddStaSelfRspMsg halAddStaSelfRsp;
16159 WDI_AddStaParams wdiAddSTAParam = {0};
16160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16161
16162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 -------------------------------------------------------------------------*/
16165 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16166 ( NULL == pEventData->pEventData))
16167 {
16168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016172 }
16173
Jeff Johnsone7245742012-09-05 17:12:55 -070016174 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016175 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16176
16177 /*-------------------------------------------------------------------------
16178 Extract response and send it to UMAC
16179 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016180 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16181 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16183
16184
Jeff Johnsone7245742012-09-05 17:12:55 -070016185 wdiAddSTASelfParams.wdiStatus =
16186 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016187
Jeff Johnsone7245742012-09-05 17:12:55 -070016188 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016189 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016192 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016193 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16194
16195 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16196 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16197 WDI_MAC_ADDR_LEN);
16198
16199
16200#ifdef HAL_SELF_STA_PER_BSS
16201
16202 /* At this point add the self-STA */
16203
16204 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16205 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16206 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16207
16208 //all DPU indices are the same for self STA
16209
16210 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16213 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16214 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16215 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16216 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16217
16218 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16219 WDI_MAC_ADDR_LEN);
16220
16221 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16222 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16223
Jeff Johnsone7245742012-09-05 17:12:55 -070016224 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16226 {
16227 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16228 }
16229#endif
16230
16231 /*Notify UMAC*/
16232 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16233
Jeff Johnsone7245742012-09-05 17:12:55 -070016234 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016235}/*WDI_ProcessAddSTASelfRsp*/
16236
16237
16238
16239/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016240 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016241 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016242
16243 @param pWDICtx: pointer to the WLAN DAL context
16244 pEventData: pointer to the event information structure
16245
Jeff Johnson295189b2012-06-20 16:38:30 -070016246 @see
16247 @return Result of the function call
16248*/
16249WDI_Status
16250WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016251(
Jeff Johnson295189b2012-06-20 16:38:30 -070016252 WDI_ControlBlockType* pWDICtx,
16253 WDI_EventInfoType* pEventData
16254)
16255{
16256 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16257 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16258 tDelStaSelfRspParams delStaSelfRspParams;
16259 wpt_uint8 ucStaIdx;
16260
16261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16262
16263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 -------------------------------------------------------------------------*/
16266 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16267 ( NULL == pEventData->pEventData))
16268 {
16269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016270 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016273 }
16274
16275 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16276
16277 /*-------------------------------------------------------------------------
16278 Extract response and send it to UMAC
16279 -------------------------------------------------------------------------*/
16280
Jeff Johnsone7245742012-09-05 17:12:55 -070016281 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 (wpt_uint8*)pEventData->pEventData,
16283 sizeof(tDelStaSelfRspParams));
16284
Jeff Johnsone7245742012-09-05 17:12:55 -070016285 wdiDelStaSelfRspParams.wdiStatus =
16286 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016287
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16290 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16291 {
16292 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016294 delStaSelfRspParams.selfMacAddr,
16295 &ucStaIdx);
16296 if(WDI_STATUS_E_FAILURE == wdiStatus)
16297 {
16298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016299 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 }
16303 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16304 }
16305
16306 /*Notify UMAC*/
16307 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16308
16309 return WDI_STATUS_SUCCESS;
16310}
16311
Jeff Johnsone7245742012-09-05 17:12:55 -070016312#ifdef FEATURE_OEM_DATA_SUPPORT
16313/**
16314 @brief Start Oem Data Rsp function (called when a
16315 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016316
Jeff Johnsone7245742012-09-05 17:12:55 -070016317 @param pWDICtx: pointer to the WLAN DAL context
16318 pEventData: pointer to the event information structure
16319
16320 @see
16321 @return Result of the function call
16322*/
16323#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16324
16325WDI_Status
16326WDI_ProcessStartOemDataRsp
16327(
16328 WDI_ControlBlockType* pWDICtx,
16329 WDI_EventInfoType* pEventData
16330)
16331{
16332 WDI_oemDataRspCb wdiOemDataRspCb;
16333 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16334 tStartOemDataRspParams* halStartOemDataRspParams;
16335
16336 /*-------------------------------------------------------------------------
16337 Sanity check
16338 -------------------------------------------------------------------------*/
16339 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16340 ( NULL == pEventData->pEventData))
16341 {
16342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016343 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016344 WDI_ASSERT(0);
16345 return WDI_STATUS_E_FAILURE;
16346 }
16347
16348 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16349
16350 /*-------------------------------------------------------------------------
16351 Extract response and send it to UMAC
16352 -------------------------------------------------------------------------*/
16353 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16354
16355
16356 //It is the responsibility of the application code to check for failure
16357 //conditions!
16358
16359 //Allocate memory for WDI OEM DATA RSP structure
16360 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16361
16362 if(NULL == wdiOemDataRspParams)
16363 {
16364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16365 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16366 pWDICtx, pEventData, pEventData->pEventData);
16367 WDI_ASSERT(0);
16368 return WDI_STATUS_E_FAILURE;
16369 }
16370
16371 /* Populate WDI structure members */
16372 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16373
16374 /*Notify UMAC*/
16375 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16376
16377 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16378 wpalMemoryFree(wdiOemDataRspParams);
16379
16380 return WDI_STATUS_SUCCESS;
16381}/*WDI_PrcoessStartOemDataRsp*/
16382#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016383
16384/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016385 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016386===========================================================================*/
16387
16388/**
16389 @brief Process Channel Switch Rsp function (called when a response
16390 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016391
16392 @param pWDICtx: pointer to the WLAN DAL context
16393 pEventData: pointer to the event information structure
16394
Jeff Johnson295189b2012-06-20 16:38:30 -070016395 @see
16396 @return Result of the function call
16397*/
16398WDI_Status
16399WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016400(
Jeff Johnson295189b2012-06-20 16:38:30 -070016401 WDI_ControlBlockType* pWDICtx,
16402 WDI_EventInfoType* pEventData
16403)
16404{
16405 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16406 WDI_SwitchChRspCb wdiChSwitchRspCb;
16407 tSwitchChannelRspParams halSwitchChannelRsp;
16408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16409
16410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016412 -------------------------------------------------------------------------*/
16413 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16414 ( NULL == pEventData->pEventData))
16415 {
16416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016420 }
16421
16422 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16423
16424 /*-------------------------------------------------------------------------
16425 Extract response and send it to UMAC
16426 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016427 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016428 (wpt_uint8*)pEventData->pEventData,
16429 sizeof(halSwitchChannelRsp));
16430
Jeff Johnsone7245742012-09-05 17:12:55 -070016431 wdiSwitchChRsp.wdiStatus =
16432 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016433 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16434
16435#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016436 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016437#endif
16438
16439 /*Notify UMAC*/
16440 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16441
Jeff Johnsone7245742012-09-05 17:12:55 -070016442 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016443}/*WDI_ProcessChannelSwitchRsp*/
16444
16445
16446/**
16447 @brief Process Config STA Rsp function (called when a response
16448 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016449
16450 @param pWDICtx: pointer to the WLAN DAL context
16451 pEventData: pointer to the event information structure
16452
Jeff Johnson295189b2012-06-20 16:38:30 -070016453 @see
16454 @return Result of the function call
16455*/
16456WDI_Status
16457WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016458(
Jeff Johnson295189b2012-06-20 16:38:30 -070016459 WDI_ControlBlockType* pWDICtx,
16460 WDI_EventInfoType* pEventData
16461)
16462{
16463 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16464 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16465 WDI_AddStaParams wdiAddSTAParam;
16466
16467 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016468 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016469
Jeff Johnsone7245742012-09-05 17:12:55 -070016470 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16472
16473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016475 -------------------------------------------------------------------------*/
16476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16477 ( NULL == pEventData->pEventData))
16478 {
16479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016483 }
16484
16485 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16486
16487 /*-------------------------------------------------------------------------
16488 Extract response and send it to UMAC
16489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016490 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16491 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 sizeof(halConfigStaRsp.configStaRspParams));
16493
16494
16495 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16496 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16497 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16498 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16499 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16500
16501 /* MAC Address of STA - take from cache as it does not come back in the
16502 response*/
16503 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016504 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016506
16507 wdiCfgSTAParams.wdiStatus =
16508 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016509
16510 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16511 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16512 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16513
16514 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16515 {
16516 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16517 {
16518 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016519 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016520 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16521 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016522
Jeff Johnson295189b2012-06-20 16:38:30 -070016523 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016524 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016525 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016526 wdiAddSTAParam.ucHTCapable =
16527 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16528 wdiAddSTAParam.ucStaType =
16529 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16530
Jeff Johnson295189b2012-06-20 16:38:30 -070016531 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016532 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16533 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016534 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016535
16536 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16537 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16538 WDI_MAC_ADDR_LEN);
16539
16540 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16541 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16542 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016543
16544 if ( NULL == pBSSSes )
16545 {
16546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16547 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016548
Jeff Johnson295189b2012-06-20 16:38:30 -070016549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016550 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 }
16552
16553 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016554 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016555 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016556 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016558 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016560 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 halConfigStaRsp.configStaRspParams.ucBcastSig;
16562 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16563 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016564
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16566 }
16567 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16568 {
16569 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16570
Jeff Johnsone7245742012-09-05 17:12:55 -070016571 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016572 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016573 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016574 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016575 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016577 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016578 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016579 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016581 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016582 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016584 halConfigStaRsp.configStaRspParams.ucUcastSig;
16585 }
16586 }
16587
16588 /*Notify UMAC*/
16589 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16590
Jeff Johnsone7245742012-09-05 17:12:55 -070016591 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016592}/*WDI_ProcessConfigStaRsp*/
16593
16594
16595/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016596 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016597 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016598
16599 @param pWDICtx: pointer to the WLAN DAL context
16600 pEventData: pointer to the event information structure
16601
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 @see
16603 @return Result of the function call
16604*/
16605WDI_Status
16606WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016607(
Jeff Johnson295189b2012-06-20 16:38:30 -070016608 WDI_ControlBlockType* pWDICtx,
16609 WDI_EventInfoType* pEventData
16610)
16611{
16612 WDI_Status wdiStatus;
16613 eHalStatus halStatus;
16614 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16615
16616 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16619
16620 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016621 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 -------------------------------------------------------------------------*/
16623 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16624 ( NULL == pEventData->pEventData))
16625 {
16626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016627 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016628 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016629 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 }
16631
16632 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16633
16634 wpalMutexAcquire(&pWDICtx->wptMutex);
16635
16636 /*If the link is being transitioned to idle - the BSS is to be deleted
16637 - this type of ending a session is possible when UMAC has failed an
16638 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16641 {
16642 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016643 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016644 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016645 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16646 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16647 &pBSSSes);
16648
Jeff Johnson295189b2012-06-20 16:38:30 -070016649 /*-----------------------------------------------------------------------
16650 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016651 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016652 -----------------------------------------------------------------------*/
16653 if ( NULL == pBSSSes )
16654 {
16655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16656 "Set link response received outside association session");
16657 }
16658 else
16659 {
16660 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16661 will be del BSS coming after this to stop the beaconing & cleaning up the
16662 sessions*/
16663 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16664 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16665 {
16666 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016667 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016668 -----------------------------------------------------------------------*/
16669 WDI_DeleteSession(pWDICtx, pBSSSes);
16670
16671 /*-----------------------------------------------------------------------
16672 Check to see if this association is in progress - if so disable the
16673 flag as this has ended
16674 -----------------------------------------------------------------------*/
16675 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016676 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016677 /*Association no longer in progress */
16678 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16679 /*Association no longer in progress - prepare pending assoc for processing*/
16680 WDI_DequeueAssocRequest(pWDICtx);
16681 }
16682 }
16683 }
16684 }
16685 /* If the link state has been set to POST ASSOC, reset the "association in
16686 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016687 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016688 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16689 {
16690 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16691 WDI_DequeueAssocRequest(pWDICtx);
16692 }
16693
16694 wpalMutexRelease(&pWDICtx->wptMutex);
16695
16696 /*-------------------------------------------------------------------------
16697 Extract response and send it to UMAC
16698 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016699 wpalMemoryCopy( &halStatus,
16700 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016701 sizeof(halStatus));
16702
Jeff Johnsone7245742012-09-05 17:12:55 -070016703 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016704
16705 /*Notify UMAC*/
16706 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16707
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016709}/*WDI_ProcessSetLinkStateRsp*/
16710
16711/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016712 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016713 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016714
16715 @param pWDICtx: pointer to the WLAN DAL context
16716 pEventData: pointer to the event information structure
16717
Jeff Johnson295189b2012-06-20 16:38:30 -070016718 @see
16719 @return Result of the function call
16720*/
16721WDI_Status
16722WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016723(
Jeff Johnson295189b2012-06-20 16:38:30 -070016724 WDI_ControlBlockType* pWDICtx,
16725 WDI_EventInfoType* pEventData
16726)
16727{
16728 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16729 WDI_GetStatsRspCb wdiGetStatsRspCb;
16730 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016731
Jeff Johnson295189b2012-06-20 16:38:30 -070016732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16733
16734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016736 -------------------------------------------------------------------------*/
16737 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16738 ( NULL == pEventData->pEventData))
16739 {
16740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016744 }
16745
16746 /*-------------------------------------------------------------------------
16747 Extract response and send it to UMAC
16748 -------------------------------------------------------------------------*/
16749 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16750
16751 /*allocate the stats response buffer */
16752 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16753 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16754 + sizeof(WDI_GetStatsRspParamsType));
16755
16756 if(NULL == wdiGetStatsRsp)
16757 {
16758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16759 "Failed to allocate memory in Get Stats Response %x %x %x ",
16760 pWDICtx, pEventData, pEventData->pEventData);
16761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016763 }
16764
16765 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16766
16767 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16768 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16769 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16770 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16771 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16772 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16773
16774 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16775 wpalMemoryCopy(wdiGetStatsRsp + 1,
16776 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16777 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16778
16779 /*Notify UMAC*/
16780 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16781
16782 wpalMemoryFree(wdiGetStatsRsp);
16783
Jeff Johnsone7245742012-09-05 17:12:55 -070016784 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016785}/*WDI_ProcessGetStatsRsp*/
16786
Srinivas Girigowda2471d832013-01-25 13:33:11 -080016787#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
16788/**
16789 @brief Process Get Roam Rssi Rsp function (called when a response is
16790 being received over the bus from HAL)
16791
16792 @param pWDICtx: pointer to the WLAN DAL context
16793 pEventData: pointer to the event information structure
16794
16795 @see
16796 @return Result of the function call
16797*/
16798WDI_Status
16799WDI_ProcessGetRoamRssiRsp
16800(
16801 WDI_ControlBlockType* pWDICtx,
16802 WDI_EventInfoType* pEventData
16803)
16804{
16805 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
16806 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
16807 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
16808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16809
16810 /*-------------------------------------------------------------------------
16811 Sanity check
16812 -------------------------------------------------------------------------*/
16813 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16814 ( NULL == pEventData->pEventData))
16815 {
16816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16817 "%s: Invalid parameters", __func__);
16818 WDI_ASSERT(0);
16819 return WDI_STATUS_E_FAILURE;
16820 }
16821
16822 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
16823 if(NULL == wdiGetRoamRssiRspCb)
16824 {
16825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16826 "%s: call back function is NULL", __func__);
16827 WDI_ASSERT(0);
16828 return WDI_STATUS_E_FAILURE;
16829 }
16830
16831 /*-------------------------------------------------------------------------
16832 Extract response and send it to UMAC
16833 -------------------------------------------------------------------------*/
16834 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
16835 pEventData->pEventData,
16836 sizeof(halRoamRssiRspParams.roamRssiRspParams));
16837
16838 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
16839 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
16840 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
16841
16842 /*Notify UMAC*/
16843 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
16844
16845 return WDI_STATUS_SUCCESS;
16846}/*WDI_ProcessGetRoamRssiRsp*/
16847#endif
16848
Jeff Johnson295189b2012-06-20 16:38:30 -070016849
16850/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016851 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016852 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016853
16854 @param pWDICtx: pointer to the WLAN DAL context
16855 pEventData: pointer to the event information structure
16856
Jeff Johnson295189b2012-06-20 16:38:30 -070016857 @see
16858 @return Result of the function call
16859*/
16860WDI_Status
16861WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016862(
Jeff Johnson295189b2012-06-20 16:38:30 -070016863 WDI_ControlBlockType* pWDICtx,
16864 WDI_EventInfoType* pEventData
16865)
16866{
16867 WDI_Status wdiStatus;
16868 eHalStatus halStatus;
16869 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16871
16872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 -------------------------------------------------------------------------*/
16875 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16876 ( NULL == pEventData->pEventData))
16877 {
16878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016879 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 }
16883
16884 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16885
16886 /*-------------------------------------------------------------------------
16887 Extract response and send it to UMAC
16888 -------------------------------------------------------------------------*/
16889 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016890 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016891
16892 /*Notify UMAC*/
16893 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16894
Jeff Johnsone7245742012-09-05 17:12:55 -070016895 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016896}/*WDI_ProcessUpdateCfgRsp*/
16897
16898
16899
16900/**
16901 @brief Process Add BA Rsp function (called when a response
16902 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016903
16904 @param pWDICtx: pointer to the WLAN DAL context
16905 pEventData: pointer to the event information structure
16906
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 @see
16908 @return Result of the function call
16909*/
16910WDI_Status
16911WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016912(
Jeff Johnson295189b2012-06-20 16:38:30 -070016913 WDI_ControlBlockType* pWDICtx,
16914 WDI_EventInfoType* pEventData
16915)
16916{
16917 WDI_AddBARspCb wdiAddBARspCb;
16918
16919 tAddBARspParams halAddBARsp;
16920 WDI_AddBARspinfoType wdiAddBARsp;
16921
16922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16923
16924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016926 -------------------------------------------------------------------------*/
16927 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16928 ( NULL == pEventData->pEventData))
16929 {
16930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016931 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016932 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016933 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 }
16935
16936 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16937
16938 /*-------------------------------------------------------------------------
16939 Extract response and send it to UMAC
16940 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016941 wpalMemoryCopy( &halAddBARsp,
16942 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016943 sizeof(halAddBARsp));
16944
16945 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16946
Jeff Johnson43971f52012-07-17 12:26:56 -070016947 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016948 {
16949 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16950 }
16951
16952 /*Notify UMAC*/
16953 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16954
Jeff Johnsone7245742012-09-05 17:12:55 -070016955 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016956}/*WDI_ProcessAddSessionBARsp*/
16957
16958/**
16959 @brief Process Add BA Rsp function (called when a response
16960 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016961
16962 @param pWDICtx: pointer to the WLAN DAL context
16963 pEventData: pointer to the event information structure
16964
Jeff Johnson295189b2012-06-20 16:38:30 -070016965 @see
16966 @return Result of the function call
16967*/
16968WDI_Status
16969WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016970(
Jeff Johnson295189b2012-06-20 16:38:30 -070016971 WDI_ControlBlockType* pWDICtx,
16972 WDI_EventInfoType* pEventData
16973)
16974{
16975 WDI_TriggerBARspCb wdiTriggerBARspCb;
16976
16977 tTriggerBARspParams* halTriggerBARsp;
16978 tTriggerBaRspCandidate* halBaCandidate;
16979 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16980 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16981 wpt_uint16 index;
16982 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070016983 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16985
16986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 -------------------------------------------------------------------------*/
16989 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16990 ( NULL == pEventData->pEventData))
16991 {
16992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016993 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016994 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016995 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016996 }
16997
16998 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16999
17000 /*-------------------------------------------------------------------------
17001 Extract response and send it to UMAC
17002 -------------------------------------------------------------------------*/
17003 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17004
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017005 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17006
17007 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17008 {
17009 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017010 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017011 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017012
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017013 if(NULL == wdiTriggerBARsp)
17014 {
17015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17016 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17017 pWDICtx, pEventData, pEventData->pEventData);
17018 WDI_ASSERT(0);
17019 return WDI_STATUS_E_FAILURE;
17020 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017021
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017022 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17023
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017025 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17027
17028 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17029 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17030
17031 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17032 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017033 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17035 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17036 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017037 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017038 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017039 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017040 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17041 }
17042 wdiTriggerBARspCandidate++;
17043 halBaCandidate++;
17044 }
17045 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017046 else
17047 {
17048 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17049
17050 if(NULL == wdiTriggerBARsp)
17051 {
17052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17053 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17054 pWDICtx, pEventData, pEventData->pEventData);
17055 WDI_ASSERT(0);
17056 return WDI_STATUS_E_FAILURE;
17057 }
17058
17059 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17060
17061 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017062
17063 /*Notify UMAC*/
17064 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17065
17066 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017068}/*WDI_ProcessAddSessionBARsp*/
17069
17070/**
17071 @brief Process Update Beacon Params Rsp function (called when a response
17072 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017073
17074 @param pWDICtx: pointer to the WLAN DAL context
17075 pEventData: pointer to the event information structure
17076
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 @see
17078 @return Result of the function call
17079*/
17080WDI_Status
17081WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017082(
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 WDI_ControlBlockType* pWDICtx,
17084 WDI_EventInfoType* pEventData
17085)
17086{
17087 WDI_Status wdiStatus;
17088 eHalStatus halStatus;
17089 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17091
17092 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017093 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017094 -------------------------------------------------------------------------*/
17095 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17096 ( NULL == pEventData->pEventData))
17097 {
17098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017102 }
17103
17104 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17105
17106 /*-------------------------------------------------------------------------
17107 Extract response and send it to UMAC
17108 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017109 wpalMemoryCopy( &halStatus,
17110 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017111 sizeof(halStatus));
17112
Jeff Johnsone7245742012-09-05 17:12:55 -070017113 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017114
17115 /*Notify UMAC*/
17116 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17117
Jeff Johnsone7245742012-09-05 17:12:55 -070017118 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017119}/*WDI_ProcessUpdateBeaconParamsRsp*/
17120
17121/**
17122 @brief Process Send Beacon template Rsp function (called when a response
17123 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017124
17125 @param pWDICtx: pointer to the WLAN DAL context
17126 pEventData: pointer to the event information structure
17127
Jeff Johnson295189b2012-06-20 16:38:30 -070017128 @see
17129 @return Result of the function call
17130*/
17131WDI_Status
17132WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017133(
Jeff Johnson295189b2012-06-20 16:38:30 -070017134 WDI_ControlBlockType* pWDICtx,
17135 WDI_EventInfoType* pEventData
17136)
17137{
17138 WDI_Status wdiStatus;
17139 eHalStatus halStatus;
17140 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17142
17143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017145 -------------------------------------------------------------------------*/
17146 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17147 ( NULL == pEventData->pEventData))
17148 {
17149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 }
17154
17155 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17156
17157 /*-------------------------------------------------------------------------
17158 Extract response and send it to UMAC
17159 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017160 wpalMemoryCopy( &halStatus,
17161 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017162 sizeof(halStatus));
17163
Jeff Johnsone7245742012-09-05 17:12:55 -070017164 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017165
17166 /*Notify UMAC*/
17167 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17168
Jeff Johnsone7245742012-09-05 17:12:55 -070017169 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017170}/*WDI_ProcessSendBeaconParamsRsp*/
17171
Jeff Johnsone7245742012-09-05 17:12:55 -070017172
Jeff Johnson295189b2012-06-20 16:38:30 -070017173/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017174 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017175 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017176
17177 @param pWDICtx: pointer to the WLAN DAL context
17178 pEventData: pointer to the event information structure
17179
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 @see
17181 @return Result of the function call
17182*/
17183WDI_Status
17184WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017185(
Jeff Johnson295189b2012-06-20 16:38:30 -070017186 WDI_ControlBlockType* pWDICtx,
17187 WDI_EventInfoType* pEventData
17188)
17189{
17190 WDI_Status wdiStatus;
17191 eHalStatus halStatus;
17192 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17194
17195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017196 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017197 -------------------------------------------------------------------------*/
17198 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17199 ( NULL == pEventData->pEventData))
17200 {
17201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017202 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017205 }
17206
17207 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17208
17209 /*-------------------------------------------------------------------------
17210 Extract response and send it to UMAC
17211 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017212 wpalMemoryCopy( &halStatus,
17213 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017214 sizeof(halStatus));
17215
Jeff Johnsone7245742012-09-05 17:12:55 -070017216 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017217
17218 /*Notify UMAC*/
17219 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17220
Jeff Johnsone7245742012-09-05 17:12:55 -070017221 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017222}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17223
17224 /**
17225 @brief Process Set Max Tx Power Rsp function (called when a response
17226 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017227
17228 @param pWDICtx: pointer to the WLAN DAL context
17229 pEventData: pointer to the event information structure
17230
Jeff Johnson295189b2012-06-20 16:38:30 -070017231 @see
17232 @return Result of the function call
17233*/
17234WDI_Status
17235WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017236(
Jeff Johnson295189b2012-06-20 16:38:30 -070017237 WDI_ControlBlockType* pWDICtx,
17238 WDI_EventInfoType* pEventData
17239)
17240{
17241 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017242
Jeff Johnson295189b2012-06-20 16:38:30 -070017243 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017244
Jeff Johnson295189b2012-06-20 16:38:30 -070017245 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17247
17248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017249 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017250 -------------------------------------------------------------------------*/
17251 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17252 ( NULL == pEventData->pEventData))
17253 {
17254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017258 }
17259
17260 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17261
17262 /*-------------------------------------------------------------------------
17263 Extract response and send it to UMAC
17264 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017265 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17266 pEventData->pEventData,
17267 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017268
17269 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17270 {
17271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17272 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017273 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017275 }
17276
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017279 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017280
17281 /*Notify UMAC*/
17282 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17283
Jeff Johnsone7245742012-09-05 17:12:55 -070017284 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017285}
17286
schangd82195a2013-03-13 18:41:24 -070017287 /**
17288 @brief Process Set Tx Power Rsp function (called when a response
17289 is being received over the bus from HAL)
17290
17291 @param pWDICtx: pointer to the WLAN DAL context
17292 pEventData: pointer to the event information structure
17293
17294 @see
17295 @return Result of the function call
17296*/
17297WDI_Status
17298WDI_ProcessSetTxPowerRsp
17299(
17300 WDI_ControlBlockType* pWDICtx,
17301 WDI_EventInfoType* pEventData
17302)
17303{
17304 tSetTxPwrRspMsg halTxpowerrsp;
17305 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17306 WDA_SetTxPowerRspCb wdiReqStatusCb;
17307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17308
17309 /*-------------------------------------------------------------------------
17310 Sanity check
17311 -------------------------------------------------------------------------*/
17312 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17313 ( NULL == pEventData->pEventData))
17314 {
17315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17316 "%s: Invalid parameters", __func__);
17317 WDI_ASSERT(0);
17318 return WDI_STATUS_E_FAILURE;
17319 }
17320
17321 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17322
17323 /*-------------------------------------------------------------------------
17324 Extract response and send it to UMAC
17325 -------------------------------------------------------------------------*/
17326 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17327 pEventData->pEventData,
17328 sizeof(halTxpowerrsp.setTxPwrRspParams));
17329
17330 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17331 {
17332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17333 "Error status returned in Set Tx Power Response ");
17334 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17335 return WDI_STATUS_E_FAILURE;
17336 }
17337
17338 wdiSetTxPowerRspMsg.wdiStatus =
17339 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17340
17341 /*Notify UMAC*/
17342 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17343
17344 return WDI_STATUS_SUCCESS;
17345}
17346
Jeff Johnson295189b2012-06-20 16:38:30 -070017347/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017348 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017349 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017350
17351 @param pWDICtx: pointer to the WLAN DAL context
17352 pEventData: pointer to the event information structure
17353
Jeff Johnson295189b2012-06-20 16:38:30 -070017354 @see
17355 @return Result of the function call
17356*/
17357WDI_Status
17358WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017359(
Jeff Johnson295189b2012-06-20 16:38:30 -070017360 WDI_ControlBlockType* pWDICtx,
17361 WDI_EventInfoType* pEventData
17362)
17363{
17364 WDI_Status wdiStatus;
17365 eHalStatus halStatus;
17366 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17368
17369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017370 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017371 -------------------------------------------------------------------------*/
17372 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17373 ( NULL == pEventData->pEventData))
17374 {
17375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017379 }
17380
17381 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17382
17383 /*-------------------------------------------------------------------------
17384 Extract response and send it to UMAC
17385 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017386 wpalMemoryCopy( &halStatus,
17387 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017388 sizeof(halStatus));
17389
Jeff Johnsone7245742012-09-05 17:12:55 -070017390 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017391
17392 /*Notify UMAC*/
17393 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17394
Jeff Johnsone7245742012-09-05 17:12:55 -070017395 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017396}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017397/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017398 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017399 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017400
17401 @param pWDICtx: pointer to the WLAN DAL context
17402 pEventData: pointer to the event information structure
17403
Jeff Johnson295189b2012-06-20 16:38:30 -070017404 @see
17405 @return Result of the function call
17406*/
17407WDI_Status
17408WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017409(
Jeff Johnson295189b2012-06-20 16:38:30 -070017410 WDI_ControlBlockType* pWDICtx,
17411 WDI_EventInfoType* pEventData
17412)
17413{
17414 WDI_Status wdiStatus;
17415 eHalStatus halStatus;
17416 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017417 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17419
17420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 -------------------------------------------------------------------------*/
17423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17424 ( NULL == pEventData->pEventData))
17425 {
17426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017430 }
17431
17432 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17433
17434 /*-------------------------------------------------------------------------
17435 Extract response and send it to UMAC
17436 -------------------------------------------------------------------------*/
17437 halStatus = *((eHalStatus*)pEventData->pEventData);
17438
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017440
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017441 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17442 * Other module states are taken care by PMC.
17443 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17444 */
17445 if (wdiStatus != WDI_STATUS_SUCCESS) {
17446
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17448 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17449 halStatus);
17450 /* Call Back is not required as we are putting the DXE in FULL
17451 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017452 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17453
17454 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17455 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17456 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17457 WDI_ASSERT(0);
17458 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017459 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017460 /*Notify UMAC*/
17461 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17462
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017464}/*WDI_ProcessEnterImpsRsp*/
17465
17466/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017467 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017468 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017469
17470 @param pWDICtx: pointer to the WLAN DAL context
17471 pEventData: pointer to the event information structure
17472
Jeff Johnson295189b2012-06-20 16:38:30 -070017473 @see
17474 @return Result of the function call
17475*/
17476WDI_Status
17477WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017478(
Jeff Johnson295189b2012-06-20 16:38:30 -070017479 WDI_ControlBlockType* pWDICtx,
17480 WDI_EventInfoType* pEventData
17481)
17482{
17483 WDI_Status wdiStatus;
17484 eHalStatus halStatus;
17485 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017486 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17488
17489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017491 -------------------------------------------------------------------------*/
17492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17493 ( NULL == pEventData->pEventData))
17494 {
17495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017499 }
17500
17501 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17502
17503 /*-------------------------------------------------------------------------
17504 Extract response and send it to UMAC
17505 -------------------------------------------------------------------------*/
17506 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017507 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017508
17509 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017510 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17511 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17512 {
17513 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17514 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17515 WDI_ASSERT(0);
17516 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 /*Notify UMAC*/
17518 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17519
Jeff Johnsone7245742012-09-05 17:12:55 -070017520 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017521}/*WDI_ProcessExitImpsRsp*/
17522
17523/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017524 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017525 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017526
17527 @param pWDICtx: pointer to the WLAN DAL context
17528 pEventData: pointer to the event information structure
17529
Jeff Johnson295189b2012-06-20 16:38:30 -070017530 @see
17531 @return Result of the function call
17532*/
17533WDI_Status
17534WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017535(
Jeff Johnson295189b2012-06-20 16:38:30 -070017536 WDI_ControlBlockType* pWDICtx,
17537 WDI_EventInfoType* pEventData
17538)
17539{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017540 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17541 tHalEnterBmpsRspParams halEnterBmpsRsp;
17542 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17543 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017544 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17546
17547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017549 -------------------------------------------------------------------------*/
17550 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17551 ( NULL == pEventData->pEventData))
17552 {
17553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017554 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017557 }
17558
Jeff Johnson295189b2012-06-20 16:38:30 -070017559 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017560 Extract response and send it to UMAC
17561 -------------------------------------------------------------------------*/
17562 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17563 {
17564 wpalMemoryCopy( &halEnterBmpsRsp,
17565 pEventData->pEventData,
17566 sizeof(halEnterBmpsRsp));
17567
17568 //Used to print debug message
17569 halStatus = halEnterBmpsRsp.status;
17570 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17571 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17572 }
17573 else
17574 {
17575 halStatus = *((eHalStatus*)pEventData->pEventData);
17576 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17577 }
17578
17579 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017580
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017581 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17582 * Other module states are taken care by PMC.
17583 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17584 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017585 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17586 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017587
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017588 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017589 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17590 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017591 /* Call Back is not required as we are putting the DXE in FULL
17592 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017593 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17594 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17595 {
17596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17597 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17598 WDI_ASSERT(0);
17599 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017600 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017601 }
17602
Jeff Johnson295189b2012-06-20 16:38:30 -070017603 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017604 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017605
Jeff Johnsone7245742012-09-05 17:12:55 -070017606 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017607}/*WDI_ProcessEnterBmpsRsp*/
17608
17609/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017610 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017611 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017612
17613 @param pWDICtx: pointer to the WLAN DAL context
17614 pEventData: pointer to the event information structure
17615
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 @see
17617 @return Result of the function call
17618*/
17619WDI_Status
17620WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017621(
Jeff Johnson295189b2012-06-20 16:38:30 -070017622 WDI_ControlBlockType* pWDICtx,
17623 WDI_EventInfoType* pEventData
17624)
17625{
Jeff Johnson295189b2012-06-20 16:38:30 -070017626 eHalStatus halStatus;
17627 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017628 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017629 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17630 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17632
17633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017634 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017635 -------------------------------------------------------------------------*/
17636 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17637 ( NULL == pEventData->pEventData))
17638 {
17639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017640 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017643 }
17644
17645 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17646
17647 /*-------------------------------------------------------------------------
17648 Extract response and send it to UMAC
17649 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017650
17651 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17652 {
17653 wpalMemoryCopy( &halExitBmpsRsp,
17654 pEventData->pEventData,
17655 sizeof(halExitBmpsRsp));
17656
17657 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17658 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17659 }
17660 else
17661 {
17662 halStatus = *((eHalStatus*)pEventData->pEventData);
17663 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17664 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017665
17666 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017667 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17668 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17669 {
17670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17671 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17672 WDI_ASSERT(0);
17673 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017674 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17675
17676 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017677 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017678
Jeff Johnsone7245742012-09-05 17:12:55 -070017679 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017680}/*WDI_ProcessExitBmpsRsp*/
17681
17682/**
17683 @brief Process Enter UAPSD Rsp function (called when a response
17684 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017685
17686 @param pWDICtx: pointer to the WLAN DAL context
17687 pEventData: pointer to the event information structure
17688
Jeff Johnson295189b2012-06-20 16:38:30 -070017689 @see
17690 @return Result of the function call
17691*/
17692WDI_Status
17693WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017694(
Jeff Johnson295189b2012-06-20 16:38:30 -070017695 WDI_ControlBlockType* pWDICtx,
17696 WDI_EventInfoType* pEventData
17697)
17698{
Jeff Johnson295189b2012-06-20 16:38:30 -070017699 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017700 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017701 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017702 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17703
Jeff Johnson295189b2012-06-20 16:38:30 -070017704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17705
17706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017708 -------------------------------------------------------------------------*/
17709 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17710 ( NULL == pEventData->pEventData))
17711 {
17712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017713 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017714 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017715 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017716 }
17717
17718 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17719
17720 /*-------------------------------------------------------------------------
17721 Extract response and send it to UMAC
17722 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017723 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17724 {
17725 wpalMemoryCopy( &halEnterUapsdRsp,
17726 pEventData->pEventData,
17727 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017728
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017729 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17730 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17731 }
17732 else
17733 {
17734 halStatus = *((eHalStatus*)pEventData->pEventData);
17735 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17736 }
17737
17738 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017739 {
17740 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17741 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17742 // the traffic to decide when to suspend the trigger frames when there is no traffic
17743 // activity on the trigger enabled ACs
17744 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17745
17746#ifdef WLAN_PERF
17747 // Increment the BD signature to refresh the fast path BD utilization
17748 pWDICtx->uBdSigSerialNum++;
17749#endif
17750 }
17751
17752 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017753 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017754
Jeff Johnsone7245742012-09-05 17:12:55 -070017755 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017756}/*WDI_ProcessEnterUapsdRsp*/
17757
17758/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017759 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017760 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017761
17762 @param pWDICtx: pointer to the WLAN DAL context
17763 pEventData: pointer to the event information structure
17764
Jeff Johnson295189b2012-06-20 16:38:30 -070017765 @see
17766 @return Result of the function call
17767*/
17768WDI_Status
17769WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017770(
Jeff Johnson295189b2012-06-20 16:38:30 -070017771 WDI_ControlBlockType* pWDICtx,
17772 WDI_EventInfoType* pEventData
17773)
17774{
Jeff Johnson295189b2012-06-20 16:38:30 -070017775 eHalStatus halStatus;
17776 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017777 tHalExitUapsdRspParams halExitUapsdRsp;
17778 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17780
17781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017783 -------------------------------------------------------------------------*/
17784 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17785 ( NULL == pEventData->pEventData))
17786 {
17787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017791 }
17792
17793 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17794
17795 /*-------------------------------------------------------------------------
17796 Extract response and send it to UMAC
17797 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017798 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17799 {
17800 wpalMemoryCopy( &halExitUapsdRsp,
17801 pEventData->pEventData,
17802 sizeof(halExitUapsdRsp));
17803
17804 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17805 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17806 }
17807 else
17808 {
17809 halStatus = *((eHalStatus*)pEventData->pEventData);
17810 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17811 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017812 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17813 // directly instead of the FW WQ.
17814 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17815
17816#ifdef WLAN_PERF
17817 // Increment the BD signature to refresh the fast path BD utilization
17818 pWDICtx->uBdSigSerialNum++;
17819#endif
17820
17821 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017822 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017823
Jeff Johnsone7245742012-09-05 17:12:55 -070017824 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017825}/*WDI_ProcessExitUapsdRsp*/
17826
17827/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017828 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017829 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017830
17831 @param pWDICtx: pointer to the WLAN DAL context
17832 pEventData: pointer to the event information structure
17833
Jeff Johnson295189b2012-06-20 16:38:30 -070017834 @see
17835 @return Result of the function call
17836*/
17837WDI_Status
17838WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017839(
Jeff Johnson295189b2012-06-20 16:38:30 -070017840 WDI_ControlBlockType* pWDICtx,
17841 WDI_EventInfoType* pEventData
17842)
17843{
17844 WDI_Status wdiStatus;
17845 eHalStatus halStatus;
17846 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17848
17849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017850 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017851 -------------------------------------------------------------------------*/
17852 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17853 ( NULL == pEventData->pEventData))
17854 {
17855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017856 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017859 }
17860
17861 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17862
17863 /*-------------------------------------------------------------------------
17864 Extract response and send it to UMAC
17865 -------------------------------------------------------------------------*/
17866 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017867 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017868
17869 /*Notify UMAC*/
17870 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17871
Jeff Johnsone7245742012-09-05 17:12:55 -070017872 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017873}/*WDI_ProcessSetUapsdAcParamsRsp*/
17874
17875/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017876 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017878
17879 @param pWDICtx: pointer to the WLAN DAL context
17880 pEventData: pointer to the event information structure
17881
Jeff Johnson295189b2012-06-20 16:38:30 -070017882 @see
17883 @return Result of the function call
17884*/
17885WDI_Status
17886WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017887(
Jeff Johnson295189b2012-06-20 16:38:30 -070017888 WDI_ControlBlockType* pWDICtx,
17889 WDI_EventInfoType* pEventData
17890)
17891{
17892 WDI_Status wdiStatus;
17893 eHalStatus halStatus;
17894 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17896
17897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017899 -------------------------------------------------------------------------*/
17900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17901 ( NULL == pEventData->pEventData))
17902 {
17903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017907 }
17908
17909 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17910
17911 /*-------------------------------------------------------------------------
17912 Extract response and send it to UMAC
17913 -------------------------------------------------------------------------*/
17914 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017915 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017916
17917 /*Notify UMAC*/
17918 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17919
Jeff Johnsone7245742012-09-05 17:12:55 -070017920 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017921}/*WDI_ProcessUpdateUapsdParamsRsp*/
17922
17923/**
17924 @brief Process Configure RXP filter Rsp function (called when a
17925 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017926
17927 @param pWDICtx: pointer to the WLAN DAL context
17928 pEventData: pointer to the event information structure
17929
Jeff Johnson295189b2012-06-20 16:38:30 -070017930 @see
17931 @return Result of the function call
17932*/
17933WDI_Status
17934WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017935(
Jeff Johnson295189b2012-06-20 16:38:30 -070017936 WDI_ControlBlockType* pWDICtx,
17937 WDI_EventInfoType* pEventData
17938)
17939{
17940 WDI_Status wdiStatus;
17941 eHalStatus halStatus;
17942 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17944
17945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017946 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 -------------------------------------------------------------------------*/
17948 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17949 ( NULL == pEventData->pEventData))
17950 {
17951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017952 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017953 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017955 }
17956
17957 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17958
17959 /*-------------------------------------------------------------------------
17960 Extract response and send it to UMAC
17961 -------------------------------------------------------------------------*/
17962 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017963 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017964
17965 /*Notify UMAC*/
17966 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17967
Jeff Johnsone7245742012-09-05 17:12:55 -070017968 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017969}/*WDI_ProcessConfigureRxpFilterRsp*/
17970
17971/**
17972 @brief Process Set beacon filter Rsp function (called when a
17973 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017974
17975 @param pWDICtx: pointer to the WLAN DAL context
17976 pEventData: pointer to the event information structure
17977
Jeff Johnson295189b2012-06-20 16:38:30 -070017978 @see
17979 @return Result of the function call
17980*/
17981WDI_Status
17982WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017983(
Jeff Johnson295189b2012-06-20 16:38:30 -070017984 WDI_ControlBlockType* pWDICtx,
17985 WDI_EventInfoType* pEventData
17986)
17987{
17988 WDI_Status wdiStatus;
17989 eHalStatus halStatus;
17990 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17992
17993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017994 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017995 -------------------------------------------------------------------------*/
17996 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17997 ( NULL == pEventData->pEventData))
17998 {
17999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018000 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018001 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018002 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018003 }
18004
18005 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18006
18007 /*-------------------------------------------------------------------------
18008 Extract response and send it to UMAC
18009 -------------------------------------------------------------------------*/
18010 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018011 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018012
18013 /*Notify UMAC*/
18014 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18015
Jeff Johnsone7245742012-09-05 17:12:55 -070018016 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018017}/*WDI_ProcessSetBeaconFilterRsp*/
18018
18019/**
18020 @brief Process remove beacon filter Rsp function (called when a
18021 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018022
18023 @param pWDICtx: pointer to the WLAN DAL context
18024 pEventData: pointer to the event information structure
18025
Jeff Johnson295189b2012-06-20 16:38:30 -070018026 @see
18027 @return Result of the function call
18028*/
18029WDI_Status
18030WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018031(
Jeff Johnson295189b2012-06-20 16:38:30 -070018032 WDI_ControlBlockType* pWDICtx,
18033 WDI_EventInfoType* pEventData
18034)
18035{
18036 WDI_Status wdiStatus;
18037 eHalStatus halStatus;
18038 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18040
18041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 -------------------------------------------------------------------------*/
18044 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18045 ( NULL == pEventData->pEventData))
18046 {
18047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018051 }
18052
18053 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18054
18055 /*-------------------------------------------------------------------------
18056 Extract response and send it to UMAC
18057 -------------------------------------------------------------------------*/
18058 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018059 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018060
18061 /*Notify UMAC*/
18062 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18063
Jeff Johnsone7245742012-09-05 17:12:55 -070018064 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018065}/*WDI_ProcessRemBeaconFilterRsp*/
18066
18067/**
18068 @brief Process set RSSI thresholds Rsp function (called when a
18069 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018070
18071 @param pWDICtx: pointer to the WLAN DAL context
18072 pEventData: pointer to the event information structure
18073
Jeff Johnson295189b2012-06-20 16:38:30 -070018074 @see
18075 @return Result of the function call
18076*/
18077WDI_Status
18078WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018079(
Jeff Johnson295189b2012-06-20 16:38:30 -070018080 WDI_ControlBlockType* pWDICtx,
18081 WDI_EventInfoType* pEventData
18082)
18083{
18084 WDI_Status wdiStatus;
18085 eHalStatus halStatus;
18086 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18087 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18088
18089 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018090 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 -------------------------------------------------------------------------*/
18092 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18093 ( NULL == pEventData->pEventData))
18094 {
18095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018096 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018099 }
18100
18101 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18102
18103 /*-------------------------------------------------------------------------
18104 Extract response and send it to UMAC
18105 -------------------------------------------------------------------------*/
18106 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018107 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018108
18109 /*Notify UMAC*/
18110 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18111
Jeff Johnsone7245742012-09-05 17:12:55 -070018112 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018113}/*WDI_ProcessSetRSSIThresoldsRsp*/
18114
18115/**
18116 @brief Process host offload Rsp function (called when a
18117 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018118
18119 @param pWDICtx: pointer to the WLAN DAL context
18120 pEventData: pointer to the event information structure
18121
Jeff Johnson295189b2012-06-20 16:38:30 -070018122 @see
18123 @return Result of the function call
18124*/
18125WDI_Status
18126WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018127(
Jeff Johnson295189b2012-06-20 16:38:30 -070018128 WDI_ControlBlockType* pWDICtx,
18129 WDI_EventInfoType* pEventData
18130)
18131{
18132 WDI_Status wdiStatus;
18133 eHalStatus halStatus;
18134 WDI_HostOffloadCb wdiHostOffloadCb;
18135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18136
18137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018138 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018139 -------------------------------------------------------------------------*/
18140 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18141 ( NULL == pEventData->pEventData))
18142 {
18143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018144 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018145 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018147 }
18148
18149 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18150
18151 /*-------------------------------------------------------------------------
18152 Extract response and send it to UMAC
18153 -------------------------------------------------------------------------*/
18154 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018155 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018156
18157 /*Notify UMAC*/
18158 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18159
Jeff Johnsone7245742012-09-05 17:12:55 -070018160 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018161}/*WDI_ProcessHostOffloadRsp*/
18162
18163/**
18164 @brief Process keep alive Rsp function (called when a
18165 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018166
18167 @param pWDICtx: pointer to the WLAN DAL context
18168 pEventData: pointer to the event information structure
18169
Jeff Johnson295189b2012-06-20 16:38:30 -070018170 @see
18171 @return Result of the function call
18172*/
18173WDI_Status
18174WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018175(
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 WDI_ControlBlockType* pWDICtx,
18177 WDI_EventInfoType* pEventData
18178)
18179{
18180 WDI_Status wdiStatus;
18181 eHalStatus halStatus;
18182 WDI_KeepAliveCb wdiKeepAliveCb;
18183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18185 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18186
18187
18188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018189 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018190 -------------------------------------------------------------------------*/
18191 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18192 ( NULL == pEventData->pEventData))
18193 {
18194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018195 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018196 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018197 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018198 }
18199
Jeff Johnsone7245742012-09-05 17:12:55 -070018200 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18201
Jeff Johnson295189b2012-06-20 16:38:30 -070018202 /*-------------------------------------------------------------------------
18203 Extract response and send it to UMAC
18204 -------------------------------------------------------------------------*/
18205 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018206 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018207
18208 /*Notify UMAC*/
18209 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18210
Jeff Johnsone7245742012-09-05 17:12:55 -070018211 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018212}/*WDI_ProcessKeepAliveRsp*/
18213
18214/**
18215 @brief Process wowl add ptrn Rsp function (called when a
18216 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018217
18218 @param pWDICtx: pointer to the WLAN DAL context
18219 pEventData: pointer to the event information structure
18220
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 @see
18222 @return Result of the function call
18223*/
18224WDI_Status
18225WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018226(
Jeff Johnson295189b2012-06-20 16:38:30 -070018227 WDI_ControlBlockType* pWDICtx,
18228 WDI_EventInfoType* pEventData
18229)
18230{
Jeff Johnson295189b2012-06-20 16:38:30 -070018231 eHalStatus halStatus;
18232 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018233 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18234 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18235
Jeff Johnson295189b2012-06-20 16:38:30 -070018236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18237
18238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018240 -------------------------------------------------------------------------*/
18241 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18242 ( NULL == pEventData->pEventData))
18243 {
18244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018245 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018248 }
18249
18250 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18251
18252 /*-------------------------------------------------------------------------
18253 Extract response and send it to UMAC
18254 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018255 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18256 {
18257 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18258 pEventData->pEventData,
18259 sizeof(halAddWowlBcastPtrRsp));
18260
18261 wdiWowlAddBcPtrRsp.wdiStatus =
18262 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18263 }
18264 else
18265 {
18266 halStatus = *((eHalStatus*)pEventData->pEventData);
18267 wdiWowlAddBcPtrRsp.wdiStatus =
18268 WDI_HAL_2_WDI_STATUS(halStatus);
18269 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018270
18271 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018272 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018273
Jeff Johnsone7245742012-09-05 17:12:55 -070018274 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018275}/*WDI_ProcessWowlAddBcPtrnRsp*/
18276
18277/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018278 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018279 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018280
18281 @param pWDICtx: pointer to the WLAN DAL context
18282 pEventData: pointer to the event information structure
18283
Jeff Johnson295189b2012-06-20 16:38:30 -070018284 @see
18285 @return Result of the function call
18286*/
18287WDI_Status
18288WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018289(
Jeff Johnson295189b2012-06-20 16:38:30 -070018290 WDI_ControlBlockType* pWDICtx,
18291 WDI_EventInfoType* pEventData
18292)
18293{
Jeff Johnson295189b2012-06-20 16:38:30 -070018294 eHalStatus halStatus;
18295 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018296 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18297 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18299
18300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018302 -------------------------------------------------------------------------*/
18303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18304 ( NULL == pEventData->pEventData))
18305 {
18306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018310 }
18311
18312 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18313
18314 /*-------------------------------------------------------------------------
18315 Extract response and send it to UMAC
18316 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018317 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18318 {
18319 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18320 pEventData->pEventData,
18321 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018322
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018323 wdiWowlDelBcstPtrRsp.wdiStatus =
18324 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18325 }
18326 else
18327 {
18328 halStatus = *((eHalStatus*)pEventData->pEventData);
18329 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18330 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018331 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018332 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018333
Jeff Johnsone7245742012-09-05 17:12:55 -070018334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018335}/*WDI_ProcessWowlDelBcPtrnRsp*/
18336
18337/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018338 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018339 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018340
18341 @param pWDICtx: pointer to the WLAN DAL context
18342 pEventData: pointer to the event information structure
18343
Jeff Johnson295189b2012-06-20 16:38:30 -070018344 @see
18345 @return Result of the function call
18346*/
18347WDI_Status
18348WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018349(
Jeff Johnson295189b2012-06-20 16:38:30 -070018350 WDI_ControlBlockType* pWDICtx,
18351 WDI_EventInfoType* pEventData
18352)
18353{
Jeff Johnson295189b2012-06-20 16:38:30 -070018354 eHalStatus halStatus;
18355 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018356 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18357 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18359
18360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018361 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018362 -------------------------------------------------------------------------*/
18363 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18364 ( NULL == pEventData->pEventData))
18365 {
18366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018367 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018370 }
18371
18372 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18373
18374 /*-------------------------------------------------------------------------
18375 Extract response and send it to UMAC
18376 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018377 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18378 {
18379 wpalMemoryCopy( &halEnterWowlRspParams,
18380 (wpt_uint8*)pEventData->pEventData,
18381 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018382
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018383 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18384 wdiwowlEnterRsp.status =
18385 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18386 }
18387 else
18388 {
18389 halStatus = *((eHalStatus*)pEventData->pEventData);
18390 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18391 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018392 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018393 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018394
Jeff Johnsone7245742012-09-05 17:12:55 -070018395 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018396}/*WDI_ProcessWowlEnterRsp*/
18397
18398/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018399 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018400 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018401
18402 @param pWDICtx: pointer to the WLAN DAL context
18403 pEventData: pointer to the event information structure
18404
Jeff Johnson295189b2012-06-20 16:38:30 -070018405 @see
18406 @return Result of the function call
18407*/
18408WDI_Status
18409WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018410(
Jeff Johnson295189b2012-06-20 16:38:30 -070018411 WDI_ControlBlockType* pWDICtx,
18412 WDI_EventInfoType* pEventData
18413)
18414{
Jeff Johnson295189b2012-06-20 16:38:30 -070018415 eHalStatus halStatus;
18416 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018417 tHalExitWowlRspParams halExitWowlRspParams;
18418 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18419
Jeff Johnson295189b2012-06-20 16:38:30 -070018420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18421
18422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018423 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018424 -------------------------------------------------------------------------*/
18425 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18426 ( NULL == pEventData->pEventData))
18427 {
18428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018429 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 }
18433
18434 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18435
18436 /*-------------------------------------------------------------------------
18437 Extract response and send it to UMAC
18438 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018439 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18440 {
18441 wpalMemoryCopy( &halExitWowlRspParams,
18442 pEventData->pEventData,
18443 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018444
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018445 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18446 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18447
18448 }
18449 else
18450 {
18451 halStatus = *((eHalStatus*)pEventData->pEventData);
18452 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18453 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018454 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018455 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018456
Jeff Johnsone7245742012-09-05 17:12:55 -070018457 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018458}/*WDI_ProcessWowlExitRsp*/
18459
18460/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018461 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018462 (called when a response is being received over the bus
18463 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018464
18465 @param pWDICtx: pointer to the WLAN DAL context
18466 pEventData: pointer to the event information structure
18467
Jeff Johnson295189b2012-06-20 16:38:30 -070018468 @see
18469 @return Result of the function call
18470*/
18471WDI_Status
18472WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018473(
Jeff Johnson295189b2012-06-20 16:38:30 -070018474 WDI_ControlBlockType* pWDICtx,
18475 WDI_EventInfoType* pEventData
18476)
18477{
18478 WDI_Status wdiStatus;
18479 eHalStatus halStatus;
18480 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18482
18483 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018484 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018485 -------------------------------------------------------------------------*/
18486 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18487 ( NULL == pEventData->pEventData))
18488 {
18489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018490 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018491 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018492 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018493 }
18494
18495 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18496
18497 /*-------------------------------------------------------------------------
18498 Extract response and send it to UMAC
18499 -------------------------------------------------------------------------*/
18500 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018501 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018502
18503 /*Notify UMAC*/
18504 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18505
Jeff Johnsone7245742012-09-05 17:12:55 -070018506 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018507}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18508
18509
18510/**
18511 @brief Process Nv download(called when a response
18512 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018513
18514 @param pWDICtx: pointer to the WLAN DAL context
18515 pEventData: pointer to the event information structure
18516
Jeff Johnson295189b2012-06-20 16:38:30 -070018517 @see
18518 @return Result of the function call
18519*/
18520WDI_Status
18521WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018522(
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 WDI_ControlBlockType* pWDICtx,
18524 WDI_EventInfoType* pEventData
18525)
18526{
18527
18528 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18529 tHalNvImgDownloadRspParams halNvDownloadRsp;
18530 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18531
18532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018534 -------------------------------------------------------------------------*/
18535 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18536 ( NULL == pEventData->pEventData))
18537 {
18538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018542 }
18543
18544 /*-------------------------------------------------------------------------
18545 Extract response and send it to UMAC
18546 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018547 wpalMemoryCopy( &halNvDownloadRsp,
18548 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018549 sizeof(halNvDownloadRsp));
18550
18551 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18552
18553 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018554 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18555 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018556 {
18557 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018558 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018559 }
18560 else
18561 {
18562 /*Reset the Nv related global information in WDI context information */
18563 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18564 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18565 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18566 /*call WDA callback function for last fragment */
18567 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18568 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18569 }
18570
Jeff Johnsone7245742012-09-05 17:12:55 -070018571 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018572}
18573#ifdef WLAN_FEATURE_VOWIFI_11R
18574/**
18575 @brief Process Add TSpec Rsp function (called when a response
18576 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018577
18578 @param pWDICtx: pointer to the WLAN DAL context
18579 pEventData: pointer to the event information structure
18580
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 @see
18582 @return Result of the function call
18583*/
18584WDI_Status
18585WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018586(
Jeff Johnson295189b2012-06-20 16:38:30 -070018587 WDI_ControlBlockType* pWDICtx,
18588 WDI_EventInfoType* pEventData
18589)
18590{
18591 WDI_Status wdiStatus;
18592 tAggrAddTsRspParams aggrAddTsRsp;
18593 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18595
18596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018597 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018598 -------------------------------------------------------------------------*/
18599 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18600 ( NULL == pEventData->pEventData))
18601 {
18602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018606 }
18607
18608 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18609
18610 /*-------------------------------------------------------------------------
18611 Extract response and send it to UMAC
18612 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018613 wpalMemoryCopy( &aggrAddTsRsp,
18614 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018615 sizeof(aggrAddTsRsp));
18616
18617 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018618 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018619
18620 /*Notify UMAC*/
18621 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18622
Jeff Johnsone7245742012-09-05 17:12:55 -070018623 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018624}/*WDI_ProcessAddTSpecRsp*/
18625#endif /* WLAN_FEATURE_VOWIFI_11R */
18626
18627/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018628 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018630
18631 @param pWDICtx: pointer to the WLAN DAL context
18632 pEventData: pointer to the event information structure
18633
Jeff Johnson295189b2012-06-20 16:38:30 -070018634 @see
18635 @return Result of the function call
18636*/
18637WDI_Status
18638WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018639(
Jeff Johnson295189b2012-06-20 16:38:30 -070018640 WDI_ControlBlockType* pWDICtx,
18641 WDI_EventInfoType* pEventData
18642)
18643{
18644 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18645 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18646 tHalHostResumeRspParams hostResumeRspMsg;
18647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18648
18649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018651 -------------------------------------------------------------------------*/
18652 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18653 ( NULL == pEventData->pEventData))
18654 {
18655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018659 }
18660
18661 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18662
18663 /*-------------------------------------------------------------------------
18664 Extract response and send it to UMAC
18665 -------------------------------------------------------------------------*/
18666
Jeff Johnsone7245742012-09-05 17:12:55 -070018667 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018668 (wpt_uint8*)pEventData->pEventData,
18669 sizeof(hostResumeRspMsg));
18670
Jeff Johnsone7245742012-09-05 17:12:55 -070018671 wdiResumeRspParams.wdiStatus =
18672 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018673
18674 /*Notify UMAC*/
18675 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18676
18677 return WDI_STATUS_SUCCESS;
18678}
18679
18680/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018681 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018682 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018683
18684 @param pWDICtx: pointer to the WLAN DAL context
18685 pEventData: pointer to the event information structure
18686
Jeff Johnson295189b2012-06-20 16:38:30 -070018687 @see
18688 @return Result of the function call
18689*/
18690WDI_Status
18691WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018692(
Jeff Johnson295189b2012-06-20 16:38:30 -070018693 WDI_ControlBlockType* pWDICtx,
18694 WDI_EventInfoType* pEventData
18695)
18696{
18697 WDI_Status wdiStatus;
18698 eHalStatus halStatus;
18699 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18700 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18701
18702 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018703 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018704 -------------------------------------------------------------------------*/
18705 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18706 ( NULL == pEventData->pEventData))
18707 {
18708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018709 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018712 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018713
18714 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018715
18716 /*-------------------------------------------------------------------------
18717 Extract response and send it to UMAC
18718 -------------------------------------------------------------------------*/
18719 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018720 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018721
18722 /*Notify UMAC*/
18723 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18724
Jeff Johnsone7245742012-09-05 17:12:55 -070018725 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018726}/*WDI_ProcessSetTxPerTrackingRsp*/
18727
18728/*==========================================================================
18729 Indications from HAL
18730 ==========================================================================*/
18731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018732 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018733 indication of this kind is being received over the bus
18734 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018735
18736 @param pWDICtx: pointer to the WLAN DAL context
18737 pEventData: pointer to the event information structure
18738
Jeff Johnson295189b2012-06-20 16:38:30 -070018739 @see
18740 @return Result of the function call
18741*/
18742WDI_Status
18743WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018744(
Jeff Johnson295189b2012-06-20 16:38:30 -070018745 WDI_ControlBlockType* pWDICtx,
18746 WDI_EventInfoType* pEventData
18747)
18748{
18749 WDI_LowLevelIndType wdiInd;
18750 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18751 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18752
18753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018754 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018755 -------------------------------------------------------------------------*/
18756 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18757 ( NULL == pEventData->pEventData))
18758 {
18759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018760 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018763 }
18764
18765 /*-------------------------------------------------------------------------
18766 Extract indication and send it to UMAC
18767 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018768 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18769 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018770 sizeof(tHalRSSINotification));
18771
18772 /*Fill in the indication parameters*/
18773 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18774 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18775 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18776 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18777 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18778 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18779 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18780 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18781 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18782 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18783 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18784 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18785 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018786 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18787 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018788
ltimariu034f7d62013-01-24 18:54:33 -080018789 if ( pWDICtx->wdiLowLevelIndCB )
18790 {
18791 /*Notify UMAC of indication*/
18792 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18793 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018794
18795 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018796}/*WDI_ProcessLowRSSIInd*/
18797
18798
18799/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018800 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018801 an indication of this kind is being received over the
18802 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018803
18804 @param pWDICtx: pointer to the WLAN DAL context
18805 pEventData: pointer to the event information structure
18806
Jeff Johnson295189b2012-06-20 16:38:30 -070018807 @see
18808 @return Result of the function call
18809*/
18810WDI_Status
18811WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018812(
Jeff Johnson295189b2012-06-20 16:38:30 -070018813 WDI_ControlBlockType* pWDICtx,
18814 WDI_EventInfoType* pEventData
18815)
18816{
18817 WDI_Status wdiStatus;
18818 eHalStatus halStatus;
18819 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018820 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18822
18823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018824 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018825 -------------------------------------------------------------------------*/
18826 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18827 ( NULL == pEventData->pEventData))
18828 {
18829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018833 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018834 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018835 /*-------------------------------------------------------------------------
18836 Extract indication and send it to UMAC
18837 -------------------------------------------------------------------------*/
18838 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18839 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018840 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018841
18842 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018843 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018844 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
18845 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080018846 if ( pWDICtx->wdiLowLevelIndCB )
18847 {
18848 /*Notify UMAC*/
18849 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18850 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018851
18852 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018853}/*WDI_ProcessMissedBeaconInd*/
18854
18855
18856/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018857 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018858 an indication of this kind is being received over the
18859 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018860
18861 @param pWDICtx: pointer to the WLAN DAL context
18862 pEventData: pointer to the event information structure
18863
Jeff Johnson295189b2012-06-20 16:38:30 -070018864 @see
18865 @return Result of the function call
18866*/
18867WDI_Status
18868WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018869(
Jeff Johnson295189b2012-06-20 16:38:30 -070018870 WDI_ControlBlockType* pWDICtx,
18871 WDI_EventInfoType* pEventData
18872)
18873{
18874 WDI_Status wdiStatus;
18875 eHalStatus halStatus;
18876 WDI_LowLevelIndType wdiInd;
18877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18878
18879 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018880 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018881 -------------------------------------------------------------------------*/
18882 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18883 ( NULL == pEventData->pEventData))
18884 {
18885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018886 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018887 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018888 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018889 }
18890
18891 /*-------------------------------------------------------------------------
18892 Extract indication and send it to UMAC
18893 -------------------------------------------------------------------------*/
18894 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18895 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018896 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018897
18898 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018899 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 /* ! TO DO - fill in from HAL struct:
18901 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18902
ltimariu034f7d62013-01-24 18:54:33 -080018903 if ( pWDICtx->wdiLowLevelIndCB )
18904 {
18905 /*Notify UMAC*/
18906 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18907 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018908
18909 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018910}/*WDI_ProcessUnkAddrFrameInd*/
18911
18912
18913/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018914 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018915 indication of this kind is being received over the bus
18916 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018917
18918 @param pWDICtx: pointer to the WLAN DAL context
18919 pEventData: pointer to the event information structure
18920
Jeff Johnson295189b2012-06-20 16:38:30 -070018921 @see
18922 @return Result of the function call
18923*/
18924WDI_Status
18925WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018926(
Jeff Johnson295189b2012-06-20 16:38:30 -070018927 WDI_ControlBlockType* pWDICtx,
18928 WDI_EventInfoType* pEventData
18929)
18930{
18931 WDI_LowLevelIndType wdiInd;
18932 tpSirMicFailureInd pHalMicFailureInd;
18933
18934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18935
18936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018938 -------------------------------------------------------------------------*/
18939 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18940 ( NULL == pEventData->pEventData))
18941 {
18942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018943 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018947
Jeff Johnson295189b2012-06-20 16:38:30 -070018948 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18949 /*-------------------------------------------------------------------------
18950 Extract indication and send it to UMAC
18951 -------------------------------------------------------------------------*/
18952
18953 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018954 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018955 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18956 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18957 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18958 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18959 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18960 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18961 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18962 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018963 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018965 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018967 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018968 pHalMicFailureInd->info.keyId;
18969 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18970 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18971 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18972 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080018973
18974 if ( pWDICtx->wdiLowLevelIndCB )
18975 {
18976 /*Notify UMAC*/
18977 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18978 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018979
18980 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018981}/*WDI_ProcessMicFailureInd*/
18982
18983
18984/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018985 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018986 an indication of this kind is being received over the
18987 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018988
18989 @param pWDICtx: pointer to the WLAN DAL context
18990 pEventData: pointer to the event information structure
18991
Jeff Johnson295189b2012-06-20 16:38:30 -070018992 @see
18993 @return Result of the function call
18994*/
18995WDI_Status
18996WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018997(
Jeff Johnson295189b2012-06-20 16:38:30 -070018998 WDI_ControlBlockType* pWDICtx,
18999 WDI_EventInfoType* pEventData
19000)
19001{
19002 WDI_Status wdiStatus;
19003 eHalStatus halStatus;
19004 WDI_LowLevelIndType wdiInd;
19005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19006
19007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019008 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019009 -------------------------------------------------------------------------*/
19010 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19011 ( NULL == pEventData->pEventData))
19012 {
19013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019017 }
19018
19019 /*-------------------------------------------------------------------------
19020 Extract indication and send it to UMAC
19021 -------------------------------------------------------------------------*/
19022
19023 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19024 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019025 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019026
19027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19028 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019029
Jeff Johnson295189b2012-06-20 16:38:30 -070019030 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019031 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19032 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019033
ltimariu034f7d62013-01-24 18:54:33 -080019034 if ( pWDICtx->wdiLowLevelIndCB )
19035 {
19036 /*Notify UMAC*/
19037 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19038 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019039
19040 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019041}/*WDI_ProcessFatalErrorInd*/
19042
19043/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019044 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019045 an indication of this kind is being received over the
19046 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019047
19048 @param pWDICtx: pointer to the WLAN DAL context
19049 pEventData: pointer to the event information structure
19050
Jeff Johnson295189b2012-06-20 16:38:30 -070019051 @see
19052 @return Result of the function call
19053*/
19054WDI_Status
19055WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019056(
Jeff Johnson295189b2012-06-20 16:38:30 -070019057 WDI_ControlBlockType* pWDICtx,
19058 WDI_EventInfoType* pEventData
19059)
19060{
19061 tDeleteStaContextParams halDelSTACtx;
19062 WDI_LowLevelIndType wdiInd;
19063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19064
19065 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019066 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019067 -------------------------------------------------------------------------*/
19068 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19069 ( NULL == pEventData->pEventData))
19070 {
19071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019075 }
19076
19077 /*-------------------------------------------------------------------------
19078 Extract indication and send it to UMAC
19079 -------------------------------------------------------------------------*/
19080
19081 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019082 wpalMemoryCopy( &halDelSTACtx,
19083 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 sizeof(halDelSTACtx));
19085
19086 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019087 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019088
19089 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19090 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19091 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19092 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19093
Jeff Johnsone7245742012-09-05 17:12:55 -070019094 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019096 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019097 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019098 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19099 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019100
ltimariu034f7d62013-01-24 18:54:33 -080019101 if ( pWDICtx->wdiLowLevelIndCB )
19102 {
19103 /*Notify UMAC*/
19104 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19105 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019106
19107 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019108}/*WDI_ProcessDelSTAInd*/
19109
19110/**
19111*@brief Process Coex Indication function (called when
19112 an indication of this kind is being received over the
19113 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019114
19115 @param pWDICtx: pointer to the WLAN DAL context
19116 pEventData: pointer to the event information structure
19117
Jeff Johnson295189b2012-06-20 16:38:30 -070019118 @see
19119 @return Result of the function call
19120*/
19121WDI_Status
19122WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019123(
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 WDI_ControlBlockType* pWDICtx,
19125 WDI_EventInfoType* pEventData
19126)
19127{
19128 WDI_LowLevelIndType wdiInd;
19129 tCoexIndMsg halCoexIndMsg;
19130 wpt_uint32 index;
19131 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19132
19133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019135 -------------------------------------------------------------------------*/
19136 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19137 ( NULL == pEventData->pEventData ))
19138 {
19139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019140 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019141 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019143 }
19144
19145 /*-------------------------------------------------------------------------
19146 Extract indication and send it to UMAC
19147 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019148 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19149 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019150 sizeof(halCoexIndMsg.coexIndParams) );
19151
19152 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019153 wdiInd.wdiIndicationType = WDI_COEX_IND;
19154 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019155 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19156 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019157 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019158 }
19159
19160 // DEBUG
19161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19162 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019163 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19164 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19165 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19166 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19167 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019168
ltimariu034f7d62013-01-24 18:54:33 -080019169 if ( pWDICtx->wdiLowLevelIndCB )
19170 {
19171 /*Notify UMAC*/
19172 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19173 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019174
19175 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019176}/*WDI_ProcessCoexInd*/
19177
19178/**
19179*@brief Process Tx Complete Indication function (called when
19180 an indication of this kind is being received over the
19181 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019182
19183 @param pWDICtx: pointer to the WLAN DAL context
19184 pEventData: pointer to the event information structure
19185
Jeff Johnson295189b2012-06-20 16:38:30 -070019186 @see
19187 @return Result of the function call
19188*/
19189WDI_Status
19190WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019191(
Jeff Johnson295189b2012-06-20 16:38:30 -070019192 WDI_ControlBlockType* pWDICtx,
19193 WDI_EventInfoType* pEventData
19194)
19195{
19196 WDI_LowLevelIndType wdiInd;
19197 tTxComplIndMsg halTxComplIndMsg;
19198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19199
19200 /*-------------------------------------------------------------------------
19201 Sanity check
19202 -------------------------------------------------------------------------*/
19203 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19204 ( NULL == pEventData->pEventData ))
19205 {
19206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019208 WDI_ASSERT( 0 );
19209 return WDI_STATUS_E_FAILURE;
19210 }
19211
19212 /*-------------------------------------------------------------------------
19213 Extract indication and send it to UMAC
19214 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019215 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19216 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019217 sizeof(halTxComplIndMsg.txComplParams) );
19218
19219 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019220 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19221 wdiInd.wdiIndicationData.tx_complete_status
19222 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019223
ltimariu034f7d62013-01-24 18:54:33 -080019224 if ( pWDICtx->wdiLowLevelIndCB )
19225 {
19226 /*Notify UMAC*/
19227 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19228 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019229
19230 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019231}/*WDI_ProcessTxCompleteInd*/
19232
Jeff Johnson295189b2012-06-20 16:38:30 -070019233/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019234*@brief Process Noa Start Indication function (called when
19235 an indication of this kind is being received over the
19236 bus from HAL)
19237
19238 @param pWDICtx: pointer to the WLAN DAL context
19239 pEventData: pointer to the event information structure
19240
19241 @see
19242 @return Result of the function call
19243*/
19244WDI_Status
19245WDI_ProcessP2pNoaStartInd
19246(
19247 WDI_ControlBlockType* pWDICtx,
19248 WDI_EventInfoType* pEventData
19249)
19250{
19251 WDI_LowLevelIndType wdiInd;
19252 tNoaStartIndMsg halNoaStartIndMsg;
19253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19254
19255 /*-------------------------------------------------------------------------
19256 Sanity check
19257 -------------------------------------------------------------------------*/
19258 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19259 ( NULL == pEventData->pEventData ))
19260 {
19261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19262 "%s: Invalid parameters", __func__);
19263 WDI_ASSERT( 0 );
19264 return WDI_STATUS_E_FAILURE;
19265 }
19266
19267 /*-------------------------------------------------------------------------
19268 Extract indication and send it to UMAC
19269 -------------------------------------------------------------------------*/
19270 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19271 pEventData->pEventData,
19272 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19273
19274 /*Fill in the indication parameters*/
19275 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19276
19277 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19278 = halNoaStartIndMsg.noaStartIndParams.status;
19279
19280 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19281 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19282
19283 /*Notify UMAC*/
19284 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19285
19286 return WDI_STATUS_SUCCESS;
19287}/*WDI_ProcessNoaAttrInd*/
19288
19289/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019290*@brief Process Noa Attr Indication function (called when
19291 an indication of this kind is being received over the
19292 bus from HAL)
19293
19294 @param pWDICtx: pointer to the WLAN DAL context
19295 pEventData: pointer to the event information structure
19296
19297 @see
19298 @return Result of the function call
19299*/
19300WDI_Status
19301WDI_ProcessP2pNoaAttrInd
19302(
19303 WDI_ControlBlockType* pWDICtx,
19304 WDI_EventInfoType* pEventData
19305)
19306{
19307 WDI_LowLevelIndType wdiInd;
19308 tNoaAttrIndMsg halNoaAttrIndMsg;
19309 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19310
19311 /*-------------------------------------------------------------------------
19312 Sanity check
19313 -------------------------------------------------------------------------*/
19314 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19315 ( NULL == pEventData->pEventData ))
19316 {
19317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 WDI_ASSERT( 0 );
19320 return WDI_STATUS_E_FAILURE;
19321 }
19322
19323 /*-------------------------------------------------------------------------
19324 Extract indication and send it to UMAC
19325 -------------------------------------------------------------------------*/
19326 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19327 pEventData->pEventData,
19328 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19329
19330 /*Fill in the indication parameters*/
19331 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019332
Jeff Johnson295189b2012-06-20 16:38:30 -070019333 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19334 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019335
Jeff Johnson295189b2012-06-20 16:38:30 -070019336 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19337 = halNoaAttrIndMsg.noaAttrIndParams.index;
19338 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19339 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19340 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19341 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019342
Jeff Johnson295189b2012-06-20 16:38:30 -070019343 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19344 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19345 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19346 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19347 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19348 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19349 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19350 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019351
Jeff Johnson295189b2012-06-20 16:38:30 -070019352 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19353 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19354 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19355 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19356 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19357 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19358 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19359 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19360
ltimariu034f7d62013-01-24 18:54:33 -080019361 if ( pWDICtx->wdiLowLevelIndCB )
19362 {
19363 /*Notify UMAC*/
19364 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19365 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019366
19367 return WDI_STATUS_SUCCESS;
19368}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019369
19370/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019371 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019372 an indication of this kind is being received over the
19373 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019374
19375 @param pWDICtx: pointer to the WLAN DAL context
19376 pEventData: pointer to the event information structure
19377
Jeff Johnson295189b2012-06-20 16:38:30 -070019378 @see
19379 @return Result of the function call
19380*/
19381WDI_Status
19382WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019383(
Jeff Johnson295189b2012-06-20 16:38:30 -070019384 WDI_ControlBlockType* pWDICtx,
19385 WDI_EventInfoType* pEventData
19386)
19387{
19388 WDI_LowLevelIndType wdiInd;
19389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019390
Jeff Johnson295189b2012-06-20 16:38:30 -070019391 /*-------------------------------------------------------------------------
19392 Extract indication and send it to UMAC
19393 -------------------------------------------------------------------------*/
19394 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019395 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19396
ltimariu034f7d62013-01-24 18:54:33 -080019397 if ( pWDICtx->wdiLowLevelIndCB )
19398 {
19399 /*Notify UMAC*/
19400 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19401 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019402
Jeff Johnsone7245742012-09-05 17:12:55 -070019403 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019404}/*WDI_ProcessTxPerHitInd*/
19405
Jeff Johnson295189b2012-06-20 16:38:30 -070019406/**
19407 @brief WDI_ProcessFTMCommandReq
19408 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019409
19410 @param pWDICtx: pointer to the WLAN DAL context
19411 pEventData: pointer to the event information structure
19412
Jeff Johnson295189b2012-06-20 16:38:30 -070019413 @see
19414 @return Result of the function call
19415*/
19416WDI_Status
19417WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019418(
Jeff Johnson295189b2012-06-20 16:38:30 -070019419 WDI_ControlBlockType* pWDICtx,
19420 WDI_EventInfoType* pEventData
19421)
19422{
19423 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19424 wpt_uint8 *ftmCommandBuffer = NULL;
19425 wpt_uint16 dataOffset;
19426 wpt_uint16 bufferSize;
19427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019429 -------------------------------------------------------------------------*/
19430 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19431 ( NULL == pEventData->pEventData))
19432
19433 {
19434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019438 }
19439
19440 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19441
19442 /* Get MSG Buffer */
19443 WDI_GetMessageBuffer(pWDICtx,
19444 WDI_FTM_CMD_REQ,
19445 ftmCommandReq->bodyLength,
19446 &ftmCommandBuffer,
19447 &dataOffset,
19448 &bufferSize);
19449
19450 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19451 ftmCommandReq->FTMCommandBody,
19452 ftmCommandReq->bodyLength);
19453
19454 /* Send MSG */
19455 return WDI_SendMsg(pWDICtx,
19456 ftmCommandBuffer,
19457 bufferSize,
19458 pEventData->pCBfnc,
19459 pEventData->pUserData,
19460 WDI_FTM_CMD_RESP);
19461}
19462
19463/**
19464 @brief WDI_ProcessFTMCommandRsp
19465 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019466
19467 @param pWDICtx: pointer to the WLAN DAL context
19468 pEventData: pointer to the event information structure
19469
Jeff Johnson295189b2012-06-20 16:38:30 -070019470 @see
19471 @return Result of the function call
19472*/
19473WDI_Status
19474WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019475(
Jeff Johnson295189b2012-06-20 16:38:30 -070019476 WDI_ControlBlockType* pWDICtx,
19477 WDI_EventInfoType* pEventData
19478)
19479{
19480 WDI_FTMCommandRspCb ftmCMDRspCb;
19481 tProcessPttRspParams *ftmCMDRspData = NULL;
19482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19483
19484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019486 -------------------------------------------------------------------------*/
19487 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19488 ( NULL == pEventData->pEventData))
19489 {
19490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019494 }
19495
19496 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19497
19498 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19499
Jeff Johnsone7245742012-09-05 17:12:55 -070019500 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19501 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019502 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19503
19504 /*Notify UMAC*/
19505 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19506
Jeff Johnsone7245742012-09-05 17:12:55 -070019507 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019508}
Jeff Johnson295189b2012-06-20 16:38:30 -070019509/**
19510 @brief WDI_ProcessHalDumpCmdReq
19511 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019512
19513 @param pWDICtx: pointer to the WLAN DAL context
19514 pEventData: pointer to the event information structure
19515
Jeff Johnson295189b2012-06-20 16:38:30 -070019516 @see
19517 @return Result of the function call
19518*/
19519WDI_Status
19520WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019521(
Jeff Johnson295189b2012-06-20 16:38:30 -070019522 WDI_ControlBlockType* pWDICtx,
19523 WDI_EventInfoType* pEventData
19524)
19525{
19526 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19527 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19528 wpt_uint16 usDataOffset = 0;
19529 wpt_uint16 usSendSize = 0;
19530 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019531 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019532
19533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019535 -------------------------------------------------------------------------*/
19536 if (( NULL == pEventData ) ||
19537 ( NULL == pEventData->pEventData) ||
19538 ( NULL == pEventData->pCBfnc ))
19539 {
19540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019544 }
19545
19546 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19547 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19548
19549 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019550 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019552 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019553 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019554 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019555 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019556 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019557 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019558 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019559 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019560
Jeff Johnson295189b2012-06-20 16:38:30 -070019561 /*-----------------------------------------------------------------------
19562 Get message buffer
19563 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019564 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019565 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19566 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019567 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019568 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19569 {
19570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19571 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19572 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 }
19576
Jeff Johnsone7245742012-09-05 17:12:55 -070019577 wpalMemoryCopy( pSendBuffer+usDataOffset,
19578 &halDumpCmdReqMsg.dumpCmdReqParams,
19579 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019580
19581 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019582 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019583
19584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019585 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019586 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019587 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19588 wdiHALDumpCmdRspCb, pEventData->pUserData,
19589 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019590}
19591
19592/**
19593 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019594 Process hal Dump Command Response from HAL, simply route to HDD
19595
19596 @param pWDICtx: pointer to the WLAN DAL context
19597 pEventData: pointer to the event information structure
19598
Jeff Johnson295189b2012-06-20 16:38:30 -070019599 @see
19600 @return Result of the function call
19601*/
19602WDI_Status
19603WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019604(
Jeff Johnson295189b2012-06-20 16:38:30 -070019605 WDI_ControlBlockType* pWDICtx,
19606 WDI_EventInfoType* pEventData
19607)
19608{
19609 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019610 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019611 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19612
19613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019614 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019615 -------------------------------------------------------------------------*/
19616 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19617 ( NULL == pEventData->pEventData))
19618 {
19619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019620 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019623 }
19624
Jeff Johnsone7245742012-09-05 17:12:55 -070019625 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019626
19627 /*Initialize the WDI Response structure */
19628 wdiHALDumpCmdRsp.usBufferLen = 0;
19629 wdiHALDumpCmdRsp.pBuffer = NULL;
19630
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019631 wpalMemoryCopy( &halDumpCmdRspParams,
19632 pEventData->pEventData,
19633 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019634
19635 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019636 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019637
19638 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019639 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019640 {
19641 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019642 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19643 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19644
19645 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19646 &halDumpCmdRspParams.rspBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019647 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19648 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019649
Jeff Johnson295189b2012-06-20 16:38:30 -070019650 /*Notify UMAC*/
19651 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19652
19653 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19654 {
19655 /* Free the allocated buffer */
19656 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19657 }
19658 return WDI_STATUS_SUCCESS;
19659}
19660
19661/*==========================================================================
19662 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019663
Jeff Johnson295189b2012-06-20 16:38:30 -070019664 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019665 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019666==========================================================================*/
19667/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019668 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019669 when it wishes to send up a notification like the ones
19670 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019671
Jeff Johnson295189b2012-06-20 16:38:30 -070019672 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019673
19674 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019675 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019676 wctsNotifyCBData: the callback data of the user
19677
Jeff Johnson295189b2012-06-20 16:38:30 -070019678 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019679
19680 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019681*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019682void
Jeff Johnson295189b2012-06-20 16:38:30 -070019683WDI_NotifyMsgCTSCB
19684(
Jeff Johnsone7245742012-09-05 17:12:55 -070019685 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019686 WCTS_NotifyEventType wctsEvent,
19687 void* wctsNotifyCBData
19688)
19689{
Jeff Johnsone7245742012-09-05 17:12:55 -070019690 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19692
19693 if (NULL == pWDICtx )
19694 {
19695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019696 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019698 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019699 }
19700
19701 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19702 {
19703 /* callback presumably occurred after close */
19704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019705 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019706 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019707 }
19708
19709 if ( WCTS_EVENT_OPEN == wctsEvent )
19710 {
19711 /*Flag must be set atomically as it is checked from incoming request
19712 functions*/
19713 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019714 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019715
19716 /*Nothing to do - so try to dequeue any pending request that may have
19717 occurred while we were trying to establish this*/
19718 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019719 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019721 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019722 {
19723 /*Flag must be set atomically as it is checked from incoming request
19724 functions*/
19725 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019726 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019727
19728 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019729 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019730 wpalMutexRelease(&pWDICtx->wptMutex);
19731
19732 /*Notify that the Control Channel is closed */
19733 wpalEventSet(&pWDICtx->wctsActionEvent);
19734 }
19735
19736}/*WDI_NotifyMsgCTSCB*/
19737
19738
19739/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019740 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019741 when it wishes to send up a packet received over the
19742 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019743
Jeff Johnson295189b2012-06-20 16:38:30 -070019744 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019745
19746 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019747 pMsg: the packet
19748 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019749 wctsRxMsgCBData: the callback data of the user
19750
Jeff Johnson295189b2012-06-20 16:38:30 -070019751 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019752
19753 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019754*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019755void
19756WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019757(
Jeff Johnsone7245742012-09-05 17:12:55 -070019758 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 void* pMsg,
19760 wpt_uint32 uLen,
19761 void* wctsRxMsgCBData
19762)
19763{
Jeff Johnsone7245742012-09-05 17:12:55 -070019764 tHalMsgHeader *pHalMsgHeader;
19765 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019766 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19768
19769 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019772 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 ( uLen < sizeof(tHalMsgHeader)))
19774 {
19775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019776 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019777 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019778 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019779 }
19780
19781 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19782 {
19783 /* callback presumably occurred after close */
19784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019785 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019786 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019787 }
19788
Jeff Johnsone7245742012-09-05 17:12:55 -070019789 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019790 context - so no serialization is necessary here
19791 ! - revisit this assumption */
19792
19793 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19794
19795 if ( uLen != pHalMsgHeader->msgLen )
19796 {
19797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19798 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019799 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19800 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019801 }
19802
19803 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19804
19805 /*The message itself starts after the header*/
19806 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19807 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19808 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19809 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19810
19811
19812 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19813 {
19814 /*Stop the timer as the response was received */
19815 /*!UT - check for potential race conditions between stop and response */
19816 wpalTimerStop(&pWDICtx->wptResponseTimer);
19817 }
19818 /* Check if we receive a response message which is not expected */
19819 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19820 {
19821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19822 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19823 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019824 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019825 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19826 pWDICtx->wdiExpectedResponse);
19827 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19828 return;
19829 }
19830
19831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19832 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19833
19834 /*Post response event to the state machine*/
19835 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19836
19837}/*WDI_RXMsgCTSCB*/
19838
19839
19840/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019841 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019842========================================================================*/
19843
19844/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019845 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019846 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019847
Jeff Johnson295189b2012-06-20 16:38:30 -070019848 @param pWDICtx - pointer to the control block
19849
19850 @return Result of the function call
19851*/
19852WPT_INLINE WDI_Status
19853WDI_CleanCB
19854(
19855 WDI_ControlBlockType* pWDICtx
19856)
19857{
19858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19859
19860 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019861 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019862
Jeff Johnsone7245742012-09-05 17:12:55 -070019863 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019864 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19865 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19866
19867 WDI_ResetAssocSessions( pWDICtx );
19868
19869 return WDI_STATUS_SUCCESS;
19870}/*WDI_CleanCB*/
19871
19872
19873/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019874 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019875
Jeff Johnsone7245742012-09-05 17:12:55 -070019876
19877 @param pWDICtx: pointer to the WLAN DAL context
19878 pEventData: pointer to the event information structure
19879
Jeff Johnson295189b2012-06-20 16:38:30 -070019880 @see
19881 @return Result of the function call
19882*/
19883WPT_INLINE WDI_Status
19884WDI_ProcessRequest
19885(
19886 WDI_ControlBlockType* pWDICtx,
19887 WDI_EventInfoType* pEventData
19888)
19889{
19890 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19891
Jeff Johnsone7245742012-09-05 17:12:55 -070019892 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019893 already checked these pointers*/
19894
19895 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19896 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019897 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019898 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19899 "Calling request processing function for req %s (%d) %x",
19900 WDI_getReqMsgString(pEventData->wdiRequest),
19901 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19902 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19903 }
19904 else
19905 {
19906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019907 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019908 pEventData->wdiRequest);
19909 return WDI_STATUS_E_NOT_IMPLEMENT;
19910 }
19911}/*WDI_ProcessRequest*/
19912
19913
19914/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019915 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019916 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019917 prefixes it with a send message header
19918
19919 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019920 wdiReqType: type of the request being sent
19921 uBufferLen: message buffer len
19922 pMsgBuffer: resulting allocated buffer
19923 pusDataOffset: offset in the buffer where the caller
19924 can start copying its message data
19925 puBufferSize: the resulting buffer size (offset+buff
19926 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019927
Jeff Johnson295189b2012-06-20 16:38:30 -070019928 @see
19929 @return Result of the function call
19930*/
19931WDI_Status
19932WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019933(
19934 WDI_ControlBlockType* pWDICtx,
19935 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019936 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019937 wpt_uint8** pMsgBuffer,
19938 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019939 wpt_uint16* pusBufferSize
19940)
19941{
19942 tHalMsgHeader halMsgHeader;
19943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19944
Jeff Johnsone7245742012-09-05 17:12:55 -070019945 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019946 again*/
19947
19948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019949 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019950 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019951 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019952 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19953 if ( NULL == *pMsgBuffer )
19954 {
19955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19956 "Unable to allocate message buffer for req %s (%d)",
19957 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019958 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019960 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 }
19962
19963 /*-------------------------------------------------------------------------
19964 Fill in the message header
19965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019966 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19967 /* Fill msgVersion */
19968#ifdef WLAN_FEATURE_11AC
19969 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019970 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019971 else
19972#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019973 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019974
Jeff Johnsone7245742012-09-05 17:12:55 -070019975 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19976 *pusDataOffset = sizeof(halMsgHeader);
19977 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19978
19979 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019980}/*WDI_GetMessageBuffer*/
19981
19982
19983/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019984 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019985 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019986 the CB
19987
19988 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019989 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019990
Jeff Johnson295189b2012-06-20 16:38:30 -070019991 usSendSize size of the buffer to be sent
19992 pRspCb: response callback - save in the WDI
19993 CB
19994 pUserData: user data associated with the
19995 callback
19996 wdiExpectedResponse: the code of the response that is
19997 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019998
Jeff Johnson295189b2012-06-20 16:38:30 -070019999 @see
20000 @return Result of the function call
20001*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020002WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020003WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020004(
20005 WDI_ControlBlockType* pWDICtx,
20006 wpt_uint8* pSendBuffer,
20007 wpt_uint32 usSendSize,
20008 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020009 void* pUserData,
20010 WDI_ResponseEnumType wdiExpectedResponse
20011)
20012{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020013 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020014 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20016
20017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020018 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020019 ------------------------------------------------------------------------*/
20020 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020021 pWDICtx->pfncRspCB = pRspCb;
20022 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020023
20024 /*-----------------------------------------------------------------------
20025 Call the CTS to send this message over - free message afterwards
20026 - notify transport failure
20027 Note: CTS is reponsible for freeing the message buffer.
20028 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020029 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20030 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20031 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020032 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020034 "Failed to send message over the bus - catastrophic failure");
20035
Jeff Johnsond13512a2012-07-17 11:42:19 -070020036 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020037 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020038 else
20039 {
20040 /* even when message was placed in CTS deferred Q, we will treat it
20041 success but log this info
20042 */
20043 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20044 {
20045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20046 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20047 "response %s (%d)",
20048 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20049 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020050 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020051 }
20052 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020053
Jeff Johnsond13512a2012-07-17 11:42:19 -070020054 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020055 if ( NULL != pWDICtx->wdiReqStatusCB )
20056 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020057 /*Inform originator whether request went through or not*/
20058 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20059 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 pWDICtx->wdiReqStatusCB = NULL;
20061 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020062 callback(wdiStatus, callbackContext);
20063
20064 /*For WDI requests which have registered a request callback,
20065 inform the WDA caller of the same via setting the return value
20066 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20067 end up repeating the functonality in the req callback for the
20068 WDI_STATUS_E_FAILURE case*/
20069 if (wdiStatus == WDI_STATUS_E_FAILURE)
20070 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 }
20072
Jeff Johnsond13512a2012-07-17 11:42:19 -070020073 if ( wdiStatus == WDI_STATUS_SUCCESS )
20074 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020075 /*Start timer for the expected response */
20076 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020077
20078 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020079 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020080 }
20081 else
20082 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020083 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020084 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20085 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020086
Jeff Johnsond13512a2012-07-17 11:42:19 -070020087 return wdiStatus;
20088
Jeff Johnson295189b2012-06-20 16:38:30 -070020089}/*WDI_SendMsg*/
20090
20091
20092
20093/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020094 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020095 the bus using the control transport and saves some info
20096 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020097
20098 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020099 pSendBuffer: buffer to be sent
20100 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020101
Jeff Johnson295189b2012-06-20 16:38:30 -070020102 @see
20103 @return Result of the function call
20104*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020105WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020106WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020107(
20108 WDI_ControlBlockType* pWDICtx,
20109 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020110 wpt_uint32 usSendSize
20111)
20112{
20113 wpt_uint32 uStatus ;
20114 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20115
20116 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020117 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020118 Note: CTS is reponsible for freeing the message buffer.
20119 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020120 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020121 (void*)pSendBuffer, usSendSize );
20122
20123 /*Inform Upper MAC about the outcome of the request*/
20124 if ( NULL != pWDICtx->wdiReqStatusCB )
20125 {
20126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20127 "Send indication status : %d", uStatus);
20128
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020129 /* even if CTS placed indication into its deferred Q, we treat it
20130 * as success and let CTS drain its queue as per smd interrupt to CTS
20131 */
20132 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 -070020133 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020134 }
20135
20136 /*If sending of the message failed - it is considered catastrophic and
20137 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020138 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20139 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20140
Jeff Johnson295189b2012-06-20 16:38:30 -070020141 {
20142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020143 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020144
20145 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20146 return WDI_STATUS_E_FAILURE;
20147 }
20148
Jeff Johnsone7245742012-09-05 17:12:55 -070020149 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020150}/*WDI_SendIndication*/
20151
20152
20153/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020154 @brief WDI_DetectedDeviceError - called internally by DAL when
20155 it has detected a failure in the device
20156
20157 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020158 usErrorCode: error code detected by WDI or received
20159 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020160
Jeff Johnson295189b2012-06-20 16:38:30 -070020161 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020162 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020163*/
20164void
20165WDI_DetectedDeviceError
20166(
20167 WDI_ControlBlockType* pWDICtx,
20168 wpt_uint16 usErrorCode
20169)
20170{
20171 WDI_LowLevelIndType wdiInd;
20172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20173
20174 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20175 "Device Error detected code: %d - transitioning to stopped state",
20176 usErrorCode);
20177
20178 wpalMutexAcquire(&pWDICtx->wptMutex);
20179
20180 WDI_STATableStop(pWDICtx);
20181
20182 WDI_ResetAssocSessions(pWDICtx);
20183
20184 /*Set the expected state transition to stopped - because the device
20185 experienced a failure*/
20186 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20187
20188 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020189 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020190
Jeff Johnsone7245742012-09-05 17:12:55 -070020191 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020192
20193 /*TO DO: - there should be an attempt to reset the device here*/
20194
20195 wpalMutexRelease(&pWDICtx->wptMutex);
20196
20197 /*------------------------------------------------------------------------
20198 Notify UMAC if a handler is registered
20199 ------------------------------------------------------------------------*/
20200 if (pWDICtx->wdiLowLevelIndCB)
20201 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020202 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20203 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020204
20205 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20206 }
20207}/*WDI_DetectedDeviceError*/
20208
20209/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020210 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020211 we started on send message has expire - this should
20212 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020213 reply - trigger catastrophic failure
20214 @param
20215
Jeff Johnson295189b2012-06-20 16:38:30 -070020216 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020217
20218 @see
20219 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020220*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020221void
Jeff Johnson295189b2012-06-20 16:38:30 -070020222WDI_ResponseTimerCB
20223(
20224 void *pUserData
20225)
20226{
20227 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20229
20230 if (NULL == pWDICtx )
20231 {
20232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020235 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 }
20237
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020238 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020239 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020240
20241 /* If response timer is running at this time that means this timer
20242 * event is not for the last request but rather last-to-last request and
20243 * this timer event has come after we recevied respone for last-to-last
20244 * message
20245 */
20246 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20247 {
20248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20249 "WDI_ResponseTimerCB: timer in running state on timer event, "
20250 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20251 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20252 return;
20253 }
20254
Jeff Johnson295189b2012-06-20 16:38:30 -070020255 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
20256 {
20257
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053020258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020259 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020260 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020261 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020262 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20263 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020264 /* WDI timeout means Riva is not responding or SMD communication to Riva
20265 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020266 * is to initiate SSR from APPS
20267 * There is also an option to re-enable wifi, which will eventually
20268 * trigger SSR
20269 */
20270#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070020271 wpalWcnssResetIntr();
20272 /* if this timer fires, it means Riva did not receive the FIQ */
20273 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020274#else
20275 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20276 wpalWlanReload();
20277#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020278 }
20279 else
20280 {
20281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020282 "Timeout occurred but not waiting for any response %d "
20283 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20284 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20285 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020286 }
20287
20288 return;
20289
20290}/*WDI_ResponseTimerCB*/
20291
20292
20293/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020294 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020295
Jeff Johnsone7245742012-09-05 17:12:55 -070020296
20297 @param pWDICtx: pointer to the WLAN DAL context
20298 pEventData: pointer to the event information structure
20299
Jeff Johnson295189b2012-06-20 16:38:30 -070020300 @see
20301 @return Result of the function call
20302*/
20303WPT_INLINE WDI_Status
20304WDI_ProcessResponse
20305(
20306 WDI_ControlBlockType* pWDICtx,
20307 WDI_EventInfoType* pEventData
20308)
20309{
20310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20311
Jeff Johnsone7245742012-09-05 17:12:55 -070020312 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020313 already checked these pointers
20314 ! - revisit this assumption */
20315 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20316 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020317 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020319 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020320 WDI_getRespMsgString(pEventData->wdiResponse),
20321 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20322 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20323 }
20324 else
20325 {
20326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 pEventData->wdiResponse);
20329 return WDI_STATUS_E_NOT_IMPLEMENT;
20330 }
20331}/*WDI_ProcessResponse*/
20332
20333
20334/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020335 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020336=========================================================================*/
20337
20338/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020339 @brief Utility function used by the DAL Core to help queue a
20340 request that cannot be processed right away.
20341 @param
20342
Jeff Johnson295189b2012-06-20 16:38:30 -070020343 pWDICtx: - pointer to the WDI control block
20344 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020345 queued
20346
20347 @see
20348 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020349*/
20350WDI_Status
20351WDI_QueuePendingReq
20352(
20353 WDI_ControlBlockType* pWDICtx,
20354 WDI_EventInfoType* pEventData
20355)
20356{
Jeff Johnsone7245742012-09-05 17:12:55 -070020357 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020358 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020359 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20361
20362 if ( NULL == pEventDataQueue )
20363 {
20364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020365 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020366 WDI_ASSERT(0);
20367 return WDI_STATUS_MEM_FAILURE;
20368 }
20369
20370 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20371 pEventDataQueue->pUserData = pEventData->pUserData;
20372 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20373 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020374 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020375
20376 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20377 {
20378 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020379
Jeff Johnson295189b2012-06-20 16:38:30 -070020380 if ( NULL == pEventInfo )
20381 {
20382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020383 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020384 WDI_ASSERT(0);
20385 wpalMemoryFree(pEventDataQueue);
20386 return WDI_STATUS_MEM_FAILURE;
20387 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020388
Jeff Johnson295189b2012-06-20 16:38:30 -070020389 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20390
20391 }
20392 pEventDataQueue->pEventData = pEventInfo;
20393
20394 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020395 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020396
Jeff Johnsone7245742012-09-05 17:12:55 -070020397 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020398
20399 return WDI_STATUS_SUCCESS;
20400}/*WDI_QueuePendingReq*/
20401
20402/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020403 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020404 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020405 @param
20406
20407 pMsg - pointer to the message
20408
20409 @see
20410 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020411*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020412void
Jeff Johnson295189b2012-06-20 16:38:30 -070020413WDI_PALCtrlMsgCB
20414(
20415 wpt_msg *pMsg
20416)
20417{
20418 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020419 WDI_ControlBlockType* pWDICtx = NULL;
20420 WDI_Status wdiStatus;
20421 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020422 void* pUserData;
20423 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20424
20425 if (( NULL == pMsg )||
20426 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20427 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20428 {
20429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020430 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020432 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020433 }
20434
20435 /*Transition back to the state that we had before serialization
20436 - serialization transitions us to BUSY to stop any incomming requests
20437 ! TO DO L: possible race condition here if a request comes in between the
20438 state transition and the post function*/
20439
Jeff Johnsone7245742012-09-05 17:12:55 -070020440 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020441
20442 /*-----------------------------------------------------------------------
20443 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020444 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020445 -----------------------------------------------------------------------*/
20446 switch ( pEventData->wdiRequest )
20447 {
20448
Jeff Johnsone7245742012-09-05 17:12:55 -070020449 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020450 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20451 break;
20452
Jeff Johnson295189b2012-06-20 16:38:30 -070020453 case WDI_NV_DOWNLOAD_REQ:
20454 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20455 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20456 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20457 {
20458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020459 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020460 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20461 }
20462 else
20463 {
20464 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20465 }
20466
20467 break;
20468
20469 default:
20470 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20471 break;
20472 }/*switch ( pEventData->wdiRequest )*/
20473
20474 if ( WDI_STATUS_SUCCESS != wdiStatus )
20475 {
20476 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20477
20478 if ( NULL != pfnReqStatusCB )
20479 {
20480 /*Fail the request*/
20481 pfnReqStatusCB( wdiStatus, pUserData);
20482 }
20483 }
20484
20485 /* Free data - that was allocated when queueing*/
20486 if( pEventData != NULL )
20487 {
20488 if( pEventData->pEventData != NULL )
20489 {
20490 wpalMemoryFree(pEventData->pEventData);
20491 }
20492 wpalMemoryFree(pEventData);
20493 }
20494
20495 if( pMsg != NULL )
20496 {
20497 wpalMemoryFree(pMsg);
20498 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020499
Jeff Johnson295189b2012-06-20 16:38:30 -070020500}/*WDI_PALCtrlMsgCB*/
20501
20502/**
20503 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020504 and schedule for execution a pending request
20505 @param
20506
Jeff Johnson295189b2012-06-20 16:38:30 -070020507 pWDICtx: - pointer to the WDI control block
20508 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020509 queued
20510
20511 @see
20512 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020513*/
20514WDI_Status
20515WDI_DequeuePendingReq
20516(
20517 WDI_ControlBlockType* pWDICtx
20518)
20519{
Jeff Johnsone7245742012-09-05 17:12:55 -070020520 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020521 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020522 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20524
Jeff Johnsone7245742012-09-05 17:12:55 -070020525 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020526
20527 if ( NULL == pNode )
20528 {
20529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020530 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020531 return WDI_STATUS_SUCCESS;
20532 }
20533
20534 /*The node actually points to the 1st element inside the Event Data struct -
20535 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020536 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020537
20538 /*Serialize processing in the control thread
20539 !TO DO: - check to see if these are all the messages params that need
20540 to be filled in*/
20541 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20542
20543 if ( NULL == palMsg )
20544 {
20545 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020546 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020549 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020550 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020551 palMsg->callback = WDI_PALCtrlMsgCB;
20552 palMsg->ptr = pEventData;
20553
20554 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020555 palMsg->val = pWDICtx->uGlobalState;
20556
Jeff Johnson295189b2012-06-20 16:38:30 -070020557 /*Transition back to BUSY as we need to handle a queued request*/
20558 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020559
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20561
20562 return WDI_STATUS_PENDING;
20563}/*WDI_DequeuePendingReq*/
20564
20565
20566/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020567 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020568 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020569 away.- The assoc requests will be queued by BSSID
20570 @param
20571
Jeff Johnson295189b2012-06-20 16:38:30 -070020572 pWDICtx: - pointer to the WDI control block
20573 pEventData: pointer to the evnt info that needs to be queued
20574 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020575
20576 @see
20577 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020578*/
20579WDI_Status
20580WDI_QueueNewAssocRequest
20581(
20582 WDI_ControlBlockType* pWDICtx,
20583 WDI_EventInfoType* pEventData,
20584 wpt_macAddr macBSSID
20585)
20586{
Jeff Johnsone7245742012-09-05 17:12:55 -070020587 wpt_uint8 i;
20588 WDI_BSSSessionType* pSession = NULL;
20589 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020590 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020591 void* pEventInfo;
20592 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020594
Jeff Johnsone7245742012-09-05 17:12:55 -070020595
20596 /*------------------------------------------------------------------------
20597 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020598 ------------------------------------------------------------------------*/
20599 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20600 {
20601 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20602 {
20603 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020604 pSession = &pWDICtx->aBSSSessions[i];
20605 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020606 }
20607 }
20608
20609 if ( i >= WDI_MAX_BSS_SESSIONS )
20610 {
20611 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020613 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020614
Jeff Johnson295189b2012-06-20 16:38:30 -070020615 /*------------------------------------------------------------------------
20616 Fill in the BSSID for this session and set the usage flag
20617 ------------------------------------------------------------------------*/
20618 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020619 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020620
20621 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020622 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 ------------------------------------------------------------------------*/
20624 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20625 if ( NULL == pEventDataQueue )
20626 {
20627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020628 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020629 WDI_ASSERT(0);
20630 return WDI_STATUS_MEM_FAILURE;
20631 }
20632
20633 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20634 if ( NULL == pSessionIdElement )
20635 {
20636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020637 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020638 WDI_ASSERT(0);
20639 wpalMemoryFree(pEventDataQueue);
20640 return WDI_STATUS_MEM_FAILURE;
20641 }
20642
20643 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20644 if ( NULL == pEventInfo )
20645 {
20646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020647 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 WDI_ASSERT(0);
20649 wpalMemoryFree(pSessionIdElement);
20650 wpalMemoryFree(pEventDataQueue);
20651 return WDI_STATUS_MEM_FAILURE;
20652 }
20653
20654 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20655 pEventDataQueue->pUserData = pEventData->pUserData;
20656 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20657 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020658 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020659
20660 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20661 pEventDataQueue->pEventData = pEventInfo;
20662
20663 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020664 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020665
20666 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020667 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020668
Jeff Johnsone7245742012-09-05 17:12:55 -070020669 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020670
20671 /*We need to maintain a separate list that keeps track of the order in which
20672 the new assoc requests are being queued such that we can start processing
20673 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020674 pSessionIdElement->ucIndex = i;
20675 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020676
20677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20678 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020679 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020680
20681 /*Return pending as this is what the status of the request is since it has
20682 been queued*/
20683 return WDI_STATUS_PENDING;
20684}/*WDI_QueueNewAssocRequest*/
20685
20686/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 away.- The assoc requests will be queued by BSSID
20690 @param
20691
Jeff Johnson295189b2012-06-20 16:38:30 -070020692 pWDICtx: - pointer to the WDI control block
20693 pSession: - session in which to queue
20694 pEventData: pointer to the event info that needs to be
20695 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020696
20697 @see
20698 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020699*/
20700WDI_Status
20701WDI_QueueAssocRequest
20702(
20703 WDI_ControlBlockType* pWDICtx,
20704 WDI_BSSSessionType* pSession,
20705 WDI_EventInfoType* pEventData
20706)
20707{
Jeff Johnsone7245742012-09-05 17:12:55 -070020708 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020709 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020710 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020712
20713 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020714 Sanity check
20715 ------------------------------------------------------------------------*/
20716 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20717 {
20718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020719 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020720
Jeff Johnsone7245742012-09-05 17:12:55 -070020721 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020722 }
20723
20724 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020726 ------------------------------------------------------------------------*/
20727 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20728 if ( NULL == pEventDataQueue )
20729 {
20730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020731 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020732 WDI_ASSERT(0);
20733 return WDI_STATUS_MEM_FAILURE;
20734 }
20735
20736 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20737 if ( NULL == pEventInfo )
20738 {
20739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20740 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020741 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020742 WDI_ASSERT(0);
20743 wpalMemoryFree(pEventDataQueue);
20744 return WDI_STATUS_MEM_FAILURE;
20745 }
20746
20747 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20748 pEventDataQueue->pUserData = pEventData->pUserData;
20749 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20750 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020751 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020752 pEventDataQueue->pEventData = pEventInfo;
20753
20754 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20755
20756 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020757 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020758
20759 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020760 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020761
Jeff Johnsone7245742012-09-05 17:12:55 -070020762 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020763
20764 /*The result of this operation is pending because the request has been
20765 queued and it will be processed at a later moment in time */
20766 return WDI_STATUS_PENDING;
20767}/*WDI_QueueAssocRequest*/
20768
20769/**
20770 @brief Utility function used by the DAL Core to help dequeue
20771 an association request that was pending
20772 The request will be queued up in front of the main
20773 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020774 @param
20775
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020777
20778
20779 @see
20780 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020781*/
20782WDI_Status
20783WDI_DequeueAssocRequest
20784(
20785 WDI_ControlBlockType* pWDICtx
20786)
20787{
Jeff Johnsone7245742012-09-05 17:12:55 -070020788 wpt_list_node* pNode = NULL;
20789 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020790 WDI_BSSSessionType* pSession;
20791 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020792
20793 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020794 Sanity check
20795 ------------------------------------------------------------------------*/
20796 if ( NULL == pWDICtx )
20797 {
20798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020799 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020800
Jeff Johnsone7245742012-09-05 17:12:55 -070020801 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020802 }
20803
20804 /*------------------------------------------------------------------------
20805 An association has been completed => a new association can occur
20806 Check to see if there are any pending associations ->
20807 If so , transfer all the pending requests into the busy queue for
20808 processing
20809 These requests have arrived prior to the requests in the busy queue
20810 (bc they needed to be processed in order to be placed in this queue)
20811 => they will be placed at the front of the busy queue
20812 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020813 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020814
20815 if ( NULL == pNode )
20816 {
20817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020818 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020819 return WDI_STATUS_SUCCESS;
20820 }
20821
20822 /*The node actually points to the 1st element inside the Session Id struct -
20823 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020824 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020825
20826 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20827 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20828
20829 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20830 {
20831 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020832
Jeff Johnson295189b2012-06-20 16:38:30 -070020833 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020834 the front of the main waiting queue for subsequent execution*/
20835 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020836 while ( NULL != pNode )
20837 {
20838 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020839 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20840 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020841 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020842 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 }
20844 else
20845 {
20846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020847 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020848 WPAL_ASSERT(0);
20849 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020851 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020852
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20854 wpalMemoryFree(pSessionIdElement);
20855 return WDI_STATUS_SUCCESS;
20856}/*WDI_DequeueAssocRequest*/
20857
20858/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020859 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 pending requests - all req cb will be called with
20861 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020862 @param
20863
Jeff Johnson295189b2012-06-20 16:38:30 -070020864 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020865
20866 @see
20867 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020868*/
20869WDI_Status
20870WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020871(
Jeff Johnson295189b2012-06-20 16:38:30 -070020872 WDI_ControlBlockType* pWDICtx
20873)
20874{
Jeff Johnsone7245742012-09-05 17:12:55 -070020875 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020876 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020877 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 void* pUserData;
20879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20880
Jeff Johnsone7245742012-09-05 17:12:55 -070020881 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020882
20883 /*------------------------------------------------------------------------
20884 Go through all the requests and fail them - this will only be called
20885 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020886 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020887 ------------------------------------------------------------------------*/
20888 while( pNode )
20889 {
20890 /*The node actually points to the 1st element inside the Event Data struct -
20891 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020892 pEventDataQueue = (WDI_EventInfoType*)pNode;
20893
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20895 if ( NULL != pfnReqStatusCB )
20896 {
20897 /*Fail the request*/
20898 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20899 }
20900 /* Free data - that was allocated when queueing */
20901 if ( pEventDataQueue->pEventData != NULL )
20902 {
20903 wpalMemoryFree(pEventDataQueue->pEventData);
20904 }
20905 wpalMemoryFree(pEventDataQueue);
20906
20907 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20908 {
20909 break;
20910 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020911 }
20912
Jeff Johnson295189b2012-06-20 16:38:30 -070020913 return WDI_STATUS_SUCCESS;
20914}/*WDI_ClearPendingRequests*/
20915
20916/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020917 @brief Helper routine used to init the BSS Sessions in the WDI control block
20918
20919
20920 @param pWDICtx: pointer to the WLAN DAL context
20921
Jeff Johnson295189b2012-06-20 16:38:30 -070020922 @see
20923*/
20924void
20925WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020926(
Jeff Johnson295189b2012-06-20 16:38:30 -070020927 WDI_ControlBlockType* pWDICtx
20928)
20929{
Jeff Johnsone7245742012-09-05 17:12:55 -070020930 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20932
20933 /*-------------------------------------------------------------------------
20934 No Sanity check
20935 -------------------------------------------------------------------------*/
20936 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20937 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020938 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020939 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20940 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20941 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20942 }
20943}/*WDI_ResetAssocSessions*/
20944
20945/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020946 @brief Helper routine used to find a session based on the BSSID
20947
20948
20949 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020950 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020951 pSession: pointer to the session (if found)
20952
Jeff Johnson295189b2012-06-20 16:38:30 -070020953 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020954 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020955*/
20956wpt_uint8
20957WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020958(
Jeff Johnson295189b2012-06-20 16:38:30 -070020959 WDI_ControlBlockType* pWDICtx,
20960 wpt_macAddr macBSSID,
20961 WDI_BSSSessionType** ppSession
20962)
20963{
Jeff Johnsone7245742012-09-05 17:12:55 -070020964 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20966
20967 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020968 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020969 -------------------------------------------------------------------------*/
20970 if ( NULL == ppSession )
20971 {
20972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020973 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020974 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020975 }
20976
Jeff Johnsone7245742012-09-05 17:12:55 -070020977 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020978
Jeff Johnsone7245742012-09-05 17:12:55 -070020979 /*------------------------------------------------------------------------
20980 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020981 ------------------------------------------------------------------------*/
20982 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20983 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020984 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20985 (eWLAN_PAL_TRUE ==
20986 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20987 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020988 {
20989 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020990 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020991 return i;
20992 }
20993 }
20994
Jeff Johnsone7245742012-09-05 17:12:55 -070020995 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020996}/*WDI_FindAssocSession*/
20997
20998/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020999 @brief Helper routine used to find a session based on the BSSID
21000
21001
21002 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021003 ucBSSIdx: BSS Index of the session
21004 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021005
Jeff Johnson295189b2012-06-20 16:38:30 -070021006 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021007 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021008*/
21009wpt_uint8
21010WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021011(
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 WDI_ControlBlockType* pWDICtx,
21013 wpt_uint16 ucBSSIdx,
21014 WDI_BSSSessionType** ppSession
21015)
21016{
Jeff Johnsone7245742012-09-05 17:12:55 -070021017 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21019
21020 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021021 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021022 -------------------------------------------------------------------------*/
21023 if ( NULL == ppSession )
21024 {
21025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021026 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021027 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021028 }
21029
Jeff Johnsone7245742012-09-05 17:12:55 -070021030 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021031
Jeff Johnsone7245742012-09-05 17:12:55 -070021032 /*------------------------------------------------------------------------
21033 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021034 ------------------------------------------------------------------------*/
21035 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21036 {
21037 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21038 {
21039 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021040 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021041 return i;
21042 }
21043 }
21044
Jeff Johnsone7245742012-09-05 17:12:55 -070021045 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021046}/*WDI_FindAssocSessionByBSSIdx*/
21047
21048/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021049 @brief Helper routine used to find a session based on the BSSID
21050
21051
21052 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021053 ucBSSIdx: BSS Index of the session
21054 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021055
Jeff Johnson295189b2012-06-20 16:38:30 -070021056 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021057 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021058*/
21059wpt_uint8
21060WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021061(
Jeff Johnson295189b2012-06-20 16:38:30 -070021062 WDI_ControlBlockType* pWDICtx,
21063 wpt_uint16 usIdx,
21064 WDI_BSSSessionType** ppSession
21065)
21066{
21067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21068
21069 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021070 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021071 -------------------------------------------------------------------------*/
21072 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21073 {
21074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021075 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021076 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021077 }
21078
21079 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021081
21082 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021083
Jeff Johnson295189b2012-06-20 16:38:30 -070021084}/*WDI_FindAssocSessionByBSSIdx*/
21085
21086/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021087 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021088 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021089
21090
21091 @param pWDICtx: pointer to the WLAN DAL context
21092 pSession: pointer to the session (if found)
21093
Jeff Johnson295189b2012-06-20 16:38:30 -070021094 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021095 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021096*/
21097wpt_uint8
21098WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021099(
Jeff Johnson295189b2012-06-20 16:38:30 -070021100 WDI_ControlBlockType* pWDICtx,
21101 WDI_BSSSessionType** ppSession
21102)
21103{
Jeff Johnsone7245742012-09-05 17:12:55 -070021104 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021108 -------------------------------------------------------------------------*/
21109 if ( NULL == ppSession )
21110 {
21111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021112 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021113 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021114 }
21115
Jeff Johnsone7245742012-09-05 17:12:55 -070021116 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021117
Jeff Johnsone7245742012-09-05 17:12:55 -070021118 /*------------------------------------------------------------------------
21119 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021120 ------------------------------------------------------------------------*/
21121 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21122 {
21123 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21124 {
21125 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021126 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 return i;
21128 }
21129 }
21130
Jeff Johnsone7245742012-09-05 17:12:55 -070021131 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021132}/*WDI_FindEmptySession*/
21133
21134
21135/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021136 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021137 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021138
21139
21140 @param pWDICtx: pointer to the WLAN DAL context
21141
Jeff Johnson295189b2012-06-20 16:38:30 -070021142 @see
21143 @return Number of sessions in use
21144*/
21145wpt_uint8
21146WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021147(
Jeff Johnson295189b2012-06-20 16:38:30 -070021148 WDI_ControlBlockType* pWDICtx
21149)
21150{
Jeff Johnsone7245742012-09-05 17:12:55 -070021151 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021153
21154 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021155 Count all sessions in use
21156 ------------------------------------------------------------------------*/
21157 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21158 {
21159 if ( pWDICtx->aBSSSessions[i].bInUse )
21160 {
21161 ucCount++;
21162 }
21163 }
21164
Jeff Johnsone7245742012-09-05 17:12:55 -070021165 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021166}/*WDI_GetActiveSessionsCount*/
21167
21168/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021169 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021170 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021171
21172
21173 @param pWDICtx: pointer to the WLAN DAL context
21174 pSession: pointer to the session (if found)
21175
Jeff Johnson295189b2012-06-20 16:38:30 -070021176 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021177 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021178*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021179void
Jeff Johnson295189b2012-06-20 16:38:30 -070021180WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021181(
Jeff Johnson295189b2012-06-20 16:38:30 -070021182 WDI_ControlBlockType* pWDICtx,
21183 WDI_BSSSessionType* ppSession
21184)
21185{
21186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 -------------------------------------------------------------------------*/
21189 if ( NULL == ppSession )
21190 {
21191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021192 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021193 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 }
21195
Jeff Johnsone7245742012-09-05 17:12:55 -070021196 /*------------------------------------------------------------------------
21197 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021198 ------------------------------------------------------------------------*/
21199 wpal_list_destroy(&ppSession->wptPendingQueue);
21200 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021201 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21202 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021203 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21204 wpal_list_init(&ppSession->wptPendingQueue);
21205
21206}/*WDI_DeleteSession*/
21207
21208/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021209 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021210 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021211 @param
21212
Jeff Johnson295189b2012-06-20 16:38:30 -070021213 WDI_AddStaParams: - pointer to the WDI Add STA params
21214 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021215
21216 @see
21217 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021218*/
21219void
21220WDI_AddBcastSTAtoSTATable
21221(
21222 WDI_ControlBlockType* pWDICtx,
21223 WDI_AddStaParams * staParams,
21224 wpt_uint16 usBcastStaIdx
21225)
21226{
21227 WDI_AddStaParams wdiAddSTAParam = {0};
21228 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21229 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21230
21231 /*---------------------------------------------------------------------
21232 Sanity check
21233 ---------------------------------------------------------------------*/
21234 if ( NULL == staParams )
21235 {
21236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021238
Jeff Johnsone7245742012-09-05 17:12:55 -070021239 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021240 }
21241
21242 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21243 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21244 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21245 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21246 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21247 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21248 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21249 WDI_MAC_ADDR_LEN );
21250 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21251 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21252 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21253 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21254 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21255 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21256 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021257
Jeff Johnson295189b2012-06-20 16:38:30 -070021258 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21259}
21260
21261/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021262 @brief NV blob will be divided into fragments of size 4kb and
21263 Sent to HAL
21264
21265 @param pWDICtx: pointer to the WLAN DAL context
21266 pEventData: pointer to the event information structure
21267
Jeff Johnson295189b2012-06-20 16:38:30 -070021268 @see
21269 @return Result of the function call
21270 */
21271
21272WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021273(
Jeff Johnson295189b2012-06-20 16:38:30 -070021274 WDI_ControlBlockType* pWDICtx,
21275 WDI_EventInfoType* pEventData
21276)
21277{
21278
21279 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21280 wpt_uint8* pSendBuffer = NULL;
21281 wpt_uint16 usDataOffset = 0;
21282 wpt_uint16 usSendSize = 0;
21283 wpt_uint16 usCurrentFragmentSize =0;
21284 wpt_uint8* pSrcBuffer = NULL;
21285 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21286 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21287
21288 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21289 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21290 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21291
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021293 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21294
21295 /* Update the current Fragment Number */
21296 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21297
21298 /*Update the HAL REQ structure */
21299 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21300 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21301 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21302
21303 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021304 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021305 image will be sent to HAL*/
21306
Jeff Johnsone7245742012-09-05 17:12:55 -070021307 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021308 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021309 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021310 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021311 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021312 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21313 usCurrentFragmentSize = FRAGMENT_SIZE;
21314
21315 /*Update the HAL REQ structure */
21316 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21317 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21318
21319 }
21320 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021321 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021322 usCurrentFragmentSize = FRAGMENT_SIZE;
21323
21324 /*Update the HAL REQ structure */
21325 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21326 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21327 }
21328
21329 /*-----------------------------------------------------------------------
21330 Get message buffer
21331 -----------------------------------------------------------------------*/
21332 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21333 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21334 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021335 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21337 {
21338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21339 "Unable to get send buffer in NV Download req %x %x ",
21340 pEventData, pwdiNvDownloadReqParams);
21341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021343 }
21344
21345 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021346 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021347 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21348
21349 /* Appending the NV image fragment */
21350 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21351 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21352 usCurrentFragmentSize);
21353
21354 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021355 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021356
Jeff Johnsone7245742012-09-05 17:12:55 -070021357 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21358 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021359 WDI_NV_DOWNLOAD_RESP);
21360
21361}
Jeff Johnsone7245742012-09-05 17:12:55 -070021362/*============================================================================
21363 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021364 ============================================================================*/
21365/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021366 @brief Helper routine used to find a session based on the BSSID
21367 @param pContext: pointer to the WLAN DAL context
21368 @param pDPContext: pointer to the Datapath context
21369
Jeff Johnson295189b2012-06-20 16:38:30 -070021370 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021371 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021372*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021373WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021374WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21375{
21376 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21377
21378 pCB->pDPContext = pDPContext;
21379 return;
21380}
21381
21382/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021383 @brief Helper routine used to find a session based on the BSSID
21384
21385
21386 @param pContext: pointer to the WLAN DAL context
21387
Jeff Johnson295189b2012-06-20 16:38:30 -070021388 @see
21389 @return pointer to Datapath context
21390*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021391WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021392WDI_DS_GetDatapathContext (void *pContext)
21393{
21394 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21395 return pCB->pDPContext;
21396}
21397/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021398 @brief Helper routine used to find a session based on the BSSID
21399
21400
21401 @param pContext: pointer to the WLAN DAL context
21402 @param pDTDriverContext: pointer to the Transport Driver context
21403
Jeff Johnson295189b2012-06-20 16:38:30 -070021404 @see
21405 @return void
21406*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021407WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021408WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21409{
21410 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21411
21412 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021413 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021414}
21415
21416/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021417 @brief Helper routine used to find a session based on the BSSID
21418
21419
21420 @param pWDICtx: pointer to the WLAN DAL context
21421
Jeff Johnson295189b2012-06-20 16:38:30 -070021422 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021423 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021424*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021425WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021426WDT_GetTransportDriverContext (void *pContext)
21427{
21428 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021429 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021430}
21431
Jeff Johnsone7245742012-09-05 17:12:55 -070021432/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021433 Helper inline converters
21434 ============================================================================*/
21435/*Convert WDI driver type into HAL driver type*/
21436WPT_STATIC WPT_INLINE WDI_Status
21437WDI_HAL_2_WDI_STATUS
21438(
21439 eHalStatus halStatus
21440)
21441{
Jeff Johnsone7245742012-09-05 17:12:55 -070021442 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021443 the chances of getting inlined*/
21444 switch( halStatus )
21445 {
21446 case eHAL_STATUS_SUCCESS:
21447 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21448 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21449 return WDI_STATUS_SUCCESS;
21450 case eHAL_STATUS_FAILURE:
21451 return WDI_STATUS_E_FAILURE;
21452 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021453 return WDI_STATUS_MEM_FAILURE;
21454 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021455 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021456 default:
21457 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21458 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021459
Jeff Johnsone7245742012-09-05 17:12:55 -070021460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021461}/*WDI_HAL_2_WDI_STATUS*/
21462
21463/*Convert WDI request type into HAL request type*/
21464WPT_STATIC WPT_INLINE tHalHostMsgType
21465WDI_2_HAL_REQ_TYPE
21466(
21467 WDI_RequestEnumType wdiReqType
21468)
21469{
Jeff Johnsone7245742012-09-05 17:12:55 -070021470 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021471 the chances of getting inlined*/
21472 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021473 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021474 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021475 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021476 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021477 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021478 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021479 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021480 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021481 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021482 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021483 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021484 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021485 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021486 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021488 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021489 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021490 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021491 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021492 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021493 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021494 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021496 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021497 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021498 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021499 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021500 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021501 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021502 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021503 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021504 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021505 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021506 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021507 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021508 return WLAN_HAL_RMV_STAKEY_REQ;
21509 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021510 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021511 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021512 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021513 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021514 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021515 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021516 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021517 case WDI_DEL_BA_REQ:
21518 return WLAN_HAL_DEL_BA_REQ;
21519#ifdef FEATURE_WLAN_CCX
21520 case WDI_TSM_STATS_REQ:
21521 return WLAN_HAL_TSM_STATS_REQ;
21522#endif
21523 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021524 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021525 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021526 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021527 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021528 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021530 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021531 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021532 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021533 case WDI_ADD_BA_SESSION_REQ:
21534 return WLAN_HAL_ADD_BA_SESSION_REQ;
21535 case WDI_TRIGGER_BA_REQ:
21536 return WLAN_HAL_TRIGGER_BA_REQ;
21537 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021538 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021539 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021540 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21542 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21543 case WDI_SET_MAX_TX_POWER_REQ:
21544 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070021545 case WDI_SET_TX_POWER_REQ:
21546 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021547 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21548 return WLAN_HAL_SET_P2P_GONOA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021550 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021552 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021553 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021554 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021556 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021557 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021558 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021559 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021560 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021561 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021562 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021564 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021565 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021566 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021567 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021568 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 case WDI_REM_BEACON_FILTER_REQ:
21570 return WLAN_HAL_REM_BCN_FILTER_REQ;
21571 case WDI_SET_RSSI_THRESHOLDS_REQ:
21572 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21573 case WDI_HOST_OFFLOAD_REQ:
21574 return WLAN_HAL_HOST_OFFLOAD_REQ;
21575 case WDI_WOWL_ADD_BC_PTRN_REQ:
21576 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21577 case WDI_WOWL_DEL_BC_PTRN_REQ:
21578 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21579 case WDI_WOWL_ENTER_REQ:
21580 return WLAN_HAL_ENTER_WOWL_REQ;
21581 case WDI_WOWL_EXIT_REQ:
21582 return WLAN_HAL_EXIT_WOWL_REQ;
21583 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21584 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21585 case WDI_NV_DOWNLOAD_REQ:
21586 return WLAN_HAL_DOWNLOAD_NV_REQ;
21587 case WDI_FLUSH_AC_REQ:
21588 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21589 case WDI_BTAMP_EVENT_REQ:
21590 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21591#ifdef WLAN_FEATURE_VOWIFI_11R
21592 case WDI_AGGR_ADD_TS_REQ:
21593 return WLAN_HAL_AGGR_ADD_TS_REQ;
21594#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070021595 case WDI_FTM_CMD_REQ:
21596 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021597 case WDI_ADD_STA_SELF_REQ:
21598 return WLAN_HAL_ADD_STA_SELF_REQ;
21599 case WDI_DEL_STA_SELF_REQ:
21600 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021601#ifdef FEATURE_OEM_DATA_SUPPORT
21602 case WDI_START_OEM_DATA_REQ:
21603 return WLAN_HAL_START_OEM_DATA_REQ;
21604#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021605 case WDI_HOST_RESUME_REQ:
21606 return WLAN_HAL_HOST_RESUME_REQ;
21607 case WDI_HOST_SUSPEND_IND:
21608 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080021609 case WDI_TRAFFIC_STATS_IND:
21610 return WLAN_HAL_CLASS_B_STATS_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021611 case WDI_KEEP_ALIVE_REQ:
21612 return WLAN_HAL_KEEP_ALIVE_REQ;
21613
21614#ifdef FEATURE_WLAN_SCAN_PNO
21615 case WDI_SET_PREF_NETWORK_REQ:
21616 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21617 case WDI_SET_RSSI_FILTER_REQ:
21618 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21619 case WDI_UPDATE_SCAN_PARAMS_REQ:
21620 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21621#endif // FEATURE_WLAN_SCAN_PNO
21622 case WDI_SET_TX_PER_TRACKING_REQ:
21623 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21624#ifdef WLAN_FEATURE_PACKET_FILTERING
21625 case WDI_8023_MULTICAST_LIST_REQ:
21626 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21627 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021628 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021629 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21630 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21631 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21632 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21633#endif // WLAN_FEATURE_PACKET_FILTERING
21634 case WDI_HAL_DUMP_CMD_REQ:
21635 return WLAN_HAL_DUMP_COMMAND_REQ;
21636#ifdef WLAN_FEATURE_GTK_OFFLOAD
21637 case WDI_GTK_OFFLOAD_REQ:
21638 return WLAN_HAL_GTK_OFFLOAD_REQ;
21639 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21640 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21641#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21642
21643 case WDI_INIT_SCAN_CON_REQ:
21644 return WLAN_HAL_INIT_SCAN_CON_REQ;
21645 case WDI_SET_POWER_PARAMS_REQ:
21646 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21647 case WDI_SET_TM_LEVEL_REQ:
21648 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21649 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21650 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021651#ifdef WLAN_FEATURE_11AC
21652 case WDI_UPDATE_VHT_OP_MODE_REQ:
21653 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21654#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021655 case WDI_GET_ROAM_RSSI_REQ:
21656 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021657 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021658 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021659 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021660
Jeff Johnson295189b2012-06-20 16:38:30 -070021661}/*WDI_2_HAL_REQ_TYPE*/
21662
21663/*Convert WDI response type into HAL response type*/
21664WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21665HAL_2_WDI_RSP_TYPE
21666(
21667 tHalHostMsgType halMsg
21668)
21669{
Jeff Johnsone7245742012-09-05 17:12:55 -070021670 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021671 the chances of getting inlined*/
21672 switch( halMsg )
21673 {
21674 case WLAN_HAL_START_RSP:
21675 return WDI_START_RESP;
21676 case WLAN_HAL_STOP_RSP:
21677 return WDI_STOP_RESP;
21678 case WLAN_HAL_INIT_SCAN_RSP:
21679 return WDI_INIT_SCAN_RESP;
21680 case WLAN_HAL_START_SCAN_RSP:
21681 return WDI_START_SCAN_RESP;
21682 case WLAN_HAL_END_SCAN_RSP:
21683 return WDI_END_SCAN_RESP;
21684 case WLAN_HAL_FINISH_SCAN_RSP:
21685 return WDI_FINISH_SCAN_RESP;
21686 case WLAN_HAL_CONFIG_STA_RSP:
21687 return WDI_CONFIG_STA_RESP;
21688 case WLAN_HAL_DELETE_STA_RSP:
21689 return WDI_DEL_STA_RESP;
21690 case WLAN_HAL_CONFIG_BSS_RSP:
21691 return WDI_CONFIG_BSS_RESP;
21692 case WLAN_HAL_DELETE_BSS_RSP:
21693 return WDI_DEL_BSS_RESP;
21694 case WLAN_HAL_JOIN_RSP:
21695 return WDI_JOIN_RESP;
21696 case WLAN_HAL_POST_ASSOC_RSP:
21697 return WDI_POST_ASSOC_RESP;
21698 case WLAN_HAL_SET_BSSKEY_RSP:
21699 return WDI_SET_BSS_KEY_RESP;
21700 case WLAN_HAL_SET_STAKEY_RSP:
21701 return WDI_SET_STA_KEY_RESP;
21702 case WLAN_HAL_RMV_BSSKEY_RSP:
21703 return WDI_RMV_BSS_KEY_RESP;
21704 case WLAN_HAL_RMV_STAKEY_RSP:
21705 return WDI_RMV_STA_KEY_RESP;
21706 case WLAN_HAL_SET_BCASTKEY_RSP:
21707 return WDI_SET_STA_BCAST_KEY_RESP;
21708 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21709 // return WDI_RMV_STA_BCAST_KEY_RESP;
21710 case WLAN_HAL_ADD_TS_RSP:
21711 return WDI_ADD_TS_RESP;
21712 case WLAN_HAL_DEL_TS_RSP:
21713 return WDI_DEL_TS_RESP;
21714 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21715 return WDI_UPD_EDCA_PRMS_RESP;
21716 case WLAN_HAL_ADD_BA_RSP:
21717 return WDI_ADD_BA_RESP;
21718 case WLAN_HAL_DEL_BA_RSP:
21719 return WDI_DEL_BA_RESP;
21720#ifdef FEATURE_WLAN_CCX
21721 case WLAN_HAL_TSM_STATS_RSP:
21722 return WDI_TSM_STATS_RESP;
21723#endif
21724 case WLAN_HAL_CH_SWITCH_RSP:
21725 return WDI_CH_SWITCH_RESP;
21726 case WLAN_HAL_SET_LINK_ST_RSP:
21727 return WDI_SET_LINK_ST_RESP;
21728 case WLAN_HAL_GET_STATS_RSP:
21729 return WDI_GET_STATS_RESP;
21730 case WLAN_HAL_UPDATE_CFG_RSP:
21731 return WDI_UPDATE_CFG_RESP;
21732 case WLAN_HAL_ADD_BA_SESSION_RSP:
21733 return WDI_ADD_BA_SESSION_RESP;
21734 case WLAN_HAL_TRIGGER_BA_RSP:
21735 return WDI_TRIGGER_BA_RESP;
21736 case WLAN_HAL_UPDATE_BEACON_RSP:
21737 return WDI_UPD_BCON_PRMS_RESP;
21738 case WLAN_HAL_SEND_BEACON_RSP:
21739 return WDI_SND_BCON_RESP;
21740 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21741 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21742 /*Indications*/
21743 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21744 return WDI_HAL_RSSI_NOTIFICATION_IND;
21745 case WLAN_HAL_MISSED_BEACON_IND:
21746 return WDI_HAL_MISSED_BEACON_IND;
21747 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21748 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21749 case WLAN_HAL_MIC_FAILURE_IND:
21750 return WDI_HAL_MIC_FAILURE_IND;
21751 case WLAN_HAL_FATAL_ERROR_IND:
21752 return WDI_HAL_FATAL_ERROR_IND;
21753 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21754 return WDI_HAL_DEL_STA_IND;
21755 case WLAN_HAL_COEX_IND:
21756 return WDI_HAL_COEX_IND;
21757 case WLAN_HAL_OTA_TX_COMPL_IND:
21758 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021759 case WLAN_HAL_P2P_NOA_ATTR_IND:
21760 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021761 case WLAN_HAL_P2P_NOA_START_IND:
21762 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 case WLAN_HAL_TX_PER_HIT_IND:
21764 return WDI_HAL_TX_PER_HIT_IND;
21765 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21766 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070021767 case WLAN_HAL_SET_TX_POWER_RSP:
21768 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021769 case WLAN_HAL_SET_P2P_GONOA_RSP:
21770 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021771 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021772 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021773 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021774 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021775 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021776 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021777 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021778 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021779 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021780 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021781 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021782 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021784 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021785 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021786 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021787 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021788 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021789 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21790 return WDI_SET_BEACON_FILTER_RESP;
21791 case WLAN_HAL_REM_BCN_FILTER_RSP:
21792 return WDI_REM_BEACON_FILTER_RESP;
21793 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21794 return WDI_SET_RSSI_THRESHOLDS_RESP;
21795 case WLAN_HAL_HOST_OFFLOAD_RSP:
21796 return WDI_HOST_OFFLOAD_RESP;
21797 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21798 return WDI_WOWL_ADD_BC_PTRN_RESP;
21799 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21800 return WDI_WOWL_DEL_BC_PTRN_RESP;
21801 case WLAN_HAL_ENTER_WOWL_RSP:
21802 return WDI_WOWL_ENTER_RESP;
21803 case WLAN_HAL_EXIT_WOWL_RSP:
21804 return WDI_WOWL_EXIT_RESP;
21805 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21806 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21807 case WLAN_HAL_DOWNLOAD_NV_RSP:
21808 return WDI_NV_DOWNLOAD_RESP;
21809 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21810 return WDI_FLUSH_AC_RESP;
21811 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21812 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 case WLAN_HAL_PROCESS_PTT_RSP:
21814 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021815 case WLAN_HAL_ADD_STA_SELF_RSP:
21816 return WDI_ADD_STA_SELF_RESP;
21817case WLAN_HAL_DEL_STA_SELF_RSP:
21818 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021819#ifdef FEATURE_OEM_DATA_SUPPORT
21820 case WLAN_HAL_START_OEM_DATA_RSP:
21821 return WDI_START_OEM_DATA_RESP;
21822#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021823 case WLAN_HAL_HOST_RESUME_RSP:
21824 return WDI_HOST_RESUME_RESP;
21825 case WLAN_HAL_KEEP_ALIVE_RSP:
21826 return WDI_KEEP_ALIVE_RESP;
21827#ifdef FEATURE_WLAN_SCAN_PNO
21828 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21829 return WDI_SET_PREF_NETWORK_RESP;
21830 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021831 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021832 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21833 return WDI_UPDATE_SCAN_PARAMS_RESP;
21834 case WLAN_HAL_PREF_NETW_FOUND_IND:
21835 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21836#endif // FEATURE_WLAN_SCAN_PNO
21837 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21838 return WDI_SET_TX_PER_TRACKING_RESP;
21839#ifdef WLAN_FEATURE_PACKET_FILTERING
21840 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21841 return WDI_8023_MULTICAST_LIST_RESP;
21842 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21843 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21844 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21845 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21846 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21847 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21848#endif // WLAN_FEATURE_PACKET_FILTERING
21849
21850 case WLAN_HAL_DUMP_COMMAND_RSP:
21851 return WDI_HAL_DUMP_CMD_RESP;
21852 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21853 return WDI_SET_POWER_PARAMS_RESP;
21854#ifdef WLAN_FEATURE_VOWIFI_11R
21855 case WLAN_HAL_AGGR_ADD_TS_RSP:
21856 return WDI_AGGR_ADD_TS_RESP;
21857#endif
21858
21859#ifdef WLAN_FEATURE_GTK_OFFLOAD
21860 case WLAN_HAL_GTK_OFFLOAD_RSP:
21861 return WDI_GTK_OFFLOAD_RESP;
21862 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21863 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21864#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21865#ifdef WLAN_WAKEUP_EVENTS
21866 case WLAN_HAL_WAKE_REASON_IND:
21867 return WDI_HAL_WAKE_REASON_IND;
21868#endif // WLAN_WAKEUP_EVENTS
21869
21870 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21871 return WDI_SET_TM_LEVEL_RESP;
21872 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21873 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021874#ifdef WLAN_FEATURE_11AC
21875 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21876 return WDI_UPDATE_VHT_OP_MODE_RESP;
21877#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021878#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
21879 case WLAN_HAL_GET_ROAM_RSSI_RSP:
21880 return WDI_GET_ROAM_RSSI_RESP;
21881#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021882 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021883 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021884 }
21885
21886}/*HAL_2_WDI_RSP_TYPE*/
21887
21888
21889/*Convert WDI driver type into HAL driver type*/
21890WPT_STATIC WPT_INLINE tDriverType
21891WDI_2_HAL_DRV_TYPE
21892(
21893 WDI_DriverType wdiDriverType
21894)
21895{
Jeff Johnsone7245742012-09-05 17:12:55 -070021896 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021897 the chances of getting inlined*/
21898 switch( wdiDriverType )
21899 {
21900 case WDI_DRIVER_TYPE_PRODUCTION:
21901 return eDRIVER_TYPE_PRODUCTION;
21902 case WDI_DRIVER_TYPE_MFG:
21903 return eDRIVER_TYPE_MFG;
21904 case WDI_DRIVER_TYPE_DVT:
21905 return eDRIVER_TYPE_DVT;
21906 }
21907
Jeff Johnsone7245742012-09-05 17:12:55 -070021908 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021909}/*WDI_2_HAL_DRV_TYPE*/
21910
21911
21912/*Convert WDI stop reason into HAL stop reason*/
21913WPT_STATIC WPT_INLINE tHalStopType
21914WDI_2_HAL_STOP_REASON
21915(
21916 WDI_StopType wdiDriverType
21917)
21918{
Jeff Johnsone7245742012-09-05 17:12:55 -070021919 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021920 the chances of getting inlined*/
21921 switch( wdiDriverType )
21922 {
21923 case WDI_STOP_TYPE_SYS_RESET:
21924 return HAL_STOP_TYPE_SYS_RESET;
21925 case WDI_DRIVER_TYPE_MFG:
21926 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21927 case WDI_STOP_TYPE_RF_KILL:
21928 return HAL_STOP_TYPE_RF_KILL;
21929 }
21930
Jeff Johnsone7245742012-09-05 17:12:55 -070021931 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021932}/*WDI_2_HAL_STOP_REASON*/
21933
21934
21935/*Convert WDI scan mode type into HAL scan mode type*/
21936WPT_STATIC WPT_INLINE eHalSysMode
21937WDI_2_HAL_SCAN_MODE
21938(
21939 WDI_ScanMode wdiScanMode
21940)
21941{
Jeff Johnsone7245742012-09-05 17:12:55 -070021942 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021943 the chances of getting inlined*/
21944 switch( wdiScanMode )
21945 {
21946 case WDI_SCAN_MODE_NORMAL:
21947 return eHAL_SYS_MODE_NORMAL;
21948 case WDI_SCAN_MODE_LEARN:
21949 return eHAL_SYS_MODE_LEARN;
21950 case WDI_SCAN_MODE_SCAN:
21951 return eHAL_SYS_MODE_SCAN;
21952 case WDI_SCAN_MODE_PROMISC:
21953 return eHAL_SYS_MODE_PROMISC;
21954 case WDI_SCAN_MODE_SUSPEND_LINK:
21955 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021956 case WDI_SCAN_MODE_ROAM_SCAN:
21957 return eHAL_SYS_MODE_ROAM_SCAN;
21958 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21959 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021960 }
21961
Jeff Johnsone7245742012-09-05 17:12:55 -070021962 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021963}/*WDI_2_HAL_SCAN_MODE*/
21964
21965/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021966WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021967WDI_2_HAL_SEC_CH_OFFSET
21968(
21969 WDI_HTSecondaryChannelOffset wdiSecChOffset
21970)
21971{
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021973 the chances of getting inlined*/
21974 switch( wdiSecChOffset )
21975 {
21976 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021977 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021979 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021980 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021981 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21982#ifdef WLAN_FEATURE_11AC
21983 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21984 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21985 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21986 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21987 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21988 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21989 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21990 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21991 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21992 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21993 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21994 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21995 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21996 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21997#endif
21998 default:
21999 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022000 }
22001
Jeff Johnsone7245742012-09-05 17:12:55 -070022002 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022003}/*WDI_2_HAL_SEC_CH_OFFSET*/
22004
22005/*Convert WDI BSS type into HAL BSS type*/
22006WPT_STATIC WPT_INLINE tSirBssType
22007WDI_2_HAL_BSS_TYPE
22008(
22009 WDI_BssType wdiBSSType
22010)
22011{
Jeff Johnsone7245742012-09-05 17:12:55 -070022012 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022013 the chances of getting inlined*/
22014 switch( wdiBSSType )
22015 {
22016 case WDI_INFRASTRUCTURE_MODE:
22017 return eSIR_INFRASTRUCTURE_MODE;
22018 case WDI_INFRA_AP_MODE:
22019 return eSIR_INFRA_AP_MODE;
22020 case WDI_IBSS_MODE:
22021 return eSIR_IBSS_MODE;
22022 case WDI_BTAMP_STA_MODE:
22023 return eSIR_BTAMP_STA_MODE;
22024 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022025 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022026 case WDI_BSS_AUTO_MODE:
22027 return eSIR_AUTO_MODE;
22028 }
22029
Jeff Johnsone7245742012-09-05 17:12:55 -070022030 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022031}/*WDI_2_HAL_BSS_TYPE*/
22032
22033/*Convert WDI NW type into HAL NW type*/
22034WPT_STATIC WPT_INLINE tSirNwType
22035WDI_2_HAL_NW_TYPE
22036(
22037 WDI_NwType wdiNWType
22038)
22039{
Jeff Johnsone7245742012-09-05 17:12:55 -070022040 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022041 the chances of getting inlined*/
22042 switch( wdiNWType )
22043 {
22044 case WDI_11A_NW_TYPE:
22045 return eSIR_11A_NW_TYPE;
22046 case WDI_11B_NW_TYPE:
22047 return eSIR_11B_NW_TYPE;
22048 case WDI_11G_NW_TYPE:
22049 return eSIR_11G_NW_TYPE;
22050 case WDI_11N_NW_TYPE:
22051 return eSIR_11N_NW_TYPE;
22052 }
22053
Jeff Johnsone7245742012-09-05 17:12:55 -070022054 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022055}/*WDI_2_HAL_NW_TYPE*/
22056
22057/*Convert WDI chanel bonding type into HAL cb type*/
22058WPT_STATIC WPT_INLINE ePhyChanBondState
22059WDI_2_HAL_CB_STATE
22060(
22061 WDI_PhyChanBondState wdiCbState
22062)
22063{
Jeff Johnsone7245742012-09-05 17:12:55 -070022064 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022065 the chances of getting inlined*/
22066 switch ( wdiCbState )
22067 {
22068 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22069 return PHY_SINGLE_CHANNEL_CENTERED;
22070 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22071 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22072 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22073 return PHY_DOUBLE_CHANNEL_CENTERED;
22074 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22075 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022076#ifdef WLAN_FEATURE_11AC
22077 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22078 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22079 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22080 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22081 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22082 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22083 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22084 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22085 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22086 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22087 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22088 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22089 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22090 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22091#endif
22092 case WDI_MAX_CB_STATE:
22093 default:
22094 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022095 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022096
Jeff Johnson295189b2012-06-20 16:38:30 -070022097 return PHY_CHANNEL_BONDING_STATE_MAX;
22098}/*WDI_2_HAL_CB_STATE*/
22099
22100/*Convert WDI chanel bonding type into HAL cb type*/
22101WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22102WDI_2_HAL_HT_OPER_MODE
22103(
22104 WDI_HTOperatingMode wdiHTOperMode
22105)
22106{
Jeff Johnsone7245742012-09-05 17:12:55 -070022107 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022108 the chances of getting inlined*/
22109 switch ( wdiHTOperMode )
22110 {
22111 case WDI_HT_OP_MODE_PURE:
22112 return eSIR_HT_OP_MODE_PURE;
22113 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22114 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22115 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22116 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22117 case WDI_HT_OP_MODE_MIXED:
22118 return eSIR_HT_OP_MODE_MIXED;
22119 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022120
Jeff Johnson295189b2012-06-20 16:38:30 -070022121 return eSIR_HT_OP_MODE_MAX;
22122}/*WDI_2_HAL_HT_OPER_MODE*/
22123
22124/*Convert WDI mimo PS type into HAL mimo PS type*/
22125WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22126WDI_2_HAL_MIMO_PS
22127(
22128 WDI_HTMIMOPowerSaveState wdiHTOperMode
22129)
22130{
Jeff Johnsone7245742012-09-05 17:12:55 -070022131 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022132 the chances of getting inlined*/
22133 switch ( wdiHTOperMode )
22134 {
22135 case WDI_HT_MIMO_PS_STATIC:
22136 return eSIR_HT_MIMO_PS_STATIC;
22137 case WDI_HT_MIMO_PS_DYNAMIC:
22138 return eSIR_HT_MIMO_PS_DYNAMIC;
22139 case WDI_HT_MIMO_PS_NA:
22140 return eSIR_HT_MIMO_PS_NA;
22141 case WDI_HT_MIMO_PS_NO_LIMIT:
22142 return eSIR_HT_MIMO_PS_NO_LIMIT;
22143 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022144
Jeff Johnson295189b2012-06-20 16:38:30 -070022145 return eSIR_HT_MIMO_PS_MAX;
22146}/*WDI_2_HAL_MIMO_PS*/
22147
22148/*Convert WDI ENC type into HAL ENC type*/
22149WPT_STATIC WPT_INLINE tAniEdType
22150WDI_2_HAL_ENC_TYPE
22151(
22152 WDI_EncryptType wdiEncType
22153)
22154{
Jeff Johnsone7245742012-09-05 17:12:55 -070022155 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022156 the chances of getting inlined*/
22157 switch ( wdiEncType )
22158 {
22159 case WDI_ENCR_NONE:
22160 return eSIR_ED_NONE;
22161
22162 case WDI_ENCR_WEP40:
22163 return eSIR_ED_WEP40;
22164
22165 case WDI_ENCR_WEP104:
22166 return eSIR_ED_WEP104;
22167
22168 case WDI_ENCR_TKIP:
22169 return eSIR_ED_TKIP;
22170
22171 case WDI_ENCR_CCMP:
22172 return eSIR_ED_CCMP;
22173
22174 case WDI_ENCR_AES_128_CMAC:
22175 return eSIR_ED_AES_128_CMAC;
22176#if defined(FEATURE_WLAN_WAPI)
22177 case WDI_ENCR_WPI:
22178 return eSIR_ED_WPI;
22179#endif
22180 default:
22181 return eSIR_ED_NOT_IMPLEMENTED;
22182 }
22183
22184}/*WDI_2_HAL_ENC_TYPE*/
22185
22186/*Convert WDI WEP type into HAL WEP type*/
22187WPT_STATIC WPT_INLINE tAniWepType
22188WDI_2_HAL_WEP_TYPE
22189(
22190 WDI_WepType wdiWEPType
22191)
22192{
Jeff Johnsone7245742012-09-05 17:12:55 -070022193 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 the chances of getting inlined*/
22195 switch ( wdiWEPType )
22196 {
22197 case WDI_WEP_STATIC:
22198 return eSIR_WEP_STATIC;
22199
22200 case WDI_WEP_DYNAMIC:
22201 return eSIR_WEP_DYNAMIC;
22202 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022203
Jeff Johnson295189b2012-06-20 16:38:30 -070022204 return eSIR_WEP_MAX;
22205}/*WDI_2_HAL_WEP_TYPE*/
22206
22207WPT_STATIC WPT_INLINE tSirLinkState
22208WDI_2_HAL_LINK_STATE
22209(
22210 WDI_LinkStateType wdiLinkState
22211)
22212{
Jeff Johnsone7245742012-09-05 17:12:55 -070022213 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022214 the chances of getting inlined*/
22215 switch ( wdiLinkState )
22216 {
22217 case WDI_LINK_IDLE_STATE:
22218 return eSIR_LINK_IDLE_STATE;
22219
22220 case WDI_LINK_PREASSOC_STATE:
22221 return eSIR_LINK_PREASSOC_STATE;
22222
22223 case WDI_LINK_POSTASSOC_STATE:
22224 return eSIR_LINK_POSTASSOC_STATE;
22225
22226 case WDI_LINK_AP_STATE:
22227 return eSIR_LINK_AP_STATE;
22228
22229 case WDI_LINK_IBSS_STATE:
22230 return eSIR_LINK_IBSS_STATE;
22231
22232 case WDI_LINK_BTAMP_PREASSOC_STATE:
22233 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22234
22235 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22236 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22237
22238 case WDI_LINK_BTAMP_AP_STATE:
22239 return eSIR_LINK_BTAMP_AP_STATE;
22240
22241 case WDI_LINK_BTAMP_STA_STATE:
22242 return eSIR_LINK_BTAMP_STA_STATE;
22243
22244 case WDI_LINK_LEARN_STATE:
22245 return eSIR_LINK_LEARN_STATE;
22246
22247 case WDI_LINK_SCAN_STATE:
22248 return eSIR_LINK_SCAN_STATE;
22249
22250 case WDI_LINK_FINISH_SCAN_STATE:
22251 return eSIR_LINK_FINISH_SCAN_STATE;
22252
22253 case WDI_LINK_INIT_CAL_STATE:
22254 return eSIR_LINK_INIT_CAL_STATE;
22255
22256 case WDI_LINK_FINISH_CAL_STATE:
22257 return eSIR_LINK_FINISH_CAL_STATE;
22258
Jeff Johnson295189b2012-06-20 16:38:30 -070022259 case WDI_LINK_LISTEN_STATE:
22260 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022261
22262 default:
22263 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022265}
22266
Jeff Johnsone7245742012-09-05 17:12:55 -070022267/*Translate a STA Context from WDI into HAL*/
22268WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022269void
22270WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022271(
Jeff Johnson295189b2012-06-20 16:38:30 -070022272 tConfigStaParams* phalConfigSta,
22273 WDI_ConfigStaReqInfoType* pwdiConfigSta
22274)
22275{
22276 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022277#ifdef WLAN_FEATURE_11AC
22278 /* Get the Version 1 Handler */
22279 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22280 if (WDI_getFwWlanFeatCaps(DOT11AC))
22281 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022282 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022283 }
22284#endif
22285 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022286 the chances of getting inlined*/
22287
Jeff Johnsone7245742012-09-05 17:12:55 -070022288 wpalMemoryCopy(phalConfigSta->bssId,
22289 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22290
22291 wpalMemoryCopy(phalConfigSta->staMac,
22292 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022293
22294 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22295 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22296 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22297 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22298 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22299 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22300 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22301 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22302 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22303 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22304 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22305 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22306 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22307 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22308 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22309 phalConfigSta->action = pwdiConfigSta->wdiAction;
22310 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22311 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22312 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22313 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22314 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22315 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22316 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022317
Jeff Johnson295189b2012-06-20 16:38:30 -070022318 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22319
Jeff Johnsone7245742012-09-05 17:12:55 -070022320 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022321 pwdiConfigSta->wdiSupportedRates.opRateMode;
22322 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22323 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022324 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022325 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22326 }
22327 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22328 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022329 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022330 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22331 }
22332 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22333 {
22334 phalConfigSta->supportedRates.aniLegacyRates[i] =
22335 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22336 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022337 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022338 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22339 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22340 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022341 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022342 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22343 }
22344 phalConfigSta->supportedRates.rxHighestDataRate =
22345 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22346
Jeff Johnsone7245742012-09-05 17:12:55 -070022347#ifdef WLAN_FEATURE_11AC
22348 if(phalConfigSta_V1 != NULL)
22349 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022350 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22351 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22352 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22353 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022354 }
22355#endif
22356
Jeff Johnson295189b2012-06-20 16:38:30 -070022357 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022358
Jeff Johnsone7245742012-09-05 17:12:55 -070022359#ifdef WLAN_FEATURE_11AC
22360 if(phalConfigSta_V1 != NULL)
22361 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022362 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22363 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022364 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022365 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22366 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22367
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 }
22369#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022370}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022371
22372/*Translate a Rate set info from WDI into HAL*/
22373WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022374WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022375(
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 tSirMacRateSet* pHalRateSet,
22377 WDI_RateSet* pwdiRateSet
22378)
22379{
Jeff Johnsone7245742012-09-05 17:12:55 -070022380 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022381 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22382
22383 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22384 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22385
22386 for ( i = 0; i < pHalRateSet->numRates; i++ )
22387 {
22388 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22389 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022390
Jeff Johnson295189b2012-06-20 16:38:30 -070022391}/*WDI_CopyWDIRateSetToHALRateSet*/
22392
22393
22394/*Translate an EDCA Parameter Record from WDI into HAL*/
22395WPT_STATIC WPT_INLINE void
22396WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022397(
Jeff Johnson295189b2012-06-20 16:38:30 -070022398 tSirMacEdcaParamRecord* phalEdcaParam,
22399 WDI_EdcaParamRecord* pWDIEdcaParam
22400)
22401{
Jeff Johnsone7245742012-09-05 17:12:55 -070022402 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022403 the chances of getting inlined*/
22404
22405 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22406 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22407 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22408 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22409
22410 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22411 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22412 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22413}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22414
22415
22416/*Copy a management frame header from WDI fmt into HAL fmt*/
22417WPT_STATIC WPT_INLINE void
22418WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22419(
22420 tSirMacMgmtHdr* pmacMgmtHdr,
22421 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22422)
22423{
22424 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22425 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22426 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22427 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22428 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22429 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22430 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22431 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22432 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22433 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22434 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22435
22436 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22437 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22438
Jeff Johnsone7245742012-09-05 17:12:55 -070022439 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022441 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022442 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022443 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022444 pwdiMacMgmtHdr->bssId, 6);
22445
22446 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22447 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22448 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22449
22450}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22451
22452
22453/*Copy config bss parameters from WDI fmt into HAL fmt*/
22454WPT_STATIC WPT_INLINE void
22455WDI_CopyWDIConfigBSSToHALConfigBSS
22456(
22457 tConfigBssParams* phalConfigBSS,
22458 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22459)
22460{
22461
22462 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022463#ifdef WLAN_FEATURE_11AC
22464 /* Get the Version 1 Handler */
22465 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22466 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022467 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022468#endif
22469
Jeff Johnson295189b2012-06-20 16:38:30 -070022470 wpalMemoryCopy( phalConfigBSS->bssId,
22471 pwdiConfigBSS->macBSSID,
22472 WDI_MAC_ADDR_LEN);
22473
22474#ifdef HAL_SELF_STA_PER_BSS
22475 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22476 pwdiConfigBSS->macSelfAddr,
22477 WDI_MAC_ADDR_LEN);
22478#endif
22479
22480 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22481
22482 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22483 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22484
Jeff Johnsone7245742012-09-05 17:12:55 -070022485 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022486 pwdiConfigBSS->ucShortSlotTimeSupported;
22487 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22488 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22489 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22490 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22491 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022492 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022493 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22494 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22495 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22496 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22497 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22498 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22499 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22500 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22501 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22502 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22503 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22504
Jeff Johnsone7245742012-09-05 17:12:55 -070022505 phalConfigBSS->htOperMode =
22506 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022507
22508 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22509 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22510 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22511 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22512
22513#ifdef WLAN_FEATURE_VOWIFI
22514 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22515#endif
22516
22517 /*! Used 32 as magic number because that is how the ssid is declared inside the
22518 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022519 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022520 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22521 pwdiConfigBSS->wdiSSID.ucLength : 32;
22522 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022523 pwdiConfigBSS->wdiSSID.sSSID,
22524 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022525
22526 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22527 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022528
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22530 &pwdiConfigBSS->wdiRateSet);
22531
22532 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22533
22534 if(phalConfigBSS->edcaParamsValid)
22535 {
22536 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22537 &pwdiConfigBSS->wdiBEEDCAParams);
22538 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22539 &pwdiConfigBSS->wdiBKEDCAParams);
22540 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22541 &pwdiConfigBSS->wdiVIEDCAParams);
22542 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22543 &pwdiConfigBSS->wdiVOEDCAParams);
22544 }
22545
Jeff Johnsone7245742012-09-05 17:12:55 -070022546 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022547
22548 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22549
22550#ifdef WLAN_FEATURE_VOWIFI_11R
22551
Jeff Johnsone7245742012-09-05 17:12:55 -070022552 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022554
Jeff Johnson295189b2012-06-20 16:38:30 -070022555 if( phalConfigBSS->extSetStaKeyParamValid )
22556 {
22557 /*-----------------------------------------------------------------------
22558 Copy the STA Key parameters into the HAL message
22559 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022560 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022561 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22562
Jeff Johnsone7245742012-09-05 17:12:55 -070022563 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022564 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22565
22566 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22567
22568 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22569
22570 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22571
Jeff Johnson295189b2012-06-20 16:38:30 -070022572 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22573 keyIndex++)
22574 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022575 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022576 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22577 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22578 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22579 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22580 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22581 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022582 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022583 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022584 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022585 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022586 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022587 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22588 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022589 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022590 WDI_MAX_KEY_LENGTH);
22591 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022592 }
22593 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22594 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022595 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022596 sizeof(phalConfigBSS->extSetStaKeyParam) );
22597 }
22598
22599#endif /*WLAN_FEATURE_VOWIFI_11R*/
22600
Jeff Johnsone7245742012-09-05 17:12:55 -070022601#ifdef WLAN_FEATURE_11AC
22602 if(phalConfigBSS_V1 != NULL)
22603 {
22604 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22605 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22606 }
22607#endif
22608
Jeff Johnson295189b2012-06-20 16:38:30 -070022609}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22610
22611
Jeff Johnsone7245742012-09-05 17:12:55 -070022612/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022613 pointed to by user data */
22614WPT_STATIC WPT_INLINE void
22615WDI_ExtractRequestCBFromEvent
22616(
22617 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022618 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022619 void** ppUserData
22620)
22621{
22622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22623 switch ( pEvent->wdiRequest )
22624 {
22625 case WDI_START_REQ:
22626 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22627 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22628 break;
22629 case WDI_STOP_REQ:
22630 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22631 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22632 break;
22633 case WDI_INIT_SCAN_REQ:
22634 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22635 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22636 break;
22637 case WDI_START_SCAN_REQ:
22638 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22639 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22640 break;
22641 case WDI_END_SCAN_REQ:
22642 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22643 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22644 break;
22645 case WDI_FINISH_SCAN_REQ:
22646 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22647 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22648 break;
22649 case WDI_JOIN_REQ:
22650 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22651 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22652 break;
22653 case WDI_CONFIG_BSS_REQ:
22654 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22655 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22656 break;
22657 case WDI_DEL_BSS_REQ:
22658 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22659 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22660 break;
22661 case WDI_POST_ASSOC_REQ:
22662 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22663 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22664 break;
22665 case WDI_DEL_STA_REQ:
22666 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22667 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22668 break;
22669 case WDI_DEL_STA_SELF_REQ:
22670 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22671 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22672 break;
22673
22674 case WDI_SET_BSS_KEY_REQ:
22675 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22676 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22677 break;
22678 case WDI_RMV_BSS_KEY_REQ:
22679 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22680 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22681 break;
22682 case WDI_SET_STA_KEY_REQ:
22683 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22684 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22685 break;
22686 case WDI_RMV_STA_KEY_REQ:
22687 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22688 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22689 break;
22690 case WDI_ADD_TS_REQ:
22691 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22692 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22693 break;
22694 case WDI_DEL_TS_REQ:
22695 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22696 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22697 break;
22698 case WDI_UPD_EDCA_PRMS_REQ:
22699 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22700 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22701 break;
22702 case WDI_ADD_BA_SESSION_REQ:
22703 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22704 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22705 break;
22706 case WDI_DEL_BA_REQ:
22707 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22708 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22709 break;
22710#ifdef FEATURE_WLAN_CCX
22711 case WDI_TSM_STATS_REQ:
22712 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22713 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22714 break;
22715#endif
22716 case WDI_CH_SWITCH_REQ:
22717 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22718 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22719 break;
22720 case WDI_CONFIG_STA_REQ:
22721 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22722 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22723 break;
22724 case WDI_SET_LINK_ST_REQ:
22725 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22726 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22727 break;
22728 case WDI_GET_STATS_REQ:
22729 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22730 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22731 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022732#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22733 case WDI_GET_ROAM_RSSI_REQ:
22734 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22735 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
22736 break;
22737#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022738 case WDI_UPDATE_CFG_REQ:
22739 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22740 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22741 break;
22742 case WDI_ADD_BA_REQ:
22743 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22744 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22745 break;
22746 case WDI_TRIGGER_BA_REQ:
22747 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22748 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22749 break;
22750 case WDI_UPD_BCON_PRMS_REQ:
22751 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22752 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22753 break;
22754 case WDI_SND_BCON_REQ:
22755 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22756 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22757 break;
22758 case WDI_ENTER_BMPS_REQ:
22759 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22760 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22761 break;
22762 case WDI_EXIT_BMPS_REQ:
22763 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22764 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22765 break;
22766 case WDI_ENTER_UAPSD_REQ:
22767 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22768 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22769 break;
22770 case WDI_UPDATE_UAPSD_PARAM_REQ:
22771 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22772 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22773 break;
22774 case WDI_CONFIGURE_RXP_FILTER_REQ:
22775 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22776 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22777 break;
22778 case WDI_SET_BEACON_FILTER_REQ:
22779 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22780 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22781 break;
22782 case WDI_REM_BEACON_FILTER_REQ:
22783 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22784 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022785 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022786 case WDI_SET_RSSI_THRESHOLDS_REQ:
22787 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22788 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22789 break;
22790 case WDI_HOST_OFFLOAD_REQ:
22791 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22792 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22793 break;
22794 case WDI_WOWL_ADD_BC_PTRN_REQ:
22795 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22796 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22797 break;
22798 case WDI_WOWL_DEL_BC_PTRN_REQ:
22799 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22800 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22801 break;
22802 case WDI_WOWL_ENTER_REQ:
22803 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22804 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22805 break;
22806 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22807 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22808 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22809 break;
22810 case WDI_FLUSH_AC_REQ:
22811 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22812 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22813 break;
22814 case WDI_BTAMP_EVENT_REQ:
22815 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22816 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22817 break;
22818 case WDI_KEEP_ALIVE_REQ:
22819 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22820 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22821 break;
22822 case WDI_SET_TX_PER_TRACKING_REQ:
22823 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22824 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080022825 break;
22826 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
22827 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22828 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
22829 break;
22830 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22831 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22832 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
22833 break;
22834 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22835 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22836 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
22837 break;
22838
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 default:
22840 *ppfnReqCB = NULL;
22841 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022842 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022843 }
22844}/*WDI_ExtractRequestCBFromEvent*/
22845
22846
22847/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022848 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022849 frame xtl is enabled for a particular STA.
22850
22851 WDI_PostAssocReq must have been called.
22852
Jeff Johnsone7245742012-09-05 17:12:55 -070022853 @param uSTAIdx: STA index
22854
Jeff Johnson295189b2012-06-20 16:38:30 -070022855 @see WDI_PostAssocReq
22856 @return Result of the function call
22857*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022858wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022859WDI_IsHwFrameTxTranslationCapable
22860(
22861 wpt_uint8 uSTAIdx
22862)
22863{
Jeff Johnsone7245742012-09-05 17:12:55 -070022864 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022865 uma value*/
22866 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022867 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022868 ------------------------------------------------------------------------*/
22869 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22870 {
22871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22872 "WDI API call before module is initialized - Fail request");
22873
Jeff Johnsone7245742012-09-05 17:12:55 -070022874 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022875 }
22876
Gopichand Nakkalaba261272013-01-03 15:45:56 -080022877#ifdef WLAN_SOFTAP_VSTA_FEATURE
22878 if (IS_VSTA_IDX(uSTAIdx))
22879 {
22880 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22881 "STA %d is a Virtual STA, "
22882 "HW frame translation disabled", uSTAIdx);
22883 return eWLAN_PAL_FALSE;
22884 }
22885#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070022886
Jeff Johnson295189b2012-06-20 16:38:30 -070022887 return gWDICb.bFrameTransEnabled;
22888}/*WDI_IsHwFrameTxTranslationCapable*/
22889
22890#ifdef FEATURE_WLAN_SCAN_PNO
22891/**
22892 @brief WDI_SetPreferredNetworkList
22893
Jeff Johnsone7245742012-09-05 17:12:55 -070022894 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022895 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022896
Jeff Johnson295189b2012-06-20 16:38:30 -070022897 wdiPNOScanCb: callback for passing back the response
22898 of the Set PNO operation received from the
22899 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022900
Jeff Johnson295189b2012-06-20 16:38:30 -070022901 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022902 callback
22903
Jeff Johnson295189b2012-06-20 16:38:30 -070022904 @return Result of the function call
22905*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022906WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022907WDI_SetPreferredNetworkReq
22908(
22909 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22910 WDI_PNOScanCb wdiPNOScanCb,
22911 void* pUserData
22912)
22913{
22914 WDI_EventInfoType wdiEventData = {{0}};
22915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22916
22917 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022918 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022919 ------------------------------------------------------------------------*/
22920 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22921 {
22922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22923 "WDI API call before module is initialized - Fail request");
22924
Jeff Johnsone7245742012-09-05 17:12:55 -070022925 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022926 }
22927
22928 /*------------------------------------------------------------------------
22929 Fill in Event data and post to the Main FSM
22930 ------------------------------------------------------------------------*/
22931 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022932 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022933 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022934 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022935 wdiEventData.pUserData = pUserData;
22936
22937 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22938}
22939
22940
22941/**
22942 @brief WDI_SetRssiFilterReq
22943
Jeff Johnsone7245742012-09-05 17:12:55 -070022944 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022945 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022946
Jeff Johnson295189b2012-06-20 16:38:30 -070022947 wdiRssiFilterCb: callback for passing back the response
22948 of the Set RSSI Filter operation received from the
22949 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022950
Jeff Johnson295189b2012-06-20 16:38:30 -070022951 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022952 callback
22953
Jeff Johnson295189b2012-06-20 16:38:30 -070022954 @return Result of the function call
22955*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022956WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022957WDI_SetRssiFilterReq
22958(
22959 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22960 WDI_RssiFilterCb wdiRssiFilterCb,
22961 void* pUserData
22962)
22963{
22964 WDI_EventInfoType wdiEventData = {{0}};
22965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22966
22967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022969 ------------------------------------------------------------------------*/
22970 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22971 {
22972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22973 "WDI API call before module is initialized - Fail request");
22974
Jeff Johnsone7245742012-09-05 17:12:55 -070022975 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022976 }
22977
22978 /*------------------------------------------------------------------------
22979 Fill in Event data and post to the Main FSM
22980 ------------------------------------------------------------------------*/
22981 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022982 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022983 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022984 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022985 wdiEventData.pUserData = pUserData;
22986
22987 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22988}/*WDI_SetRssiFilterReq*/
22989
22990/**
22991 @brief WDI_UpdateScanParamsReq
22992
Jeff Johnsone7245742012-09-05 17:12:55 -070022993 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022994 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022995
Jeff Johnson295189b2012-06-20 16:38:30 -070022996 wdiUpdateScanParamsCb: callback for passing back the response
22997 of the Set PNO operation received from the
22998 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022999
Jeff Johnson295189b2012-06-20 16:38:30 -070023000 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023001 callback
23002
Jeff Johnson295189b2012-06-20 16:38:30 -070023003 @return Result of the function call
23004*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023005WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023006WDI_UpdateScanParamsReq
23007(
23008 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23009 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23010 void* pUserData
23011)
23012{
23013 WDI_EventInfoType wdiEventData = {{0}};
23014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23015
23016 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023017 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023018 ------------------------------------------------------------------------*/
23019 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23020 {
23021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23022 "WDI API call before module is initialized - Fail request");
23023
Jeff Johnsone7245742012-09-05 17:12:55 -070023024 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023025 }
23026
23027 /*------------------------------------------------------------------------
23028 Fill in Event data and post to the Main FSM
23029 ------------------------------------------------------------------------*/
23030 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023031 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023032 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023033 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023034 wdiEventData.pUserData = pUserData;
23035
23036 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23037}
23038
23039/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023040 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023041 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023042
23043 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023044 pwdiPNOScanReqParams: pointer to the info received
23045 from upper layers
23046 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023047 and its size
23048
Jeff Johnson295189b2012-06-20 16:38:30 -070023049 @return Result of the function call
23050*/
23051
23052WDI_Status
23053WDI_PackPreferredNetworkList
23054(
23055 WDI_ControlBlockType* pWDICtx,
23056 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23057 wpt_uint8** ppSendBuffer,
23058 wpt_uint16* pSize
23059)
23060{
Jeff Johnsone7245742012-09-05 17:12:55 -070023061 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023062 wpt_uint16 usDataOffset = 0;
23063 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023064 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023065 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023066 /*-----------------------------------------------------------------------
23067 Get message buffer
23068 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023069 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023070 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023071 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023072 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023073 {
23074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23075 "Unable to get send buffer in Set PNO req %x ",
23076 pwdiPNOScanReqParams);
23077 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 }
23080
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023081 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23082
Jeff Johnson295189b2012-06-20 16:38:30 -070023083 /*-------------------------------------------------------------------------
23084 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23085 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023086 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023088 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023089 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23090
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023091 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023092 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023093 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023094 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023095 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23096
23097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023098 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023099 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23100 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23101 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23102
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023103 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023104 {
23105 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023106 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023107 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23108
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023109 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023110 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023111 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023112
23113 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023114 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023115 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023116
23117 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023118 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023119 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023120
Jeff Johnsone7245742012-09-05 17:12:55 -070023121 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023122 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023123 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023124 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23125 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23126 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23127 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023128
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023129 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023130 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023131 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023132
23133 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023134 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023135 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23136
23137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023138 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023139 pPrefNetwListParams->aNetworks[i].ssId.length,
23140 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023141 }
23142
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023143 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023144 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023145 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23146 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23147 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23148
23149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023150 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023151 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023152 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23153 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23154
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023155 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023156 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023157 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023158 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023159 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023160 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23161 }
23162
23163 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023164 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023165 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23166 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23167 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023168 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023169
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023170 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023171 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023172 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023173
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023174 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023175 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23176 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23177 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023178 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023179
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023180 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023181 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023182 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023183
23184 /*Set the output values*/
23185 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023186 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023187
23188 return WDI_STATUS_SUCCESS;
23189}/*WDI_PackPreferredNetworkList*/
23190
23191/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023192 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023193 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023194
23195 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023196 pwdiPNOScanReqParams: pointer to the info received
23197 from upper layers
23198 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023199 and its size
23200
Jeff Johnson295189b2012-06-20 16:38:30 -070023201 @return Result of the function call
23202*/
23203
23204WDI_Status
23205WDI_PackPreferredNetworkListNew
23206(
23207 WDI_ControlBlockType* pWDICtx,
23208 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23209 wpt_uint8** ppSendBuffer,
23210 wpt_uint16* pSize
23211)
23212{
Jeff Johnsone7245742012-09-05 17:12:55 -070023213 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023214 wpt_uint16 usDataOffset = 0;
23215 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023216 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023217 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023218
23219 /*-----------------------------------------------------------------------
23220 Get message buffer
23221 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023222 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023223 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023224 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023225 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 {
23227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23228 "Unable to get send buffer in Set PNO req %x ",
23229 pwdiPNOScanReqParams);
23230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023232 }
23233
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023234 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23235
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 /*-------------------------------------------------------------------------
23237 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23238 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023239 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023240 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023241 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023242 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23243
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023244 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023245 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023247 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023248 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23249
23250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023251 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023252 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23253 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23254 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23255
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023256 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023257 {
23258 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023259 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023260 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23261
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023262 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023263 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023264 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023265
23266 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023267 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023268 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023269
23270 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023271 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023272 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023273
23274 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023275 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023276 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023277
Jeff Johnsone7245742012-09-05 17:12:55 -070023278 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023279 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023280 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023281 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23282
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023283 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023284 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023285 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023286
23287 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023288 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023289 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23290
23291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023292 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023293 pPrefNetwListParams->aNetworks[i].ssId.length,
23294 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023295 }
23296
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023297 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023298 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023299 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23300 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23301 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23302
23303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023305 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023306 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23307 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23308
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023309 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023310 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023311 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023312 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023313 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023314 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23315 }
23316
23317 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023318 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023319 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23320 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23321 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023322 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023323
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023324 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023325 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023326 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023327
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023328 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023329 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23330 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23331 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023332 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023333
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023334 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023335 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023336 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023337
Jeff Johnson295189b2012-06-20 16:38:30 -070023338
23339 /*Set the output values*/
23340 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023341 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023342
23343 return WDI_STATUS_SUCCESS;
23344}/*WDI_PackPreferredNetworkListNew*/
23345
23346/**
23347 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023348
23349 @param pWDICtx: pointer to the WLAN DAL context
23350 pEventData: pointer to the event information structure
23351
Jeff Johnson295189b2012-06-20 16:38:30 -070023352 @return Result of the function call
23353*/
23354WDI_Status
23355WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023356(
Jeff Johnson295189b2012-06-20 16:38:30 -070023357 WDI_ControlBlockType* pWDICtx,
23358 WDI_EventInfoType* pEventData
23359)
23360{
23361 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23362 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023363 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023364 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023365 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023366
23367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023368 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023369 -------------------------------------------------------------------------*/
23370 if (( NULL == pEventData ) ||
23371 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23372 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23373 {
23374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 }
23379
23380 /*-------------------------------------------------------------------------
23381 Pack the PNO request structure based on version
23382 -------------------------------------------------------------------------*/
23383 if ( pWDICtx->wdiPNOVersion > 0 )
23384 {
23385 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023386 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023387 pWDICtx->wdiPNOVersion);
23388
23389 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23390 &pSendBuffer, &usSendSize);
23391 }
23392 else
23393 {
23394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023395 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 pWDICtx->wdiPNOVersion);
23397
23398 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23399 &pSendBuffer, &usSendSize);
23400 }
23401
23402 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23403 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23404 {
23405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023406 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023407 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023408 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023409 }
23410
23411 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023412 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023413
23414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023415 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023416 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023417 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23418 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023419}
23420
23421/**
23422 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023423
23424 @param pWDICtx: pointer to the WLAN DAL context
23425 pEventData: pointer to the event information structure
23426
Jeff Johnson295189b2012-06-20 16:38:30 -070023427 @see
23428 @return Result of the function call
23429*/
23430WDI_Status
23431WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023432(
Jeff Johnson295189b2012-06-20 16:38:30 -070023433 WDI_ControlBlockType* pWDICtx,
23434 WDI_EventInfoType* pEventData
23435)
23436{
23437 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23438 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023439 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023440 wpt_uint16 usDataOffset = 0;
23441 wpt_uint16 usSendSize = 0;
23442 wpt_uint8 ucRssiThreshold;
23443
23444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023445 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023446 -------------------------------------------------------------------------*/
23447 if (( NULL == pEventData ) ||
23448 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
23449 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
23450 {
23451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023452 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023453 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023455 }
23456
23457 /*-----------------------------------------------------------------------
23458 Get message buffer
23459 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023460 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023461 sizeof(ucRssiThreshold),
23462 &pSendBuffer, &usDataOffset, &usSendSize))||
23463 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
23464 {
23465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23466 "Unable to get send buffer in Set PNO req %x %x %x",
23467 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
23468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023469 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 }
23471
23472 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
23473
Jeff Johnsone7245742012-09-05 17:12:55 -070023474 wpalMemoryCopy( pSendBuffer+usDataOffset,
23475 &ucRssiThreshold,
23476 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070023477
23478 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023479 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023480
23481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023482 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023483 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023484 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23485 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023486}
23487
23488
23489/**
23490 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070023491
23492 @param pWDICtx: pointer to the WLAN DAL context
23493 pEventData: pointer to the event information structure
23494
Jeff Johnson295189b2012-06-20 16:38:30 -070023495 @see
23496 @return Result of the function call
23497*/
23498WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023499WDI_PackUpdateScanParamsReq
23500(
23501 WDI_ControlBlockType* pWDICtx,
23502 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23503 wpt_uint8** ppSendBuffer,
23504 wpt_uint16* pSize
23505)
23506{
23507 wpt_uint8* pSendBuffer = NULL;
23508 wpt_uint16 usDataOffset = 0;
23509 wpt_uint16 usSendSize = 0;
23510 tUpdateScanParams updateScanParams = {0};
23511
23512
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023514 "Begin WDI Update Scan Parameters Old Style Params");
23515 /*-----------------------------------------------------------------------
23516 Get message buffer
23517 -----------------------------------------------------------------------*/
23518 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23519 sizeof(updateScanParams),
23520 &pSendBuffer, &usDataOffset, &usSendSize))||
23521 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23522 {
23523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23524 "Unable to get send buffer in Update Scan Params req %x",
23525 pwdiUpdateScanParams);
23526 WDI_ASSERT(0);
23527 return WDI_STATUS_E_FAILURE;
23528 }
23529
23530 //
23531 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23532 //
23533
23534 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23535 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23536
23537 updateScanParams.ucChannelCount =
23538 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23539 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23540 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23541 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
23542
23543 wpalMemoryCopy( updateScanParams.aChannels,
23544 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23545 updateScanParams.ucChannelCount);
23546
23547
23548 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23549 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23550 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23551 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23552 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23553
23554 wpalMemoryCopy( pSendBuffer+usDataOffset,
23555 &updateScanParams,
23556 sizeof(updateScanParams));
23557
23558 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23559 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23560
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023562 "End Update Scan Parameters Old Style");
23563
23564 /*Set the output values*/
23565 *ppSendBuffer = pSendBuffer;
23566 *pSize = usSendSize;
23567
23568 return WDI_STATUS_SUCCESS;
23569}
23570
23571/**
23572 @brief Process Update Scan Params function
23573
23574 @param pWDICtx: pointer to the WLAN DAL context
23575 pEventData: pointer to the event information structure
23576
23577 @see
23578 @return Result of the function call
23579*/
23580WDI_Status
23581WDI_PackUpdateScanParamsReqEx
23582(
23583 WDI_ControlBlockType* pWDICtx,
23584 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23585 wpt_uint8** ppSendBuffer,
23586 wpt_uint16* pSize
23587)
23588{
23589 wpt_uint8* pSendBuffer = NULL;
23590 wpt_uint16 usDataOffset = 0;
23591 wpt_uint16 usSendSize = 0;
23592 tUpdateScanParamsEx updateScanParams = {0};
23593
23594
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023595 /*-----------------------------------------------------------------------
23596 Get message buffer
23597 -----------------------------------------------------------------------*/
23598 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23599 sizeof(updateScanParams),
23600 &pSendBuffer, &usDataOffset, &usSendSize))||
23601 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23602 {
23603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23604 "Unable to get send buffer in Update Scan Params Ex req %x",
23605 pwdiUpdateScanParams);
23606 WDI_ASSERT(0);
23607 return WDI_STATUS_E_FAILURE;
23608 }
23609
23610 //
23611 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23612 //
23613
23614 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23615 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23616
23617 updateScanParams.ucChannelCount =
23618 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23619 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
23620 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23621 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23622
23623 wpalMemoryCopy( updateScanParams.aChannels,
23624 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23625 updateScanParams.ucChannelCount);
23626
23627
23628 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23629 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23630 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23631 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23632 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23633
23634 wpalMemoryCopy( pSendBuffer+usDataOffset,
23635 &updateScanParams,
23636 sizeof(updateScanParams));
23637
23638 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23639 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23640
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023641 /*Set the output values*/
23642 *ppSendBuffer = pSendBuffer;
23643 *pSize = usSendSize;
23644
23645 return WDI_STATUS_SUCCESS;
23646}
23647
23648/**
23649 @brief Process Update Scan Params function
23650
23651 @param pWDICtx: pointer to the WLAN DAL context
23652 pEventData: pointer to the event information structure
23653
23654 @see
23655 @return Result of the function call
23656*/
23657WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023658WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023659(
Jeff Johnson295189b2012-06-20 16:38:30 -070023660 WDI_ControlBlockType* pWDICtx,
23661 WDI_EventInfoType* pEventData
23662)
23663{
23664 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23665 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023666 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023667 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023668 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023669
23670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023672 -------------------------------------------------------------------------*/
23673 if (( NULL == pEventData ) ||
23674 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23675 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23676 {
23677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023678 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023681 }
23682
23683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23684 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023685
23686 //
23687 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23688 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023689 if ( pWDICtx->wlanVersion.revision < 1 )
23690 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023691 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023692 &pSendBuffer, &usSendSize);
23693 }
23694 else
23695 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023696 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23697 &pSendBuffer, &usSendSize);
23698 }
23699
23700 if(WDI_STATUS_SUCCESS != wdiStatus)
23701 {
23702 //memory allocation failed
23703 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023704 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023705
Jeff Johnson295189b2012-06-20 16:38:30 -070023706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023707 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023708 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023709 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023710 wdiUpdateScanParamsCb, pEventData->pUserData,
23711 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023712}
23713
23714/**
23715 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023716
23717 @param pWDICtx: pointer to the WLAN DAL context
23718 pEventData: pointer to the event information structure
23719
Jeff Johnson295189b2012-06-20 16:38:30 -070023720 @see
23721 @return Result of the function call
23722*/
23723WDI_Status
23724WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023725(
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 WDI_ControlBlockType* pWDICtx,
23727 WDI_EventInfoType* pEventData
23728)
23729{
23730 WDI_LowLevelIndType wdiInd;
23731 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23732
23733
23734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023736 -------------------------------------------------------------------------*/
23737 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23738 ( NULL == pEventData->pEventData ))
23739 {
23740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023742 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023744 }
23745
23746 /*-------------------------------------------------------------------------
23747 Extract indication and send it to UMAC
23748 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023749 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23750 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023751 sizeof(tPrefNetwFoundParams));
23752
23753 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023754 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023755
23756 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23757
Jeff Johnsone7245742012-09-05 17:12:55 -070023758 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023759 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023760 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023761
Jeff Johnsone7245742012-09-05 17:12:55 -070023762 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23763 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023764 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23765
23766 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23767 prefNetwFoundInd.prefNetwFoundParams.rssi;
23768
23769 // DEBUG
23770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23771 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23772 wdiInd.wdiIndicationType,
23773 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23774 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23775
ltimariu034f7d62013-01-24 18:54:33 -080023776 if ( pWDICtx->wdiLowLevelIndCB )
23777 {
23778 /*Notify UMAC*/
23779 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
23780 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023781
23782 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023783}
23784
23785/**
23786 @brief Process PNO Rsp function (called when a
23787 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023788
23789 @param pWDICtx: pointer to the WLAN DAL context
23790 pEventData: pointer to the event information structure
23791
Jeff Johnson295189b2012-06-20 16:38:30 -070023792 @see
23793 @return Result of the function call
23794*/
23795WDI_Status
23796WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023797(
Jeff Johnson295189b2012-06-20 16:38:30 -070023798 WDI_ControlBlockType* pWDICtx,
23799 WDI_EventInfoType* pEventData
23800)
23801{
23802 WDI_Status wdiStatus;
23803 eHalStatus halStatus;
23804 WDI_PNOScanCb wdiPNOScanCb = NULL;
23805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23806
23807 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023808 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023809 -------------------------------------------------------------------------*/
23810 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23811 ( NULL == pEventData->pEventData ))
23812 {
23813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023814 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023815 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023816 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023817 }
23818
23819
Jeff Johnsone7245742012-09-05 17:12:55 -070023820 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023821
23822 /*-------------------------------------------------------------------------
23823 Extract response and send it to UMAC
23824 -------------------------------------------------------------------------*/
23825 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023826 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023827
23828 /*Notify UMAC*/
23829 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23830
Jeff Johnsone7245742012-09-05 17:12:55 -070023831 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023832}/*WDI_ProcessSetPreferredNetworkRsp*/
23833
23834/**
23835 @brief Process RSSI Filter Rsp function (called when a
23836 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023837
23838 @param pWDICtx: pointer to the WLAN DAL context
23839 pEventData: pointer to the event information structure
23840
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 @see
23842 @return Result of the function call
23843*/
23844WDI_Status
23845WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023846(
Jeff Johnson295189b2012-06-20 16:38:30 -070023847 WDI_ControlBlockType* pWDICtx,
23848 WDI_EventInfoType* pEventData
23849)
23850{
23851 WDI_Status wdiStatus;
23852 eHalStatus halStatus;
23853 WDI_RssiFilterCb wdiRssiFilterCb;
23854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23855
23856 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023857 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023858 -------------------------------------------------------------------------*/
23859 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23860 ( NULL == pEventData->pEventData ))
23861 {
23862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023863 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023864 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023865 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023866 }
23867
Jeff Johnsone7245742012-09-05 17:12:55 -070023868 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023869
23870 /*-------------------------------------------------------------------------
23871 Extract response and send it to UMAC
23872 -------------------------------------------------------------------------*/
23873 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023874 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023875
23876 /*Notify UMAC*/
23877 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23878
Jeff Johnsone7245742012-09-05 17:12:55 -070023879 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023880}/*WDI_ProcessSetRssiFilterRsp*/
23881
23882/**
23883 @brief Process Update Scan Params Rsp function (called when a
23884 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023885
23886 @param pWDICtx: pointer to the WLAN DAL context
23887 pEventData: pointer to the event information structure
23888
Jeff Johnson295189b2012-06-20 16:38:30 -070023889 @see
23890 @return Result of the function call
23891*/
23892WDI_Status
23893WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023894(
Jeff Johnson295189b2012-06-20 16:38:30 -070023895 WDI_ControlBlockType* pWDICtx,
23896 WDI_EventInfoType* pEventData
23897)
23898{
23899 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023900 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023901 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023902 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23904
23905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023907 -------------------------------------------------------------------------*/
23908 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23909 ( NULL == pEventData->pEventData ))
23910 {
23911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023912 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023915 }
23916
23917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023918 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023919
Jeff Johnsone7245742012-09-05 17:12:55 -070023920 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023921
23922 /*-------------------------------------------------------------------------
23923 Extract response and send it to UMAC
23924 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023925 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23926 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023927 sizeof(halUpdScanParams.status));
23928
23929 uStatus = halUpdScanParams.status;
23930
23931 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023932 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023933
23934 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023935 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023936
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023938
23939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023940 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023941 halUpdScanParams.status);
23942
23943 /*Notify UMAC*/
23944 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23945
Jeff Johnsone7245742012-09-05 17:12:55 -070023946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023947}
23948#endif // FEATURE_WLAN_SCAN_PNO
23949
23950#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023951WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023952WDI_8023MulticastListReq
23953(
23954 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23955 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23956 void* pUserData
23957)
23958{
23959 WDI_EventInfoType wdiEventData;
23960 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23961
23962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023963 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023964
23965 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023966 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023967 ------------------------------------------------------------------------*/
23968 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23969 {
23970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23971 "WDI API call before module is initialized - Fail request");
23972
Jeff Johnsone7245742012-09-05 17:12:55 -070023973 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023974 }
23975
23976 /*------------------------------------------------------------------------
23977 Fill in Event data and post to the Main FSM
23978 ------------------------------------------------------------------------*/
23979 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023980 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023981 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023982 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 wdiEventData.pUserData = pUserData;
23984
23985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23986}
23987
Jeff Johnsone7245742012-09-05 17:12:55 -070023988WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023989WDI_ReceiveFilterSetFilterReq
23990(
23991 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23992 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23993 void* pUserData
23994)
23995{
23996 WDI_EventInfoType wdiEventData;
23997 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23998
23999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024000 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024001
24002 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024003 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024004 ------------------------------------------------------------------------*/
24005 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24006 {
24007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24008 "WDI API call before module is initialized - Fail request");
24009
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 }
24012
24013 /*------------------------------------------------------------------------
24014 Fill in Event data and post to the Main FSM
24015 ------------------------------------------------------------------------*/
24016 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024017 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
24018 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070024019 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24020 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024021 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024022 wdiEventData.pUserData = pUserData;
24023
24024
24025 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24026}
24027
Jeff Johnsone7245742012-09-05 17:12:55 -070024028WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024029WDI_FilterMatchCountReq
24030(
24031 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
24032 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
24033 void* pUserData
24034)
24035{
24036 WDI_EventInfoType wdiEventData;
24037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24038
24039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024040 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024041
24042 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024043 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024044 ------------------------------------------------------------------------*/
24045 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24046 {
24047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24048 "WDI API call before module is initialized - Fail request");
24049
Jeff Johnsone7245742012-09-05 17:12:55 -070024050 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024051 }
24052
24053 /*------------------------------------------------------------------------
24054 Fill in Event data and post to the Main FSM
24055 ------------------------------------------------------------------------*/
24056 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024057 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024058 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024059 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024060 wdiEventData.pUserData = pUserData;
24061
24062
24063 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24064}
24065
Jeff Johnsone7245742012-09-05 17:12:55 -070024066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024067WDI_ReceiveFilterClearFilterReq
24068(
24069 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
24070 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
24071 void* pUserData
24072)
24073{
24074 WDI_EventInfoType wdiEventData;
24075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24076
24077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024078 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024079
24080 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024081 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024082 ------------------------------------------------------------------------*/
24083 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24084 {
24085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24086 "WDI API call before module is initialized - Fail request");
24087
Jeff Johnsone7245742012-09-05 17:12:55 -070024088 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024089 }
24090
24091 /*------------------------------------------------------------------------
24092 Fill in Event data and post to the Main FSM
24093 ------------------------------------------------------------------------*/
24094 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024095 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024096 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024097 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024098 wdiEventData.pUserData = pUserData;
24099
24100
24101 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24102}
24103
24104/**
24105 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024106
24107 @param pWDICtx: pointer to the WLAN DAL context
24108 pEventData: pointer to the event information structure
24109
Jeff Johnson295189b2012-06-20 16:38:30 -070024110 @see
24111 @return Result of the function call
24112*/
24113WDI_Status
24114WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024115(
Jeff Johnson295189b2012-06-20 16:38:30 -070024116 WDI_ControlBlockType* pWDICtx,
24117 WDI_EventInfoType* pEventData
24118)
24119{
24120 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
24121 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024122 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024123 wpt_uint16 usDataOffset = 0;
24124 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024125 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024126 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024127 wpt_uint8 ucCurrentBSSSesIdx = 0;
24128 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024129
24130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024131 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024132
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024133 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
24134 if( NULL == pRcvFltMcAddrListType )
24135 {
24136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24137 "Failed to alloc in WDI_Process8023MulticastListReq");
24138 return WDI_STATUS_E_FAILURE;
24139 }
24140
Jeff Johnson295189b2012-06-20 16:38:30 -070024141 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024142 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024143 -------------------------------------------------------------------------*/
24144 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024145 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024146 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024147 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024148 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
24149 {
24150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024151 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024152 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024154 return WDI_STATUS_E_FAILURE;
24155 }
24156
24157 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24158 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
24159 &pBSSSes);
24160 if ( NULL == pBSSSes )
24161 {
24162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024163 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024164 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024166 }
24167
24168 /*-----------------------------------------------------------------------
24169 Get message buffer
24170 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024171 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24172 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 sizeof(tHalRcvFltMcAddrListType),
24174 &pSendBuffer, &usDataOffset, &usSendSize))||
24175 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
24176 {
24177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24178 "Unable to get send buffer in "
24179 "WDI_Process8023MulticastListReq() %x %x %x",
24180 pEventData, pwdiFltPktSetMcListReqParamsType,
24181 wdi8023MulticastListCb);
24182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024184 }
24185
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024186 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070024187 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024188 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024189 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024190 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070024191 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
24192 sizeof(tSirMacAddr));
24193 }
24194
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024195 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024196 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024197 pRcvFltMcAddrListType,
24198 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070024199
24200 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024201 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024202
24203
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024204 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024205 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024206 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024207 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024208 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024209 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024210 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024211}
24212
24213/**
24214 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024215
24216 @param pWDICtx: pointer to the WLAN DAL context
24217 pEventData: pointer to the event information structure
24218
Jeff Johnson295189b2012-06-20 16:38:30 -070024219 @see
24220 @return Result of the function call
24221*/
24222WDI_Status
24223WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024224(
Jeff Johnson295189b2012-06-20 16:38:30 -070024225 WDI_ControlBlockType* pWDICtx,
24226 WDI_EventInfoType* pEventData
24227)
24228{
24229 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
24230 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024231 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024232 wpt_uint16 usDataOffset = 0;
24233 wpt_uint16 usSendSize = 0;
24234 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024235 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024236 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024237 wpt_uint8 ucCurrentBSSSesIdx = 0;
24238 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024239 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
24240 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024241
24242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024243 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024244
24245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024247 -------------------------------------------------------------------------*/
24248 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024249 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070024250 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024251 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024252 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
24253 {
24254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024257 return WDI_STATUS_E_FAILURE;
24258 }
24259
24260 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24261 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
24262 &pBSSSes);
24263 if ( NULL == pBSSSes )
24264 {
24265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024266 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 }
24269
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024270 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
24271 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024272
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024273 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
24274 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24275 * sizeof(tHalSessionizedRcvPktFilterCfgType));
24276
24277 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
24278 usSessRcvPktFilterCfgSize);
24279
24280 if(NULL == pSessRcvPktFilterCfg)
24281 {
24282 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24283 "%s: Failed to allocate memory for "
24284 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024285 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024286 WDI_ASSERT(0);
24287 return WDI_STATUS_E_FAILURE;
24288 }
24289
24290 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
24291
24292 /*-----------------------------------------------------------------------
24293 Get message buffer
24294 -----------------------------------------------------------------------*/
24295
24296 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
24297 usSessRcvPktFilterCfgSize,
24298 &pSendBuffer, &usDataOffset, &usSendSize))||
24299 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
24300 {
24301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24302 "Unable to get send buffer in "
24303 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24304 pEventData, pwdiSetRcvPktFilterReqInfo,
24305 wdiReceiveFilterSetFilterCb);
24306 WDI_ASSERT(0);
24307 wpalMemoryFree(pSessRcvPktFilterCfg);
24308 return WDI_STATUS_E_FAILURE;
24309 }
24310
24311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24312 "UsData Off %d UsSend %d cfg %d",usDataOffset,
24313 usSendSize,pSessRcvPktFilterCfg);
24314
24315 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24316 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24317 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24318 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
24319
24320 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
24321
24322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24323 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
24324 pSessRcvPktFilterCfg->filterType);
24325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24326 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
24327 pSessRcvPktFilterCfg->coleasceTime);
24328
24329 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
24330 {
24331 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
24332 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24333 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
24334 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24335 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
24336 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24337 pSessRcvPktFilterCfg->paramsData[i].dataLength =
24338 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
24339
24340 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
24341 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24342 8);
24343 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
24344 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24345 8);
24346
24347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24348 "Out:Proto %d Comp Flag %d \n",
24349 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
24350 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
24351
24352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24353 "Data Offset %d Data Len %d\n",
24354 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
24355 pSessRcvPktFilterCfg->paramsData[i].dataLength);
24356
24357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24358 "CData: %d:%d:%d:%d:%d:%d\n",
24359 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
24360 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
24361 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
24362 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
24363 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
24364 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
24365
24366 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24367 "MData: %d:%d:%d:%d:%d:%d\n",
24368 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
24369 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
24370 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
24371 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
24372 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
24373 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
24374 }
24375
24376 wpalMemoryCopy( pSendBuffer+usDataOffset,
24377 pSessRcvPktFilterCfg,
24378 usSessRcvPktFilterCfgSize);
24379
24380
24381 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24382 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
24383
24384 wpalMemoryFree(pSessRcvPktFilterCfg);
24385
24386 }
24387 /*If SLM_SESSIONIZATION is not supported then do this */
24388 else
24389 {
24390 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
24391 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24392 * sizeof(tHalRcvPktFilterParams));
24393
24394 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070024395 usRcvPktFilterCfgSize);
24396
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024397 if(NULL == pRcvPktFilterCfg)
24398 {
24399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24400 "%s: Failed to allocate memory for "
24401 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024402 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024403 WDI_ASSERT(0);
24404 return WDI_STATUS_E_FAILURE;
24405 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024406
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024407 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024408
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024409 /*-----------------------------------------------------------------------
24410 Get message buffer
24411 -----------------------------------------------------------------------*/
24412 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024413 usRcvPktFilterCfgSize,
24414 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024415 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
24416 {
24417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070024418 "Unable to get send buffer in "
24419 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24420 pEventData, pwdiSetRcvPktFilterReqInfo,
24421 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024422 WDI_ASSERT(0);
24423 wpalMemoryFree(pRcvPktFilterCfg);
24424 return WDI_STATUS_E_FAILURE;
24425 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024426
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024428 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070024429 usSendSize,usRcvPktFilterCfgSize);
24430
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024431 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24432 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24433 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24434 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070024435
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024437 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024438 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024439 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024440 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070024441 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070024442
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024443 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
24444 {
24445 pRcvPktFilterCfg->paramsData[i].protocolLayer =
24446 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24447 pRcvPktFilterCfg->paramsData[i].cmpFlag =
24448 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24449 pRcvPktFilterCfg->paramsData[i].dataOffset =
24450 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24451 pRcvPktFilterCfg->paramsData[i].dataLength =
24452 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070024453
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024454 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024455 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24456 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024457 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070024458 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24459 8);
24460
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024462 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070024463 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070024464 pRcvPktFilterCfg->paramsData[i].cmpFlag);
24465
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24467 "Data Offset %d Data Len %d\n",
24468 pRcvPktFilterCfg->paramsData[i].dataOffset,
24469 pRcvPktFilterCfg->paramsData[i].dataLength);
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,
24472 "CData: %d:%d:%d:%d:%d:%d\n",
24473 pRcvPktFilterCfg->paramsData[i].compareData[0],
24474 pRcvPktFilterCfg->paramsData[i].compareData[1],
24475 pRcvPktFilterCfg->paramsData[i].compareData[2],
24476 pRcvPktFilterCfg->paramsData[i].compareData[3],
24477 pRcvPktFilterCfg->paramsData[i].compareData[4],
24478 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070024479
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24481 "MData: %d:%d:%d:%d:%d:%d\n",
24482 pRcvPktFilterCfg->paramsData[i].dataMask[0],
24483 pRcvPktFilterCfg->paramsData[i].dataMask[1],
24484 pRcvPktFilterCfg->paramsData[i].dataMask[2],
24485 pRcvPktFilterCfg->paramsData[i].dataMask[3],
24486 pRcvPktFilterCfg->paramsData[i].dataMask[4],
24487 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
24488 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024489
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024490 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070024491 pRcvPktFilterCfg,
24492 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024493
24494
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024495 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24496 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024497
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024498 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024499 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024500 wpalMemoryFree(pRcvPktFilterCfg);
24501 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024502 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024503 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024504 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024505 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024506 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024507 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024508}
24509
24510/**
24511 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024512
24513 @param pWDICtx: pointer to the WLAN DAL context
24514 pEventData: pointer to the event information structure
24515
Jeff Johnson295189b2012-06-20 16:38:30 -070024516 @see
24517 @return Result of the function call
24518*/
24519WDI_Status
24520WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024521(
Jeff Johnson295189b2012-06-20 16:38:30 -070024522 WDI_ControlBlockType* pWDICtx,
24523 WDI_EventInfoType* pEventData
24524)
24525{
24526 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
24527 NULL;
24528 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
24529 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024530 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024531 wpt_uint16 usDataOffset = 0;
24532 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024533 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
24534 wpt_uint8 ucCurrentBSSSesIdx = 0;
24535 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024536
24537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024538 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024539
24540 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024541 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024542 -------------------------------------------------------------------------*/
24543 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024544 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024545 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024546 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024547 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
24548 {
24549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024550 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024551 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024552 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024553 }
24554
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024555 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24556 pwdiRcvFltPktMatchCntReqParamsType->bssId,
24557 &pBSSSes);
24558 if ( NULL == pBSSSes )
24559 {
24560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024561 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024562 return WDI_STATUS_E_FAILURE;
24563 }
24564
Jeff Johnson295189b2012-06-20 16:38:30 -070024565 /*-----------------------------------------------------------------------
24566 Get message buffer
24567 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024568 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24569 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024570 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024571 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024572 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070024573 {
24574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24575 "Unable to get send buffer in "
24576 "WDI_ProcessFilterMatchCountReq() %x %x %x",
24577 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
24578 wdiFilterMatchCountCb);
24579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024581 }
24582
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024583 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
24584 wpalMemoryCopy( pSendBuffer+usDataOffset,
24585 &rcvFltPktMatchCntReqParam,
24586 sizeof(rcvFltPktMatchCntReqParam));
24587
Jeff Johnson295189b2012-06-20 16:38:30 -070024588 //
24589 // Don't need to fill send buffer other than header
24590 //
24591 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024592 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024593
24594
24595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024596 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024597 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024598 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24599 wdiFilterMatchCountCb,
24600 pEventData->pUserData,
24601 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024602}
24603
24604/**
24605 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024606
24607 @param pWDICtx: pointer to the WLAN DAL context
24608 pEventData: pointer to the event information structure
24609
Jeff Johnson295189b2012-06-20 16:38:30 -070024610 @see
24611 @return Result of the function call
24612*/
24613WDI_Status
24614WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024615(
Jeff Johnson295189b2012-06-20 16:38:30 -070024616 WDI_ControlBlockType* pWDICtx,
24617 WDI_EventInfoType* pEventData
24618)
Jeff Johnsone7245742012-09-05 17:12:55 -070024619{
Jeff Johnson295189b2012-06-20 16:38:30 -070024620 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24621 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024622 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024623 wpt_uint16 usDataOffset = 0;
24624 wpt_uint16 usSendSize = 0;
24625 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024626 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024627 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024628
24629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024630 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024631
24632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024634 -------------------------------------------------------------------------*/
24635 if (( NULL == pEventData ) ||
24636 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24637 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024638 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024639 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24640 {
24641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024644 return WDI_STATUS_E_FAILURE;
24645 }
24646
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024647 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024648 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24649 &pBSSSes);
24650 if ( NULL == pBSSSes )
24651 {
24652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024653 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024655 }
24656
24657 /*-----------------------------------------------------------------------
24658 Get message buffer
24659 -----------------------------------------------------------------------*/
24660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024661 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024662 sizeof(tHalRcvFltPktClearParam),
24663 &pSendBuffer, &usDataOffset, &usSendSize))||
24664 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24665 {
24666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24667 "Unable to get send buffer in "
24668 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24669 pEventData, pwdiRcvFltPktClearReqParamsType,
24670 wdiRcvFltPktClearFilterCb);
24671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024673 }
24674
24675
24676 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024677 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024678 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024679 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024680
Jeff Johnsone7245742012-09-05 17:12:55 -070024681 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24682 wpalMemoryCopy( pSendBuffer+usDataOffset,
24683 &rcvFltPktClearParam,
24684 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024685
24686 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024687 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024688
24689
24690 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024691 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024692 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024693 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024694 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024695 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024696}
24697
24698/**
24699 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024700
24701 @param pWDICtx: pointer to the WLAN DAL context
24702 pEventData: pointer to the event information structure
24703
Jeff Johnson295189b2012-06-20 16:38:30 -070024704 @see
24705 @return Result of the function call
24706*/
24707WDI_Status
24708WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024709(
Jeff Johnson295189b2012-06-20 16:38:30 -070024710 WDI_ControlBlockType* pWDICtx,
24711 WDI_EventInfoType* pEventData
24712)
24713{
Jeff Johnson295189b2012-06-20 16:38:30 -070024714 eHalStatus halStatus;
24715 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024716 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24717 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24719
24720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024721 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024722
24723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024725 -------------------------------------------------------------------------*/
24726 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24727 ( NULL == pEventData->pEventData ))
24728 {
24729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024733 }
24734
Jeff Johnsone7245742012-09-05 17:12:55 -070024735 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024736
24737 /*-------------------------------------------------------------------------
24738 Extract response and send it to UMAC
24739 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024740 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24741 {
24742 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24743 pEventData->pEventData,
24744 sizeof(halRcvFltPktSetMcListRsp));
24745
24746 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24747 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24748 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24749 halRcvFltPktSetMcListRsp.bssIdx;
24750 }
24751 else
24752 {
24753 halStatus = *((eHalStatus*)pEventData->pEventData);
24754 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24755 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024756
24757 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024758 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024759
Jeff Johnsone7245742012-09-05 17:12:55 -070024760 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024761}
24762
24763/**
24764 @brief Process Set Rsp function (called when a
24765 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024766
24767 @param pWDICtx: pointer to the WLAN DAL context
24768 pEventData: pointer to the event information structure
24769
Jeff Johnson295189b2012-06-20 16:38:30 -070024770 @see
24771 @return Result of the function call
24772*/
24773WDI_Status
24774WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024775(
Jeff Johnson295189b2012-06-20 16:38:30 -070024776 WDI_ControlBlockType* pWDICtx,
24777 WDI_EventInfoType* pEventData
24778)
24779{
Jeff Johnson295189b2012-06-20 16:38:30 -070024780 eHalStatus halStatus;
24781 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024782 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24783 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24785
24786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024787 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024788
24789 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024790 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024791 -------------------------------------------------------------------------*/
24792 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24793 ( NULL == pEventData->pEventData ))
24794 {
24795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024796 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024797 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024798 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024799 }
24800
24801 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024802 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024803
24804 /*-------------------------------------------------------------------------
24805 Extract response and send it to UMAC
24806 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024807 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24808 {
24809 wpalMemoryCopy( &halSetPktFilterRspParams,
24810 pEventData->pEventData,
24811 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024812
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024813 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24814 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24815 }
24816 else
24817 {
24818 halStatus = *((eHalStatus*)pEventData->pEventData);
24819 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24820 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024821 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024822 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024823
Jeff Johnsone7245742012-09-05 17:12:55 -070024824 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024825}
24826
24827/**
24828 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024829
24830 @param pWDICtx: pointer to the WLAN DAL context
24831 pEventData: pointer to the event information structure
24832
Jeff Johnson295189b2012-06-20 16:38:30 -070024833 @see
24834 @return Result of the function call
24835*/
24836WDI_Status
24837WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024838(
Jeff Johnson295189b2012-06-20 16:38:30 -070024839 WDI_ControlBlockType* pWDICtx,
24840 WDI_EventInfoType* pEventData
24841)
24842{
Jeff Johnson295189b2012-06-20 16:38:30 -070024843 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024844 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024845 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24846 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024847
24848 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24849
24850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024851 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024852
24853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024855 -------------------------------------------------------------------------*/
24856 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24857 ( NULL == pEventData->pEventData ))
24858 {
24859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024861 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024862 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024863 }
24864
Jeff Johnsone7245742012-09-05 17:12:55 -070024865 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024866
24867 /*-------------------------------------------------------------------------
24868 Extract response and send it to UMAC
24869 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024870 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24871 {
24872 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24873 pEventData->pEventData,
24874 sizeof(halRcvFltrPktMatachRsp));
24875
24876 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24877 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24878 }
24879 else
24880 {
24881 halStatus = *((eHalStatus*)pEventData->pEventData);
24882 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24883 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024884
24885 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024886 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024887
Jeff Johnsone7245742012-09-05 17:12:55 -070024888 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024889}
24890
24891/**
24892 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024893
24894 @param pWDICtx: pointer to the WLAN DAL context
24895 pEventData: pointer to the event information structure
24896
Jeff Johnson295189b2012-06-20 16:38:30 -070024897 @see
24898 @return Result of the function call
24899*/
24900WDI_Status
24901WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024902(
Jeff Johnson295189b2012-06-20 16:38:30 -070024903 WDI_ControlBlockType* pWDICtx,
24904 WDI_EventInfoType* pEventData
24905)
24906{
Jeff Johnson295189b2012-06-20 16:38:30 -070024907 eHalStatus halStatus;
24908 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024909 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24910 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24912
24913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024914 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024915
24916 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024917 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024918 -------------------------------------------------------------------------*/
24919 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24920 ( NULL == pEventData->pEventData ))
24921 {
24922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024923 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024924 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024925 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024926 }
24927
24928 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024929 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024930
24931 /*-------------------------------------------------------------------------
24932 Extract response and send it to UMAC
24933 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024934 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24935 {
24936 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24937 pEventData->pEventData,
24938 sizeof(halRcvFltPktClearRspMsg));
24939
24940 wdiRcvFltPktClearRspParamsType.wdiStatus =
24941 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24942 wdiRcvFltPktClearRspParamsType.bssIdx =
24943 halRcvFltPktClearRspMsg.bssIdx;
24944 }
24945 else
24946 {
24947 halStatus = *((eHalStatus*)pEventData->pEventData);
24948 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24949 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024950
24951 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024952 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024953
Jeff Johnsone7245742012-09-05 17:12:55 -070024954 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024955}
24956#endif // WLAN_FEATURE_PACKET_FILTERING
24957
24958/**
24959 @brief Process Shutdown Rsp function
24960 There is no shutdown response comming from HAL
24961 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024962
Jeff Johnson295189b2012-06-20 16:38:30 -070024963 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024964 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024965
24966 @see
24967 @return Result of the function call
24968*/
24969WDI_Status
24970WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024971(
Jeff Johnson295189b2012-06-20 16:38:30 -070024972 WDI_ControlBlockType* pWDICtx,
24973 WDI_EventInfoType* pEventData
24974)
24975{
24976 /*There is no shutdown response comming from HAL - function just kept for
24977 simmetry */
24978 WDI_ASSERT(0);
24979 return WDI_STATUS_SUCCESS;
24980}/*WDI_ProcessShutdownRsp*/
24981
24982/**
24983 @brief WDI_SetPowerParamsReq
24984
Jeff Johnsone7245742012-09-05 17:12:55 -070024985 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024986 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024987
Jeff Johnson295189b2012-06-20 16:38:30 -070024988 wdiPowerParamsCb: callback for passing back the response
24989 of the Set Power Params operation received from the
24990 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024991
Jeff Johnson295189b2012-06-20 16:38:30 -070024992 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024993 callback
24994
Jeff Johnson295189b2012-06-20 16:38:30 -070024995 @return Result of the function call
24996*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024997WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024998WDI_SetPowerParamsReq
24999(
25000 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
25001 WDI_SetPowerParamsCb wdiPowerParamsCb,
25002 void* pUserData
25003)
25004{
25005 WDI_EventInfoType wdiEventData;
25006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25007
25008 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025010 ------------------------------------------------------------------------*/
25011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25012 {
25013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25014 "WDI API call before module is initialized - Fail request");
25015
Jeff Johnsone7245742012-09-05 17:12:55 -070025016 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025017 }
25018
25019 /*------------------------------------------------------------------------
25020 Fill in Event data and post to the Main FSM
25021 ------------------------------------------------------------------------*/
25022 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025023 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025024 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025025 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025026 wdiEventData.pUserData = pUserData;
25027
25028 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25029}/*WDI_SetPowerParamsReq*/
25030
25031/**
25032 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025033
25034 @param pWDICtx: pointer to the WLAN DAL context
25035 pEventData: pointer to the event information structure
25036
Jeff Johnson295189b2012-06-20 16:38:30 -070025037 @see
25038 @return Result of the function call
25039*/
25040WDI_Status
25041WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025042(
Jeff Johnson295189b2012-06-20 16:38:30 -070025043 WDI_ControlBlockType* pWDICtx,
25044 WDI_EventInfoType* pEventData
25045)
25046{
25047 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
25048 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025049 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025050 wpt_uint16 usDataOffset = 0;
25051 wpt_uint16 usSendSize = 0;
25052 tSetPowerParamsType powerParams;
25053
25054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025055 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025056 -------------------------------------------------------------------------*/
25057 if (( NULL == pEventData ) ||
25058 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
25059 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
25060 {
25061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025062 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025063 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025064 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025065 }
25066
25067 /*-----------------------------------------------------------------------
25068 Get message buffer
25069 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025070 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025071 sizeof(powerParams),
25072 &pSendBuffer, &usDataOffset, &usSendSize))||
25073 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
25074 {
25075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25076 "Unable to get send buffer in Set PNO req %x %x %x",
25077 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
25078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025080 }
25081
25082 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070025083 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070025084 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
25085
25086 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025087 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070025088 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
25089
25090 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025091 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070025092 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
25093
25094 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070025095 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070025096 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
25097
25098 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070025099 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070025100 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
25101
25102 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025103 powerParams.uBETInterval =
25104 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070025105
Jeff Johnsone7245742012-09-05 17:12:55 -070025106
25107 wpalMemoryCopy( pSendBuffer+usDataOffset,
25108 &powerParams,
25109 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025110
25111 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025112 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025113
25114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025115 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025116 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025117 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25118 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025119}
25120
25121/**
25122 @brief Process Power Params Rsp function (called when a
25123 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025124
25125 @param pWDICtx: pointer to the WLAN DAL context
25126 pEventData: pointer to the event information structure
25127
Jeff Johnson295189b2012-06-20 16:38:30 -070025128 @see
25129 @return Result of the function call
25130*/
25131WDI_Status
25132WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025133(
Jeff Johnson295189b2012-06-20 16:38:30 -070025134 WDI_ControlBlockType* pWDICtx,
25135 WDI_EventInfoType* pEventData
25136)
25137{
25138 WDI_Status wdiStatus;
25139 eHalStatus halStatus;
25140 WDI_SetPowerParamsCb wdiPowerParamsCb;
25141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25142
25143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025145 -------------------------------------------------------------------------*/
25146 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25147 ( NULL == pEventData->pEventData ))
25148 {
25149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025153 }
25154
Jeff Johnsone7245742012-09-05 17:12:55 -070025155 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025156
25157 /*-------------------------------------------------------------------------
25158 Extract response and send it to UMAC
25159 -------------------------------------------------------------------------*/
25160 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025161 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025162
25163 /*Notify UMAC*/
25164 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25165
Jeff Johnsone7245742012-09-05 17:12:55 -070025166 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025167}/*WDI_ProcessSetPowerParamsRsp*/
25168
25169#ifdef WLAN_FEATURE_GTK_OFFLOAD
25170/**
25171 @brief WDI_GTKOffloadReq will be called when the upper MAC
25172 wants to set GTK Rekey Counter while in power save. Upon
25173 the call of this API the WLAN DAL will pack and send a
25174 HAL GTK offload request message to the lower RIVA
25175 sub-system if DAL is in state STARTED.
25176
25177 In state BUSY this request will be queued. Request won't
25178 be allowed in any other state.
25179
25180 WDI_PostAssocReq must have been called.
25181
25182 @param pwdiGtkOffloadParams: the GTK offload as specified
25183 by the Device Interface
25184
25185 wdiGtkOffloadCb: callback for passing back the response
25186 of the GTK offload operation received from the device
25187
25188 pUserData: user data will be passed back with the
25189 callback
25190
25191 @see WDI_PostAssocReq
25192 @return Result of the function call
25193*/
25194WDI_Status
25195WDI_GTKOffloadReq
25196(
25197 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
25198 WDI_GtkOffloadCb wdiGtkOffloadCb,
25199 void* pUserData
25200)
25201{
25202 WDI_EventInfoType wdiEventData = {0};
25203 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25204
25205 /*------------------------------------------------------------------------
25206 Sanity Check
25207 ------------------------------------------------------------------------*/
25208 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25209 {
25210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25211 "WDI API call before module is initialized - Fail request");
25212
25213 return WDI_STATUS_E_NOT_ALLOWED;
25214 }
25215
25216 /*------------------------------------------------------------------------
25217 Fill in Event data and post to the Main FSM
25218 ------------------------------------------------------------------------*/
25219 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
25220 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070025221 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070025222 wdiEventData.pCBfnc = wdiGtkOffloadCb;
25223 wdiEventData.pUserData = pUserData;
25224
25225 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25226}
25227
25228
25229/**
25230 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
25231 MAC wants to get GTK Rekey Counter while in power save.
25232 Upon the call of this API the WLAN DAL will pack and
25233 send a HAL GTK offload request message to the lower RIVA
25234 sub-system if DAL is in state STARTED.
25235
25236 In state BUSY this request will be queued. Request won't
25237 be allowed in any other state.
25238
25239 WDI_PostAssocReq must have been called.
25240
25241 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
25242 Information Message as specified by the
25243 Device Interface
25244
25245 wdiGtkOffloadGetInfoCb: callback for passing back the
25246 response of the GTK offload operation received from the
25247 device
25248
25249 pUserData: user data will be passed back with the
25250 callback
25251
25252 @see WDI_PostAssocReq
25253 @return Result of the function call
25254*/
25255WDI_Status
25256WDI_GTKOffloadGetInfoReq
25257(
25258 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
25259 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
25260 void* pUserData
25261)
25262{
25263 WDI_EventInfoType wdiEventData = {0};
25264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25265
25266 /*------------------------------------------------------------------------
25267 Sanity Check
25268 ------------------------------------------------------------------------*/
25269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25270 {
25271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25272 "WDI API call before module is initialized - Fail request");
25273
25274 return WDI_STATUS_E_NOT_ALLOWED;
25275 }
25276
25277 /*------------------------------------------------------------------------
25278 Fill in Event data and post to the Main FSM
25279 ------------------------------------------------------------------------*/
25280 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
25281 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
25282 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
25283 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
25284 wdiEventData.pUserData = pUserData;
25285
25286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25287}
25288
25289
25290/**
25291 @brief Process set GTK Offload Request function
25292
25293 @param pWDICtx: pointer to the WLAN DAL context
25294 pEventData: pointer to the event information structure
25295
25296 @see
25297 @return Result of the function call
25298*/
25299WDI_Status
25300WDI_ProcessGTKOffloadReq
25301(
25302 WDI_ControlBlockType* pWDICtx,
25303 WDI_EventInfoType* pEventData
25304)
25305{
25306 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
25307 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
25308 wpt_uint8* pSendBuffer = NULL;
25309 wpt_uint16 usDataOffset = 0;
25310 wpt_uint16 usSendSize = 0;
25311 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025312 wpt_uint8 ucCurrentSessionId = 0;
25313 WDI_BSSSessionType* pBSSSes = NULL;
25314
Jeff Johnson295189b2012-06-20 16:38:30 -070025315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25316
25317 /*-------------------------------------------------------------------------
25318 Sanity check
25319 -------------------------------------------------------------------------*/
25320 if (( NULL == pEventData ) ||
25321 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
25322 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
25323 {
25324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025325 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025326 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025327 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025328 }
25329
25330 /*-----------------------------------------------------------------------
25331 Get message buffer
25332 -----------------------------------------------------------------------*/
25333 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
25334 sizeof(gtkOffloadReqParams),
25335 &pSendBuffer, &usDataOffset, &usSendSize))||
25336 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
25337 {
25338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25339 "Unable to get send buffer in GTK offload req %x %x %x",
25340 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
25341 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025342 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025343 }
25344
25345 //
25346 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
25347 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025348 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25349 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
25350 &pBSSSes);
25351 if ( NULL == pBSSSes )
25352 {
25353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025354 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025355 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025356 }
25357
25358 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
25359
Jeff Johnson295189b2012-06-20 16:38:30 -070025360 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
25361 // Copy KCK
25362 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
25363 // Copy KEK
25364 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
25365 // Copy KeyReplayCounter
25366 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
25367
25368 wpalMemoryCopy( pSendBuffer+usDataOffset,
25369 &gtkOffloadReqParams,
25370 sizeof(gtkOffloadReqParams));
25371
25372 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
25373 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
25374
25375 /*-------------------------------------------------------------------------
25376 Send Get STA Request to HAL
25377 -------------------------------------------------------------------------*/
25378 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25379 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025380
25381fail:
25382 // Release the message buffer so we don't leak
25383 wpalMemoryFree(pSendBuffer);
25384
25385failRequest:
25386 //WDA should have failure check to avoid the memory leak
25387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025388}
25389
25390
25391/**
25392 @brief Process GTK Offload Get Information Request function
25393
25394 @param pWDICtx: pointer to the WLAN DAL context
25395 pEventData: pointer to the event information structure
25396
25397 @see
25398 @return Result of the function call
25399*/
25400WDI_Status
25401WDI_ProcessGTKOffloadGetInfoReq
25402(
25403 WDI_ControlBlockType* pWDICtx,
25404 WDI_EventInfoType* pEventData
25405)
25406{
25407 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
25408 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
25409 wpt_uint8* pSendBuffer = NULL;
25410 wpt_uint16 usDataOffset = 0;
25411 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025412 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
25413 wpt_uint8 ucCurrentSessionId = 0;
25414 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025415
25416 /*-------------------------------------------------------------------------
25417 Sanity check
25418 -------------------------------------------------------------------------*/
25419 if (( NULL == pEventData ) ||
25420 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
25421 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
25422 {
25423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025424 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025425 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025426 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025427 }
25428
25429 /*-----------------------------------------------------------------------
25430 Get message buffer
25431 -----------------------------------------------------------------------*/
25432 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025433 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025434 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025435 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070025436 {
25437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25438 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
25439 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
25440 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025441 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025442 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025443 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25444 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
25445 &pBSSSes);
25446 if ( NULL == pBSSSes )
25447 {
25448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025449 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025450 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025451 }
25452 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025453
25454 //
25455 // Don't need to fill send buffer other than header
25456 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025457 wpalMemoryCopy( pSendBuffer+usDataOffset,
25458 &halGtkOffloadGetInfoReqParams,
25459 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025460
25461 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
25462 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
25463
25464 /*-------------------------------------------------------------------------
25465 Send Get STA Request to HAL
25466 -------------------------------------------------------------------------*/
25467 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25468 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025469fail:
25470 // Release the message buffer so we don't leak
25471 wpalMemoryFree(pSendBuffer);
25472
25473failRequest:
25474 //WDA should have failure check to avoid the memory leak
25475 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025476}
25477
25478/**
25479 @brief Process host offload Rsp function (called when a
25480 response is being received over the bus from HAL)
25481
25482 @param pWDICtx: pointer to the WLAN DAL context
25483 pEventData: pointer to the event information structure
25484
25485 @see
25486 @return Result of the function call
25487*/
25488WDI_Status
25489WDI_ProcessGtkOffloadRsp
25490(
25491 WDI_ControlBlockType* pWDICtx,
25492 WDI_EventInfoType* pEventData
25493)
25494{
Jeff Johnson295189b2012-06-20 16:38:30 -070025495 eHalStatus halStatus;
25496 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025497 tHalGtkOffloadRspParams halGtkOffloadRspParams;
25498 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25500
25501 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
25502
25503 /*-------------------------------------------------------------------------
25504 Sanity check
25505 -------------------------------------------------------------------------*/
25506 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25507 ( NULL == pEventData->pEventData))
25508 {
25509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025510 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025511 WDI_ASSERT(0);
25512 return WDI_STATUS_E_FAILURE;
25513 }
25514
25515 /*-------------------------------------------------------------------------
25516 Extract response and send it to UMAC
25517 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025518 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25519 {
25520 wpalMemoryCopy( &halGtkOffloadRspParams,
25521 pEventData->pEventData,
25522 sizeof(halGtkOffloadRspParams));
25523
25524 wdiGtkOffloadRsparams.ulStatus =
25525 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
25526 wdiGtkOffloadRsparams.bssIdx =
25527 halGtkOffloadRspParams.bssIdx;
25528 }
25529 else
25530 {
25531 halStatus = *((eHalStatus*)pEventData->pEventData);
25532 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25533 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025534
25535 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025536 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025537
25538 return WDI_STATUS_SUCCESS;
25539}
25540
25541/**
25542 @brief Process GTK Offload Get Information Response function
25543
25544 @param pWDICtx: pointer to the WLAN DAL context
25545 pEventData: pointer to the event information structure
25546
25547 @see
25548 @return Result of the function call
25549*/
25550WDI_Status
25551WDI_ProcessGTKOffloadGetInfoRsp
25552(
25553 WDI_ControlBlockType* pWDICtx,
25554 WDI_EventInfoType* pEventData
25555)
25556{
Jeff Johnson295189b2012-06-20 16:38:30 -070025557 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025558 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025559 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
25560 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025561
25562 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25563
25564 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
25565
25566 /*-------------------------------------------------------------------------
25567 Sanity check
25568 -------------------------------------------------------------------------*/
25569 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25570 ( NULL == pEventData->pEventData ))
25571 {
25572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025574 WDI_ASSERT(0);
25575 return WDI_STATUS_E_FAILURE;
25576 }
25577
25578 /*-------------------------------------------------------------------------
25579 Extract response and send it to UMAC
25580 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025581 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25582 {
25583 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
25584 pEventData->pEventData,
25585 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025586
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025587 wdiGtkOffloadGetInfoRsparams.ulStatus =
25588 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
25589 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
25590 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
25591 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
25592 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
25593 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
25594 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
25595 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
25596 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
25597 wdiGtkOffloadGetInfoRsparams.bssIdx =
25598 halGtkOffloadGetInfoRspParams.bssIdx;
25599 }
25600 else
25601 {
25602 halStatus = *((eHalStatus*)pEventData->pEventData);
25603 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25604 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025605 /*Notify UMAC*/
25606 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25607 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025608 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025609
25610 return WDI_STATUS_SUCCESS;
25611}
25612#endif // WLAN_FEATURE_GTK_OFFLOAD
25613
25614#ifdef WLAN_WAKEUP_EVENTS
25615WDI_Status
25616WDI_ProcessWakeReasonInd
25617(
25618 WDI_ControlBlockType* pWDICtx,
25619 WDI_EventInfoType* pEventData
25620)
25621{
25622 WDI_LowLevelIndType *pWdiInd;
25623 tpWakeReasonParams pWakeReasonParams;
25624 wpt_uint32 allocSize = 0;
25625
25626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025627 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025628
25629 /*-------------------------------------------------------------------------
25630 Sanity check
25631 -------------------------------------------------------------------------*/
25632 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25633 ( NULL == pEventData->pEventData ))
25634 {
25635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025636 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 WDI_ASSERT( 0 );
25638 return WDI_STATUS_E_FAILURE;
25639 }
25640
25641 /*-------------------------------------------------------------------------
25642 Extract indication and send it to UMAC
25643 -------------------------------------------------------------------------*/
25644 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25645
25646 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25647
25648 //Allocate memory for WDI_WakeReasonIndType structure
25649 pWdiInd = wpalMemoryAllocate(allocSize) ;
25650
25651 if(NULL == pWdiInd)
25652 {
25653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25654 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025655 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025656 WDI_ASSERT(0);
25657 return WDI_STATUS_E_FAILURE;
25658 }
25659
25660 wpalMemoryZero(pWdiInd, allocSize);
25661
25662 /* Fill in the indication parameters*/
25663 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25664 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25665 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25666 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25667 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25668 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25669 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25670 &(pWakeReasonParams->aDataStart[0]),
25671 pWakeReasonParams->ulStoredDataLen);
25672
ltimariu034f7d62013-01-24 18:54:33 -080025673
25674 if ( pWDICtx->wdiLowLevelIndCB )
25675 {
25676 /*Notify UMAC*/
25677 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25678 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025679
25680 //Free memory allocated for WDI_WakeReasonIndType structure
25681 wpalMemoryFree(pWdiInd);
25682
25683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025684 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025685
25686 return WDI_STATUS_SUCCESS;
25687}
25688#endif // WLAN_WAKEUP_EVENTS
25689
25690void WDI_GetWcnssCompiledApiVersion
25691(
25692 WDI_WlanVersionType *pWcnssApiVersion
25693)
25694{
25695 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25696 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25697 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25698 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25699}
25700
25701/**
25702 @brief Process Set TM Level Rsp function (called when a
25703 response is being received over the bus from HAL)
25704
25705 @param pWDICtx: pointer to the WLAN DAL context
25706 pEventData: pointer to the event information structure
25707
25708 @see
25709 @return Result of the function call
25710*/
25711WDI_Status
25712WDI_ProcessSetTmLevelRsp
25713(
25714 WDI_ControlBlockType* pWDICtx,
25715 WDI_EventInfoType* pEventData
25716)
25717{
25718 WDI_Status wdiStatus;
25719 eHalStatus halStatus;
25720 WDI_SetTmLevelCb wdiSetTmLevelCb;
25721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25722
25723 /*-------------------------------------------------------------------------
25724 Sanity check
25725 -------------------------------------------------------------------------*/
25726 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25727 ( NULL == pEventData->pEventData ))
25728 {
25729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025731 WDI_ASSERT(0);
25732 return WDI_STATUS_E_FAILURE;
25733 }
25734
25735 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25736
25737 /*-------------------------------------------------------------------------
25738 Extract response and send it to UMAC
25739 -------------------------------------------------------------------------*/
25740 halStatus = *((eHalStatus*)pEventData->pEventData);
25741 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25742
25743 /*Notify UMAC*/
25744 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25745
25746 return WDI_STATUS_SUCCESS;
25747}/*WDI_ProcessSetTmLevelRsp*/
25748
25749/**
25750 @brief Process Set Thermal Mitigation level Changed request
25751
25752 @param pWDICtx: pointer to the WLAN DAL context
25753 pEventData: pointer to the event information structure
25754
25755 @see
25756 @return Result of the function call
25757*/
25758WDI_Status
25759WDI_ProcessSetTmLevelReq
25760(
25761 WDI_ControlBlockType* pWDICtx,
25762 WDI_EventInfoType* pEventData
25763)
25764{
25765 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25766 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25767 wpt_uint8* pSendBuffer = NULL;
25768 wpt_uint16 usDataOffset = 0;
25769 wpt_uint16 usSendSize = 0;
25770 tSetThermalMitgationType halTmMsg;
25771
25772 /*-------------------------------------------------------------------------
25773 Sanity check
25774 -------------------------------------------------------------------------*/
25775 if (( NULL == pEventData ) ||
25776 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25777 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25778 {
25779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025780 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025781 WDI_ASSERT(0);
25782 return WDI_STATUS_E_FAILURE;
25783 }
25784
25785 /*-----------------------------------------------------------------------
25786 Get message buffer
25787 -----------------------------------------------------------------------*/
25788 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25789 sizeof(halTmMsg),
25790 &pSendBuffer, &usDataOffset, &usSendSize))||
25791 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25792 {
25793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25794 "Unable to get send buffer in Set PNO req %x %x %x",
25795 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25796 WDI_ASSERT(0);
25797 return WDI_STATUS_E_FAILURE;
25798 }
25799
25800 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25801 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25802
25803 wpalMemoryCopy( pSendBuffer+usDataOffset,
25804 &halTmMsg,
25805 sizeof(halTmMsg));
25806
25807 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25808 pWDICtx->pfncRspCB = NULL;
25809 /*-------------------------------------------------------------------------
25810 Send Get STA Request to HAL
25811 -------------------------------------------------------------------------*/
25812 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25813 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25814}
25815
25816/* Fill the value from the global features enabled array to the global capabilities
25817 * bitmap struct
25818 */
25819static void
25820FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25821{
25822 wpt_int8 i;
25823 for (i=0; i<len; i++)
25824 {
25825 setFeatCaps(fCaps, enabledFeat[i]);
25826 }
25827}
25828
25829/**
25830 @brief WDI_featureCapsExchangeReq
25831 Post feature capability bitmap exchange event.
25832 Host will send its own capability to FW in this req and
25833 expect FW to send its capability back as a bitmap in Response
25834
25835 @param
25836
25837 wdiFeatureCapsExchangeCb: callback called on getting the response.
25838 It is kept to mantain similarity between WDI reqs and if needed, can
25839 be used in future. Currently, It is set to NULL
25840
25841 pUserData: user data will be passed back with the
25842 callback
25843
25844 @see
25845 @return Result of the function call
25846*/
25847WDI_Status
25848WDI_featureCapsExchangeReq
25849(
25850 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25851 void* pUserData
25852)
25853{
25854 WDI_EventInfoType wdiEventData;
25855 wpt_int32 fCapsStructSize;
25856
25857 /*------------------------------------------------------------------------
25858 Sanity Check
25859 ------------------------------------------------------------------------*/
25860 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25861 {
25862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25863 "WDI API call before module is initialized - Fail request");
25864
25865 return WDI_STATUS_E_NOT_ALLOWED;
25866 }
25867
25868 /* Allocate memory separately for global variable carrying FW caps */
25869 fCapsStructSize = sizeof(tWlanFeatCaps);
25870 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25871 if ( NULL == gpHostWlanFeatCaps )
25872 {
25873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25874 "Cannot allocate memory for host capability info\n");
25875 WDI_ASSERT(0);
25876 return WDI_STATUS_MEM_FAILURE;
25877 }
25878
25879 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25880
25881 /*------------------------------------------------------------------------
25882 Fill in Event data and post to the Main FSM
25883 ------------------------------------------------------------------------*/
25884 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25885 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25887 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 gpHostWlanFeatCaps->featCaps[0],
25889 gpHostWlanFeatCaps->featCaps[1],
25890 gpHostWlanFeatCaps->featCaps[2],
25891 gpHostWlanFeatCaps->featCaps[3]
25892 );
25893
25894 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25895 wdiEventData.pEventData = gpHostWlanFeatCaps;
25896 wdiEventData.uEventDataSize = fCapsStructSize;
25897 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25898 wdiEventData.pUserData = pUserData;
25899
25900 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25901}
25902
25903/**
Yathishd8713192012-12-10 14:21:35 -080025904 @brief Disable Active mode offload in Host
25905
25906 @param void
25907 @see
25908 @return void
25909*/
25910void
25911WDI_disableCapablityFeature(wpt_uint8 feature_index)
25912{
25913 supportEnabledFeatures[feature_index] = 0;
25914 return;
25915}
25916
25917/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025918 @brief Process Host-FW Capability Exchange Request function
25919
25920 @param pWDICtx: pointer to the WLAN DAL context
25921 pEventData: pointer to the event information structure
25922
25923 @see
25924 @return Result of the function call
25925*/
25926WDI_Status
25927WDI_ProcessFeatureCapsExchangeReq
25928(
25929 WDI_ControlBlockType* pWDICtx,
25930 WDI_EventInfoType* pEventData
25931)
25932{
25933 wpt_uint8* pSendBuffer = NULL;
25934 wpt_uint16 usDataOffset = 0;
25935 wpt_uint16 usSendSize = 0;
25936 wpt_uint16 usLen = 0;
25937
25938 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25939
25940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025941 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025942
25943 /*-------------------------------------------------------------------------
25944 Sanity check
25945 -------------------------------------------------------------------------*/
25946 /* Call back function is NULL since not required for cap exchange req */
25947 if (( NULL == pEventData ) ||
25948 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25949 {
25950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025951 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 WDI_ASSERT(0);
25953 return WDI_STATUS_E_FAILURE;
25954 }
25955
25956 /*-----------------------------------------------------------------------
25957 Get message buffer
25958 -----------------------------------------------------------------------*/
25959 usLen = sizeof(tWlanFeatCaps);
25960
25961 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25962 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25963 usLen,
25964 &pSendBuffer, &usDataOffset, &usSendSize))||
25965 ( usSendSize < (usDataOffset + usLen )))
25966 {
25967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25968 "Unable to get send buffer in feat caps exchange req %x %x",
25969 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25970 WDI_ASSERT(0);
25971 return WDI_STATUS_E_FAILURE;
25972 }
25973
25974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025975 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025976 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25977 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25978 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25979 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25980 );
25981
25982 /* Copy host caps after the offset in the send buffer */
25983 wpalMemoryCopy( pSendBuffer+usDataOffset,
25984 (tWlanFeatCaps *)pEventData->pEventData,
25985 usLen);
25986
25987 /*-------------------------------------------------------------------------
25988 Send Start Request to HAL
25989 -------------------------------------------------------------------------*/
25990 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25991 (WDI_StartRspCb)pEventData->pCBfnc,
25992 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25993
25994}/*WDI_ProcessFeatureCapsExchangeReq*/
25995
25996/**
25997 @brief Process Host-FW Capability Exchange Response function
25998
25999 @param pWDICtx: pointer to the WLAN DAL context
26000 pEventData: pointer to the event information structure
26001
26002 @see
26003 @return Result of the function call
26004*/
26005WDI_Status
26006WDI_ProcessFeatureCapsExchangeRsp
26007(
26008 WDI_ControlBlockType* pWDICtx,
26009 WDI_EventInfoType* pEventData
26010)
26011{
26012 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
26013 wpt_int32 fCapsStructSize;
26014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26015
26016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026017 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026018
26019 /*-------------------------------------------------------------------------
26020 Sanity check
26021 -------------------------------------------------------------------------*/
26022 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26023 ( NULL == pEventData->pEventData ))
26024 {
26025 /* It will go here when riva is old (doesn't understand this msg) and host is new */
26026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026028 WDI_ASSERT(0);
26029 return WDI_STATUS_E_FAILURE;
26030 }
26031
26032 /* Allocate memory separately for global variable carrying FW caps */
26033 fCapsStructSize = sizeof(tWlanFeatCaps);
26034 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26035 if ( NULL == gpFwWlanFeatCaps )
26036 {
26037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26038 "Cannot allocate memory for host capability info\n");
26039 WDI_ASSERT(0);
26040 return WDI_STATUS_MEM_FAILURE;
26041 }
26042
26043 /*-------------------------------------------------------------------------
26044 Unpack HAL Response Message - the header was already extracted by the
26045 main Response Handling procedure
26046 -------------------------------------------------------------------------*/
26047 /*-------------------------------------------------------------------------
26048 Extract response and send it to UMAC
26049 -------------------------------------------------------------------------*/
26050
26051 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
26052 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070026053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26054 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026055 gpFwWlanFeatCaps->featCaps[0],
26056 gpFwWlanFeatCaps->featCaps[1],
26057 gpFwWlanFeatCaps->featCaps[2],
26058 gpFwWlanFeatCaps->featCaps[3]
26059 );
Jeff Johnson295189b2012-06-20 16:38:30 -070026060 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
26061
26062 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
26063 if (wdiFeatureCapsExchangeCb != NULL)
26064 wdiFeatureCapsExchangeCb(NULL, NULL);
26065
26066 return WDI_STATUS_SUCCESS;
26067}
26068
Mohit Khanna4a70d262012-09-11 16:30:12 -070026069#ifdef WLAN_FEATURE_11AC
26070WDI_Status
26071WDI_ProcessUpdateVHTOpModeRsp
26072(
26073 WDI_ControlBlockType* pWDICtx,
26074 WDI_EventInfoType* pEventData
26075)
26076{
26077 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26078 WDI_Status wdiStatus;
26079 eHalStatus halStatus;
26080
26081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26082
26083 /*-------------------------------------------------------------------------
26084 Sanity check
26085 -------------------------------------------------------------------------*/
26086 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26087 ( NULL == pEventData->pEventData))
26088 {
26089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026090 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026091 WDI_ASSERT(0);
26092 return WDI_STATUS_E_FAILURE;
26093 }
26094 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
26095
26096 /*-------------------------------------------------------------------------
26097 Extract response and send it to UMAC
26098 -------------------------------------------------------------------------*/
26099 halStatus = *((eHalStatus*)pEventData->pEventData);
26100 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26101
26102 /*Notify UMAC*/
26103 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
26104
26105 return WDI_STATUS_SUCCESS;
26106}
26107#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026108/**
26109 @brief WDI_getHostWlanFeatCaps
26110 WDI API that returns whether the feature passed to it as enum value in
26111 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
26112 variable storing host capability bitmap to find this. This can be used by
26113 other moduels to decide certain things like call different APIs based on
26114 whether a particular feature is supported.
26115
26116 @param
26117
26118 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
26119
26120 @see
26121 @return
26122 0 - if the feature is NOT supported in host
26123 any non-zero value - if the feature is SUPPORTED in host.
26124*/
26125wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
26126{
26127 wpt_uint8 featSupported = 0;
26128 if (gpHostWlanFeatCaps != NULL)
26129 {
26130 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
26131 }
26132 else
26133 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026135 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026136 }
26137 return featSupported;
26138}
26139
26140/**
26141 @brief WDI_getFwWlanFeatCaps
26142 WDI API that returns whether the feature passed to it as enum value in
26143 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
26144 variable storing host capability bitmap to find this. This can be used by
26145 other moduels to decide certain things like call different APIs based on
26146 whether a particular feature is supported.
26147
26148 @param
26149
26150 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
26151 in wlan_hal_msg.h.
26152
26153 @see
26154 @return
26155 0 - if the feature is NOT supported in FW
26156 any non-zero value - if the feature is SUPPORTED in FW.
26157*/
26158wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
26159{
26160 wpt_uint8 featSupported = 0;
26161 if (gpFwWlanFeatCaps != NULL)
26162 {
26163 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
26164 }
26165 else
26166 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026168 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026169 }
26170 return featSupported;
26171}
Mohit Khanna4a70d262012-09-11 16:30:12 -070026172
26173#ifdef WLAN_FEATURE_11AC
26174WDI_Status
26175WDI_ProcessUpdateVHTOpModeReq
26176(
26177 WDI_ControlBlockType* pWDICtx,
26178 WDI_EventInfoType* pEventData
26179)
26180{
26181 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
26182 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26183 wpt_uint8* pSendBuffer = NULL;
26184 wpt_uint16 usDataOffset = 0;
26185 wpt_uint16 usSendSize = 0;
26186
26187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26188
26189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026190 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026191
26192 /*-------------------------------------------------------------------------
26193 Sanity check
26194 -------------------------------------------------------------------------*/
26195 if (( NULL == pEventData ) ||
26196 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
26197 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
26198 {
26199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026200 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026201 WDI_ASSERT(0);
26202 return WDI_STATUS_E_FAILURE;
26203 }
26204
26205 /*-----------------------------------------------------------------------
26206 Get message buffer
26207 -----------------------------------------------------------------------*/
26208 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
26209 sizeof(WDI_UpdateVHTOpMode),
26210 &pSendBuffer, &usDataOffset, &usSendSize))||
26211 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
26212 {
26213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26214 "Unable to get send buffer in update vht opMode req");
26215 WDI_ASSERT(0);
26216 return WDI_STATUS_E_FAILURE;
26217 }
26218
26219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26220 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
26221
26222 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
26223 sizeof(WDI_UpdateVHTOpMode));
26224
26225 /*-------------------------------------------------------------------------
26226 Send Start Request to HAL
26227 -------------------------------------------------------------------------*/
26228 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26229 wdiVHTOpModeCb,
26230 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
26231
26232}
26233
26234WDI_Status
26235WDI_UpdateVHTOpModeReq
26236(
26237 WDI_UpdateVHTOpMode *pData,
26238 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
26239 void* pUserData
26240)
26241{
26242 WDI_EventInfoType wdiEventData;
26243
26244 /*------------------------------------------------------------------------
26245 Sanity Check
26246 ------------------------------------------------------------------------*/
26247 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26248 {
26249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26250 "WDI API call before module is initialized - Fail request");
26251
26252 return WDI_STATUS_E_NOT_ALLOWED;
26253 }
26254
26255 /*------------------------------------------------------------------------
26256 Fill in Event data and post to the Main FSM
26257 ------------------------------------------------------------------------*/
26258 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
26259 wdiEventData.pEventData = pData;
26260 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
26261 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
26262 wdiEventData.pUserData = pUserData;
26263
26264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26265 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
26266
26267 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26268
26269}
26270#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026271
26272/**
26273 @brief WDI_TransportChannelDebug -
26274 Display DXE Channel debugging information
26275 User may request to display DXE channel snapshot
26276 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026277
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080026278 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026279 @param enableStallDetect : Enable stall detect feature
26280 This feature will take effect to data performance
26281 Not integrate till fully verification
26282 @see
26283 @return none
26284*/
26285void WDI_TransportChannelDebug
26286(
26287 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026288 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026289)
26290{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026291 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026292 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070026293}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026294/**
26295 @brief WDI_SsrTimerCB
26296 Callback function for SSR timer, if this is called then the graceful
26297 shutdown for Riva did not happen.
26298
26299 @param pUserData : user data to timer
26300
26301 @see
26302 @return none
26303*/
26304void
26305WDI_SsrTimerCB
26306(
26307 void *pUserData
26308)
26309{
26310 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
26311 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26312
26313 if (NULL == pWDICtx )
26314 {
26315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026316 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026317 WDI_ASSERT(0);
26318 return;
26319 }
26320 wpalRivaSubystemRestart();
26321
26322 return;
26323
26324}/*WDI_SsrTimerCB*/