blob: c1ada3c1efd2adc3a11b03c452d035a4674eca67 [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
Jeff Johnson295189b2012-06-20 16:38:30 -0700346 /*-------------------------------------------------------------------------
347 Indications
348 -------------------------------------------------------------------------*/
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800349#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
350 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
351#else
352 NULL,
353#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700354 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800355 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700356};
357
358
Jeff Johnsone7245742012-09-05 17:12:55 -0700359/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700360 DAL Request Processing Array - the functions in this table will only be
361 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700362 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700363 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700364WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700365{
366 /*INIT*/
367 WDI_ProcessStartRsp, /* WDI_START_RESP */
368 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
369 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
370
371 /*SCAN*/
372 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
373 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
374 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
375 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
376
377 /* ASSOCIATION*/
378 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
379 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
380 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
381 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
382 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
383
384 /* Security */
385 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
386 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
387 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
388 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
389
390 /* QoS and BA APIs */
391 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
392 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
393 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
394 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
395 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
396
397 /* Miscellaneous Control APIs */
398 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
399 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
400 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
401 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
402 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
403
404 /* BA APIs*/
405 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
406 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700407
Jeff Johnson295189b2012-06-20 16:38:30 -0700408 /* IBSS APIs*/
409 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
410 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
411
412 /*Soft AP APIs*/
413 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
414 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
415 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
416 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
417
418 /* PowerSave APIs */
419 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
420 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
421 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
422 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
423 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
424 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
425 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
426 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
427 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
428 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
429 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
430 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
431 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
432 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
433 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
434 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
435 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
436 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700437
Jeff Johnson295189b2012-06-20 16:38:30 -0700438
439 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
440
441 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
442 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
443#ifdef WLAN_FEATURE_VOWIFI_11R
444 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
445#else
446 NULL,
447#endif /* WLAN_FEATURE_VOWIFI_11R */
448 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
449 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700450#ifdef FEATURE_OEM_DATA_SUPPORT
451 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
452#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700453 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700454#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700455 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
456
Jeff Johnson295189b2012-06-20 16:38:30 -0700457 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700458
Jeff Johnson295189b2012-06-20 16:38:30 -0700459 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700460
Jeff Johnsone7245742012-09-05 17:12:55 -0700461 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
462
Jeff Johnson295189b2012-06-20 16:38:30 -0700463#ifdef FEATURE_WLAN_SCAN_PNO
464 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
465 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
466 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
467#else
468 NULL,
469 NULL,
470 NULL,
471#endif // FEATURE_WLAN_SCAN_PNO
472
473 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
474
475 /*---------------------------------------------------------------------
476 Indications
477 ---------------------------------------------------------------------*/
478#ifdef WLAN_FEATURE_PACKET_FILTERING
479 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700480 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700481 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700482 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700483 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700484 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700485 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700486 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700487#else
488 NULL,
489 NULL,
490 NULL,
491 NULL,
492#endif // WLAN_FEATURE_PACKET_FILTERING
493
494 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
495 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
496
497 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
498#ifdef FEATURE_WLAN_CCX
499 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
500#else
501 NULL,
502#endif
503
504#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700505 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
506 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700507#else
508 NULL,
509 NULL,
510#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700511 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
512 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700513#ifdef WLAN_FEATURE_11AC
514 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
515#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800516#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
517 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
518#else
519 NULL,
520#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700521
522 /*---------------------------------------------------------------------
523 Indications
524 ---------------------------------------------------------------------*/
525 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
526 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
527 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
528 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
529 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
530 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
531
532 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
533
534 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
535
Jeff Johnson295189b2012-06-20 16:38:30 -0700536 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700537
538#ifdef FEATURE_WLAN_SCAN_PNO
539 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
540#else
541 NULL,
542#endif // FEATURE_WLAN_SCAN_PNO
543
544#ifdef WLAN_WAKEUP_EVENTS
545 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
546#else // WLAN_WAKEUP_EVENTS
547 NULL,
548#endif // WLAN_WAKEUP_EVENTS
549
550 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800551
Viral Modi9dc288a2012-12-10 13:09:21 -0800552 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700553};
554
555
Jeff Johnsone7245742012-09-05 17:12:55 -0700556/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700557 WLAN DAL Global Control Block
558 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700559WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700560static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
561
Jeff Johnsone7245742012-09-05 17:12:55 -0700562const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700563
564/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700565WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700566void* WDI_GET_PAL_CTX( void )
567{
Jeff Johnsone7245742012-09-05 17:12:55 -0700568 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700569}/*WDI_GET_PAL_CTX*/
570
Jeff Johnsone7245742012-09-05 17:12:55 -0700571/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700572 Helper inline converters
573 ============================================================================*/
574/*Convert WDI driver type into HAL driver type*/
575WPT_STATIC WPT_INLINE WDI_Status
576WDI_HAL_2_WDI_STATUS
577(
578 eHalStatus halStatus
579);
580
581/*Convert WDI request type into HAL request type*/
582WPT_STATIC WPT_INLINE tHalHostMsgType
583WDI_2_HAL_REQ_TYPE
584(
585 WDI_RequestEnumType wdiReqType
586);
587
588/*Convert WDI response type into HAL response type*/
589WPT_STATIC WPT_INLINE WDI_ResponseEnumType
590HAL_2_WDI_RSP_TYPE
591(
592 tHalHostMsgType halMsg
593);
594
595/*Convert WDI driver type into HAL driver type*/
596WPT_STATIC WPT_INLINE tDriverType
597WDI_2_HAL_DRV_TYPE
598(
599 WDI_DriverType wdiDriverType
600);
601
602/*Convert WDI stop reason into HAL stop reason*/
603WPT_STATIC WPT_INLINE tHalStopType
604WDI_2_HAL_STOP_REASON
605(
606 WDI_StopType wdiStopType
607);
608
609/*Convert WDI scan mode type into HAL scan mode type*/
610WPT_STATIC WPT_INLINE eHalSysMode
611WDI_2_HAL_SCAN_MODE
612(
613 WDI_ScanMode wdiScanMode
614);
615
616/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700617WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700618WDI_2_HAL_SEC_CH_OFFSET
619(
620 WDI_HTSecondaryChannelOffset wdiSecChOffset
621);
622
623/*Convert WDI BSS type into HAL BSS type*/
624WPT_STATIC WPT_INLINE tSirBssType
625WDI_2_HAL_BSS_TYPE
626(
627 WDI_BssType wdiBSSType
628);
629
630/*Convert WDI NW type into HAL NW type*/
631WPT_STATIC WPT_INLINE tSirNwType
632WDI_2_HAL_NW_TYPE
633(
634 WDI_NwType wdiNWType
635);
636
637/*Convert WDI chanel bonding type into HAL cb type*/
638WPT_STATIC WPT_INLINE ePhyChanBondState
639WDI_2_HAL_CB_STATE
640(
641 WDI_PhyChanBondState wdiCbState
642);
643
644/*Convert WDI chanel bonding type into HAL cb type*/
645WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
646WDI_2_HAL_HT_OPER_MODE
647(
648 WDI_HTOperatingMode wdiHTOperMode
649);
650
651/*Convert WDI mimo PS type into HAL mimo PS type*/
652WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
653WDI_2_HAL_MIMO_PS
654(
655 WDI_HTMIMOPowerSaveState wdiHTOperMode
656);
657
658/*Convert WDI ENC type into HAL ENC type*/
659WPT_STATIC WPT_INLINE tAniEdType
660WDI_2_HAL_ENC_TYPE
661(
662 WDI_EncryptType wdiEncType
663);
664
665/*Convert WDI WEP type into HAL WEP type*/
666WPT_STATIC WPT_INLINE tAniWepType
667WDI_2_HAL_WEP_TYPE
668(
669 WDI_WepType wdiWEPType
670);
671
672/*Convert WDI Link State into HAL Link State*/
673WPT_STATIC WPT_INLINE tSirLinkState
674WDI_2_HAL_LINK_STATE
675(
676 WDI_LinkStateType wdiLinkState
677);
678
Jeff Johnsone7245742012-09-05 17:12:55 -0700679/*Translate a STA Context from WDI into HAL*/
680WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700681void
682WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700683(
Jeff Johnson295189b2012-06-20 16:38:30 -0700684 tConfigStaParams* phalConfigSta,
685 WDI_ConfigStaReqInfoType* pwdiConfigSta
686);
Jeff Johnsone7245742012-09-05 17:12:55 -0700687
688/*Translate a Rate set info from WDI into HAL*/
689WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700690WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700691(
Jeff Johnson295189b2012-06-20 16:38:30 -0700692 tSirMacRateSet* pHalRateSet,
693 WDI_RateSet* pwdiRateSet
694);
695
696/*Translate an EDCA Parameter Record from WDI into HAL*/
697WPT_STATIC WPT_INLINE void
698WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700699(
Jeff Johnson295189b2012-06-20 16:38:30 -0700700 tSirMacEdcaParamRecord* phalEdcaParam,
701 WDI_EdcaParamRecord* pWDIEdcaParam
702);
703
704/*Copy a management frame header from WDI fmt into HAL fmt*/
705WPT_STATIC WPT_INLINE void
706WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
707(
708 tSirMacMgmtHdr* pmacMgmtHdr,
709 WDI_MacMgmtHdr* pwdiMacMgmtHdr
710);
711
712/*Copy config bss parameters from WDI fmt into HAL fmt*/
713WPT_STATIC WPT_INLINE void
714WDI_CopyWDIConfigBSSToHALConfigBSS
715(
716 tConfigBssParams* phalConfigBSS,
717 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
718);
719
Jeff Johnsone7245742012-09-05 17:12:55 -0700720/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700721 pointed to by user data */
722WPT_STATIC WPT_INLINE void
723WDI_ExtractRequestCBFromEvent
724(
725 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700726 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700727 void** ppUserData
728);
729
730wpt_uint8
731WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700732(
Jeff Johnson295189b2012-06-20 16:38:30 -0700733 WDI_ControlBlockType* pWDICtx,
734 WDI_BSSSessionType** ppSession
735);
736
737void
738WDI_AddBcastSTAtoSTATable
739(
740 WDI_ControlBlockType* pWDICtx,
741 WDI_AddStaParams * staParams,
742 wpt_uint16 usBcastStaIdx
743);
744
745WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700746(
Jeff Johnson295189b2012-06-20 16:38:30 -0700747 WDI_ControlBlockType* pWDICtx,
748 WDI_EventInfoType* pEventData
749);
750
751void
752WDI_SetPowerStateCb
753(
754 wpt_status status,
755 unsigned int dxePhyAddr,
756 void *pContext
757);
758
759#define CASE_RETURN_STRING( str ) \
760 case ( ( str ) ): return( #str ); break \
761
762/**
763 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700764
765 @param wdiReqMsgId: WDI Message request Id
766
767 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700768 @return Result of the function call
769*/
770static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
771{
772 switch (wdiReqMsgId)
773 {
774 CASE_RETURN_STRING( WDI_START_REQ );
775 CASE_RETURN_STRING( WDI_STOP_REQ );
776 CASE_RETURN_STRING( WDI_CLOSE_REQ );
777 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
778 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
779 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
780 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
781 CASE_RETURN_STRING( WDI_JOIN_REQ );
782 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
783 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
784 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
785 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
786 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
787 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
788 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
789 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
790 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
791 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
792 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
793 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
794 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
795 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
796 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
797 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
798 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
799 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
800 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
801 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
802 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
803 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
804 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
805 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
806 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
807 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
808 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
809 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
810 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
811 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
812 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
813 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
814 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
815 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
816 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
817 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
818 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
819 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
820 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
821 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
822 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
823 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
824 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
825 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
826 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
827 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
828 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
829 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
830 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
831 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
832 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
833 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700834 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700835 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
836 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
837 #ifdef FEATURE_WLAN_SCAN_PNO
838 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
839 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
840 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
841 #endif
842 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
843 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
844 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
845 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
846 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
847 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
848 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
849 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
850 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800851 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800852 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700853 default:
854 return "Unknown WDI MessageId";
855 }
856}
857
858
859
860/**
861 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700862
863 @param wdiRespMsgId: WDI Message response Id
864
865 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700866 @return Result of the function call
867*/
868static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
869{
870 switch (wdiRespMsgId)
871 {
872 CASE_RETURN_STRING( WDI_START_RESP );
873 CASE_RETURN_STRING( WDI_STOP_RESP );
874 CASE_RETURN_STRING( WDI_CLOSE_RESP );
875 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
876 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
877 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
878 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
879 CASE_RETURN_STRING( WDI_JOIN_RESP );
880 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
881 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
882 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
883 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
884 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
885 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
886 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
887 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
888 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
889 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
890 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
891 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
892 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
893 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
894 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
895 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
896 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
897 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
898 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
899 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
900 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
901 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
902 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
903 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
904 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
905 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
906 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
907 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
908 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
909 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
910 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
911 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
912 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
913 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
914 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
915 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
916 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
917 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
918 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
919 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
920 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
921 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
922 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
923 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
924 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
925 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
926 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
927 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
928 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
929 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
930 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
931 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700932 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700933 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
934 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
935 #ifdef FEATURE_WLAN_SCAN_PNO
936 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
937 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
938 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
939 #endif
940 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
941 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
942 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
943 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
944 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
945 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
946 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
947 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800948 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700949 default:
950 return "Unknown WDI MessageId";
951 }
952}
953
954/**
955 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700956
957 @param halStatusId: HAL status Id
958
959 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700960 @return Result of the function call
961*/
962static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
963{
964 switch (halStatusId)
965 {
966 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
967 CASE_RETURN_STRING( PAL_STATUS_INVAL );
968 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
969 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
970 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
971 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
972 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
973 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
974 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
975 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
976 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
977 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
978 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
979 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
980 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
981 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
982 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
983 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
984 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
985 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
986 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
987 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
988 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
989 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
990 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
991 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
992 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
993 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
994 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
995 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
996 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
997 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
998 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
999 default:
1000 return "Unknown HAL status";
1001 }
1002}
1003
Jeff Johnsone7245742012-09-05 17:12:55 -07001004/*========================================================================
1005
Jeff Johnson295189b2012-06-20 16:38:30 -07001006 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001007
Jeff Johnson295189b2012-06-20 16:38:30 -07001008==========================================================================*/
1009
1010/**
1011 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001012
Jeff Johnson295189b2012-06-20 16:38:30 -07001013 DAL will allocate all the resources it needs. It will open PAL, it will also
1014 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001015 DXE/SMD or any other drivers that they need.
1016
Jeff Johnson295189b2012-06-20 16:38:30 -07001017 @param pOSContext: pointer to the OS context provided by the UMAC
1018 will be passed on to PAL on Open
1019 ppWDIGlobalCtx: output pointer of Global Context
1020 pWdiDevCapability: output pointer of device capability
1021
1022 @return Result of the function call
1023*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001024WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001025WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001026(
Jeff Johnson295189b2012-06-20 16:38:30 -07001027 void* pOSContext,
1028 void** ppWDIGlobalCtx,
1029 WDI_DeviceCapabilityType* pWdiDevCapability,
1030 unsigned int driverType
1031)
1032{
1033 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001034 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001035 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001036 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1038
1039 /*---------------------------------------------------------------------
1040 Sanity check
1041 ---------------------------------------------------------------------*/
1042 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1043 {
1044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1045 "Invalid input parameters in WDI_Init");
1046
Jeff Johnsone7245742012-09-05 17:12:55 -07001047 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001048 }
1049
1050 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001051 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001052 ---------------------------------------------------------------------*/
1053 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1054 {
1055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1056 "WDI module already initialized - return");
1057
Jeff Johnsone7245742012-09-05 17:12:55 -07001058 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001059 }
1060
1061 /*Module is now initialized - this flag is to ensure the fact that multiple
1062 init will not happen on WDI
1063 !! - potential race does exist because read and set are not atomic,
1064 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001065 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001066
1067 /*Setup the control block */
1068 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001069 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001070
1071 /*Setup the STA Table*/
1072 wdiStatus = WDI_STATableInit(&gWDICb);
1073 if ( WDI_STATUS_SUCCESS != wdiStatus )
1074 {
1075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1076 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001077 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001078 goto fail_STATableInit;
1079 }
1080
1081 /*------------------------------------------------------------------------
1082 Open the PAL
1083 ------------------------------------------------------------------------*/
1084 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1085 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1086 {
1087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1088 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001089 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001090 goto fail_wpalOpen;
1091 }
1092
1093 /*Initialize main synchro mutex - it will be used to ensure integrity of
1094 the main WDI Control Block*/
1095 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1096 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1097 {
1098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1099 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001100 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001101 goto fail_mutex;
1102 }
1103
1104 /*Initialize the response timer - it will be used to time all messages
1105 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001106 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1107 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001108 &gWDICb);
1109 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1110 {
1111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1112 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001113 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001114 goto fail_timer;
1115 }
1116
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001117 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1118 WDI_SsrTimerCB,
1119 &gWDICb);
1120 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1121 {
1122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1123 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001124 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001125 goto fail_timer2;
1126 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001127 /* Initialize the WDI Pending Request Queue*/
1128 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1129 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1130 {
1131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1132 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001133 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001134 goto fail_pend_queue;
1135 }
1136
1137 /*Init WDI Pending Assoc Id Queue */
1138 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1139 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1140 {
1141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1142 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001143 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001144 goto fail_assoc_queue;
1145 }
1146
1147 /*Initialize the BSS sessions pending Queue */
1148 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1149 {
1150 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1151 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1152 {
1153 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1154 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001155 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001156 goto fail_bss_queue;
1157 }
1158 }
1159
1160 /*Indicate the control block is sufficiently initialized for callbacks*/
1161 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1162
1163 /*------------------------------------------------------------------------
1164 Initialize the Data Path Utility Module
1165 ------------------------------------------------------------------------*/
1166 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1167 if ( WDI_STATUS_SUCCESS != wdiStatus )
1168 {
1169 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1170 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001171 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001172 goto fail_dp_util_init;
1173 }
1174
1175 /* Init Set power state event */
1176 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001177 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001178 {
1179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1180 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001181 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001182 goto fail_power_event;
1183 }
1184
1185 /* Init WCTS action event */
1186 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001187 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001188 {
1189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1190 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001191 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001192 goto fail_wcts_event;
1193 }
1194
1195 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001196 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001197 ------------------------------------------------------------------------*/
1198 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1199 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001200 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001201 wctsCBs.wctsRxMsgCBData = &gWDICb;
1202
Jeff Johnsone7245742012-09-05 17:12:55 -07001203 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001204 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001205 WDI_CT_CHANNEL_SIZE,
1206 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001207
1208 if ( NULL == gWDICb.wctsHandle )
1209 {
1210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001211 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001212 goto fail_wcts_open;
1213 }
1214
1215 gWDICb.driverMode = (tDriverType)driverType;
1216 /* FTM mode not need to open Transport Driver */
1217 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001218 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001219 /*------------------------------------------------------------------------
1220 Open the Data Transport
1221 ------------------------------------------------------------------------*/
1222 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1223 {
1224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001225 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001226 goto fail_wdts_open;
1227 }
1228 }
1229
1230 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001231 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001232
1233 /*Send the context as a ptr to the global WDI Control Block*/
1234 *ppWDIGlobalCtx = &gWDICb;
1235
1236 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001237 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001238 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1239 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1240 return WDI_STATUS_SUCCESS;
1241
1242 /* ERROR handlers
1243 Undo everything that completed successfully */
1244
1245 fail_wdts_open:
1246 {
1247 wpt_status eventStatus;
1248
1249 /* Closing WCTS in this scenario is tricky since it has to close
1250 the SMD channel and then we get notified asynchronously when
1251 the channel has been closed. So we take some of the logic from
1252 the "normal" close procedure in WDI_Close()
1253 */
1254
1255 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001256 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001257 {
1258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001259 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001260 }
1261
1262 WCTS_CloseTransport(gWDICb.wctsHandle);
1263
1264 /* Wait for WCTS to close the control transport. If we were able
1265 to reset the event flag, then we'll wait for the event,
1266 otherwise we'll wait for a maximum amount of time required for
1267 the channel to be closed */
1268 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1269 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001270 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001271 WDI_WCTS_ACTION_TIMEOUT);
1272 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1273 {
1274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001275 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001276 }
1277 }
1278 else
1279 {
1280 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1281 }
1282 }
1283 fail_wcts_open:
1284 wpalEventDelete(&gWDICb.wctsActionEvent);
1285 fail_wcts_event:
1286 wpalEventDelete(&gWDICb.setPowerStateEvent);
1287 fail_power_event:
1288 WDI_DP_UtilsExit(&gWDICb);
1289 fail_dp_util_init:
1290 gWDICb.magic = 0;
1291 fail_bss_queue:
1292 /* entries 0 thru i-1 were successfully initialized */
1293 while (0 < i)
1294 {
1295 i--;
1296 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1297 }
1298 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1299 fail_assoc_queue:
1300 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1301 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001302 wpalTimerDelete(&gWDICb.ssrTimer);
1303 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001304 wpalTimerDelete(&gWDICb.wptResponseTimer);
1305 fail_timer:
1306 wpalMutexDelete(&gWDICb.wptMutex);
1307 fail_mutex:
1308 wpalClose(gWDICb.pPALContext);
1309 fail_wpalOpen:
1310 WDI_STATableClose(&gWDICb);
1311 fail_STATableInit:
1312 gWDIInitialized = eWLAN_PAL_FALSE;
1313
1314 return WDI_STATUS_E_FAILURE;
1315
1316}/*WDI_Init*/;
1317
1318/**
1319 @brief WDI_Start will be called when the upper MAC is ready to
1320 commence operation with the WLAN Device. Upon the call
1321 of this API the WLAN DAL will pack and send a HAL Start
1322 message to the lower RIVA sub-system if the SMD channel
1323 has been fully opened and the RIVA subsystem is up.
1324
1325 If the RIVA sub-system is not yet up and running DAL
1326 will queue the request for Open and will wait for the
1327 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001328 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001329
1330 WDI_Init must have been called.
1331
Jeff Johnsone7245742012-09-05 17:12:55 -07001332 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001333 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001334
Jeff Johnson295189b2012-06-20 16:38:30 -07001335 wdiStartRspCb: callback for passing back the response of
1336 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001337
Jeff Johnson295189b2012-06-20 16:38:30 -07001338 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001339 callback
1340
Jeff Johnson295189b2012-06-20 16:38:30 -07001341 @see WDI_Start
1342 @return Result of the function call
1343*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001344WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001345WDI_Start
1346(
1347 WDI_StartReqParamsType* pwdiStartParams,
1348 WDI_StartRspCb wdiStartRspCb,
1349 void* pUserData
1350)
1351{
1352 WDI_EventInfoType wdiEventData;
1353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1354
1355 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001356 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001357 ------------------------------------------------------------------------*/
1358 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1359 {
1360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1361 "WDI API call before module is initialized - Fail request");
1362
Jeff Johnsone7245742012-09-05 17:12:55 -07001363 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001364 }
1365
1366 /*------------------------------------------------------------------------
1367 Fill in Event data and post to the Main FSM
1368 ------------------------------------------------------------------------*/
1369 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001370 wdiEventData.pEventData = pwdiStartParams;
1371 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1372 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001373 wdiEventData.pUserData = pUserData;
1374
1375 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1376
1377}/*WDI_Start*/
1378
1379/**
1380 @brief WDI_Stop will be called when the upper MAC is ready to
1381 stop any operation with the WLAN Device. Upon the call
1382 of this API the WLAN DAL will pack and send a HAL Stop
1383 message to the lower RIVA sub-system if the DAL Core is
1384 in started state.
1385
1386 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001387
1388 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001389
1390 WDI_Start must have been called.
1391
Jeff Johnsone7245742012-09-05 17:12:55 -07001392 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001393 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001394
Jeff Johnson295189b2012-06-20 16:38:30 -07001395 wdiStopRspCb: callback for passing back the response of
1396 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001397
Jeff Johnson295189b2012-06-20 16:38:30 -07001398 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001399 callback
1400
Jeff Johnson295189b2012-06-20 16:38:30 -07001401 @see WDI_Start
1402 @return Result of the function call
1403*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001404WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001405WDI_Stop
1406(
1407 WDI_StopReqParamsType* pwdiStopParams,
1408 WDI_StopRspCb wdiStopRspCb,
1409 void* pUserData
1410)
1411{
1412 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001413 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1415
1416 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001417 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001418 ------------------------------------------------------------------------*/
1419 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1420 {
1421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1422 "WDI API call before module is initialized - Fail request");
1423
Jeff Johnsone7245742012-09-05 17:12:55 -07001424 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001425 }
1426
Jeff Johnson43971f52012-07-17 12:26:56 -07001427 /*Access to the global state must be locked before cleaning */
1428 wpalMutexAcquire(&pWDICtx->wptMutex);
1429
1430 /*Clear all pending request*/
1431 WDI_ClearPendingRequests(pWDICtx);
1432
1433 /*We have completed cleaning unlock now*/
1434 wpalMutexRelease(&pWDICtx->wptMutex);
1435
Jeff Johnson295189b2012-06-20 16:38:30 -07001436 /* Free the global variables */
1437 wpalMemoryFree(gpHostWlanFeatCaps);
1438 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001439 gpHostWlanFeatCaps = NULL;
1440 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001441
1442 /*------------------------------------------------------------------------
1443 Fill in Event data and post to the Main FSM
1444 ------------------------------------------------------------------------*/
1445 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001446 wdiEventData.pEventData = pwdiStopParams;
1447 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1448 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001449 wdiEventData.pUserData = pUserData;
1450
1451 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1452
1453}/*WDI_Stop*/
1454
1455
1456
1457/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001458 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001459 needs to interact with DAL. DAL will free its control
1460 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001461
1462 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001463
1464 WDI_Stop must have been called.
1465
1466 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001467
Jeff Johnson295189b2012-06-20 16:38:30 -07001468 @see WDI_Stop
1469 @return Result of the function call
1470*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001472WDI_Close
1473(
1474 void
1475)
1476{
1477 wpt_uint8 i;
1478 WDI_EventInfoType wdiEventData;
1479 wpt_status wptStatus;
1480 wpt_status eventStatus;
1481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1482
1483 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001484 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001485 ------------------------------------------------------------------------*/
1486 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1487 {
1488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1489 "WDI API call before module is initialized - Fail request");
1490
Jeff Johnsone7245742012-09-05 17:12:55 -07001491 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001492 }
1493
1494 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1495 (the control transport will be closed by the FSM and we'll want
1496 to wait until that completes)*/
1497 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001498 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001499 {
1500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001501 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001502 /* fall through and try to finish closing via the FSM */
1503 }
1504
1505 /*------------------------------------------------------------------------
1506 Fill in Event data and post to the Main FSM
1507 ------------------------------------------------------------------------*/
1508 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001509 wdiEventData.pEventData = NULL;
1510 wdiEventData.uEventDataSize = 0;
1511 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001512 wdiEventData.pUserData = NULL;
1513
1514 gWDIInitialized = eWLAN_PAL_FALSE;
1515
1516 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1517
1518 /*Wait for WCTS to close the control transport
1519 (but only if we were able to reset the event flag*/
1520 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1521 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001522 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001523 WDI_WCTS_ACTION_TIMEOUT);
1524 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1525 {
1526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001527 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001528 }
1529 }
1530
1531 /* Destroy the WCTS action event */
1532 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1533 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1534 {
1535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1536 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001537 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001538 }
1539
1540 /* Destroy the Set Power State event */
1541 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1542 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1543 {
1544 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1545 "WDI Close failed to destroy an event");
1546
Jeff Johnsone7245742012-09-05 17:12:55 -07001547 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001548 }
1549
1550 /*------------------------------------------------------------------------
1551 Closes the Data Path Utility Module
1552 ------------------------------------------------------------------------*/
1553 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1554 {
1555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1556 "WDI Init failed to close the DP Util Module");
1557
Jeff Johnsone7245742012-09-05 17:12:55 -07001558 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001559 }
1560
1561 /*destroy the BSS sessions pending Queue */
1562 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1563 {
1564 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1565 }
1566
1567 /* destroy the WDI Pending Assoc Id Request Queue*/
1568 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1569
1570 /* destroy the WDI Pending Request Queue*/
1571 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001572
Jeff Johnson295189b2012-06-20 16:38:30 -07001573 /*destroy the response timer */
1574 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1575
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001576 /*destroy the SSR timer */
1577 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1578
Jeff Johnson295189b2012-06-20 16:38:30 -07001579 /*invalidate the main synchro mutex */
1580 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1581 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1582 {
1583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1584 "Failed to delete mutex %d", wptStatus);
1585 WDI_ASSERT(0);
1586 }
1587
1588 /*Clear control block. note that this will clear the "magic"
1589 which will inhibit all asynchronous callbacks*/
1590 WDI_CleanCB(&gWDICb);
1591
1592 return wptStatus;
1593
1594}/*WDI_Close*/
1595
1596/**
1597 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1598 This will do most of the WDI stop & close
1599 operations without doing any handshake with Riva
1600
1601 This will also make sure that the control transport
1602 will NOT be closed.
1603
1604 This request will not be queued.
1605
1606
1607 WDI_Start must have been called.
1608
1609 @param closeTransport: Close control channel if this is set
1610
1611 @return Result of the function call
1612*/
1613WDI_Status
1614WDI_Shutdown
1615(
1616 wpt_boolean closeTransport
1617)
1618{
1619 WDI_EventInfoType wdiEventData;
1620 wpt_status wptStatus;
1621 int i = 0;
1622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1623
1624 /*------------------------------------------------------------------------
1625 Sanity Check
1626 ------------------------------------------------------------------------*/
1627 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1628 {
1629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1630 "WDI API call before module is initialized - Fail request");
1631
1632 return WDI_STATUS_E_NOT_ALLOWED;
1633 }
1634
1635 /*------------------------------------------------------------------------
1636 Fill in Event data and post to the Main FSM
1637 ------------------------------------------------------------------------*/
1638 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1639 wdiEventData.pEventData = NULL;
1640 wdiEventData.uEventDataSize = 0;
1641
1642 /* Shutdown will not be queued, if the state is busy timer will be
1643 * stopped & this message will be processed.*/
1644 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1645 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1646 {
1647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001648 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001649 }
1650 /* Destroy the Set Power State event */
1651 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1652 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1653 {
1654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1655 "WDI Close failed to destroy an event");
1656
1657 WDI_ASSERT(0);
1658 }
1659 /*------------------------------------------------------------------------
1660 Closes the Data Path Utility Module
1661 ------------------------------------------------------------------------*/
1662 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1663 {
1664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1665 "WDI Init failed to close the DP Util Module");
1666
1667 WDI_ASSERT(0);
1668 }
1669 if ( closeTransport )
1670 {
1671 /* Close control transport, called from module unload */
1672 WCTS_CloseTransport(gWDICb.wctsHandle);
1673 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001674 else
1675 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001676 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001677 the pending messages in the transport queue */
1678 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1679 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001680 /*destroy the BSS sessions pending Queue */
1681 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1682 {
1683 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1684 }
1685
1686 /* destroy the WDI Pending Assoc Id Request Queue*/
1687 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1688 /* destroy the WDI Pending Request Queue*/
1689 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1690 /*destroy the response timer */
1691 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001692 /*destroy the SSR timer */
1693 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001694
1695 /*invalidate the main synchro mutex */
1696 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1697 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1698 {
1699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001700 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001701 WDI_ASSERT(0);
1702 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001703 /* Free the global variables */
1704 wpalMemoryFree(gpHostWlanFeatCaps);
1705 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001706 gpHostWlanFeatCaps = NULL;
1707 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001708 /*Clear control block. note that this will clear the "magic"
1709 which will inhibit all asynchronous callbacks*/
1710 WDI_CleanCB(&gWDICb);
1711 return wptStatus;
1712
1713}/*WDI_Shutdown*/
1714
1715
Jeff Johnsone7245742012-09-05 17:12:55 -07001716/*========================================================================
1717
Jeff Johnson295189b2012-06-20 16:38:30 -07001718 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001719
Jeff Johnson295189b2012-06-20 16:38:30 -07001720==========================================================================*/
1721
1722/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001723 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001724 the WLAN Device to get ready for a scan procedure. Upon
1725 the call of this API the WLAN DAL will pack and send a
1726 HAL Init Scan request message to the lower RIVA
1727 sub-system if DAL is in state STARTED.
1728
1729 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001730 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001731
1732 WDI_Start must have been called.
1733
1734 @param wdiInitScanParams: the init scan parameters as specified
1735 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001736
Jeff Johnson295189b2012-06-20 16:38:30 -07001737 wdiInitScanRspCb: callback for passing back the response
1738 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001739
Jeff Johnson295189b2012-06-20 16:38:30 -07001740 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001741 callback
1742
Jeff Johnson295189b2012-06-20 16:38:30 -07001743 @see WDI_Start
1744 @return Result of the function call
1745*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001746WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001747WDI_InitScanReq
1748(
1749 WDI_InitScanReqParamsType* pwdiInitScanParams,
1750 WDI_InitScanRspCb wdiInitScanRspCb,
1751 void* pUserData
1752)
1753{
1754 WDI_EventInfoType wdiEventData;
1755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1756
1757 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001758 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001759 ------------------------------------------------------------------------*/
1760 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1761 {
1762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1763 "WDI API call before module is initialized - Fail request");
1764
Jeff Johnsone7245742012-09-05 17:12:55 -07001765 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001766 }
1767
1768 /*------------------------------------------------------------------------
1769 Fill in Event data and post to the Main FSM
1770 ------------------------------------------------------------------------*/
1771 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001772 wdiEventData.pEventData = pwdiInitScanParams;
1773 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1774 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001775 wdiEventData.pUserData = pUserData;
1776
1777 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1778
1779}/*WDI_InitScanReq*/
1780
1781/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001782 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001783 wishes to change the Scan channel on the WLAN Device.
1784 Upon the call of this API the WLAN DAL will pack and
1785 send a HAL Start Scan request message to the lower RIVA
1786 sub-system if DAL is in state STARTED.
1787
1788 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001789 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001790
1791 WDI_InitScanReq must have been called.
1792
Jeff Johnsone7245742012-09-05 17:12:55 -07001793 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001794 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001795
Jeff Johnson295189b2012-06-20 16:38:30 -07001796 wdiStartScanRspCb: callback for passing back the
1797 response of the start scan operation received from the
1798 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001799
Jeff Johnson295189b2012-06-20 16:38:30 -07001800 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001801 callback
1802
Jeff Johnson295189b2012-06-20 16:38:30 -07001803 @see WDI_InitScanReq
1804 @return Result of the function call
1805*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001806WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001807WDI_StartScanReq
1808(
1809 WDI_StartScanReqParamsType* pwdiStartScanParams,
1810 WDI_StartScanRspCb wdiStartScanRspCb,
1811 void* pUserData
1812)
1813{
1814 WDI_EventInfoType wdiEventData;
1815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1816
1817 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001818 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001819 ------------------------------------------------------------------------*/
1820 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1821 {
1822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1823 "WDI API call before module is initialized - Fail request");
1824
Jeff Johnsone7245742012-09-05 17:12:55 -07001825 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001826 }
1827
1828 /*------------------------------------------------------------------------
1829 Fill in Event data and post to the Main FSM
1830 ------------------------------------------------------------------------*/
1831 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001832 wdiEventData.pEventData = pwdiStartScanParams;
1833 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1834 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001835 wdiEventData.pUserData = pUserData;
1836
1837 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1838
1839}/*WDI_StartScanReq*/
1840
1841
1842/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001843 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001844 wants to end scanning for a particular channel that it
1845 had set before by calling Scan Start on the WLAN Device.
1846 Upon the call of this API the WLAN DAL will pack and
1847 send a HAL End Scan request message to the lower RIVA
1848 sub-system if DAL is in state STARTED.
1849
1850 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001851 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001852
1853 WDI_StartScanReq must have been called.
1854
Jeff Johnsone7245742012-09-05 17:12:55 -07001855 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001856 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001857
Jeff Johnson295189b2012-06-20 16:38:30 -07001858 wdiEndScanRspCb: callback for passing back the response
1859 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001860
Jeff Johnson295189b2012-06-20 16:38:30 -07001861 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001862 callback
1863
Jeff Johnson295189b2012-06-20 16:38:30 -07001864 @see WDI_StartScanReq
1865 @return Result of the function call
1866*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001867WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001868WDI_EndScanReq
1869(
1870 WDI_EndScanReqParamsType* pwdiEndScanParams,
1871 WDI_EndScanRspCb wdiEndScanRspCb,
1872 void* pUserData
1873)
1874{
1875 WDI_EventInfoType wdiEventData;
1876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1877
1878 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001879 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001880 ------------------------------------------------------------------------*/
1881 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1882 {
1883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1884 "WDI API call before module is initialized - Fail request");
1885
Jeff Johnsone7245742012-09-05 17:12:55 -07001886 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001887 }
1888
1889 /*------------------------------------------------------------------------
1890 Fill in Event data and post to the Main FSM
1891 ------------------------------------------------------------------------*/
1892 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001893 wdiEventData.pEventData = pwdiEndScanParams;
1894 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1895 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001896 wdiEventData.pUserData = pUserData;
1897
1898 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1899
1900}/*WDI_EndScanReq*/
1901
1902
1903/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001904 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001905 completed the scan process on the WLAN Device. Upon the
1906 call of this API the WLAN DAL will pack and send a HAL
1907 Finish Scan Request request message to the lower RIVA
1908 sub-system if DAL is in state STARTED.
1909
1910 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001911 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001912
1913 WDI_InitScanReq must have been called.
1914
Jeff Johnsone7245742012-09-05 17:12:55 -07001915 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001916 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001917
Jeff Johnson295189b2012-06-20 16:38:30 -07001918 wdiFinishScanRspCb: callback for passing back the
1919 response of the finish scan operation received from the
1920 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001921
Jeff Johnson295189b2012-06-20 16:38:30 -07001922 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001923 callback
1924
Jeff Johnson295189b2012-06-20 16:38:30 -07001925 @see WDI_InitScanReq
1926 @return Result of the function call
1927*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001928WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001929WDI_FinishScanReq
1930(
1931 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1932 WDI_FinishScanRspCb wdiFinishScanRspCb,
1933 void* pUserData
1934)
1935{
1936 WDI_EventInfoType wdiEventData;
1937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1938
1939 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001940 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001941 ------------------------------------------------------------------------*/
1942 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1943 {
1944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1945 "WDI API call before module is initialized - Fail request");
1946
Jeff Johnsone7245742012-09-05 17:12:55 -07001947 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001948 }
1949
1950 /*------------------------------------------------------------------------
1951 Fill in Event data and post to the Main FSM
1952 ------------------------------------------------------------------------*/
1953 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001954 wdiEventData.pEventData = pwdiFinishScanParams;
1955 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1956 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001957 wdiEventData.pUserData = pUserData;
1958
1959 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1960
1961}/*WDI_FinishScanReq*/
1962
Jeff Johnsone7245742012-09-05 17:12:55 -07001963/*========================================================================
1964
Jeff Johnson295189b2012-06-20 16:38:30 -07001965 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001966
Jeff Johnson295189b2012-06-20 16:38:30 -07001967==========================================================================*/
1968
1969/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001970 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07001971 to start an association procedure to a BSS. Upon the
1972 call of this API the WLAN DAL will pack and send a HAL
1973 Join request message to the lower RIVA sub-system if
1974 DAL is in state STARTED.
1975
1976 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001977 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001978
1979 WDI_Start must have been called.
1980
Jeff Johnsone7245742012-09-05 17:12:55 -07001981 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001982 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001983
Jeff Johnson295189b2012-06-20 16:38:30 -07001984 wdiJoinRspCb: callback for passing back the response of
1985 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001986
Jeff Johnson295189b2012-06-20 16:38:30 -07001987 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001988 callback
1989
Jeff Johnson295189b2012-06-20 16:38:30 -07001990 @see WDI_Start
1991 @return Result of the function call
1992*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001993WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001994WDI_JoinReq
1995(
1996 WDI_JoinReqParamsType* pwdiJoinParams,
1997 WDI_JoinRspCb wdiJoinRspCb,
1998 void* pUserData
1999)
2000{
2001 WDI_EventInfoType wdiEventData;
2002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2003
2004 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002005 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002006 ------------------------------------------------------------------------*/
2007 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2008 {
2009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2010 "WDI API call before module is initialized - Fail request");
2011
Jeff Johnsone7245742012-09-05 17:12:55 -07002012 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002013 }
2014
2015 /*------------------------------------------------------------------------
2016 Fill in Event data and post to the Main FSM
2017 ------------------------------------------------------------------------*/
2018 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002019 wdiEventData.pEventData = pwdiJoinParams;
2020 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2021 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002022 wdiEventData.pUserData = pUserData;
2023
2024 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2025
2026}/*WDI_JoinReq*/
2027
2028/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002029 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002030 wishes to configure the newly acquired or in process of
2031 being acquired BSS to the HW . Upon the call of this API
2032 the WLAN DAL will pack and send a HAL Config BSS request
2033 message to the lower RIVA sub-system if DAL is in state
2034 STARTED.
2035
2036 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002037 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002038
2039 WDI_JoinReq must have been called.
2040
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002043
Jeff Johnson295189b2012-06-20 16:38:30 -07002044 wdiConfigBSSRspCb: callback for passing back the
2045 response of the config BSS operation received from the
2046 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002047
Jeff Johnson295189b2012-06-20 16:38:30 -07002048 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002049 callback
2050
Jeff Johnson295189b2012-06-20 16:38:30 -07002051 @see WDI_JoinReq
2052 @return Result of the function call
2053*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002054WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002055WDI_ConfigBSSReq
2056(
2057 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2058 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2059 void* pUserData
2060)
2061{
2062 WDI_EventInfoType wdiEventData;
2063 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2064
2065 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002066 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002067 ------------------------------------------------------------------------*/
2068 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2069 {
2070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2071 "WDI API call before module is initialized - Fail request");
2072
Jeff Johnsone7245742012-09-05 17:12:55 -07002073 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002074 }
2075
2076 /*------------------------------------------------------------------------
2077 Fill in Event data and post to the Main FSM
2078 ------------------------------------------------------------------------*/
2079 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002080 wdiEventData.pEventData = pwdiConfigBSSParams;
2081 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2082 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002083 wdiEventData.pUserData = pUserData;
2084
2085 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2086
2087}/*WDI_ConfigBSSReq*/
2088
2089/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002090 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002091 disassociating from the BSS and wishes to notify HW.
2092 Upon the call of this API the WLAN DAL will pack and
2093 send a HAL Del BSS request message to the lower RIVA
2094 sub-system if DAL is in state STARTED.
2095
2096 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002097 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002098
2099 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2100
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002102 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002103
Jeff Johnson295189b2012-06-20 16:38:30 -07002104 wdiDelBSSRspCb: callback for passing back the response
2105 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002106
Jeff Johnson295189b2012-06-20 16:38:30 -07002107 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002108 callback
2109
2110 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002111 @return Result of the function call
2112*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002113WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002114WDI_DelBSSReq
2115(
2116 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2117 WDI_DelBSSRspCb wdiDelBSSRspCb,
2118 void* pUserData
2119)
2120{
2121 WDI_EventInfoType wdiEventData;
2122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2123
2124 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002125 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002126 ------------------------------------------------------------------------*/
2127 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2128 {
2129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2130 "WDI API call before module is initialized - Fail request");
2131
Jeff Johnsone7245742012-09-05 17:12:55 -07002132 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002133 }
2134
2135 /*------------------------------------------------------------------------
2136 Fill in Event data and post to the Main FSM
2137 ------------------------------------------------------------------------*/
2138 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002139 wdiEventData.pEventData = pwdiDelBSSParams;
2140 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2141 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002142 wdiEventData.pUserData = pUserData;
2143
2144 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2145
2146}/*WDI_DelBSSReq*/
2147
2148/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002149 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002150 associated to a BSS and wishes to configure HW for
2151 associated state. Upon the call of this API the WLAN DAL
2152 will pack and send a HAL Post Assoc request message to
2153 the lower RIVA sub-system if DAL is in state STARTED.
2154
2155 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002156 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002157
2158 WDI_JoinReq must have been called.
2159
2160 @param wdiPostAssocReqParams: the assoc parameters as specified
2161 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002162
Jeff Johnson295189b2012-06-20 16:38:30 -07002163 wdiPostAssocRspCb: callback for passing back the
2164 response of the post assoc operation received from the
2165 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002166
Jeff Johnson295189b2012-06-20 16:38:30 -07002167 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002168 callback
2169
Jeff Johnson295189b2012-06-20 16:38:30 -07002170 @see WDI_JoinReq
2171 @return Result of the function call
2172*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002173WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002174WDI_PostAssocReq
2175(
2176 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2177 WDI_PostAssocRspCb wdiPostAssocRspCb,
2178 void* pUserData
2179)
2180{
2181 WDI_EventInfoType wdiEventData;
2182 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2183
2184 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002185 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002186 ------------------------------------------------------------------------*/
2187 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2188 {
2189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2190 "WDI API call before module is initialized - Fail request");
2191
Jeff Johnsone7245742012-09-05 17:12:55 -07002192 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002193 }
2194
2195 /*------------------------------------------------------------------------
2196 Fill in Event data and post to the Main FSM
2197 ------------------------------------------------------------------------*/
2198 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002199 wdiEventData.pEventData = pwdiPostAssocReqParams;
2200 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2201 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002202 wdiEventData.pUserData = pUserData;
2203
2204 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2205
2206}/*WDI_PostAssocReq*/
2207
2208/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002209 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002210 association with another STA has ended and the station
2211 must be deleted from HW. Upon the call of this API the
2212 WLAN DAL will pack and send a HAL Del STA request
2213 message to the lower RIVA sub-system if DAL is in state
2214 STARTED.
2215
2216 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002217 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002218
2219 WDI_PostAssocReq must have been called.
2220
Jeff Johnsone7245742012-09-05 17:12:55 -07002221 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002222 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002223
Jeff Johnson295189b2012-06-20 16:38:30 -07002224 wdiDelSTARspCb: callback for passing back the response
2225 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002226
Jeff Johnson295189b2012-06-20 16:38:30 -07002227 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002228 callback
2229
Jeff Johnson295189b2012-06-20 16:38:30 -07002230 @see WDI_PostAssocReq
2231 @return Result of the function call
2232*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002233WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002234WDI_DelSTAReq
2235(
2236 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2237 WDI_DelSTARspCb wdiDelSTARspCb,
2238 void* pUserData
2239)
2240{
2241 WDI_EventInfoType wdiEventData;
2242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2243
2244 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002245 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002246 ------------------------------------------------------------------------*/
2247 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2248 {
2249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2250 "WDI API call before module is initialized - Fail request");
2251
Jeff Johnsone7245742012-09-05 17:12:55 -07002252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002253 }
2254
2255 /*------------------------------------------------------------------------
2256 Fill in Event data and post to the Main FSM
2257 ------------------------------------------------------------------------*/
2258 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002259 wdiEventData.pEventData = pwdiDelSTAParams;
2260 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2261 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002262 wdiEventData.pUserData = pUserData;
2263
2264 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2265
2266}/*WDI_DelSTAReq*/
2267
Jeff Johnsone7245742012-09-05 17:12:55 -07002268/*========================================================================
2269
Jeff Johnson295189b2012-06-20 16:38:30 -07002270 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002271
Jeff Johnson295189b2012-06-20 16:38:30 -07002272==========================================================================*/
2273
2274/**
2275 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2276 install a BSS encryption key on the HW. Upon the call of this
2277 API the WLAN DAL will pack and send a Set BSS Key request
2278 message to the lower RIVA sub-system if DAL is in state
2279 STARTED.
2280
2281 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002282 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002283
2284 WDI_PostAssocReq must have been called.
2285
Jeff Johnsone7245742012-09-05 17:12:55 -07002286 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002287 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002288
Jeff Johnson295189b2012-06-20 16:38:30 -07002289 wdiSetBSSKeyRspCb: callback for passing back the
2290 response of the set BSS Key operation received from the
2291 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002292
Jeff Johnson295189b2012-06-20 16:38:30 -07002293 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002294 callback
2295
Jeff Johnson295189b2012-06-20 16:38:30 -07002296 @see WDI_PostAssocReq
2297 @return Result of the function call
2298*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002299WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002300WDI_SetBSSKeyReq
2301(
2302 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2303 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2304 void* pUserData
2305)
2306{
2307 WDI_EventInfoType wdiEventData;
2308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2309
2310 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002311 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002312 ------------------------------------------------------------------------*/
2313 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2314 {
2315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2316 "WDI API call before module is initialized - Fail request");
2317
Jeff Johnsone7245742012-09-05 17:12:55 -07002318 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002319 }
2320
2321 /*------------------------------------------------------------------------
2322 Fill in Event data and post to the Main FSM
2323 ------------------------------------------------------------------------*/
2324 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002325 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2326 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2327 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002328 wdiEventData.pUserData = pUserData;
2329
2330 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2331
2332}/*WDI_SetBSSKeyReq*/
2333
2334/**
2335 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2336 uninstall a BSS key from HW. Upon the call of this API the
2337 WLAN DAL will pack and send a HAL Remove BSS Key request
2338 message to the lower RIVA sub-system if DAL is in state
2339 STARTED.
2340
2341 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002342 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002343
2344 WDI_SetBSSKeyReq must have been called.
2345
Jeff Johnsone7245742012-09-05 17:12:55 -07002346 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002347 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002348
Jeff Johnson295189b2012-06-20 16:38:30 -07002349 wdiRemoveBSSKeyRspCb: callback for passing back the
2350 response of the remove BSS key operation received from
2351 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002352
Jeff Johnson295189b2012-06-20 16:38:30 -07002353 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002354 callback
2355
Jeff Johnson295189b2012-06-20 16:38:30 -07002356 @see WDI_SetBSSKeyReq
2357 @return Result of the function call
2358*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002359WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002360WDI_RemoveBSSKeyReq
2361(
2362 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2363 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2364 void* pUserData
2365)
2366{
2367 WDI_EventInfoType wdiEventData;
2368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2369
2370 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002371 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002372 ------------------------------------------------------------------------*/
2373 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2374 {
2375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2376 "WDI API call before module is initialized - Fail request");
2377
Jeff Johnsone7245742012-09-05 17:12:55 -07002378 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002379 }
2380
2381 /*------------------------------------------------------------------------
2382 Fill in Event data and post to the Main FSM
2383 ------------------------------------------------------------------------*/
2384 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002385 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2386 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2387 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002388 wdiEventData.pUserData = pUserData;
2389
2390 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2391
2392}/*WDI_RemoveBSSKeyReq*/
2393
2394
2395/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002396 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002397 ready to install a STA(ast) encryption key in HW. Upon
2398 the call of this API the WLAN DAL will pack and send a
2399 HAL Set STA Key request message to the lower RIVA
2400 sub-system if DAL is in state STARTED.
2401
2402 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002403 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002404
2405 WDI_PostAssocReq must have been called.
2406
Jeff Johnsone7245742012-09-05 17:12:55 -07002407 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002408 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002409
Jeff Johnson295189b2012-06-20 16:38:30 -07002410 wdiSetSTAKeyRspCb: callback for passing back the
2411 response of the set STA key operation received from the
2412 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002413
Jeff Johnson295189b2012-06-20 16:38:30 -07002414 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002415 callback
2416
Jeff Johnson295189b2012-06-20 16:38:30 -07002417 @see WDI_PostAssocReq
2418 @return Result of the function call
2419*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002420WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002421WDI_SetSTAKeyReq
2422(
2423 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2424 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2425 void* pUserData
2426)
2427{
2428 WDI_EventInfoType wdiEventData;
2429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2430
2431 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002432 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002433 ------------------------------------------------------------------------*/
2434 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2435 {
2436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2437 "WDI API call before module is initialized - Fail request");
2438
Jeff Johnsone7245742012-09-05 17:12:55 -07002439 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002440 }
2441
2442 /*------------------------------------------------------------------------
2443 Fill in Event data and post to the Main FSM
2444 ------------------------------------------------------------------------*/
2445 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002446 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2447 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2448 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002449 wdiEventData.pUserData = pUserData;
2450
2451 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2452
2453}/*WDI_SetSTAKeyReq*/
2454
2455
2456/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002457 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002458 wants to uninstall a previously set STA key in HW. Upon
2459 the call of this API the WLAN DAL will pack and send a
2460 HAL Remove STA Key request message to the lower RIVA
2461 sub-system if DAL is in state STARTED.
2462
2463 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002464 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002465
2466 WDI_SetSTAKeyReq must have been called.
2467
Jeff Johnsone7245742012-09-05 17:12:55 -07002468 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002469 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002470
Jeff Johnson295189b2012-06-20 16:38:30 -07002471 wdiRemoveSTAKeyRspCb: callback for passing back the
2472 response of the remove STA key operation received from
2473 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002474
Jeff Johnson295189b2012-06-20 16:38:30 -07002475 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002476 callback
2477
Jeff Johnson295189b2012-06-20 16:38:30 -07002478 @see WDI_SetSTAKeyReq
2479 @return Result of the function call
2480*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002481WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002482WDI_RemoveSTAKeyReq
2483(
2484 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2485 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2486 void* pUserData
2487)
2488{
2489 WDI_EventInfoType wdiEventData;
2490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2491
2492 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002493 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002494 ------------------------------------------------------------------------*/
2495 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2496 {
2497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2498 "WDI API call before module is initialized - Fail request");
2499
Jeff Johnsone7245742012-09-05 17:12:55 -07002500 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002501 }
2502
2503 /*------------------------------------------------------------------------
2504 Fill in Event data and post to the Main FSM
2505 ------------------------------------------------------------------------*/
2506 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002507 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2508 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2509 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002510 wdiEventData.pUserData = pUserData;
2511
2512 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2513
2514}/*WDI_RemoveSTAKeyReq*/
2515
2516
2517/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002518 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002519 wants to install a STA Bcast encryption key on the HW.
2520 Upon the call of this API the WLAN DAL will pack and
2521 send a HAL Start request message to the lower RIVA
2522 sub-system if DAL is in state STARTED.
2523
2524 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002525 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002526
2527 WDI_PostAssocReq must have been called.
2528
Jeff Johnsone7245742012-09-05 17:12:55 -07002529 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002530 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002531
Jeff Johnson295189b2012-06-20 16:38:30 -07002532 wdiSetSTABcastKeyRspCb: callback for passing back the
2533 response of the set BSS Key operation received from the
2534 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002535
Jeff Johnson295189b2012-06-20 16:38:30 -07002536 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002537 callback
2538
Jeff Johnson295189b2012-06-20 16:38:30 -07002539 @see WDI_PostAssocReq
2540 @return Result of the function call
2541*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002542WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002543WDI_SetSTABcastKeyReq
2544(
2545 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2546 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2547 void* pUserData
2548)
2549
2550{
2551 WDI_EventInfoType wdiEventData;
2552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2553
2554 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002555 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002556 ------------------------------------------------------------------------*/
2557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2558 {
2559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2560 "WDI API call before module is initialized - Fail request");
2561
Jeff Johnsone7245742012-09-05 17:12:55 -07002562 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002563 }
2564
2565 /*------------------------------------------------------------------------
2566 Fill in Event data and post to the Main FSM
2567 ------------------------------------------------------------------------*/
2568 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2570 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2571 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002572 wdiEventData.pUserData = pUserData;
2573
2574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2575
2576}/*WDI_SetSTABcastKeyReq*/
2577
2578/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002579 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002580 MAC wants to uninstall a STA Bcast key from HW. Upon the
2581 call of this API the WLAN DAL will pack and send a HAL
2582 Remove STA Bcast Key request message to the lower RIVA
2583 sub-system if DAL is in state STARTED.
2584
2585 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002586 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002587
2588 WDI_SetSTABcastKeyReq must have been called.
2589
Jeff Johnsone7245742012-09-05 17:12:55 -07002590 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002591 parameters as specified by the Device
2592 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002593
Jeff Johnson295189b2012-06-20 16:38:30 -07002594 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2595 response of the remove STA Bcast key operation received
2596 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002597
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002599 callback
2600
Jeff Johnson295189b2012-06-20 16:38:30 -07002601 @see WDI_SetSTABcastKeyReq
2602 @return Result of the function call
2603*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002604WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002605WDI_RemoveSTABcastKeyReq
2606(
2607 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2608 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2609 void* pUserData
2610)
2611{
2612 WDI_EventInfoType wdiEventData;
2613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2614
2615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002617 ------------------------------------------------------------------------*/
2618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2619 {
2620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2621 "WDI API call before module is initialized - Fail request");
2622
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002624 }
2625
2626 /*------------------------------------------------------------------------
2627 Fill in Event data and post to the Main FSM
2628 ------------------------------------------------------------------------*/
2629 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2631 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2632 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 wdiEventData.pUserData = pUserData;
2634
2635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2636
2637}/*WDI_RemoveSTABcastKeyReq*/
2638
2639/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002640 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002641 MAC wants to set Max Tx Power to HW. Upon the
2642 call of this API the WLAN DAL will pack and send a HAL
2643 Remove STA Bcast Key request message to the lower RIVA
2644 sub-system if DAL is in state STARTED.
2645
2646 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002647 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002648
2649 WDI_SetSTABcastKeyReq must have been called.
2650
Jeff Johnsone7245742012-09-05 17:12:55 -07002651 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002652 parameters as specified by the Device
2653 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002654
Jeff Johnson295189b2012-06-20 16:38:30 -07002655 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2656 response of the remove STA Bcast key operation received
2657 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002658
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002660 callback
2661
Jeff Johnson295189b2012-06-20 16:38:30 -07002662 @see WDI_SetMaxTxPowerReq
2663 @return Result of the function call
2664*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002665WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002666WDI_SetMaxTxPowerReq
2667(
2668 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2669 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2670 void* pUserData
2671)
2672{
2673 WDI_EventInfoType wdiEventData;
2674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2675
2676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002678 ------------------------------------------------------------------------*/
2679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2680 {
2681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2682 "WDI API call before module is initialized - Fail request");
2683
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 }
2686
2687 /*------------------------------------------------------------------------
2688 Fill in Event data and post to the Main FSM
2689 ------------------------------------------------------------------------*/
2690 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002691 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2692 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2693 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 wdiEventData.pUserData = pUserData;
2695
2696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2697}
2698
2699#ifdef FEATURE_WLAN_CCX
2700WDI_Status
2701WDI_TSMStatsReq
2702(
2703 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2704 WDI_TsmRspCb wdiReqStatusCb,
2705 void* pUserData
2706)
2707{
2708 WDI_EventInfoType wdiEventData;
2709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002710 /*------------------------------------------------------------------------
2711 Sanity Check
2712 ------------------------------------------------------------------------*/
2713 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2714 {
2715 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2716 "WDI API call before module is initialized - Fail request");
2717
2718 return WDI_STATUS_E_NOT_ALLOWED;
2719 }
2720
2721 /*------------------------------------------------------------------------
2722 Fill in Event data and post to the Main FSM
2723 ------------------------------------------------------------------------*/
2724 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2725 wdiEventData.pEventData = pwdiTsmReqParams;
2726 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2727 wdiEventData.pCBfnc = wdiReqStatusCb;
2728 wdiEventData.pUserData = pUserData;
2729
2730 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2731
2732}
2733#endif
2734
2735/*========================================================================
2736
2737 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002738
Jeff Johnson295189b2012-06-20 16:38:30 -07002739==========================================================================*/
2740
2741/**
2742 @brief WDI_AddTSReq will be called when the upper MAC to inform
2743 the device of a successful add TSpec negotiation. HW
2744 needs to receive the TSpec Info from the UMAC in order
2745 to configure properly the QoS data traffic. Upon the
2746 call of this API the WLAN DAL will pack and send a HAL
2747 Add TS request message to the lower RIVA sub-system if
2748 DAL is in state STARTED.
2749
2750 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002751 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002752
2753 WDI_PostAssocReq must have been called.
2754
2755 @param wdiAddTsReqParams: the add TS parameters as specified by
2756 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002757
Jeff Johnson295189b2012-06-20 16:38:30 -07002758 wdiAddTsRspCb: callback for passing back the response of
2759 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002760
Jeff Johnson295189b2012-06-20 16:38:30 -07002761 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002762 callback
2763
Jeff Johnson295189b2012-06-20 16:38:30 -07002764 @see WDI_PostAssocReq
2765 @return Result of the function call
2766*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002767WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002768WDI_AddTSReq
2769(
2770 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2771 WDI_AddTsRspCb wdiAddTsRspCb,
2772 void* pUserData
2773)
2774{
2775 WDI_EventInfoType wdiEventData;
2776 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2777
2778 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002779 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002780 ------------------------------------------------------------------------*/
2781 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2782 {
2783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2784 "WDI API call before module is initialized - Fail request");
2785
Jeff Johnsone7245742012-09-05 17:12:55 -07002786 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002787 }
2788
2789 /*------------------------------------------------------------------------
2790 Fill in Event data and post to the Main FSM
2791 ------------------------------------------------------------------------*/
2792 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002793 wdiEventData.pEventData = pwdiAddTsReqParams;
2794 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2795 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002796 wdiEventData.pUserData = pUserData;
2797
2798 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2799
2800}/*WDI_AddTSReq*/
2801
2802
2803
2804/**
2805 @brief WDI_DelTSReq will be called when the upper MAC has ended
2806 admission on a specific AC. This is to inform HW that
2807 QoS traffic parameters must be rest. Upon the call of
2808 this API the WLAN DAL will pack and send a HAL Del TS
2809 request message to the lower RIVA sub-system if DAL is
2810 in state STARTED.
2811
2812 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002813 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002814
2815 WDI_AddTSReq must have been called.
2816
2817 @param wdiDelTsReqParams: the del TS parameters as specified by
2818 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002819
Jeff Johnson295189b2012-06-20 16:38:30 -07002820 wdiDelTsRspCb: callback for passing back the response of
2821 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002822
Jeff Johnson295189b2012-06-20 16:38:30 -07002823 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002824 callback
2825
Jeff Johnson295189b2012-06-20 16:38:30 -07002826 @see WDI_AddTSReq
2827 @return Result of the function call
2828*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002829WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002830WDI_DelTSReq
2831(
2832 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2833 WDI_DelTsRspCb wdiDelTsRspCb,
2834 void* pUserData
2835)
2836{
2837 WDI_EventInfoType wdiEventData;
2838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2839
2840 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002841 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002842 ------------------------------------------------------------------------*/
2843 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2844 {
2845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2846 "WDI API call before module is initialized - Fail request");
2847
Jeff Johnsone7245742012-09-05 17:12:55 -07002848 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002849 }
2850
2851 /*------------------------------------------------------------------------
2852 Fill in Event data and post to the Main FSM
2853 ------------------------------------------------------------------------*/
2854 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002855 wdiEventData.pEventData = pwdiDelTsReqParams;
2856 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2857 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002858 wdiEventData.pUserData = pUserData;
2859
2860 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2861
2862}/*WDI_DelTSReq*/
2863
2864
2865
2866/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002867 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002868 wishes to update the EDCA parameters used by HW for QoS
2869 data traffic. Upon the call of this API the WLAN DAL
2870 will pack and send a HAL Update EDCA Params request
2871 message to the lower RIVA sub-system if DAL is in state
2872 STARTED.
2873
2874 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002875 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002876
2877 WDI_PostAssocReq must have been called.
2878
Jeff Johnsone7245742012-09-05 17:12:55 -07002879 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002880 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002881
Jeff Johnson295189b2012-06-20 16:38:30 -07002882 wdiUpdateEDCAParamsRspCb: callback for passing back the
2883 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002884
Jeff Johnson295189b2012-06-20 16:38:30 -07002885 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002886 callback
2887
Jeff Johnson295189b2012-06-20 16:38:30 -07002888 @see WDI_PostAssocReq
2889 @return Result of the function call
2890*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002891WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002892WDI_UpdateEDCAParams
2893(
2894 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2895 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2896 void* pUserData
2897)
2898{
2899 WDI_EventInfoType wdiEventData;
2900 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2901
2902 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002903 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002904 ------------------------------------------------------------------------*/
2905 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2906 {
2907 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2908 "WDI API call before module is initialized - Fail request");
2909
Jeff Johnsone7245742012-09-05 17:12:55 -07002910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002911 }
2912
2913 /*------------------------------------------------------------------------
2914 Fill in Event data and post to the Main FSM
2915 ------------------------------------------------------------------------*/
2916 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002917 wdiEventData.pEventData = pwdiUpdateEDCAParams;
2918 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
2919 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002920 wdiEventData.pUserData = pUserData;
2921
2922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2923
2924}/*WDI_UpdateEDCAParams*/
2925
2926
2927/**
2928 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
2929 successfully a BA session and needs to notify the HW for
2930 the appropriate settings to take place. Upon the call of
2931 this API the WLAN DAL will pack and send a HAL Add BA
2932 request message to the lower RIVA sub-system if DAL is
2933 in state STARTED.
2934
2935 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002936 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002937
2938 WDI_PostAssocReq must have been called.
2939
2940 @param wdiAddBAReqParams: the add BA parameters as specified by
2941 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002942
Jeff Johnson295189b2012-06-20 16:38:30 -07002943 wdiAddBARspCb: callback for passing back the response of
2944 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002945
Jeff Johnson295189b2012-06-20 16:38:30 -07002946 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002947 callback
2948
Jeff Johnson295189b2012-06-20 16:38:30 -07002949 @see WDI_PostAssocReq
2950 @return Result of the function call
2951*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002952WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002953WDI_AddBASessionReq
2954(
2955 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
2956 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
2957 void* pUserData
2958)
2959{
2960 WDI_EventInfoType wdiEventData;
2961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2962
2963 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002964 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002965 ------------------------------------------------------------------------*/
2966 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2967 {
2968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2969 "WDI API call before module is initialized - Fail request");
2970
Jeff Johnsone7245742012-09-05 17:12:55 -07002971 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002972 }
2973
2974 /*------------------------------------------------------------------------
2975 Fill in Event data and post to the Main FSM
2976 ------------------------------------------------------------------------*/
2977 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002978 wdiEventData.pEventData = pwdiAddBASessionReqParams;
2979 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
2980 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002981 wdiEventData.pUserData = pUserData;
2982
2983 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2984
2985}/*WDI_AddBASessionReq*/
2986
2987/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002988 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07002989 inform HW that it has deleted a previously created BA
2990 session. Upon the call of this API the WLAN DAL will
2991 pack and send a HAL Del BA request message to the lower
2992 RIVA sub-system if DAL is in state STARTED.
2993
2994 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002995 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002996
2997 WDI_AddBAReq must have been called.
2998
2999 @param wdiDelBAReqParams: the del BA parameters as specified by
3000 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003001
Jeff Johnson295189b2012-06-20 16:38:30 -07003002 wdiDelBARspCb: callback for passing back the response of
3003 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003004
Jeff Johnson295189b2012-06-20 16:38:30 -07003005 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003006 callback
3007
Jeff Johnson295189b2012-06-20 16:38:30 -07003008 @see WDI_AddBAReq
3009 @return Result of the function call
3010*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003011WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003012WDI_DelBAReq
3013(
3014 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3015 WDI_DelBARspCb wdiDelBARspCb,
3016 void* pUserData
3017)
3018{
3019 WDI_EventInfoType wdiEventData;
3020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3021
3022 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003023 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003024 ------------------------------------------------------------------------*/
3025 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3026 {
3027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3028 "WDI API call before module is initialized - Fail request");
3029
Jeff Johnsone7245742012-09-05 17:12:55 -07003030 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003031 }
3032
3033 /*------------------------------------------------------------------------
3034 Fill in Event data and post to the Main FSM
3035 ------------------------------------------------------------------------*/
3036 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003037 wdiEventData.pEventData = pwdiDelBAReqParams;
3038 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3039 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003040 wdiEventData.pUserData = pUserData;
3041
3042 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3043
3044}/*WDI_DelBAReq*/
3045
Jeff Johnsone7245742012-09-05 17:12:55 -07003046/*========================================================================
3047
Jeff Johnson295189b2012-06-20 16:38:30 -07003048 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003049
Jeff Johnson295189b2012-06-20 16:38:30 -07003050==========================================================================*/
3051
3052/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003053 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003054 wants to set the power save related configurations of
3055 the WLAN Device. Upon the call of this API the WLAN DAL
3056 will pack and send a HAL Update CFG request message to
3057 the lower RIVA sub-system if DAL is in state STARTED.
3058
3059 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003060 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003061
3062 WDI_Start must have been called.
3063
Jeff Johnsone7245742012-09-05 17:12:55 -07003064 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003066
Jeff Johnson295189b2012-06-20 16:38:30 -07003067 wdiSetPwrSaveCfgCb: callback for passing back the
3068 response of the set power save cfg operation received
3069 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003070
Jeff Johnson295189b2012-06-20 16:38:30 -07003071 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003072 callback
3073
Jeff Johnson295189b2012-06-20 16:38:30 -07003074 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003075 @return Result of the function call
3076*/
3077WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003078WDI_SetPwrSaveCfgReq
3079(
3080 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3081 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3082 void* pUserData
3083)
3084{
3085 WDI_EventInfoType wdiEventData;
3086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3087
3088 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003089 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003090 ------------------------------------------------------------------------*/
3091 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3092 {
3093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3094 "WDI API call before module is initialized - Fail request");
3095
Jeff Johnsone7245742012-09-05 17:12:55 -07003096 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003097 }
3098
3099 /*------------------------------------------------------------------------
3100 Fill in Event data and post to the Main FSM
3101 ------------------------------------------------------------------------*/
3102 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003103 wdiEventData.pEventData = pwdiPowerSaveCfg;
3104 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3105 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 wdiEventData.pUserData = pUserData;
3107
3108 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3109
3110}/*WDI_SetPwrSaveCfgReq*/
3111
3112/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003113 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003114 request the device to get into IMPS power state. Upon
3115 the call of this API the WLAN DAL will send a HAL Enter
3116 IMPS request message to the lower RIVA sub-system if DAL
3117 is in state STARTED.
3118
3119 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003120 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003121
Jeff Johnsone7245742012-09-05 17:12:55 -07003122
3123 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003124 response of the Enter IMPS operation received from the
3125 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003126
Jeff Johnson295189b2012-06-20 16:38:30 -07003127 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003128 callback
3129
Jeff Johnson295189b2012-06-20 16:38:30 -07003130 @see WDI_Start
3131 @return Result of the function call
3132*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003133WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003134WDI_EnterImpsReq
3135(
3136 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
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_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003158 wdiEventData.pEventData = NULL;
3159 wdiEventData.uEventDataSize = 0;
3160 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003161 wdiEventData.pUserData = pUserData;
3162
3163 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3164
3165}/*WDI_EnterImpsReq*/
3166
3167/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003168 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003169 request the device to get out of IMPS power state. Upon
3170 the call of this API the WLAN DAL will send a HAL Exit
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 Johnson295189b2012-06-20 16:38:30 -07003177
Jeff Johnsone7245742012-09-05 17:12:55 -07003178
3179 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003180 of the Exit IMPS operation received from the 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_ExitImpsReq
3190(
3191 WDI_ExitImpsRspCb wdiExitImpsRspCb,
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_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003213 wdiEventData.pEventData = NULL;
3214 wdiEventData.uEventDataSize = 0;
3215 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003216 wdiEventData.pUserData = pUserData;
3217
3218 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3219
3220}/*WDI_ExitImpsReq*/
3221
3222/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003223 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003224 request the device to get into BMPS power state. Upon
3225 the call of this API the WLAN DAL will pack and send a
3226 HAL Enter BMPS request message to the lower RIVA
3227 sub-system if DAL 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
3232 WDI_PostAssocReq must have been called.
3233
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003236
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 wdiEnterBmpsRspCb: callback for passing back the
3238 response of the Enter BMPS operation received from the
3239 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003240
Jeff Johnson295189b2012-06-20 16:38:30 -07003241 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003242 callback
3243
Jeff Johnson295189b2012-06-20 16:38:30 -07003244 @see WDI_PostAssocReq
3245 @return Result of the function call
3246*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003247WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003248WDI_EnterBmpsReq
3249(
3250 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3251 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3252 void* pUserData
3253)
3254{
3255 WDI_EventInfoType wdiEventData;
3256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3257
3258 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003259 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003260 ------------------------------------------------------------------------*/
3261 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3262 {
3263 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3264 "WDI API call before module is initialized - Fail request");
3265
Jeff Johnsone7245742012-09-05 17:12:55 -07003266 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003267 }
3268
3269 /*------------------------------------------------------------------------
3270 Fill in Event data and post to the Main FSM
3271 ------------------------------------------------------------------------*/
3272 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003273 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3274 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3275 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003276 wdiEventData.pUserData = pUserData;
3277
3278 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3279
3280}/*WDI_EnterBmpsReq*/
3281
3282/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003283 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003284 request the device to get out of BMPS power state. Upon
3285 the call of this API the WLAN DAL will pack and send a
3286 HAL Exit BMPS request message to the lower RIVA
3287 sub-system if DAL is in state STARTED.
3288
3289 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003290 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003291
3292 WDI_PostAssocReq must have been called.
3293
Jeff Johnsone7245742012-09-05 17:12:55 -07003294 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003295 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003296
Jeff Johnson295189b2012-06-20 16:38:30 -07003297 wdiExitBmpsRspCb: callback for passing back the response
3298 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003299
Jeff Johnson295189b2012-06-20 16:38:30 -07003300 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003301 callback
3302
Jeff Johnson295189b2012-06-20 16:38:30 -07003303 @see WDI_PostAssocReq
3304 @return Result of the function call
3305*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003306WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003307WDI_ExitBmpsReq
3308(
3309 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3310 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3311 void* pUserData
3312)
3313{
3314 WDI_EventInfoType wdiEventData;
3315 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3316
3317 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003318 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003319 ------------------------------------------------------------------------*/
3320 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3321 {
3322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3323 "WDI API call before module is initialized - Fail request");
3324
Jeff Johnsone7245742012-09-05 17:12:55 -07003325 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003326 }
3327
3328 /*------------------------------------------------------------------------
3329 Fill in Event data and post to the Main FSM
3330 ------------------------------------------------------------------------*/
3331 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003332 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3333 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3334 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003335 wdiEventData.pUserData = pUserData;
3336
3337 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3338
3339}/*WDI_ExitBmpsReq*/
3340
3341/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003342 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003343 request the device to get into UAPSD power state. Upon
3344 the call of this API the WLAN DAL will pack and send a
3345 HAL Enter UAPSD request message to the lower RIVA
3346 sub-system if DAL is in state STARTED.
3347
3348 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003349 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003350
3351 WDI_PostAssocReq must have been called.
3352 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003353
3354 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003355 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003356
Jeff Johnson295189b2012-06-20 16:38:30 -07003357 wdiEnterUapsdRspCb: callback for passing back the
3358 response of the Enter UAPSD operation received from the
3359 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003360
Jeff Johnson295189b2012-06-20 16:38:30 -07003361 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003362 callback
3363
Jeff Johnson295189b2012-06-20 16:38:30 -07003364 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3365 @return Result of the function call
3366*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003367WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003368WDI_EnterUapsdReq
3369(
3370 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3371 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3372 void* pUserData
3373)
3374{
3375 WDI_EventInfoType wdiEventData;
3376 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3377
3378 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003379 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003380 ------------------------------------------------------------------------*/
3381 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3382 {
3383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3384 "WDI API call before module is initialized - Fail request");
3385
Jeff Johnsone7245742012-09-05 17:12:55 -07003386 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003387 }
3388
3389 /*------------------------------------------------------------------------
3390 Fill in Event data and post to the Main FSM
3391 ------------------------------------------------------------------------*/
3392 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003393 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3394 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3395 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003396 wdiEventData.pUserData = pUserData;
3397
3398 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3399
3400}/*WDI_EnterUapsdReq*/
3401
3402/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003403 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003404 request the device to get out of UAPSD power state. Upon
3405 the call of this API the WLAN DAL will send a HAL Exit
3406 UAPSD request message to the lower RIVA sub-system if
3407 DAL is in state STARTED.
3408
3409 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003410 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003411
3412 WDI_PostAssocReq must have been called.
3413
Jeff Johnsone7245742012-09-05 17:12:55 -07003414 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003415 response of the Exit UAPSD operation received from the
3416 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003417
Jeff Johnson295189b2012-06-20 16:38:30 -07003418 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003419 callback
3420
Jeff Johnson295189b2012-06-20 16:38:30 -07003421 @see WDI_PostAssocReq
3422 @return Result of the function call
3423*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003424WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003425WDI_ExitUapsdReq
3426(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003427 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003428 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3429 void* pUserData
3430)
3431{
3432 WDI_EventInfoType wdiEventData;
3433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3434
3435 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003436 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003437 ------------------------------------------------------------------------*/
3438 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3439 {
3440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3441 "WDI API call before module is initialized - Fail request");
3442
Jeff Johnsone7245742012-09-05 17:12:55 -07003443 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003444 }
3445
3446 /*------------------------------------------------------------------------
3447 Fill in Event data and post to the Main FSM
3448 ------------------------------------------------------------------------*/
3449 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003450 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3451 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003452 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003453 wdiEventData.pUserData = pUserData;
3454
3455 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3456
3457}/*WDI_ExitUapsdReq*/
3458
3459/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003460 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003461 MAC wants to set the UAPSD related configurations
3462 of an associated STA (while acting as an AP) to the WLAN
3463 Device. Upon the call of this API the WLAN DAL will pack
3464 and send a HAL Update UAPSD params request message to
3465 the lower RIVA sub-system if DAL is in state STARTED.
3466
3467 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003468 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003469
3470 WDI_ConfigBSSReq must have been called.
3471
Jeff Johnsone7245742012-09-05 17:12:55 -07003472 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003473 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003474
Jeff Johnson295189b2012-06-20 16:38:30 -07003475 wdiUpdateUapsdParamsCb: callback for passing back the
3476 response of the update UAPSD params operation received
3477 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003478
Jeff Johnson295189b2012-06-20 16:38:30 -07003479 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003480 callback
3481
Jeff Johnson295189b2012-06-20 16:38:30 -07003482 @see WDI_ConfigBSSReq
3483 @return Result of the function call
3484*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003485WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003486WDI_UpdateUapsdParamsReq
3487(
3488 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3489 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3490 void* pUserData
3491)
3492{
3493 WDI_EventInfoType wdiEventData;
3494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3495
3496 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003497 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003498 ------------------------------------------------------------------------*/
3499 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3500 {
3501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3502 "WDI API call before module is initialized - Fail request");
3503
Jeff Johnsone7245742012-09-05 17:12:55 -07003504 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003505 }
3506
3507 /*------------------------------------------------------------------------
3508 Fill in Event data and post to the Main FSM
3509 ------------------------------------------------------------------------*/
3510 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003511 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003512 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003513 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003514 wdiEventData.pUserData = pUserData;
3515
3516 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3517
3518}/*WDI_UpdateUapsdParamsReq*/
3519
3520/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003521 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003522 MAC wants to set the UAPSD related configurations before
3523 requesting for enter UAPSD power state to the WLAN
3524 Device. Upon the call of this API the WLAN DAL will pack
3525 and send a HAL Set UAPSD params request message to
3526 the lower RIVA sub-system if DAL is in state STARTED.
3527
3528 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003529 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003530
3531 WDI_PostAssocReq must have been called.
3532
3533 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3534 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003535
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 wdiSetUapsdAcParamsCb: callback for passing back the
3537 response of the set UAPSD params operation received from
3538 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003539
Jeff Johnson295189b2012-06-20 16:38:30 -07003540 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003541 callback
3542
Jeff Johnson295189b2012-06-20 16:38:30 -07003543 @see WDI_PostAssocReq
3544 @return Result of the function call
3545*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003546WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003547WDI_SetUapsdAcParamsReq
3548(
3549 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3550 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3551 void* pUserData
3552)
3553{
3554 WDI_EventInfoType wdiEventData;
3555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3556
3557 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003558 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003559 ------------------------------------------------------------------------*/
3560 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3561 {
3562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3563 "WDI API call before module is initialized - Fail request");
3564
Jeff Johnsone7245742012-09-05 17:12:55 -07003565 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003566 }
3567
3568 /*------------------------------------------------------------------------
3569 Fill in Event data and post to the Main FSM
3570 ------------------------------------------------------------------------*/
3571 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003572 wdiEventData.pEventData = pwdiUapsdInfo;
3573 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3574 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003575 wdiEventData.pUserData = pUserData;
3576
3577 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3578
3579}/*WDI_SetUapsdAcParamsReq*/
3580
3581/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003582 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003583 MAC wants to set/reset the RXP filters for received pkts
3584 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3585 and send a HAL configure RXP filter request message to
3586 the lower RIVA sub-system.
3587
3588 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003589 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003590
Jeff Johnsone7245742012-09-05 17:12:55 -07003591
3592 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003593 filter as specified by the Device
3594 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003595
Jeff Johnson295189b2012-06-20 16:38:30 -07003596 wdiConfigureRxpFilterCb: callback for passing back the
3597 response of the configure RXP filter operation received
3598 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003599
Jeff Johnson295189b2012-06-20 16:38:30 -07003600 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003601 callback
3602
Jeff Johnson295189b2012-06-20 16:38:30 -07003603 @return Result of the function call
3604*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003605WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003606WDI_ConfigureRxpFilterReq
3607(
3608 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3609 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3610 void* pUserData
3611)
3612{
3613 WDI_EventInfoType wdiEventData;
3614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3615
3616 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003617 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003618 ------------------------------------------------------------------------*/
3619 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3620 {
3621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3622 "WDI API call before module is initialized - Fail request");
3623
Jeff Johnsone7245742012-09-05 17:12:55 -07003624 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003625 }
3626
3627 /*------------------------------------------------------------------------
3628 Fill in Event data and post to the Main FSM
3629 ------------------------------------------------------------------------*/
3630 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003631 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3632 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3633 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003634 wdiEventData.pUserData = pUserData;
3635
3636 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3637}/*WDI_ConfigureRxpFilterReq*/
3638
3639/**
3640 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3641 wants to set the beacon filters while in power save.
3642 Upon the call of this API the WLAN DAL will pack and
3643 send a Beacon filter request message to the
3644 lower RIVA sub-system.
3645
3646 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003647 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003648
Jeff Johnsone7245742012-09-05 17:12:55 -07003649
3650 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003651 filter as specified by the Device
3652 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003653
Jeff Johnson295189b2012-06-20 16:38:30 -07003654 wdiBeaconFilterCb: callback for passing back the
3655 response of the set beacon filter operation received
3656 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003657
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003659 callback
3660
Jeff Johnson295189b2012-06-20 16:38:30 -07003661 @return Result of the function call
3662*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003663WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003664WDI_SetBeaconFilterReq
3665(
3666 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3667 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3668 void* pUserData
3669)
3670{
3671 WDI_EventInfoType wdiEventData;
3672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3673
3674 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003675 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003676 ------------------------------------------------------------------------*/
3677 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3678 {
3679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3680 "WDI API call before module is initialized - Fail request");
3681
Jeff Johnsone7245742012-09-05 17:12:55 -07003682 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003683 }
3684
3685 /*------------------------------------------------------------------------
3686 Fill in Event data and post to the Main FSM
3687 ------------------------------------------------------------------------*/
3688 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003689 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003690 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003691 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003692 wdiEventData.pUserData = pUserData;
3693
3694 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3695}/*WDI_SetBeaconFilterReq*/
3696
3697/**
3698 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3699 wants to remove the beacon filter for particular IE
3700 while in power save. Upon the call of this API the WLAN
3701 DAL will pack and send a remove Beacon filter request
3702 message to the lower RIVA sub-system.
3703
3704 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003705 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003706
Jeff Johnsone7245742012-09-05 17:12:55 -07003707
3708 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003709 filter as specified by the Device
3710 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003711
Jeff Johnson295189b2012-06-20 16:38:30 -07003712 wdiBeaconFilterCb: callback for passing back the
3713 response of the remove beacon filter operation received
3714 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003715
Jeff Johnson295189b2012-06-20 16:38:30 -07003716 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003717 callback
3718
Jeff Johnson295189b2012-06-20 16:38:30 -07003719 @return Result of the function call
3720*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003721WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003722WDI_RemBeaconFilterReq
3723(
3724 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3725 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3726 void* pUserData
3727)
3728{
3729 WDI_EventInfoType wdiEventData;
3730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3731
3732 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003733 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003734 ------------------------------------------------------------------------*/
3735 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3736 {
3737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3738 "WDI API call before module is initialized - Fail request");
3739
Jeff Johnsone7245742012-09-05 17:12:55 -07003740 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003741 }
3742
3743 /*------------------------------------------------------------------------
3744 Fill in Event data and post to the Main FSM
3745 ------------------------------------------------------------------------*/
3746 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003747 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003748 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003749 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003750 wdiEventData.pUserData = pUserData;
3751
3752 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3753}/*WDI_RemBeaconFilterReq*/
3754
3755/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003756 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003757 MAC wants to set the RSSI thresholds related
3758 configurations while in power save. Upon the call of
3759 this API the WLAN DAL will pack and send a HAL Set RSSI
3760 thresholds request message to the lower RIVA
3761 sub-system if DAL is in state STARTED.
3762
3763 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003764 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003765
3766 WDI_PostAssocReq must have been called.
3767
3768 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3769 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003770
Jeff Johnson295189b2012-06-20 16:38:30 -07003771 wdiSetUapsdAcParamsCb: callback for passing back the
3772 response of the set UAPSD params operation received from
3773 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003774
Jeff Johnson295189b2012-06-20 16:38:30 -07003775 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003776 callback
3777
Jeff Johnson295189b2012-06-20 16:38:30 -07003778 @see WDI_PostAssocReq
3779 @return Result of the function call
3780*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003781WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003782WDI_SetRSSIThresholdsReq
3783(
3784 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3785 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3786 void* pUserData
3787)
3788{
3789 WDI_EventInfoType wdiEventData;
3790 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3791
3792 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003793 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003794 ------------------------------------------------------------------------*/
3795 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3796 {
3797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3798 "WDI API call before module is initialized - Fail request");
3799
Jeff Johnsone7245742012-09-05 17:12:55 -07003800 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003801 }
3802
3803 /*------------------------------------------------------------------------
3804 Fill in Event data and post to the Main FSM
3805 ------------------------------------------------------------------------*/
3806 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003807 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003808 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003809 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003810 wdiEventData.pUserData = pUserData;
3811
3812 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3813}/* WDI_SetRSSIThresholdsReq*/
3814
3815/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003816 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003817 wants to set the filter to minimize unnecessary host
3818 wakeup due to broadcast traffic while in power save.
3819 Upon the call of this API the WLAN DAL will pack and
3820 send a HAL host offload request message to the
3821 lower RIVA sub-system if DAL is in state STARTED.
3822
3823 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003824 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003825
3826 WDI_PostAssocReq must have been called.
3827
Jeff Johnsone7245742012-09-05 17:12:55 -07003828 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003830
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 wdiHostOffloadCb: callback for passing back the response
3832 of the host offload operation received from the
3833 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003834
Jeff Johnson295189b2012-06-20 16:38:30 -07003835 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003836 callback
3837
Jeff Johnson295189b2012-06-20 16:38:30 -07003838 @see WDI_PostAssocReq
3839 @return Result of the function call
3840*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003841WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003842WDI_HostOffloadReq
3843(
3844 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3845 WDI_HostOffloadCb wdiHostOffloadCb,
3846 void* pUserData
3847)
3848{
3849 WDI_EventInfoType wdiEventData;
3850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3851
3852 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003853 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003854 ------------------------------------------------------------------------*/
3855 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3856 {
3857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3858 "WDI API call before module is initialized - Fail request");
3859
Jeff Johnsone7245742012-09-05 17:12:55 -07003860 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 }
3862
3863 /*------------------------------------------------------------------------
3864 Fill in Event data and post to the Main FSM
3865 ------------------------------------------------------------------------*/
3866 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003867 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003868 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003869 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003870 wdiEventData.pUserData = pUserData;
3871
3872 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3873}/*WDI_HostOffloadReq*/
3874
3875/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003876 @brief WDI_KeepAliveReq will be called when the upper MAC
3877 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003878 and minimize unnecessary host wakeups due to while in power save.
3879 Upon the call of this API the WLAN DAL will pack and
3880 send a HAL Keep Alive request message to the
3881 lower RIVA sub-system if DAL is in state STARTED.
3882
3883 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003884 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003885
3886 WDI_PostAssocReq must have been called.
3887
Jeff Johnsone7245742012-09-05 17:12:55 -07003888 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003889 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003890
Jeff Johnson295189b2012-06-20 16:38:30 -07003891 wdiKeepAliveCb: callback for passing back the response
3892 of the Keep Alive operation received from the
3893 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003894
Jeff Johnson295189b2012-06-20 16:38:30 -07003895 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003896 callback
3897
Jeff Johnson295189b2012-06-20 16:38:30 -07003898 @see WDI_PostAssocReq
3899 @return Result of the function call
3900*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003901WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003902WDI_KeepAliveReq
3903(
3904 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3905 WDI_KeepAliveCb wdiKeepAliveCb,
3906 void* pUserData
3907)
3908{
3909 WDI_EventInfoType wdiEventData;
3910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3911
3912 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003913 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003914 ------------------------------------------------------------------------*/
3915 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3916 {
3917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3918 "WDI_KeepAliveReq: WDI API call before module "
3919 "is initialized - Fail request");
3920
Jeff Johnsone7245742012-09-05 17:12:55 -07003921 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003922 }
3923
3924 /*------------------------------------------------------------------------
3925 Fill in Event data and post to the Main FSM
3926 ------------------------------------------------------------------------*/
3927 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003928 wdiEventData.pEventData = pwdiKeepAliveParams;
3929 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
3930 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003931 wdiEventData.pUserData = pUserData;
3932
3933 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3934}/*WDI_KeepAliveReq*/
3935
3936/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003937 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003938 wants to set the Wowl Bcast ptrn to minimize unnecessary
3939 host wakeup due to broadcast traffic while in power
3940 save. Upon the call of this API the WLAN DAL will pack
3941 and send a HAL Wowl Bcast ptrn request message to the
3942 lower RIVA sub-system if DAL is in state STARTED.
3943
3944 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003945 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003946
3947 WDI_PostAssocReq must have been called.
3948
Jeff Johnsone7245742012-09-05 17:12:55 -07003949 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003951
Jeff Johnson295189b2012-06-20 16:38:30 -07003952 wdiWowlAddBcPtrnCb: callback for passing back the
3953 response of the add Wowl bcast ptrn operation received
3954 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003955
Jeff Johnson295189b2012-06-20 16:38:30 -07003956 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003957 callback
3958
Jeff Johnson295189b2012-06-20 16:38:30 -07003959 @see WDI_PostAssocReq
3960 @return Result of the function call
3961*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003962WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003963WDI_WowlAddBcPtrnReq
3964(
3965 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
3966 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
3967 void* pUserData
3968)
3969{
3970 WDI_EventInfoType wdiEventData;
3971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3972
3973 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 ------------------------------------------------------------------------*/
3976 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3977 {
3978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3979 "WDI API call before module is initialized - Fail request");
3980
Jeff Johnsone7245742012-09-05 17:12:55 -07003981 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003982 }
3983
3984 /*------------------------------------------------------------------------
3985 Fill in Event data and post to the Main FSM
3986 ------------------------------------------------------------------------*/
3987 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003988 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003989 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003990 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003991 wdiEventData.pUserData = pUserData;
3992
3993 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3994}/*WDI_WowlAddBcPtrnReq*/
3995
3996/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003997 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 wants to clear the Wowl Bcast ptrn. Upon the call of
3999 this API the WLAN DAL will pack and send a HAL delete
4000 Wowl Bcast ptrn request message to the lower RIVA
4001 sub-system if DAL is in state STARTED.
4002
4003 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004004 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004005
4006 WDI_WowlAddBcPtrnReq must have been called.
4007
Jeff Johnsone7245742012-09-05 17:12:55 -07004008 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004009 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004010
Jeff Johnson295189b2012-06-20 16:38:30 -07004011 wdiWowlDelBcPtrnCb: callback for passing back the
4012 response of the del Wowl bcast ptrn operation received
4013 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004014
Jeff Johnson295189b2012-06-20 16:38:30 -07004015 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004016 callback
4017
Jeff Johnson295189b2012-06-20 16:38:30 -07004018 @see WDI_WowlAddBcPtrnReq
4019 @return Result of the function call
4020*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004021WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004022WDI_WowlDelBcPtrnReq
4023(
4024 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4025 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4026 void* pUserData
4027)
4028{
4029 WDI_EventInfoType wdiEventData;
4030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4031
4032 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004033 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004034 ------------------------------------------------------------------------*/
4035 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4036 {
4037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4038 "WDI API call before module is initialized - Fail request");
4039
Jeff Johnsone7245742012-09-05 17:12:55 -07004040 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004041 }
4042
4043 /*------------------------------------------------------------------------
4044 Fill in Event data and post to the Main FSM
4045 ------------------------------------------------------------------------*/
4046 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004047 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004048 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004049 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004050 wdiEventData.pUserData = pUserData;
4051
4052 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4053}/*WDI_WowlDelBcPtrnReq*/
4054
4055/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004056 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 wants to enter the Wowl state to minimize unnecessary
4058 host wakeup while in power save. Upon the call of this
4059 API the WLAN DAL will pack and send a HAL Wowl enter
4060 request message to the lower RIVA sub-system if DAL is
4061 in state STARTED.
4062
4063 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004064 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004065
4066 WDI_PostAssocReq must have been called.
4067
Jeff Johnsone7245742012-09-05 17:12:55 -07004068 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004069 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004070
Jeff Johnson295189b2012-06-20 16:38:30 -07004071 wdiWowlEnterReqCb: callback for passing back the
4072 response of the enter Wowl operation received from the
4073 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004074
Jeff Johnson295189b2012-06-20 16:38:30 -07004075 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004076 callback
4077
Jeff Johnson295189b2012-06-20 16:38:30 -07004078 @see WDI_PostAssocReq
4079 @return Result of the function call
4080*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004081WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004082WDI_WowlEnterReq
4083(
4084 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4085 WDI_WowlEnterReqCb wdiWowlEnterCb,
4086 void* pUserData
4087)
4088{
4089 WDI_EventInfoType wdiEventData;
4090 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4091
4092 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004093 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004094 ------------------------------------------------------------------------*/
4095 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4096 {
4097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4098 "WDI API call before module is initialized - Fail request");
4099
Jeff Johnsone7245742012-09-05 17:12:55 -07004100 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004101 }
4102
4103 /*------------------------------------------------------------------------
4104 Fill in Event data and post to the Main FSM
4105 ------------------------------------------------------------------------*/
4106 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004107 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004108 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004109 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004110 wdiEventData.pUserData = pUserData;
4111
4112 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4113}/*WDI_WowlEnterReq*/
4114
4115/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004116 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004117 wants to exit the Wowl state. Upon the call of this API
4118 the WLAN DAL will pack and send a HAL Wowl exit request
4119 message to the lower RIVA sub-system if DAL is in state
4120 STARTED.
4121
4122 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004123 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004124
4125 WDI_WowlEnterReq must have been called.
4126
Jeff Johnsone7245742012-09-05 17:12:55 -07004127 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004128 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004129
Jeff Johnson295189b2012-06-20 16:38:30 -07004130 wdiWowlExitReqCb: callback for passing back the response
4131 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004132
Jeff Johnson295189b2012-06-20 16:38:30 -07004133 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004134 callback
4135
Jeff Johnson295189b2012-06-20 16:38:30 -07004136 @see WDI_WowlEnterReq
4137 @return Result of the function call
4138*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004139WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004140WDI_WowlExitReq
4141(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004142 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004143 WDI_WowlExitReqCb wdiWowlExitCb,
4144 void* pUserData
4145)
4146{
4147 WDI_EventInfoType wdiEventData;
4148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4149
4150 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004151 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004152 ------------------------------------------------------------------------*/
4153 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4154 {
4155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4156 "WDI API call before module is initialized - Fail request");
4157
Jeff Johnsone7245742012-09-05 17:12:55 -07004158 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004159 }
4160
4161 /*------------------------------------------------------------------------
4162 Fill in Event data and post to the Main FSM
4163 ------------------------------------------------------------------------*/
4164 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004165 wdiEventData.pEventData = pwdiWowlExitParams;
4166 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004167 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004168 wdiEventData.pUserData = pUserData;
4169
4170 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4171}/*WDI_WowlExitReq*/
4172
4173/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004174 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 the upper MAC wants to dynamically adjusts the listen
4176 interval based on the WLAN/MSM activity. Upon the call
4177 of this API the WLAN DAL will pack and send a HAL
4178 configure Apps Cpu Wakeup State request message to the
4179 lower RIVA sub-system.
4180
4181 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004182 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004183
Jeff Johnsone7245742012-09-05 17:12:55 -07004184
4185 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004186 Apps Cpu Wakeup State as specified by the
4187 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004188
Jeff Johnson295189b2012-06-20 16:38:30 -07004189 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4190 back the response of the configure Apps Cpu Wakeup State
4191 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004192
Jeff Johnson295189b2012-06-20 16:38:30 -07004193 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004194 callback
4195
Jeff Johnson295189b2012-06-20 16:38:30 -07004196 @return Result of the function call
4197*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004198WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004199WDI_ConfigureAppsCpuWakeupStateReq
4200(
4201 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4202 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4203 void* pUserData
4204)
4205{
4206 WDI_EventInfoType wdiEventData;
4207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4208
4209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004211 ------------------------------------------------------------------------*/
4212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4213 {
4214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4215 "WDI API call before module is initialized - Fail request");
4216
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004218 }
4219
4220 /*------------------------------------------------------------------------
4221 Fill in Event data and post to the Main FSM
4222 ------------------------------------------------------------------------*/
4223 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004224 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4225 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4226 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004227 wdiEventData.pUserData = pUserData;
4228
4229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4230}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4231/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004232 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004233 to to perform a flush operation on a given AC. Upon the
4234 call of this API the WLAN DAL will pack and send a HAL
4235 Flush AC request message to the lower RIVA sub-system if
4236 DAL is in state STARTED.
4237
4238 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004240
4241 WDI_AddBAReq must have been called.
4242
Jeff Johnsone7245742012-09-05 17:12:55 -07004243 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004244 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004245
Jeff Johnson295189b2012-06-20 16:38:30 -07004246 wdiFlushAcRspCb: callback for passing back the response
4247 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004248
Jeff Johnson295189b2012-06-20 16:38:30 -07004249 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004250 callback
4251
Jeff Johnson295189b2012-06-20 16:38:30 -07004252 @see WDI_AddBAReq
4253 @return Result of the function call
4254*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004255WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004256WDI_FlushAcReq
4257(
4258 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4259 WDI_FlushAcRspCb wdiFlushAcRspCb,
4260 void* pUserData
4261)
4262{
4263 WDI_EventInfoType wdiEventData;
4264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4265
4266 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004267 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004268 ------------------------------------------------------------------------*/
4269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4270 {
4271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4272 "WDI API call before module is initialized - Fail request");
4273
Jeff Johnsone7245742012-09-05 17:12:55 -07004274 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004275 }
4276
4277 /*------------------------------------------------------------------------
4278 Fill in Event data and post to the Main FSM
4279 ------------------------------------------------------------------------*/
4280 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004281 wdiEventData.pEventData = pwdiFlushAcReqParams;
4282 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4283 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004284 wdiEventData.pUserData = pUserData;
4285
4286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4287
4288}/*WDI_FlushAcReq*/
4289
4290/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004291 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004292 wants to notify the lower mac on a BT AMP event. This is
4293 to inform BTC-SLM that some BT AMP event occurred. Upon
4294 the call of this API the WLAN DAL will pack and send a
4295 HAL BT AMP event request message to the lower RIVA
4296 sub-system if DAL is in state STARTED.
4297
4298 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004299 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004300
Jeff Johnsone7245742012-09-05 17:12:55 -07004301
4302 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004303 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004304
Jeff Johnson295189b2012-06-20 16:38:30 -07004305 wdiBtAmpEventRspCb: callback for passing back the
4306 response of the BT AMP event operation received from the
4307 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004308
Jeff Johnson295189b2012-06-20 16:38:30 -07004309 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004310 callback
4311
Jeff Johnson295189b2012-06-20 16:38:30 -07004312 @return Result of the function call
4313*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004314WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004315WDI_BtAmpEventReq
4316(
4317 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4318 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4319 void* pUserData
4320)
4321{
4322 WDI_EventInfoType wdiEventData;
4323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4324
4325 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004326 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004327 ------------------------------------------------------------------------*/
4328 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4329 {
4330 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4331 "WDI API call before module is initialized - Fail request");
4332
Jeff Johnsone7245742012-09-05 17:12:55 -07004333 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004334 }
4335
4336 /*------------------------------------------------------------------------
4337 Fill in Event data and post to the Main FSM
4338 ------------------------------------------------------------------------*/
4339 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004340 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4341 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4342 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004343 wdiEventData.pUserData = pUserData;
4344
4345 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4346
4347}/*WDI_BtAmpEventReq*/
4348
Jeff Johnsone7245742012-09-05 17:12:55 -07004349#ifdef FEATURE_OEM_DATA_SUPPORT
4350/**
4351 @brief WDI_Start Oem Data Req will be called when the upper MAC
4352 wants to notify the lower mac on a oem data Req event.Upon
4353 the call of this API the WLAN DAL will pack and send a
4354 HAL OEM Data Req event request message to the lower RIVA
4355 sub-system if DAL is in state STARTED.
4356
4357 In state BUSY this request will be queued. Request won't
4358 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004359
4360
Jeff Johnsone7245742012-09-05 17:12:55 -07004361
4362 @param pwdiOemDataReqParams: the Oem Data Req as
4363 specified by the Device Interface
4364
4365 wdiStartOemDataRspCb: callback for passing back the
4366 response of the Oem Data Req received from the
4367 device
4368
4369 pUserData: user data will be passed back with the
4370 callback
4371
4372 @return Result of the function call
4373*/
4374WDI_Status
4375WDI_StartOemDataReq
4376(
4377 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4378 WDI_oemDataRspCb wdiOemDataRspCb,
4379 void* pUserData
4380)
4381{
4382 WDI_EventInfoType wdiEventData;
4383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4384
4385 /*------------------------------------------------------------------------
4386 Sanity Check
4387 ------------------------------------------------------------------------*/
4388 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4389 {
4390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4391 "WDI API call before module is initialized - Fail request");
4392
4393 return WDI_STATUS_E_NOT_ALLOWED;
4394 }
4395
4396 /*------------------------------------------------------------------------
4397 Fill in Event data and post to the Main FSM
4398 ------------------------------------------------------------------------*/
4399 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4400 wdiEventData.pEventData = pwdiOemDataReqParams;
4401 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4402 wdiEventData.pCBfnc = wdiOemDataRspCb;
4403 wdiEventData.pUserData = pUserData;
4404
4405 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4406
4407
4408}
4409
4410#endif
4411
4412
4413/*========================================================================
4414
Jeff Johnson295189b2012-06-20 16:38:30 -07004415 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004416
Jeff Johnson295189b2012-06-20 16:38:30 -07004417==========================================================================*/
4418/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004419 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004420 the WLAN HW to change the current channel of operation.
4421 Upon the call of this API the WLAN DAL will pack and
4422 send a HAL Start request message to the lower RIVA
4423 sub-system if DAL is in state STARTED.
4424
4425 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004426 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004427
4428 WDI_Start must have been called.
4429
Jeff Johnsone7245742012-09-05 17:12:55 -07004430 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004431 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004432
Jeff Johnson295189b2012-06-20 16:38:30 -07004433 wdiSwitchChRspCb: callback for passing back the response
4434 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004435
Jeff Johnson295189b2012-06-20 16:38:30 -07004436 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004437 callback
4438
Jeff Johnson295189b2012-06-20 16:38:30 -07004439 @see WDI_Start
4440 @return Result of the function call
4441*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004442WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004443WDI_SwitchChReq
4444(
4445 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4446 WDI_SwitchChRspCb wdiSwitchChRspCb,
4447 void* pUserData
4448)
4449{
4450 WDI_EventInfoType wdiEventData;
4451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4452
4453 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004454 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004455 ------------------------------------------------------------------------*/
4456 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4457 {
4458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4459 "WDI API call before module is initialized - Fail request");
4460
Jeff Johnsone7245742012-09-05 17:12:55 -07004461 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004462 }
4463
4464 /*------------------------------------------------------------------------
4465 Fill in Event data and post to the Main FSM
4466 ------------------------------------------------------------------------*/
4467 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004468 wdiEventData.pEventData = pwdiSwitchChReqParams;
4469 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4470 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004471 wdiEventData.pUserData = pUserData;
4472
4473 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4474
4475}/*WDI_SwitchChReq*/
4476
4477
4478/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004479 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004480 wishes to add or update a STA in HW. Upon the call of
4481 this API the WLAN DAL will pack and send a HAL Start
4482 message request message to the lower RIVA sub-system if
4483 DAL is in state STARTED.
4484
4485 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004486 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004487
4488 WDI_Start must have been called.
4489
Jeff Johnsone7245742012-09-05 17:12:55 -07004490 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004491 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004492
Jeff Johnson295189b2012-06-20 16:38:30 -07004493 wdiConfigSTARspCb: callback for passing back the
4494 response of the config STA operation received from the
4495 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004496
Jeff Johnson295189b2012-06-20 16:38:30 -07004497 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004498 callback
4499
Jeff Johnson295189b2012-06-20 16:38:30 -07004500 @see WDI_Start
4501 @return Result of the function call
4502*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004503WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004504WDI_ConfigSTAReq
4505(
4506 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4507 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4508 void* pUserData
4509)
4510{
4511 WDI_EventInfoType wdiEventData;
4512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4513
4514 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004515 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004516 ------------------------------------------------------------------------*/
4517 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4518 {
4519 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4520 "WDI API call before module is initialized - Fail request");
4521
Jeff Johnsone7245742012-09-05 17:12:55 -07004522 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004523 }
4524
4525 /*------------------------------------------------------------------------
4526 Fill in Event data and post to the Main FSM
4527 ------------------------------------------------------------------------*/
4528 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004529 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4530 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4531 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004532 wdiEventData.pUserData = pUserData;
4533
4534 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4535
4536}/*WDI_ConfigSTAReq*/
4537
4538/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004539 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004540 wants to change the state of an ongoing link. Upon the
4541 call of this API the WLAN DAL will pack and send a HAL
4542 Start message request message to the lower RIVA
4543 sub-system if DAL is in state STARTED.
4544
4545 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004546 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004547
4548 WDI_JoinStartReq must have been called.
4549
Jeff Johnsone7245742012-09-05 17:12:55 -07004550 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004551 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004552
Jeff Johnson295189b2012-06-20 16:38:30 -07004553 wdiSetLinkStateRspCb: callback for passing back the
4554 response of the set link state operation received from
4555 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004556
Jeff Johnson295189b2012-06-20 16:38:30 -07004557 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004558 callback
4559
Jeff Johnson295189b2012-06-20 16:38:30 -07004560 @see WDI_JoinStartReq
4561 @return Result of the function call
4562*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004563WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004564WDI_SetLinkStateReq
4565(
4566 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4567 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4568 void* pUserData
4569)
4570{
4571 WDI_EventInfoType wdiEventData;
4572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4573
4574 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004575 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004576 ------------------------------------------------------------------------*/
4577 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4578 {
4579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4580 "WDI API call before module is initialized - Fail request");
4581
Jeff Johnsone7245742012-09-05 17:12:55 -07004582 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004583 }
4584
4585 /*------------------------------------------------------------------------
4586 Fill in Event data and post to the Main FSM
4587 ------------------------------------------------------------------------*/
4588 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004589 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4590 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4591 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004592 wdiEventData.pUserData = pUserData;
4593
4594 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4595
4596}/*WDI_SetLinkStateReq*/
4597
4598
4599/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004600 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004601 to get statistics (MIB counters) from the device. Upon
4602 the call of this API the WLAN DAL will pack and send a
4603 HAL Start request message to the lower RIVA sub-system
4604 if DAL is in state STARTED.
4605
4606 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004607 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004608
4609 WDI_Start must have been called.
4610
Jeff Johnsone7245742012-09-05 17:12:55 -07004611 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004612 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004613
Jeff Johnson295189b2012-06-20 16:38:30 -07004614 wdiGetStatsRspCb: callback for passing back the response
4615 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004616
Jeff Johnson295189b2012-06-20 16:38:30 -07004617 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004618 callback
4619
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 @see WDI_Start
4621 @return Result of the function call
4622*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004623WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004624WDI_GetStatsReq
4625(
4626 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4627 WDI_GetStatsRspCb wdiGetStatsRspCb,
4628 void* pUserData
4629)
4630{
4631 WDI_EventInfoType wdiEventData;
4632 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4633
4634 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004635 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004636 ------------------------------------------------------------------------*/
4637 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4638 {
4639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4640 "WDI API call before module is initialized - Fail request");
4641
Jeff Johnsone7245742012-09-05 17:12:55 -07004642 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004643 }
4644
4645 /*------------------------------------------------------------------------
4646 Fill in Event data and post to the Main FSM
4647 ------------------------------------------------------------------------*/
4648 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004649 wdiEventData.pEventData = pwdiGetStatsReqParams;
4650 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4651 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004652 wdiEventData.pUserData = pUserData;
4653
4654 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4655
4656}/*WDI_GetStatsReq*/
4657
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004658#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4659/**
4660 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4661 to get roam rssi from the device. Upon
4662 the call of this API the WLAN DAL will pack and send a
4663 HAL Start request message to the lower RIVA sub-system
4664 if DAL is in state STARTED.
4665
4666 In state BUSY this request will be queued. Request won't
4667 be allowed in any other state.
4668
4669 WDI_Start must have been called.
4670
4671 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4672 specified by the Device Interface
4673
4674 wdiGetRoamRssiRspCb: callback for passing back the response
4675 of the get stats operation received from the device
4676
4677 pUserData: user data will be passed back with the
4678 callback
4679
4680 @see WDI_Start
4681 @return Result of the function call
4682*/
4683WDI_Status
4684WDI_GetRoamRssiReq
4685(
4686 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4687 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4688 void* pUserData
4689)
4690{
4691 WDI_EventInfoType wdiEventData;
4692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4693
4694 /*------------------------------------------------------------------------
4695 Sanity Check
4696 ------------------------------------------------------------------------*/
4697 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4698 {
4699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4700 "WDI API call before module is initialized - Fail request");
4701
4702 return WDI_STATUS_E_NOT_ALLOWED;
4703 }
4704 /*------------------------------------------------------------------------
4705 Fill in Event data and post to the Main FSM
4706 ------------------------------------------------------------------------*/
4707 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4708 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4709 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4710 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4711 wdiEventData.pUserData = pUserData;
4712
4713 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4714
4715}/*WDI_GetRoamRssiReq*/
4716#endif
4717
Jeff Johnson295189b2012-06-20 16:38:30 -07004718
4719/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004720 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004721 it wishes to change the configuration of the WLAN
4722 Device. Upon the call of this API the WLAN DAL will pack
4723 and send a HAL Update CFG request message to the lower
4724 RIVA sub-system if DAL is in state STARTED.
4725
4726 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004727 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004728
4729 WDI_Start must have been called.
4730
Jeff Johnsone7245742012-09-05 17:12:55 -07004731 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004733
Jeff Johnson295189b2012-06-20 16:38:30 -07004734 wdiUpdateCfgsRspCb: callback for passing back the
4735 response of the update cfg operation received from the
4736 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004737
Jeff Johnson295189b2012-06-20 16:38:30 -07004738 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004739 callback
4740
Jeff Johnson295189b2012-06-20 16:38:30 -07004741 @see WDI_Start
4742 @return Result of the function call
4743*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004744WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004745WDI_UpdateCfgReq
4746(
4747 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4748 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4749 void* pUserData
4750)
4751{
4752 WDI_EventInfoType wdiEventData;
4753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4754
4755 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004756 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004757 ------------------------------------------------------------------------*/
4758 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4759 {
4760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4761 "WDI API call before module is initialized - Fail request");
4762
Jeff Johnsone7245742012-09-05 17:12:55 -07004763 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004764 }
4765
4766 /*------------------------------------------------------------------------
4767 Fill in Event data and post to the Main FSM
4768 ------------------------------------------------------------------------*/
4769 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004770 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4771 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4772 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004773 wdiEventData.pUserData = pUserData;
4774
4775 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4776
4777}/*WDI_UpdateCfgReq*/
4778
4779
4780
4781/**
4782 @brief WDI_AddBAReq will be called when the upper MAC has setup
4783 successfully a BA session and needs to notify the HW for
4784 the appropriate settings to take place. Upon the call of
4785 this API the WLAN DAL will pack and send a HAL Add BA
4786 request message to the lower RIVA sub-system if DAL is
4787 in state STARTED.
4788
4789 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004790 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004791
4792 WDI_PostAssocReq must have been called.
4793
4794 @param wdiAddBAReqParams: the add BA parameters as specified by
4795 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004796
Jeff Johnson295189b2012-06-20 16:38:30 -07004797 wdiAddBARspCb: callback for passing back the response of
4798 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004799
Jeff Johnson295189b2012-06-20 16:38:30 -07004800 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004801 callback
4802
Jeff Johnson295189b2012-06-20 16:38:30 -07004803 @see WDI_PostAssocReq
4804 @return Result of the function call
4805*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004806WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004807WDI_AddBAReq
4808(
4809 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4810 WDI_AddBARspCb wdiAddBARspCb,
4811 void* pUserData
4812)
4813{
4814 WDI_EventInfoType wdiEventData;
4815 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4816
4817 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004818 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004819 ------------------------------------------------------------------------*/
4820 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4821 {
4822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4823 "WDI API call before module is initialized - Fail request");
4824
Jeff Johnsone7245742012-09-05 17:12:55 -07004825 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004826 }
4827
4828 /*------------------------------------------------------------------------
4829 Fill in Event data and post to the Main FSM
4830 ------------------------------------------------------------------------*/
4831 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004832 wdiEventData.pEventData = pwdiAddBAReqParams;
4833 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4834 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004835 wdiEventData.pUserData = pUserData;
4836
4837 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4838
4839}/*WDI_AddBAReq*/
4840
4841
4842/**
4843 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4844 successfully a BA session and needs to notify the HW for
4845 the appropriate settings to take place. Upon the call of
4846 this API the WLAN DAL will pack and send a HAL Add BA
4847 request message to the lower RIVA sub-system if DAL is
4848 in state STARTED.
4849
4850 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004851 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004852
4853 WDI_PostAssocReq must have been called.
4854
4855 @param wdiAddBAReqParams: the add BA parameters as specified by
4856 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004857
Jeff Johnson295189b2012-06-20 16:38:30 -07004858 wdiAddBARspCb: callback for passing back the response of
4859 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004860
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004862 callback
4863
Jeff Johnson295189b2012-06-20 16:38:30 -07004864 @see WDI_PostAssocReq
4865 @return Result of the function call
4866*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004867WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004868WDI_TriggerBAReq
4869(
4870 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4871 WDI_TriggerBARspCb wdiTriggerBARspCb,
4872 void* pUserData
4873)
4874{
4875 WDI_EventInfoType wdiEventData;
4876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4877
4878 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004879 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004880 ------------------------------------------------------------------------*/
4881 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4882 {
4883 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4884 "WDI API call before module is initialized - Fail request");
4885
Jeff Johnsone7245742012-09-05 17:12:55 -07004886 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004887 }
4888
4889 /*------------------------------------------------------------------------
4890 Fill in Event data and post to the Main FSM
4891 ------------------------------------------------------------------------*/
4892 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004893 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4894 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4895 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004896 wdiEventData.pUserData = pUserData;
4897
4898 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4899
4900}/*WDI_AddBAReq*/
4901
4902/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004903 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004904 wishes to update any of the Beacon parameters used by HW.
4905 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4906 message to the lower RIVA sub-system if DAL is in state
4907 STARTED.
4908
4909 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004910 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004911
4912 WDI_PostAssocReq must have been called.
4913
Jeff Johnsone7245742012-09-05 17:12:55 -07004914 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004915 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004916
Jeff Johnson295189b2012-06-20 16:38:30 -07004917 wdiUpdateBeaconParamsRspCb: callback for passing back the
4918 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004919
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004921 callback
4922
Jeff Johnson295189b2012-06-20 16:38:30 -07004923 @see WDI_PostAssocReq
4924 @return Result of the function call
4925*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004926WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004927WDI_UpdateBeaconParamsReq
4928(
4929 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
4930 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
4931 void* pUserData
4932)
4933{
4934 WDI_EventInfoType wdiEventData;
4935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4936
4937 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004938 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004939 ------------------------------------------------------------------------*/
4940 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4941 {
4942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4943 "WDI API call before module is initialized - Fail request");
4944
Jeff Johnsone7245742012-09-05 17:12:55 -07004945 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004946 }
4947
4948 /*------------------------------------------------------------------------
4949 Fill in Event data and post to the Main FSM
4950 ------------------------------------------------------------------------*/
4951 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004952 wdiEventData.pEventData = pwdiUpdateBeaconParams;
4953 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
4954 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004955 wdiEventData.pUserData = pUserData;
4956
4957 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4958
4959}/*WDI_UpdateBeaconParamsReq*/
4960
4961/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004962 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004963 wishes to update the Beacon template used by HW.
4964 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
4965 message to the lower RIVA sub-system if DAL is in state
4966 STARTED.
4967
4968 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004969 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004970
4971 WDI_PostAssocReq must have been called.
4972
Jeff Johnsone7245742012-09-05 17:12:55 -07004973 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004974 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004975
Jeff Johnson295189b2012-06-20 16:38:30 -07004976 wdiSendBeaconParamsRspCb: callback for passing back the
4977 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004978
Jeff Johnson295189b2012-06-20 16:38:30 -07004979 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004980 callback
4981
Jeff Johnson295189b2012-06-20 16:38:30 -07004982 @see WDI_PostAssocReq
4983 @return Result of the function call
4984*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004985WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004986WDI_SendBeaconParamsReq
4987(
4988 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
4989 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
4990 void* pUserData
4991)
4992{
4993 WDI_EventInfoType wdiEventData;
4994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4995
4996 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004997 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004998 ------------------------------------------------------------------------*/
4999 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5000 {
5001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5002 "WDI API call before module is initialized - Fail request");
5003
Jeff Johnsone7245742012-09-05 17:12:55 -07005004 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005005 }
5006
5007 /*------------------------------------------------------------------------
5008 Fill in Event data and post to the Main FSM
5009 ------------------------------------------------------------------------*/
5010 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005011 wdiEventData.pEventData = pwdiSendBeaconParams;
5012 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5013 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005014 wdiEventData.pUserData = pUserData;
5015
5016 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5017
5018}/*WDI_SendBeaconParamsReq*/
5019
5020/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005021 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005022 upper MAC wants to update the probe response template to
5023 be transmitted as Soft AP
5024 Upon the call of this API the WLAN DAL will
5025 pack and send the probe rsp template message to the
5026 lower RIVA sub-system if DAL is in state STARTED.
5027
5028 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005029 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005030
5031
Jeff Johnsone7245742012-09-05 17:12:55 -07005032 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005033 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005034
Jeff Johnson295189b2012-06-20 16:38:30 -07005035 wdiSendBeaconParamsRspCb: callback for passing back the
5036 response of the Send Beacon Params operation received
5037 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005038
Jeff Johnson295189b2012-06-20 16:38:30 -07005039 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005040 callback
5041
Jeff Johnson295189b2012-06-20 16:38:30 -07005042 @see WDI_AddBAReq
5043 @return Result of the function call
5044*/
5045
Jeff Johnsone7245742012-09-05 17:12:55 -07005046WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005047WDI_UpdateProbeRspTemplateReq
5048(
5049 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5050 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5051 void* pUserData
5052)
5053{
5054 WDI_EventInfoType wdiEventData;
5055 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5056
5057 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005058 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005059 ------------------------------------------------------------------------*/
5060 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5061 {
5062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5063 "WDI API call before module is initialized - Fail request");
5064
Jeff Johnsone7245742012-09-05 17:12:55 -07005065 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005066 }
5067
5068 /*------------------------------------------------------------------------
5069 Fill in Event data and post to the Main FSM
5070 ------------------------------------------------------------------------*/
5071 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005072 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5073 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5074 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005075 wdiEventData.pUserData = pUserData;
5076
5077 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5078
5079}/*WDI_UpdateProbeRspTemplateReq*/
5080
5081/**
5082 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5083 to the NV memory.
5084
5085
5086 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5087 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005088
Jeff Johnson295189b2012-06-20 16:38:30 -07005089 wdiNvDownloadRspCb: callback for passing back the response of
5090 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005091
Jeff Johnson295189b2012-06-20 16:38:30 -07005092 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005093 callback
5094
Jeff Johnson295189b2012-06-20 16:38:30 -07005095 @see WDI_PostAssocReq
5096 @return Result of the function call
5097*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005098WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005099WDI_NvDownloadReq
5100(
5101 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5102 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5103 void* pUserData
5104)
5105{
5106 WDI_EventInfoType wdiEventData;
5107
5108 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005109 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005110 ------------------------------------------------------------------------*/
5111 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5112 {
5113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5114 "WDI API call before module is initialized - Fail request");
5115
Jeff Johnsone7245742012-09-05 17:12:55 -07005116 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005117 }
5118
5119 /*------------------------------------------------------------------------
5120 Fill in Event data and post to the Main FSM
5121 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005122 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5123 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5124 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5125 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005126 wdiEventData.pUserData = pUserData;
5127
5128 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5129
5130}/*WDI_NVDownloadReq*/
5131
Jeff Johnson295189b2012-06-20 16:38:30 -07005132/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005133 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005134 upper MAC wants to send Notice of Absence
5135 Upon the call of this API the WLAN DAL will
5136 pack and send the probe rsp template message to the
5137 lower RIVA sub-system if DAL is in state STARTED.
5138
5139 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005140 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005141
5142
Jeff Johnsone7245742012-09-05 17:12:55 -07005143 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005144 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005145
Jeff Johnson295189b2012-06-20 16:38:30 -07005146 wdiSendBeaconParamsRspCb: callback for passing back the
5147 response of the Send Beacon Params operation received
5148 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005149
Jeff Johnson295189b2012-06-20 16:38:30 -07005150 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005151 callback
5152
Jeff Johnson295189b2012-06-20 16:38:30 -07005153 @see WDI_AddBAReq
5154 @return Result of the function call
5155*/
5156WDI_Status
5157WDI_SetP2PGONOAReq
5158(
5159 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5160 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5161 void* pUserData
5162)
5163{
5164 WDI_EventInfoType wdiEventData;
5165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5166
5167 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005168 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005169 ------------------------------------------------------------------------*/
5170 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5171 {
5172 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5173 "WDI API call before module is initialized - Fail request");
5174
Jeff Johnsone7245742012-09-05 17:12:55 -07005175 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005176 }
5177
5178 /*------------------------------------------------------------------------
5179 Fill in Event data and post to the Main FSM
5180 ------------------------------------------------------------------------*/
5181 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005182 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5183 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5184 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005185 wdiEventData.pUserData = pUserData;
5186
5187 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5188
5189}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005190
5191/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005192 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005193 UMAC wanted to add STA self while opening any new session
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 pwdiAddSTASelfParams: the add sta self 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 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005202 callback
5203
5204 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005205 @return Result of the function call
5206*/
5207WDI_Status
5208WDI_AddSTASelfReq
5209(
5210 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5211 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
5212 void* pUserData
5213)
5214{
5215 WDI_EventInfoType wdiEventData;
5216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5217
5218 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005219 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005220 ------------------------------------------------------------------------*/
5221 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5222 {
5223 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5224 "WDI API call before module is initialized - Fail request");
5225
Jeff Johnsone7245742012-09-05 17:12:55 -07005226 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005227 }
5228
5229 /*------------------------------------------------------------------------
5230 Fill in Event data and post to the Main FSM
5231 ------------------------------------------------------------------------*/
5232 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005233 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5234 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5235 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005236 wdiEventData.pUserData = pUserData;
5237
5238 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5239
5240}/*WDI_AddSTASelfReq*/
5241
5242
Jeff Johnsone7245742012-09-05 17:12:55 -07005243#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005244/**
5245 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5246 the device of a successful add TSpec negotiation. HW
5247 needs to receive the TSpec Info from the UMAC in order
5248 to configure properly the QoS data traffic. Upon the
5249 call of this API the WLAN DAL will pack and send a HAL
5250 Add TS request message to the lower RIVA sub-system if
5251 DAL is in state STARTED.
5252
5253 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005254 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005255
5256 WDI_PostAssocReq must have been called.
5257
5258 @param wdiAddTsReqParams: the add TS parameters as specified by
5259 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005260
Jeff Johnson295189b2012-06-20 16:38:30 -07005261 wdiAddTsRspCb: callback for passing back the response of
5262 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005263
Jeff Johnson295189b2012-06-20 16:38:30 -07005264 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005265 callback
5266
Jeff Johnson295189b2012-06-20 16:38:30 -07005267 @see WDI_PostAssocReq
5268 @return Result of the function call
5269*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005270WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005271WDI_AggrAddTSReq
5272(
5273 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5274 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5275 void* pUserData
5276)
5277{
5278 WDI_EventInfoType wdiEventData;
5279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5280
5281 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005282 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005283 ------------------------------------------------------------------------*/
5284 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5285 {
5286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5287 "WDI API call before module is initialized - Fail request");
5288
Jeff Johnsone7245742012-09-05 17:12:55 -07005289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005290 }
5291
5292 /*------------------------------------------------------------------------
5293 Fill in Event data and post to the Main FSM
5294 ------------------------------------------------------------------------*/
5295 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005296 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5297 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5298 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005299 wdiEventData.pUserData = pUserData;
5300
5301 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5302
5303}/*WDI_AggrAddTSReq*/
5304
5305#endif /* WLAN_FEATURE_VOWIFI_11R */
5306
Jeff Johnson295189b2012-06-20 16:38:30 -07005307/**
5308 @brief WDI_FTMCommandReq
5309 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005310
5311 @param ftmCommandReq: FTM Command Body
5312 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005313 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005314
Jeff Johnson295189b2012-06-20 16:38:30 -07005315 @see
5316 @return Result of the function call
5317*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005318WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005319WDI_FTMCommandReq
5320(
5321 WDI_FTMCommandReqType *ftmCommandReq,
5322 WDI_FTMCommandRspCb ftmCommandRspCb,
5323 void *pUserData
5324)
5325{
5326 WDI_EventInfoType wdiEventData;
5327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5328
5329 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005330 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005331 ------------------------------------------------------------------------*/
5332 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5333 {
5334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5335 "WDI API call before module is initialized - Fail request");
5336
Jeff Johnsone7245742012-09-05 17:12:55 -07005337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005338 }
5339
5340 /*------------------------------------------------------------------------
5341 Fill in Event data and post to the Main FSM
5342 ------------------------------------------------------------------------*/
5343 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5344 wdiEventData.pEventData = (void *)ftmCommandReq;
5345 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5346 wdiEventData.pCBfnc = ftmCommandRspCb;
5347 wdiEventData.pUserData = pUserData;
5348
5349 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5350}
Jeff Johnson295189b2012-06-20 16:38:30 -07005351/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005352 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005353
5354 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005355 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005356
5357
5358 @param pwdiResumeReqParams: as specified by
5359 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005360
Jeff Johnson295189b2012-06-20 16:38:30 -07005361 wdiResumeReqRspCb: callback for passing back the response of
5362 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005363
Jeff Johnson295189b2012-06-20 16:38:30 -07005364 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005365 callback
5366
5367 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005368 @return Result of the function call
5369*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005370WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005371WDI_HostResumeReq
5372(
5373 WDI_ResumeParamsType* pwdiResumeReqParams,
5374 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5375 void* pUserData
5376)
5377{
5378 WDI_EventInfoType wdiEventData;
5379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5380
5381 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005382 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005383 ------------------------------------------------------------------------*/
5384 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5385 {
5386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5387 "WDI API call before module is initialized - Fail request");
5388
Jeff Johnsone7245742012-09-05 17:12:55 -07005389 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005390 }
5391
5392 /*------------------------------------------------------------------------
5393 Fill in Event data and post to the Main FSM
5394 ------------------------------------------------------------------------*/
5395 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005396 wdiEventData.pEventData = pwdiResumeReqParams;
5397 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5398 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005399 wdiEventData.pUserData = pUserData;
5400
5401 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5402
5403}/*WDI_HostResumeReq*/
5404
5405/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005406 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005407
5408 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005409 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005410
5411
5412 @param pwdiDelStaSelfReqParams: as specified by
5413 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005414
Jeff Johnson295189b2012-06-20 16:38:30 -07005415 wdiDelStaSelfRspCb: callback for passing back the response of
5416 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005417
Jeff Johnson295189b2012-06-20 16:38:30 -07005418 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005419 callback
5420
Jeff Johnson295189b2012-06-20 16:38:30 -07005421 @see WDI_PostAssocReq
5422 @return Result of the function call
5423*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005424WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005425WDI_DelSTASelfReq
5426(
5427 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5428 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5429 void* pUserData
5430)
5431{
5432 WDI_EventInfoType wdiEventData;
5433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5434
5435 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005436 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005437 ------------------------------------------------------------------------*/
5438 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5439 {
5440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5441 "WDI API call before module is initialized - Fail request");
5442
Jeff Johnsone7245742012-09-05 17:12:55 -07005443 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005444 }
5445
5446 /*------------------------------------------------------------------------
5447 Fill in Event data and post to the Main FSM
5448 ------------------------------------------------------------------------*/
5449 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005450 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5451 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5452 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005453 wdiEventData.pUserData = pUserData;
5454
5455 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5456
5457}/*WDI_AggrAddTSReq*/
5458
5459/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005460 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5461 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 Upon the call of this API the WLAN DAL will pack
5463 and send a HAL Set Tx Per Tracking request message to the
5464 lower RIVA sub-system if DAL is in state STARTED.
5465
5466 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005467 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005468
Jeff Johnsone7245742012-09-05 17:12:55 -07005469 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005470 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005471
Jeff Johnson295189b2012-06-20 16:38:30 -07005472 pwdiSetTxPerTrackingRspCb: callback for passing back the
5473 response of the set Tx PER Tracking configurations operation received
5474 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005475
Jeff Johnson295189b2012-06-20 16:38:30 -07005476 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005477 callback
5478
Jeff Johnson295189b2012-06-20 16:38:30 -07005479 @return Result of the function call
5480*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005481WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005482WDI_SetTxPerTrackingReq
5483(
5484 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5485 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5486 void* pUserData
5487)
5488{
5489 WDI_EventInfoType wdiEventData;
5490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5491
5492 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005493 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005494 ------------------------------------------------------------------------*/
5495 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5496 {
5497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5498 "WDI API call before module is initialized - Fail request");
5499
Jeff Johnsone7245742012-09-05 17:12:55 -07005500 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005501 }
5502
5503 /*------------------------------------------------------------------------
5504 Fill in Event data and post to the Main FSM
5505 ------------------------------------------------------------------------*/
5506 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005507 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005508 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005509 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005510 wdiEventData.pUserData = pUserData;
5511
5512 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5513
5514}/*WDI_SetTxPerTrackingReq*/
5515
5516/**
5517 @brief WDI_SetTmLevelReq
5518 If HW Thermal condition changed, driver should react based on new
5519 HW thermal condition.
5520
5521 @param pwdiSetTmLevelReq: New thermal condition information
5522
5523 pwdiSetTmLevelRspCb: callback
5524
5525 usrData: user data will be passed back with the
5526 callback
5527
5528 @return Result of the function call
5529*/
5530WDI_Status
5531WDI_SetTmLevelReq
5532(
5533 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5534 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5535 void *usrData
5536)
5537{
5538 WDI_EventInfoType wdiEventData;
5539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5540
5541 /*------------------------------------------------------------------------
5542 Sanity Check
5543 ------------------------------------------------------------------------*/
5544 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5545 {
5546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5547 "WDI API call before module is initialized - Fail request");
5548
5549 return WDI_STATUS_E_NOT_ALLOWED;
5550 }
5551
5552 /*------------------------------------------------------------------------
5553 Fill in Event data and post to the Main FSM
5554 ------------------------------------------------------------------------*/
5555 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5556 wdiEventData.pEventData = pwdiSetTmLevelReq;
5557 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5558 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5559 wdiEventData.pUserData = usrData;
5560
5561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5562}
5563
5564/**
5565 @brief WDI_HostSuspendInd
5566
5567 Suspend Indication from the upper layer will be sent
5568 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005569
Jeff Johnson295189b2012-06-20 16:38:30 -07005570 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005571
5572 @see
5573
Jeff Johnson295189b2012-06-20 16:38:30 -07005574 @return Status of the request
5575*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005576WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005577WDI_HostSuspendInd
5578(
5579 WDI_SuspendParamsType* pwdiSuspendIndParams
5580)
5581{
5582
5583 WDI_EventInfoType wdiEventData;
5584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5585
5586 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005587 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005588 ------------------------------------------------------------------------*/
5589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5590 {
5591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5592 "WDI API call before module is initialized - Fail request");
5593
Jeff Johnsone7245742012-09-05 17:12:55 -07005594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005595 }
5596
5597 /*------------------------------------------------------------------------
5598 Fill in Event data and post to the Main FSM
5599 ------------------------------------------------------------------------*/
5600 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005601 wdiEventData.pEventData = pwdiSuspendIndParams;
5602 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5603 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005604 wdiEventData.pUserData = NULL;
5605
5606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5607
5608}/*WDI_HostSuspendInd*/
5609
5610/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005611 @brief WDI_TrafficStatsInd
5612 Traffic Stats from the upper layer will be sent
5613 down to HAL
5614
5615 @param WDI_TrafficStatsIndType
5616
5617 @see
5618
5619 @return Status of the request
5620*/
5621WDI_Status
5622WDI_TrafficStatsInd
5623(
5624 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5625)
5626{
5627
5628 WDI_EventInfoType wdiEventData;
5629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5630
5631 /*------------------------------------------------------------------------
5632 Sanity Check
5633 ------------------------------------------------------------------------*/
5634 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5635 {
5636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5637 "WDI API call before module is initialized - Fail request");
5638
5639 return WDI_STATUS_E_NOT_ALLOWED;
5640 }
5641
5642 /*------------------------------------------------------------------------
5643 Fill in Event data and post to the Main FSM
5644 ------------------------------------------------------------------------*/
5645 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5646 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5647 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5648 wdiEventData.pCBfnc = NULL;
5649 wdiEventData.pUserData = NULL;
5650
5651 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5652
5653}/*WDI_TrafficStatsInd*/
5654
5655/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005656 @brief WDI_HALDumpCmdReq
5657 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005658
5659 @param halDumpCmdReqParams: Hal Dump Command Body
5660 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005661 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005662
Jeff Johnson295189b2012-06-20 16:38:30 -07005663 @see
5664 @return Result of the function call
5665*/
5666WDI_Status WDI_HALDumpCmdReq
5667(
5668 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5669 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5670 void *pUserData
5671)
5672{
5673 WDI_EventInfoType wdiEventData;
5674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5675
5676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005678 ------------------------------------------------------------------------*/
5679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5680 {
5681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5682 "WDI API call before module is initialized - Fail request");
5683
Jeff Johnsone7245742012-09-05 17:12:55 -07005684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 }
5686
5687 /*------------------------------------------------------------------------
5688 Fill in Event data and post to the Main FSM
5689 ------------------------------------------------------------------------*/
5690 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5691 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5692 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5693 wdiEventData.pCBfnc = halDumpCmdRspCb;
5694 wdiEventData.pUserData = pUserData;
5695
5696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5697}
5698
Jeff Johnsone7245742012-09-05 17:12:55 -07005699/*============================================================================
5700
Jeff Johnson295189b2012-06-20 16:38:30 -07005701 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005702
Jeff Johnson295189b2012-06-20 16:38:30 -07005703 ============================================================================*/
5704
5705/**
5706 @brief Main FSM Start function for all states except BUSY
5707
Jeff Johnsone7245742012-09-05 17:12:55 -07005708
5709 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005710 wdiEV: event posted to the main DAL FSM
5711 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005712 structure
5713
Jeff Johnson295189b2012-06-20 16:38:30 -07005714 @see
5715 @return Result of the function call
5716*/
5717WDI_Status
5718WDI_PostMainEvent
5719(
Jeff Johnsone7245742012-09-05 17:12:55 -07005720 WDI_ControlBlockType* pWDICtx,
5721 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005722 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005723
Jeff Johnson295189b2012-06-20 16:38:30 -07005724)
5725{
Jeff Johnsone7245742012-09-05 17:12:55 -07005726 WDI_Status wdiStatus;
5727 WDI_MainFuncType pfnWDIMainEvHdlr;
5728 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5730
5731 /*-------------------------------------------------------------------------
5732 Sanity check
5733 -------------------------------------------------------------------------*/
5734 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5735 ( wdiEV >= WDI_MAX_EVENT ))
5736 {
5737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5738 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5739 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005740 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005741 }
5742
5743 /*Access to the global state must be locked */
5744 wpalMutexAcquire(&pWDICtx->wptMutex);
5745
5746 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005747 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005748
5749 wdiOldState = pWDICtx->uGlobalState;
5750
5751 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005752 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5753 response comes from CCPU for the request sent by host:
5754 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 -07005755 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 -07005756 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005757 CCPU:
5758 don't change the state */
5759 if ( WDI_RESPONSE_EVENT != wdiEV)
5760 {
5761 /*Transition to BUSY State - the request is now being processed by the FSM,
5762 if the request fails we shall transition back to the old state, if not
5763 the request will manage its own state transition*/
5764 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5765 }
5766 /* If the state function associated with the EV is NULL it means that this
5767 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005768 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005769 {
5770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005771 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005772 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005773 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005774 }
5775 else
5776 {
5777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005778 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005779 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005780 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005781 }
5782
5783 /* If a request handles itself well it will end up in a success or in a
5784 pending
5785 Success - means that the request was processed and the proper state
5786 transition already occurred or will occur when the resp is received
5787 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005788
Jeff Johnson295189b2012-06-20 16:38:30 -07005789 Pending - means the request could not be processed at this moment in time
5790 because the FSM was already busy so no state transition or dequeueing
5791 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005792
Jeff Johnson295189b2012-06-20 16:38:30 -07005793 Success for synchronous case means that the transition may occur and
5794 processing of pending requests may continue - so it should go through
5795 and restores the state and continue processing queued requests*/
5796 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5797 ( WDI_STATUS_PENDING != wdiStatus ))
5798 {
5799 if ( WDI_RESPONSE_EVENT != wdiEV)
5800 {
5801 /*The request has failed or could not be processed - transition back to
5802 the old state - check to see if anything was queued and try to execute
5803 The dequeue logic should post a message to a thread and return - no
5804 actual processing can occur */
5805 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5806 }
5807 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005808
Jeff Johnson295189b2012-06-20 16:38:30 -07005809 }
5810
5811 /* we have completed processing the event */
5812 wpalMutexRelease(&pWDICtx->wptMutex);
5813
Jeff Johnsone7245742012-09-05 17:12:55 -07005814 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005815
5816}/*WDI_PostMainEvent*/
5817
5818
5819/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005820 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005821--------------------------------------------------------------------------*/
5822/**
5823 @brief Main FSM Start function for all states except BUSY
5824
Jeff Johnsone7245742012-09-05 17:12:55 -07005825
5826 @param pWDICtx: pointer to the WLAN DAL context
5827 pEventData: pointer to the event information structure
5828
Jeff Johnson295189b2012-06-20 16:38:30 -07005829 @see
5830 @return Result of the function call
5831*/
5832WDI_Status
5833WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005834(
Jeff Johnson295189b2012-06-20 16:38:30 -07005835 WDI_ControlBlockType* pWDICtx,
5836 WDI_EventInfoType* pEventData
5837)
5838{
5839
5840 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005841 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005842 ----------------------------------------------------------------------*/
5843 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5844 {
5845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005846 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005847 pWDICtx, pEventData);
5848 return WDI_STATUS_E_FAILURE;
5849 }
5850
5851 wpalMutexAcquire(&pWDICtx->wptMutex);
5852
5853 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005854 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005855 ----------------------------------------------------------------------*/
5856 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5857 {
5858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5859 "Control Transport not yet Open - queueing the request");
5860
5861 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005862 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005863
5864 wpalMutexRelease(&pWDICtx->wptMutex);
5865 return WDI_STATUS_PENDING;
5866 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005867
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 wpalMutexRelease(&pWDICtx->wptMutex);
5869
5870 /*Return Success*/
5871 return WDI_ProcessRequest( pWDICtx, pEventData );
5872
5873}/*WDI_MainStart*/
5874
5875/**
5876 @brief Main FSM Response function for state INIT
5877
Jeff Johnsone7245742012-09-05 17:12:55 -07005878
5879 @param pWDICtx: pointer to the WLAN DAL context
5880 pEventData: pointer to the event information structure
5881
Jeff Johnson295189b2012-06-20 16:38:30 -07005882 @see
5883 @return Result of the function call
5884*/
5885WDI_Status
5886WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005887(
Jeff Johnson295189b2012-06-20 16:38:30 -07005888 WDI_ControlBlockType* pWDICtx,
5889 WDI_EventInfoType* pEventData
5890)
5891{
5892 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005893 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07005894 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005895 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07005896
5897 /*Return Success*/
5898 return WDI_STATUS_E_NOT_ALLOWED;
5899}/* WDI_MainRspInit */
5900
5901/**
5902 @brief Main FSM Close function for all states except BUSY
5903
Jeff Johnsone7245742012-09-05 17:12:55 -07005904
5905 @param pWDICtx: pointer to the WLAN DAL context
5906 pEventData: pointer to the event information structure
5907
Jeff Johnson295189b2012-06-20 16:38:30 -07005908 @see
5909 @return Result of the function call
5910*/
5911WDI_Status
5912WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07005913(
Jeff Johnson295189b2012-06-20 16:38:30 -07005914 WDI_ControlBlockType* pWDICtx,
5915 WDI_EventInfoType* pEventData
5916)
5917{
5918
5919 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005920 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005921 ----------------------------------------------------------------------*/
5922 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5923 {
5924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005925 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005926 pWDICtx, pEventData);
5927 return WDI_STATUS_E_FAILURE;
5928 }
5929
5930 /*Return Success*/
5931 return WDI_ProcessRequest( pWDICtx, pEventData );
5932
5933}/*WDI_MainClose*/
5934/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005935 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005936--------------------------------------------------------------------------*/
5937/**
5938 @brief Main FSM Start function for state STARTED
5939
Jeff Johnsone7245742012-09-05 17:12:55 -07005940
5941 @param pWDICtx: pointer to the WLAN DAL context
5942 pEventData: pointer to the event information structure
5943
Jeff Johnson295189b2012-06-20 16:38:30 -07005944 @see
5945 @return Result of the function call
5946*/
5947WDI_Status
5948WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07005949(
Jeff Johnson295189b2012-06-20 16:38:30 -07005950 WDI_ControlBlockType* pWDICtx,
5951 WDI_EventInfoType* pEventData
5952)
5953{
5954 WDI_StartRspCb wdiStartRspCb = NULL;
5955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5956
5957 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005958 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005959 ----------------------------------------------------------------------*/
5960 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5961 {
5962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005963 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005964 pWDICtx, pEventData);
5965 return WDI_STATUS_E_FAILURE;
5966 }
5967
5968 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005969 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07005970 ----------------------------------------------------------------------*/
5971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005972 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07005973
5974 wpalMutexAcquire(&pWDICtx->wptMutex);
5975
5976 /*Transition back to started because the post function transitioned us to
5977 busy*/
5978 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
5979
5980 /*Check to see if any request is pending*/
5981 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005982
Jeff Johnson295189b2012-06-20 16:38:30 -07005983 wpalMutexRelease(&pWDICtx->wptMutex);
5984
5985 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005986 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
5987
Jeff Johnson295189b2012-06-20 16:38:30 -07005988 /*Notify UMAC*/
5989 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
5990
5991 /*Return Success*/
5992 return WDI_STATUS_SUCCESS;
5993
5994}/*WDI_MainStartStarted*/
5995
5996/**
5997 @brief Main FSM Stop function for state STARTED
5998
Jeff Johnsone7245742012-09-05 17:12:55 -07005999
6000 @param pWDICtx: pointer to the WLAN DAL context
6001 pEventData: pointer to the event information structure
6002
Jeff Johnson295189b2012-06-20 16:38:30 -07006003 @see
6004 @return Result of the function call
6005*/
6006WDI_Status
6007WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006008(
Jeff Johnson295189b2012-06-20 16:38:30 -07006009 WDI_ControlBlockType* pWDICtx,
6010 WDI_EventInfoType* pEventData
6011)
6012{
6013 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006014 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006015 ----------------------------------------------------------------------*/
6016 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6017 {
6018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006019 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006020 pWDICtx, pEventData);
6021 return WDI_STATUS_E_FAILURE;
6022 }
6023
6024 /*State at this point is BUSY - because we enter this state before posting
6025 an event to the FSM in order to prevent potential race conditions*/
6026
6027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6028 "Processing stop request in FSM");
6029
6030 /*Return Success*/
6031 return WDI_ProcessRequest( pWDICtx, pEventData );
6032
6033}/*WDI_MainStopStarted*/
6034/**
6035 @brief Main FSM Request function for state started
6036
Jeff Johnsone7245742012-09-05 17:12:55 -07006037
6038 @param pWDICtx: pointer to the WLAN DAL context
6039 pEventData: pointer to the event information structure
6040
Jeff Johnson295189b2012-06-20 16:38:30 -07006041 @see
6042 @return Result of the function call
6043*/
6044WDI_Status
6045WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006046(
Jeff Johnson295189b2012-06-20 16:38:30 -07006047 WDI_ControlBlockType* pWDICtx,
6048 WDI_EventInfoType* pEventData
6049)
6050{
6051
6052 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006053 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006054 ----------------------------------------------------------------------*/
6055 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6056 {
6057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006058 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006059 pWDICtx, pEventData);
6060 return WDI_STATUS_E_FAILURE;
6061 }
6062
6063 /*State at this point is BUSY - because we enter this state before posting
6064 an event to the FSM in order to prevent potential race conditions*/
6065
6066 /*Return Success*/
6067 return WDI_ProcessRequest( pWDICtx, pEventData );
6068
6069}/*WDI_MainReqStarted*/
6070
6071/**
6072 @brief Main FSM Response function for all states except INIT
6073
Jeff Johnsone7245742012-09-05 17:12:55 -07006074
6075 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006076 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006077
Jeff Johnson295189b2012-06-20 16:38:30 -07006078 @see
6079 @return Result of the function call
6080*/
6081WDI_Status
6082WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006083(
Jeff Johnson295189b2012-06-20 16:38:30 -07006084 WDI_ControlBlockType* pWDICtx,
6085 WDI_EventInfoType* pEventData
6086)
6087{
Jeff Johnsone7245742012-09-05 17:12:55 -07006088 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006089 wpt_boolean expectedResponse;
6090
6091 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006092 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006093 ----------------------------------------------------------------------*/
6094 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6095 {
6096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006097 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006098 pWDICtx, pEventData);
6099 return WDI_STATUS_E_FAILURE;
6100 }
6101
6102 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6103 {
6104 /* we received an expected response */
6105 expectedResponse = eWLAN_PAL_TRUE;
6106
6107 /*We expect that we will transition to started after this processing*/
6108 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6109
6110 /* we are no longer expecting a response */
6111 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6112 }
6113 else
6114 {
6115 /* we received an indication or unexpected response */
6116 expectedResponse = eWLAN_PAL_FALSE;
6117 /* for indications no need to update state from what it is right
6118 now, unless it explicitly does it in the indication handler (say
6119 for device failure ind) */
6120 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6121 }
6122
6123 /*Process the response and indication */
6124 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6125
6126 /*Lock the CB as we are about to do a state transition*/
6127 wpalMutexAcquire(&pWDICtx->wptMutex);
6128
6129 /*Transition to the expected state after the response processing
6130 - this should always be started state with the following exceptions:
6131 1. processing of a failed start response
6132 2. device failure detected while processing response
6133 3. stop response received*/
6134 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006135
Jeff Johnson295189b2012-06-20 16:38:30 -07006136 /*Dequeue request that may have been queued while we were waiting for the
6137 response */
6138 if ( expectedResponse )
6139 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006140 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006141 }
6142
6143 wpalMutexRelease(&pWDICtx->wptMutex);
6144
6145 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006146 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006147
6148}/*WDI_MainRsp*/
6149
6150/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006151 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006152--------------------------------------------------------------------------*/
6153/**
6154 @brief Main FSM Stop function for state STOPPED
6155
Jeff Johnsone7245742012-09-05 17:12:55 -07006156
6157 @param pWDICtx: pointer to the WLAN DAL context
6158 pEventData: pointer to the event information structure
6159
Jeff Johnson295189b2012-06-20 16:38:30 -07006160 @see
6161 @return Result of the function call
6162*/
6163WDI_Status
6164WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006165(
Jeff Johnson295189b2012-06-20 16:38:30 -07006166 WDI_ControlBlockType* pWDICtx,
6167 WDI_EventInfoType* pEventData
6168)
6169{
6170 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006171 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006172 ----------------------------------------------------------------------*/
6173 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6174 {
6175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006177 pWDICtx, pEventData);
6178 return WDI_STATUS_E_FAILURE;
6179 }
6180
6181 /*We should normally not get a STOP request if we are already stopped
6182 since we should normally be stopped by the UMAC. However in some
6183 error situations we put ourselves in the stopped state without the
6184 UMAC knowing, so when we get a STOP request in this state we still
6185 process it since we need to clean up the underlying state */
6186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6187 "Processing stop request while stopped in FSM");
6188
6189 /*Return Success*/
6190 return WDI_ProcessRequest( pWDICtx, pEventData );
6191
6192}/*WDI_MainStopStopped*/
6193
6194/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006195 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006196--------------------------------------------------------------------------*/
6197/**
6198 @brief Main FSM Start function for state BUSY
6199
Jeff Johnsone7245742012-09-05 17:12:55 -07006200
6201 @param pWDICtx: pointer to the WLAN DAL context
6202 pEventData: pointer to the event information structure
6203
Jeff Johnson295189b2012-06-20 16:38:30 -07006204 @see
6205 @return Result of the function call
6206*/
6207WDI_Status
6208WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006209(
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 WDI_ControlBlockType* pWDICtx,
6211 WDI_EventInfoType* pEventData
6212)
6213{
6214 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006215 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006216 ----------------------------------------------------------------------*/
6217 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6218 {
6219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006220 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006221 pWDICtx, pEventData);
6222 return WDI_STATUS_E_FAILURE;
6223 }
6224
6225 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006226 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 ----------------------------------------------------------------------*/
6228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6229 "WDI Busy state - queue start request");
6230
6231 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006232 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006233
6234 /*Return Success*/
6235 return WDI_STATUS_PENDING;
6236}/*WDI_MainStartBusy*/
6237
6238/**
6239 @brief Main FSM Stop function for state BUSY
6240
Jeff Johnsone7245742012-09-05 17:12:55 -07006241
6242 @param pWDICtx: pointer to the WLAN DAL context
6243 pEventData: pointer to the event information structure
6244
Jeff Johnson295189b2012-06-20 16:38:30 -07006245 @see
6246 @return Result of the function call
6247*/
6248WDI_Status
6249WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006250(
Jeff Johnson295189b2012-06-20 16:38:30 -07006251 WDI_ControlBlockType* pWDICtx,
6252 WDI_EventInfoType* pEventData
6253)
6254{
6255 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006256 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006257 ----------------------------------------------------------------------*/
6258 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6259 {
6260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006261 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006262 pWDICtx, pEventData);
6263 return WDI_STATUS_E_FAILURE;
6264 }
6265
6266 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006267 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006268 ----------------------------------------------------------------------*/
6269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6270 "WDI Busy state - queue stop request");
6271
Jeff Johnsone7245742012-09-05 17:12:55 -07006272 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006273 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006274
Jeff Johnson295189b2012-06-20 16:38:30 -07006275}/*WDI_MainStopBusy*/
6276
6277/**
6278 @brief Main FSM Request function for state BUSY
6279
Jeff Johnsone7245742012-09-05 17:12:55 -07006280
6281 @param pWDICtx: pointer to the WLAN DAL context
6282 pEventData: pointer to the event information structure
6283
Jeff Johnson295189b2012-06-20 16:38:30 -07006284 @see
6285 @return Result of the function call
6286*/
6287WDI_Status
6288WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006289(
Jeff Johnson295189b2012-06-20 16:38:30 -07006290 WDI_ControlBlockType* pWDICtx,
6291 WDI_EventInfoType* pEventData
6292)
6293{
6294 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006295 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006296 ----------------------------------------------------------------------*/
6297 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6298 {
6299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006300 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006301 pWDICtx, pEventData);
6302 return WDI_STATUS_E_FAILURE;
6303 }
6304
6305 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006306 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 ----------------------------------------------------------------------*/
6308 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6309 "WDI Busy state - queue request %d because waiting for response %d",
6310 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6311
Jeff Johnsone7245742012-09-05 17:12:55 -07006312 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006313 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006314
Jeff Johnson295189b2012-06-20 16:38:30 -07006315}/*WDI_MainReqBusy*/
6316/**
6317 @brief Main FSM Close function for state BUSY
6318
Jeff Johnsone7245742012-09-05 17:12:55 -07006319
6320 @param pWDICtx: pointer to the WLAN DAL context
6321 pEventData: pointer to the event information structure
6322
Jeff Johnson295189b2012-06-20 16:38:30 -07006323 @see
6324 @return Result of the function call
6325*/
6326WDI_Status
6327WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006328(
Jeff Johnson295189b2012-06-20 16:38:30 -07006329 WDI_ControlBlockType* pWDICtx,
6330 WDI_EventInfoType* pEventData
6331)
6332{
6333 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006334 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006335 ----------------------------------------------------------------------*/
6336 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6337 {
6338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006339 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006340 pWDICtx, pEventData);
6341 return WDI_STATUS_E_FAILURE;
6342 }
6343
6344 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006345 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006346 ----------------------------------------------------------------------*/
6347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6348 "WDI Busy state - queue close request");
6349
Jeff Johnsone7245742012-09-05 17:12:55 -07006350 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006351 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006352
Jeff Johnson295189b2012-06-20 16:38:30 -07006353}/*WDI_MainCloseBusy*/
6354
6355/**
6356 @brief Main FSM Shutdown function for INIT & STARTED states
6357
6358
6359 @param pWDICtx: pointer to the WLAN DAL context
6360 pEventData: pointer to the event information structure
6361
6362 @see
6363 @return Result of the function call
6364*/
6365WDI_Status
6366WDI_MainShutdown
6367(
6368 WDI_ControlBlockType* pWDICtx,
6369 WDI_EventInfoType* pEventData
6370)
6371{
6372 /*--------------------------------------------------------------------
6373 Sanity Check
6374 ----------------------------------------------------------------------*/
6375 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6376 {
6377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6378 "Invalid parameters on Main Start %x %x",
6379 pWDICtx, pEventData);
6380 return WDI_STATUS_E_FAILURE;
6381 }
6382
6383 /*State at this point is BUSY - because we enter this state before posting
6384 an event to the FSM in order to prevent potential race conditions*/
6385
6386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6387 "Processing shutdown request in FSM");
6388
6389 /*Return Success*/
6390 return WDI_ProcessRequest( pWDICtx, pEventData );
6391
6392}/*WDI_MainShutdown*/
6393
6394/**
6395 @brief Main FSM Shutdown function for BUSY state
6396
6397
6398 @param pWDICtx: pointer to the WLAN DAL context
6399 pEventData: pointer to the event information structure
6400
6401 @see
6402 @return Result of the function call
6403*/
6404WDI_Status
6405WDI_MainShutdownBusy
6406(
6407 WDI_ControlBlockType* pWDICtx,
6408 WDI_EventInfoType* pEventData
6409)
6410{
6411 /*--------------------------------------------------------------------
6412 Sanity Check
6413 ----------------------------------------------------------------------*/
6414 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6415 {
6416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6417 "Invalid parameters on Main Start %x %x",
6418 pWDICtx, pEventData);
6419 return WDI_STATUS_E_FAILURE;
6420 }
6421
6422 /* If you are waiting for a HAL response at this stage, you are not
6423 * going to get it. Riva is already shutdown/crashed.
6424 */
6425 wpalTimerStop(&gWDICb.wptResponseTimer);
6426
6427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6428 "Processing shutdown request in FSM: Busy state ");
6429
6430 return WDI_ProcessRequest( pWDICtx, pEventData );
6431
6432}/*WDI_MainShutdownBusy*/
6433
6434
Jeff Johnsone7245742012-09-05 17:12:55 -07006435/*=======================================================================
6436
Jeff Johnson295189b2012-06-20 16:38:30 -07006437 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006438
Jeff Johnson295189b2012-06-20 16:38:30 -07006439*=======================================================================*/
6440
6441/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006442 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006443========================================================================*/
6444/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006445 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006446 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006447
6448 @param pWDICtx: pointer to the WLAN DAL context
6449 pEventData: pointer to the event information structure
6450
Jeff Johnson295189b2012-06-20 16:38:30 -07006451 @see
6452 @return Result of the function call
6453*/
6454WDI_Status
6455WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006456(
Jeff Johnson295189b2012-06-20 16:38:30 -07006457 WDI_ControlBlockType* pWDICtx,
6458 WDI_EventInfoType* pEventData
6459)
6460{
6461 WDI_StartReqParamsType* pwdiStartParams = NULL;
6462 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006463 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006464 wpt_uint16 usDataOffset = 0;
6465 wpt_uint16 usSendSize = 0;
6466
Jeff Johnsone7245742012-09-05 17:12:55 -07006467 tHalMacStartReqMsg halStartReq;
6468 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006469 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6470
6471 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006472 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006473 -------------------------------------------------------------------------*/
6474 if (( NULL == pEventData ) ||
6475 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6476 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6477 {
6478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006479 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006481 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006482 }
6483
6484 /*-----------------------------------------------------------------------
6485 Get message buffer
6486 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006487 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006488 pwdiStartParams->usConfigBufferLen;
6489
Jeff Johnsone7245742012-09-05 17:12:55 -07006490 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006491 usLen,
6492 &pSendBuffer, &usDataOffset, &usSendSize))||
6493 ( usSendSize < (usDataOffset + usLen )))
6494 {
6495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6496 "Unable to get send buffer in start req %x %x %x",
6497 pEventData, pwdiStartParams, wdiStartRspCb);
6498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006500 }
6501
6502 /*-----------------------------------------------------------------------
6503 Fill in the message
6504 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006505 halStartReq.startReqParams.driverType =
6506 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006507
Jeff Johnsone7245742012-09-05 17:12:55 -07006508 halStartReq.startReqParams.uConfigBufferLen =
6509 pwdiStartParams->usConfigBufferLen;
6510 wpalMemoryCopy( pSendBuffer+usDataOffset,
6511 &halStartReq.startReqParams,
6512 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006513
Jeff Johnsone7245742012-09-05 17:12:55 -07006514 usDataOffset += sizeof(halStartReq.startReqParams);
6515 wpalMemoryCopy( pSendBuffer+usDataOffset,
6516 pwdiStartParams->pConfigBuffer,
6517 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006518
6519 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006520 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006521
6522 /*Save Low Level Ind CB and associated user data - it will be used further
6523 on when an indication is coming from the lower MAC*/
6524 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006525 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006526
Jeff Johnsone7245742012-09-05 17:12:55 -07006527 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006529 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006530 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006531 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006532 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6533
Jeff Johnsone7245742012-09-05 17:12:55 -07006534
Jeff Johnson295189b2012-06-20 16:38:30 -07006535}/*WDI_ProcessStartReq*/
6536
6537/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006538 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006539 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006540
6541 @param pWDICtx: pointer to the WLAN DAL context
6542 pEventData: pointer to the event information structure
6543
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 @see
6545 @return Result of the function call
6546*/
6547WDI_Status
6548WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006549(
Jeff Johnson295189b2012-06-20 16:38:30 -07006550 WDI_ControlBlockType* pWDICtx,
6551 WDI_EventInfoType* pEventData
6552)
6553{
6554 WDI_StopReqParamsType* pwdiStopParams = NULL;
6555 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006556 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006557 wpt_uint16 usDataOffset = 0;
6558 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006559 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006560 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6562
6563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006565 -------------------------------------------------------------------------*/
6566 if (( NULL == pEventData ) ||
6567 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6568 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6569 {
6570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006572 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006573 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006574 }
6575
6576 /*-----------------------------------------------------------------------
6577 Get message buffer
6578 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006579 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006580 sizeof(halStopReq.stopReqParams),
6581 &pSendBuffer, &usDataOffset, &usSendSize))||
6582 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6583 {
6584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6585 "Unable to get send buffer in stop req %x %x %x",
6586 pEventData, pwdiStopParams, wdiStopRspCb);
6587 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006588 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006589 }
6590
6591 /*-----------------------------------------------------------------------
6592 Fill in the message
6593 -----------------------------------------------------------------------*/
6594 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6595 pwdiStopParams->wdiStopReason);
6596
Jeff Johnsone7245742012-09-05 17:12:55 -07006597 wpalMemoryCopy( pSendBuffer+usDataOffset,
6598 &halStopReq.stopReqParams,
6599 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006600
6601 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006602 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006603
6604 /*! TO DO: stop the data services */
6605 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6606 {
6607 /*Stop the STA Table !UT- check this logic again
6608 It is safer to do it here than on the response - because a stop is imminent*/
6609 WDI_STATableStop(pWDICtx);
6610
6611 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006612 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6613 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006614 {
6615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6616 "WDI Init failed to reset power state event");
6617
Jeff Johnsone7245742012-09-05 17:12:55 -07006618 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006619 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006620 }
6621 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006622 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6623 if( eWLAN_PAL_STATUS_SUCCESS != status )
6624 {
6625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6626 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6627 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006628 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006629 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006630 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006631 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006632 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006633 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6634 WDI_SET_POWER_STATE_TIMEOUT);
6635 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006636 {
6637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6638 "WDI Init failed to wait on an event");
6639
Jeff Johnsone7245742012-09-05 17:12:55 -07006640 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006641 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006642 }
6643 }
6644
6645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006646 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006647 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006648 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006649 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6650
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006651fail:
6652 // Release the message buffer so we don't leak
6653 wpalMemoryFree(pSendBuffer);
6654
6655failRequest:
6656 //WDA should have failure check to avoid the memory leak
6657 return WDI_STATUS_E_FAILURE;
6658
Jeff Johnson295189b2012-06-20 16:38:30 -07006659}/*WDI_ProcessStopReq*/
6660
6661/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006662 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006663 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006664
6665 @param pWDICtx: pointer to the WLAN DAL context
6666 pEventData: pointer to the event information structure
6667
Jeff Johnson295189b2012-06-20 16:38:30 -07006668 @see
6669 @return Result of the function call
6670*/
6671WDI_Status
6672WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006673(
Jeff Johnson295189b2012-06-20 16:38:30 -07006674 WDI_ControlBlockType* pWDICtx,
6675 WDI_EventInfoType* pEventData
6676)
6677{
Jeff Johnsone7245742012-09-05 17:12:55 -07006678 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6680
6681 /*Lock control block for cleanup*/
6682 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006683
Jeff Johnson295189b2012-06-20 16:38:30 -07006684 /*Clear all pending request*/
6685 WDI_ClearPendingRequests(pWDICtx);
6686
6687 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006688 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006689
6690 /* Close Data transport*/
6691 /* FTM mode does not open Data Path */
6692 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6693 {
6694 WDTS_Close(pWDICtx);
6695 }
6696
6697 /*Close the STA Table !UT- check this logic again*/
6698 WDI_STATableClose(pWDICtx);
6699
6700 /*close the PAL */
6701 wptStatus = wpalClose(pWDICtx->pPALContext);
6702 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6703 {
6704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6705 "Failed to wpal Close %d", wptStatus);
6706 WDI_ASSERT(0);
6707 }
6708
6709 /*Transition back to init state*/
6710 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6711
6712 wpalMutexRelease(&pWDICtx->wptMutex);
6713
6714 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006715 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006716
Jeff Johnsone7245742012-09-05 17:12:55 -07006717 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006718}/*WDI_ProcessCloseReq*/
6719
6720
6721/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006722 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006723===========================================================================*/
6724
6725/**
6726 @brief Process Init Scan Request function (called when Main FSM
6727 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006728
6729 @param pWDICtx: pointer to the WLAN DAL context
6730 pEventData: pointer to the event information structure
6731
Jeff Johnson295189b2012-06-20 16:38:30 -07006732 @see
6733 @return Result of the function call
6734*/
6735WDI_Status
6736WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006737(
Jeff Johnson295189b2012-06-20 16:38:30 -07006738 WDI_ControlBlockType* pWDICtx,
6739 WDI_EventInfoType* pEventData
6740)
6741{
6742 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6743 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006744 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006745 wpt_uint16 usDataOffset = 0;
6746 wpt_uint16 usSendSize = 0;
6747 wpt_uint8 i = 0;
6748
6749 tHalInitScanReqMsg halInitScanReqMsg;
6750
Jeff Johnsone7245742012-09-05 17:12:55 -07006751 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006752 * It shold be removed once host and riva changes are in sync*/
6753 tHalInitScanConReqMsg halInitScanConReqMsg;
6754
6755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6756
6757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006758 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006759 -------------------------------------------------------------------------*/
6760 if (( NULL == pEventData ) ||
6761 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6762 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6763 {
6764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006768 }
6769
6770#if 0
6771 wpalMutexAcquire(&pWDICtx->wptMutex);
6772 /*-----------------------------------------------------------------------
6773 Check to see if SCAN is already in progress - if so reject the req
6774 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006775 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006776 -----------------------------------------------------------------------*/
6777 if ( pWDICtx->bScanInProgress )
6778 {
6779 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6780 "Scan is already in progress - subsequent scan is not allowed"
6781 " until the first scan completes");
6782
6783 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006784 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006785 }
6786
Jeff Johnsone7245742012-09-05 17:12:55 -07006787 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6788 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006789
6790 wpalMutexRelease(&pWDICtx->wptMutex);
6791#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08006792 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006793 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006794 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006795 * It shold be removed once host and riva changes are in sync*/
6796 /*-----------------------------------------------------------------------
6797 Get message buffer
6798 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006799 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006800 sizeof(halInitScanConReqMsg.initScanParams),
6801 &pSendBuffer, &usDataOffset, &usSendSize))||
6802 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6803 {
6804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6805 "Unable to get send buffer in init scan req %x %x %x",
6806 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006809 }
6810
6811
6812 /*-----------------------------------------------------------------------
6813 Fill in the message
6814 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006815 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006816 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6817
6818 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6819 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6820
Jeff Johnsone7245742012-09-05 17:12:55 -07006821 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006822 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006823 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006824 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006825 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006826 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6827
6828 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6829 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6830
Jeff Johnson295189b2012-06-20 16:38:30 -07006831 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6832 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07006833
Jeff Johnsone7245742012-09-05 17:12:55 -07006834 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006835 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6836
6837 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6838 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006839 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006840 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6841 }
6842
Jeff Johnsone7245742012-09-05 17:12:55 -07006843 wpalMemoryCopy( pSendBuffer+usDataOffset,
6844 &halInitScanConReqMsg.initScanParams,
6845 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006846 }
6847 else
6848 {
6849 /*-----------------------------------------------------------------------
6850 Get message buffer
6851 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006853 sizeof(halInitScanReqMsg.initScanParams),
6854 &pSendBuffer, &usDataOffset, &usSendSize))||
6855 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6856 {
6857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6858 "Unable to get send buffer in init scan req %x %x %x",
6859 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006862 }
6863
6864
6865 /*-----------------------------------------------------------------------
6866 Fill in the message
6867 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006868 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006869 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6870
6871 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6872 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6873
Jeff Johnsone7245742012-09-05 17:12:55 -07006874 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006875 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006876 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006877 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006878 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006879 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6880
6881 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6882 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6883
Jeff Johnsone7245742012-09-05 17:12:55 -07006884 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006885 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6886
6887 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6888 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006889 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006890 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6891 }
6892
Jeff Johnsone7245742012-09-05 17:12:55 -07006893 wpalMemoryCopy( pSendBuffer+usDataOffset,
6894 &halInitScanReqMsg.initScanParams,
6895 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 }
6897
6898 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006899 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006900
6901 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006902 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006903 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006904 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006905 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
6906
6907}/*WDI_ProcessInitScanReq*/
6908
6909/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006910 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07006911 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006912
6913 @param pWDICtx: pointer to the WLAN DAL context
6914 pEventData: pointer to the event information structure
6915
Jeff Johnson295189b2012-06-20 16:38:30 -07006916 @see
6917 @return Result of the function call
6918*/
6919WDI_Status
6920WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006921(
Jeff Johnson295189b2012-06-20 16:38:30 -07006922 WDI_ControlBlockType* pWDICtx,
6923 WDI_EventInfoType* pEventData
6924)
6925{
6926 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
6927 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006928 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006929 wpt_uint16 usDataOffset = 0;
6930 wpt_uint16 usSendSize = 0;
6931
Jeff Johnsone7245742012-09-05 17:12:55 -07006932 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07006933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6934
6935 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006936 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006937 -------------------------------------------------------------------------*/
6938 if (( NULL == pEventData ) ||
6939 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
6940 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
6941 {
6942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006943 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006946 }
6947
6948#if 0
6949 wpalMutexAcquire(&pWDICtx->wptMutex);
6950 /*-----------------------------------------------------------------------
6951 Check to see if SCAN is already in progress - start scan is only
6952 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07006953 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07006954 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006955 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07006956 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
6957 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
6958 {
6959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6960 "Scan start not allowed in this state %d %d",
6961 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07006962
Jeff Johnson295189b2012-06-20 16:38:30 -07006963 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006964 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006965 }
6966
Jeff Johnsone7245742012-09-05 17:12:55 -07006967 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006968
6969 wpalMutexRelease(&pWDICtx->wptMutex);
6970#endif
6971
6972 /*-----------------------------------------------------------------------
6973 Get message buffer
6974 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006975 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006976 sizeof(halStartScanReqMsg.startScanParams),
6977 &pSendBuffer, &usDataOffset, &usSendSize))||
6978 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
6979 {
6980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6981 "Unable to get send buffer in start scan req %x %x %x",
6982 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
6983 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006984 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006985 }
6986
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07006988 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07006989 wpalMemoryCopy( pSendBuffer+usDataOffset,
6990 &halStartScanReqMsg.startScanParams,
6991 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006992
6993 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006994 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006995
6996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006997 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006999 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007000 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7001}/*WDI_ProcessStartScanReq*/
7002
7003
7004/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007005 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007006 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007007
7008 @param pWDICtx: pointer to the WLAN DAL context
7009 pEventData: pointer to the event information structure
7010
Jeff Johnson295189b2012-06-20 16:38:30 -07007011 @see
7012 @return Result of the function call
7013*/
7014WDI_Status
7015WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007016(
Jeff Johnson295189b2012-06-20 16:38:30 -07007017 WDI_ControlBlockType* pWDICtx,
7018 WDI_EventInfoType* pEventData
7019)
7020{
7021 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7022 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007023 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007024 wpt_uint16 usDataOffset = 0;
7025 wpt_uint16 usSendSize = 0;
7026
Jeff Johnsone7245742012-09-05 17:12:55 -07007027 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7029
7030 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007031 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007032 -------------------------------------------------------------------------*/
7033 if (( NULL == pEventData ) ||
7034 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7035 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7036 {
7037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007038 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007041 }
7042
Jeff Johnsone7245742012-09-05 17:12:55 -07007043 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7044 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007045 * forwarded to HAL and result in hang*/
7046#if 0
7047 wpalMutexAcquire(&pWDICtx->wptMutex);
7048 /*-----------------------------------------------------------------------
7049 Check to see if SCAN is already in progress - end scan is only
7050 allowed when a scan is ongoing and the state of the scan procedure
7051 is started
7052 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007053 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007054 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7055 {
7056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7057 "End start not allowed in this state %d %d",
7058 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007059
Jeff Johnson295189b2012-06-20 16:38:30 -07007060 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007061 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007062 }
7063
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007065
7066 wpalMutexRelease(&pWDICtx->wptMutex);
7067#endif
7068
7069 /*-----------------------------------------------------------------------
7070 Get message buffer
7071 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007072 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007073 sizeof(halEndScanReqMsg.endScanParams),
7074 &pSendBuffer, &usDataOffset, &usSendSize))||
7075 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7076 {
7077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7078 "Unable to get send buffer in start scan req %x %x %x",
7079 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007082 }
7083
7084 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7085
Jeff Johnsone7245742012-09-05 17:12:55 -07007086 wpalMemoryCopy( pSendBuffer+usDataOffset,
7087 &halEndScanReqMsg.endScanParams,
7088 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007089
7090 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007091 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007092
7093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007094 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007095 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7098}/*WDI_ProcessEndScanReq*/
7099
7100
7101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007102 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007103 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007104
7105 @param pWDICtx: pointer to the WLAN DAL context
7106 pEventData: pointer to the event information structure
7107
Jeff Johnson295189b2012-06-20 16:38:30 -07007108 @see
7109 @return Result of the function call
7110*/
7111WDI_Status
7112WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007113(
Jeff Johnson295189b2012-06-20 16:38:30 -07007114 WDI_ControlBlockType* pWDICtx,
7115 WDI_EventInfoType* pEventData
7116)
7117{
7118 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7119 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007120 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007121 wpt_uint16 usDataOffset = 0;
7122 wpt_uint16 usSendSize = 0;
7123 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007124 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007125 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007126 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7127
7128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007129 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007130 -------------------------------------------------------------------------*/
7131 if (( NULL == pEventData ) ||
7132 ( NULL == pEventData->pEventData) ||
7133 ( NULL == pEventData->pCBfnc))
7134 {
7135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007136 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007137 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007138 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007139 }
7140
7141 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7142 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007143 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7144 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007145 * forwarded to HAL and result in hang*/
7146#if 0
7147 wpalMutexAcquire(&pWDICtx->wptMutex);
7148 /*-----------------------------------------------------------------------
7149 Check to see if SCAN is already in progress
7150 Finish scan gets invoked any scan states. ie. abort scan
7151 It should be allowed in any states.
7152 -----------------------------------------------------------------------*/
7153 if ( !pWDICtx->bScanInProgress )
7154 {
7155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7156 "Finish start not allowed in this state %d",
7157 pWDICtx->bScanInProgress );
7158
7159 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007160 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007161 }
7162
7163 /*-----------------------------------------------------------------------
7164 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007165 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007166 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007167 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7168 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 wpalMutexRelease(&pWDICtx->wptMutex);
7170#endif
7171
7172 if ( pWDICtx->bInBmps )
7173 {
7174 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007175 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7176 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7177 {
7178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7179 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7180 WDI_ASSERT(0);
7181 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 }
7183
7184 /*-----------------------------------------------------------------------
7185 Get message buffer
7186 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007187 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007188 sizeof(halFinishScanReqMsg.finishScanParams),
7189 &pSendBuffer, &usDataOffset, &usSendSize))||
7190 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7191 {
7192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7193 "Unable to get send buffer in start scan req %x %x %x",
7194 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 }
7198
Jeff Johnsone7245742012-09-05 17:12:55 -07007199 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007200 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7201
Jeff Johnsone7245742012-09-05 17:12:55 -07007202 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007203 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7204
Jeff Johnsone7245742012-09-05 17:12:55 -07007205 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007206 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7207
7208 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7209 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7210
Jeff Johnsone7245742012-09-05 17:12:55 -07007211 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007213 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007214 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007215 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007216 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7217
Jeff Johnsone7245742012-09-05 17:12:55 -07007218 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007219 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7220
7221 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7222 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007223 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007224 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7225 }
7226
7227 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7228 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7229
Jeff Johnsone7245742012-09-05 17:12:55 -07007230 wpalMemoryCopy( pSendBuffer+usDataOffset,
7231 &halFinishScanReqMsg.finishScanParams,
7232 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007233
7234 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007235 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007236
7237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007238 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007239 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007240 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007241 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7242}/*WDI_ProcessFinishScanReq*/
7243
7244
7245/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007246 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007247==========================================================================*/
7248/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007249 @brief Process BSS Join for a given Session
7250
7251 @param pWDICtx: pointer to the WLAN DAL context
7252 pEventData: pointer to the event information structure
7253
Jeff Johnson295189b2012-06-20 16:38:30 -07007254 @see
7255 @return Result of the function call
7256*/
7257WDI_Status
7258WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007259(
Jeff Johnson295189b2012-06-20 16:38:30 -07007260 WDI_ControlBlockType* pWDICtx,
7261 WDI_JoinReqParamsType* pwdiJoinParams,
7262 WDI_JoinRspCb wdiJoinRspCb,
7263 void* pUserData
7264)
7265{
7266 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007267 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007268 wpt_uint16 usDataOffset = 0;
7269 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007270 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007271
Jeff Johnsone7245742012-09-05 17:12:55 -07007272 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7274
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007275 wpalMutexAcquire(&pWDICtx->wptMutex);
7276
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 /*------------------------------------------------------------------------
7278 Check to see if we have any session with this BSSID already stored, we
7279 should not
7280 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007281 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7282 pwdiJoinParams->wdiReqInfo.macBSSID,
7283 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007284
7285 if ( NULL != pBSSSes )
7286 {
7287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007288 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7289 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007290
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007291 /*reset the bAssociationInProgress otherwise the next
7292 *join request will be queued*/
7293 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7294 wpalMutexRelease(&pWDICtx->wptMutex);
7295 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007296 }
7297
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007299 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007300 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007301 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007302 if ( NULL == pBSSSes )
7303 {
7304
7305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7306 "DAL has no free sessions - cannot run another join");
7307
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007308 /*reset the bAssociationInProgress otherwise the next
7309 *join request will be queued*/
7310 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007312 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 }
7314
7315 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007316 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7317 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007318 WDI_MAC_ADDR_LEN);
7319
7320 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007321 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007322 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007323
Jeff Johnson295189b2012-06-20 16:38:30 -07007324 wpalMutexRelease(&pWDICtx->wptMutex);
7325
7326 /*-----------------------------------------------------------------------
7327 Get message buffer
7328 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007329 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007330 sizeof(halJoinReqMsg.joinReqParams),
7331 &pSendBuffer, &usDataOffset, &usSendSize))||
7332 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7333 {
7334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7335 "Unable to get send buffer in join req %x %x %x",
7336 pUserData, pwdiJoinParams, wdiJoinRspCb);
7337 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007338 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007339 }
7340
7341 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007342 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007343
7344 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007345 pwdiJoinParams->wdiReqInfo.macSTASelf,
7346 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007347
Jeff Johnsone7245742012-09-05 17:12:55 -07007348 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007349 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7350
7351 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7352
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007353#ifdef WLAN_FEATURE_VOWIFI
7354 halJoinReqMsg.joinReqParams.maxTxPower =
7355 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7356#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007357 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007358 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7359#endif
7360
Jeff Johnsone7245742012-09-05 17:12:55 -07007361 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007362 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7363 wdiSecondaryChannelOffset);
7364
Jeff Johnsone7245742012-09-05 17:12:55 -07007365 wpalMemoryCopy( pSendBuffer+usDataOffset,
7366 &halJoinReqMsg.joinReqParams,
7367 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007368
7369 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007370 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007371
7372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007373 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007374 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7376 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007377
7378}/*WDI_ProcessBSSSessionJoinReq*/
7379
7380/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007381 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007382 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007383
7384 @param pWDICtx: pointer to the WLAN DAL context
7385 pEventData: pointer to the event information structure
7386
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 @see
7388 @return Result of the function call
7389*/
7390WDI_Status
7391WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007392(
Jeff Johnson295189b2012-06-20 16:38:30 -07007393 WDI_ControlBlockType* pWDICtx,
7394 WDI_EventInfoType* pEventData
7395)
7396{
7397 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7398 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7399 WDI_JoinRspCb wdiJoinRspCb = NULL;
7400 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7401
7402 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007403 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 -------------------------------------------------------------------------*/
7405 if (( NULL == pEventData ) ||
7406 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7407 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7408 {
7409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007410 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007413 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007414
Jeff Johnson295189b2012-06-20 16:38:30 -07007415 /*-------------------------------------------------------------------------
7416 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 -------------------------------------------------------------------------*/
7419 wpalMutexAcquire(&pWDICtx->wptMutex);
7420
7421 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7422 {
7423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7424 "Association is currently in progress, queueing new join req");
7425
7426 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007427 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 pwdiJoinParams->wdiReqInfo.macBSSID);
7429
7430 wpalMutexRelease(&pWDICtx->wptMutex);
7431
Jeff Johnsone7245742012-09-05 17:12:55 -07007432 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 }
7434
7435 /*Starting a new association */
7436 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7437 wpalMutexRelease(&pWDICtx->wptMutex);
7438
7439 /*Process the Join Request*/
7440 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7441 wdiJoinRspCb,pEventData->pUserData);
7442
7443}/*WDI_ProcessJoinReq*/
7444
7445
7446/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007447 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007449
7450 @param pWDICtx: pointer to the WLAN DAL context
7451 pEventData: pointer to the event information structure
7452
Jeff Johnson295189b2012-06-20 16:38:30 -07007453 @see
7454 @return Result of the function call
7455*/
7456WDI_Status
7457WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007458(
Jeff Johnson295189b2012-06-20 16:38:30 -07007459 WDI_ControlBlockType* pWDICtx,
7460 WDI_EventInfoType* pEventData
7461)
7462{
7463 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7464 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007465 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007466 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007467 wpt_uint16 uMsgSize = 0;
7468 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007469 wpt_uint16 usDataOffset = 0;
7470 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007471 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007472
Jeff Johnsone7245742012-09-05 17:12:55 -07007473 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7475
7476 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007477 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007478 -------------------------------------------------------------------------*/
7479 if (( NULL == pEventData ) ||
7480 ( NULL == pEventData->pEventData ) ||
7481 ( NULL == pEventData->pCBfnc ))
7482 {
7483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007487 }
7488
7489 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7490 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7491 /*-------------------------------------------------------------------------
7492 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007493 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007494 -------------------------------------------------------------------------*/
7495 wpalMutexAcquire(&pWDICtx->wptMutex);
7496
7497 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007498 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007499 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007500 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7501 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7502 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007503
Jeff Johnsone7245742012-09-05 17:12:55 -07007504 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007505 {
7506#ifdef WLAN_FEATURE_VOWIFI_11R
7507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007508 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007509 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007510 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007511 if ( NULL == pBSSSes )
7512 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007513
Jeff Johnson295189b2012-06-20 16:38:30 -07007514 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7515 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007516
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007518 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007519 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007520
Jeff Johnson295189b2012-06-20 16:38:30 -07007521 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007522 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7523 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007524 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007525
Jeff Johnson295189b2012-06-20 16:38:30 -07007526 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007527 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007528 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7529#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007530 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007531 * Request in case of IBSS*/
7532 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7533 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7534 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7535 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7536 {
7537 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007538 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007539 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007540 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007541 if ( NULL == pBSSSes )
7542 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007543
Jeff Johnson295189b2012-06-20 16:38:30 -07007544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7545 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007546
Jeff Johnson295189b2012-06-20 16:38:30 -07007547 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007548 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007549 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007550
Jeff Johnson295189b2012-06-20 16:38:30 -07007551 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007552 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7553 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007554 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007555
Jeff Johnson295189b2012-06-20 16:38:30 -07007556 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007557 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007558 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7559 }
7560 else
7561 {
7562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007563 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7564 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7565 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7566
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 /* for IBSS testing */
7568 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007569 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007570 }
7571#endif
7572 }
7573
7574 /*------------------------------------------------------------------------
7575 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007576 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007577 ------------------------------------------------------------------------*/
7578 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7579 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7581 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7582 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7583 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007584
Jeff Johnsone7245742012-09-05 17:12:55 -07007585 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007586
7587 wpalMutexRelease(&pWDICtx->wptMutex);
7588
Jeff Johnsone7245742012-09-05 17:12:55 -07007589 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007590 }
7591
7592 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007593 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7594 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007595 sizeof(pWDICtx->wdiCachedConfigBssReq));
7596
7597 wpalMutexRelease(&pWDICtx->wptMutex);
7598
Jeff Johnsone7245742012-09-05 17:12:55 -07007599 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7600#ifdef WLAN_FEATURE_11AC
7601 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007602 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007603 else
7604#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007605 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007606
7607 /*-----------------------------------------------------------------------
7608 Get message buffer
7609 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007610 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007611 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7612 ( usSendSize < (usDataOffset + uMsgSize )))
7613 {
7614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7615 "Unable to get send buffer in config bss req %x %x %x",
7616 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7617 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007618 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007619 }
7620
7621 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007622#ifdef WLAN_FEATURE_11AC
7623 if (WDI_getFwWlanFeatCaps(DOT11AC))
7624 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7625 &pwdiConfigBSSParams->wdiReqInfo);
7626 else
7627#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007628 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 &pwdiConfigBSSParams->wdiReqInfo);
7630
7631 /* Need to fill in the STA Index to invalid, since at this point we have not
7632 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007633 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007634
7635 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007636 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7637
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007638#ifdef WLAN_FEATURE_11AC
7639 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7640 wpalMemoryCopy( pSendBuffer+usDataOffset,
7641 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7642 uMsgSize);
7643 }else
7644#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007645 wpalMemoryCopy( pSendBuffer+usDataOffset,
7646 &halConfigBssReqMsg.uBssParams.configBssParams,
7647 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -07007648
7649 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007650 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007651
7652 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007653 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007654 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007655 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7656 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007657 WDI_CONFIG_BSS_RESP);
7658
7659}/*WDI_ProcessConfigBSSReq*/
7660
7661
7662/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007663 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007664 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007665
7666 @param pWDICtx: pointer to the WLAN DAL context
7667 pEventData: pointer to the event information structure
7668
Jeff Johnson295189b2012-06-20 16:38:30 -07007669 @see
7670 @return Result of the function call
7671*/
7672WDI_Status
7673WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007674(
Jeff Johnson295189b2012-06-20 16:38:30 -07007675 WDI_ControlBlockType* pWDICtx,
7676 WDI_EventInfoType* pEventData
7677)
7678{
7679 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7680 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007681 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007682 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007683 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007684 wpt_uint16 usDataOffset = 0;
7685 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007686 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007687
Jeff Johnsone7245742012-09-05 17:12:55 -07007688 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7690
7691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007692 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007693 -------------------------------------------------------------------------*/
7694 if (( NULL == pEventData ) ||
7695 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7696 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7697 {
7698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007699 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007702 }
7703
7704 /*-------------------------------------------------------------------------
7705 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007706 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007707 -------------------------------------------------------------------------*/
7708 wpalMutexAcquire(&pWDICtx->wptMutex);
7709
7710 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007711 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007712 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007713 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7714 pwdiDelBSSParams->ucBssIdx,
7715 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007716
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007718 {
7719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007720 "%s: BSS does not yet exist. ucBssIdx %d",
7721 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007722
7723 wpalMutexRelease(&pWDICtx->wptMutex);
7724
7725 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007727
7728 /*------------------------------------------------------------------------
7729 Check if this BSS is being currently processed or queued,
7730 if queued - queue the new request as well
7731 ------------------------------------------------------------------------*/
7732 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007733 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7735 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7736 __func__, pwdiDelBSSParams->ucBssIdx);
7737
7738 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7739
7740 wpalMutexRelease(&pWDICtx->wptMutex);
7741
7742 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007743 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007744
Jeff Johnson295189b2012-06-20 16:38:30 -07007745 /*-----------------------------------------------------------------------
7746 If we receive a Del BSS request for an association that is already in
7747 progress, it indicates that the assoc has failed => we no longer have
7748 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007749 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007750 -----------------------------------------------------------------------*/
7751 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7752 {
7753 /*We can switch to false here because even if a subsequent Join comes in
7754 it will only be processed when DAL transitions out of BUSY state which
7755 happens when the Del BSS request comes */
7756 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7757
7758 /*Former association is complete - prepare next pending assoc for
7759 processing */
7760 WDI_DequeueAssocRequest(pWDICtx);
7761 }
7762
7763 wpalMutexRelease(&pWDICtx->wptMutex);
7764 /*-----------------------------------------------------------------------
7765 Get message buffer
7766 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007767 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 sizeof(halBssReqMsg.deleteBssParams),
7769 &pSendBuffer, &usDataOffset, &usSendSize))||
7770 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7771 {
7772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7773 "Unable to get send buffer in start req %x %x %x",
7774 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7775 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007776 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007777 }
7778
7779 /*Fill in the message request structure*/
7780
7781 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007782 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007783
Jeff Johnsone7245742012-09-05 17:12:55 -07007784 wpalMemoryCopy( pSendBuffer+usDataOffset,
7785 &halBssReqMsg.deleteBssParams,
7786 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007787
7788 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007789 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007790
Jeff Johnsone7245742012-09-05 17:12:55 -07007791
Jeff Johnson295189b2012-06-20 16:38:30 -07007792 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007793 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007794 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007795 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007796 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7797
Jeff Johnsone7245742012-09-05 17:12:55 -07007798
Jeff Johnson295189b2012-06-20 16:38:30 -07007799}/*WDI_ProcessDelBSSReq*/
7800
7801/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007802 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007803 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007804
7805 @param pWDICtx: pointer to the WLAN DAL context
7806 pEventData: pointer to the event information structure
7807
Jeff Johnson295189b2012-06-20 16:38:30 -07007808 @see
7809 @return Result of the function call
7810*/
7811WDI_Status
7812WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007813(
Jeff Johnson295189b2012-06-20 16:38:30 -07007814 WDI_ControlBlockType* pWDICtx,
7815 WDI_EventInfoType* pEventData
7816)
7817{
7818 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7819 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007820 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007821 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007822 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007823 wpt_uint16 usDataOffset = 0;
7824 wpt_uint16 usSendSize = 0;
7825 wpt_uint16 uMsgSize = 0;
7826 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007827 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007828
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7831
7832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007833 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 -------------------------------------------------------------------------*/
7835 if (( NULL == pEventData ) ||
7836 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7837 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7838 {
7839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 }
7844
7845 /*-------------------------------------------------------------------------
7846 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007847 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007848 -------------------------------------------------------------------------*/
7849 wpalMutexAcquire(&pWDICtx->wptMutex);
7850
7851 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007852 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007853 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007854 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7855 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7856 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007857
7858 if ( NULL == pBSSSes )
7859 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7861 "%s: Association sequence for this BSS does not yet exist - "
7862 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7863 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007864
7865 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007866 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007867 }
7868
7869 /*------------------------------------------------------------------------
7870 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007871 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007872 ------------------------------------------------------------------------*/
7873 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7874 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7876 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7877 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007878
Jeff Johnsone7245742012-09-05 17:12:55 -07007879 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007880
7881 wpalMutexRelease(&pWDICtx->wptMutex);
7882
Jeff Johnsone7245742012-09-05 17:12:55 -07007883 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007884 }
7885
7886 /*-----------------------------------------------------------------------
7887 If Post Assoc was not yet received - the current association must
7888 be in progress
7889 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007890 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007891 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
7892 {
7893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7894 "Association sequence for this BSS association no longer in "
7895 "progress - not allowed");
7896
7897 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 }
7900
7901 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007902 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07007903 -----------------------------------------------------------------------*/
7904 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
7905 {
7906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7907 "Post Assoc not allowed before JOIN - failing request");
7908
7909 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007910 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007911 }
7912
7913 wpalMutexRelease(&pWDICtx->wptMutex);
7914
7915 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
7916 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
7917 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007918 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07007919 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
7922 ( usSendSize < (usDataOffset + uMsgSize )))
7923 {
7924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7925 "Unable to get send buffer in start req %x %x %x",
7926 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
7927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007929 }
7930
7931 /*Copy the STA parameters */
7932 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
7933 &pwdiPostAssocParams->wdiSTAParams );
7934
7935 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007936 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 WDI_STATableFindStaidByAddr(pWDICtx,
7938 pwdiPostAssocParams->wdiSTAParams.macSTA,
7939 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
7940 {
7941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7942 "This station does not exist in the WDI Station Table %d");
7943 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007944 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 }
7947
7948 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007949 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007950 pBSSSes->ucBSSIdx;
7951
7952 /*Copy the BSS parameters */
7953 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7954 &pwdiPostAssocParams->wdiBSSParams);
7955
7956 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07007957 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07007958 WDI_STATableFindStaidByAddr(pWDICtx,
7959 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07007960 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07007961 {
7962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7963 "This station does not exist in the WDI Station Table %d");
7964 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08007965 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07007966 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007967 }
7968
7969 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 pBSSSes->ucBSSIdx;
7972
Jeff Johnsone7245742012-09-05 17:12:55 -07007973
7974 wpalMemoryCopy( pSendBuffer+usDataOffset,
7975 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
7976 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007977
7978 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
7979
Jeff Johnsone7245742012-09-05 17:12:55 -07007980 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
7981 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
7982 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007983
Jeff Johnsone7245742012-09-05 17:12:55 -07007984
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007986 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007987
Jeff Johnsone7245742012-09-05 17:12:55 -07007988
7989 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07007991 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07007992
7993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007995 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007996 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007997 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
7998
Jeff Johnsone7245742012-09-05 17:12:55 -07007999
Jeff Johnson295189b2012-06-20 16:38:30 -07008000}/*WDI_ProcessPostAssocReq*/
8001
8002/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008003 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008005
8006 @param pWDICtx: pointer to the WLAN DAL context
8007 pEventData: pointer to the event information structure
8008
Jeff Johnson295189b2012-06-20 16:38:30 -07008009 @see
8010 @return Result of the function call
8011*/
8012WDI_Status
8013WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008014(
Jeff Johnson295189b2012-06-20 16:38:30 -07008015 WDI_ControlBlockType* pWDICtx,
8016 WDI_EventInfoType* pEventData
8017)
8018{
8019 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8020 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008023 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008024 wpt_uint16 usDataOffset = 0;
8025 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008026 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008027 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8028
Jeff Johnsone7245742012-09-05 17:12:55 -07008029 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8031
8032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008034 -------------------------------------------------------------------------*/
8035 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8036 ( NULL == pEventData->pCBfnc ))
8037 {
8038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008042 }
8043
8044 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8045 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8046 /*-------------------------------------------------------------------------
8047 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008048 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008049 -------------------------------------------------------------------------*/
8050 wpalMutexAcquire(&pWDICtx->wptMutex);
8051
8052 /*------------------------------------------------------------------------
8053 Find the BSS for which the request is made and identify WDI session
8054 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008055 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8056 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008057 &macBSSID))
8058 {
8059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8060 "This station does not exist in the WDI Station Table %d");
8061 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008063 }
8064
Jeff Johnsone7245742012-09-05 17:12:55 -07008065 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8066 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008067 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8069 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8070 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008071
8072 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008073 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008074 }
8075
8076 /*------------------------------------------------------------------------
8077 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008078 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 ------------------------------------------------------------------------*/
8080 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8081 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8083 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8084 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008085
Jeff Johnsone7245742012-09-05 17:12:55 -07008086 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008087 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008088 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 }
8090
8091 wpalMutexRelease(&pWDICtx->wptMutex);
8092 /*-----------------------------------------------------------------------
8093 Get message buffer
8094 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008095 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008096 sizeof(halDelStaReqMsg.delStaParams),
8097 &pSendBuffer, &usDataOffset, &usSendSize))||
8098 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8099 {
8100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8101 "Unable to get send buffer in start req %x %x %x",
8102 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008105 }
8106
Jeff Johnsone7245742012-09-05 17:12:55 -07008107 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8108 wpalMemoryCopy( pSendBuffer+usDataOffset,
8109 &halDelStaReqMsg.delStaParams,
8110 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008111
8112 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008113 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008114
8115 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008116 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008117 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008118 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008119 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8120
8121}/*WDI_ProcessDelSTAReq*/
8122
8123
8124/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008125 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008126==========================================================================*/
8127/**
8128 @brief Process Set BSS Key Request function (called when Main FSM
8129 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008130
8131 @param pWDICtx: pointer to the WLAN DAL context
8132 pEventData: pointer to the event information structure
8133
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 @see
8135 @return Result of the function call
8136*/
8137WDI_Status
8138WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008139(
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 WDI_ControlBlockType* pWDICtx,
8141 WDI_EventInfoType* pEventData
8142)
8143{
8144 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8145 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008146 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008148 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008149 wpt_uint16 usDataOffset = 0;
8150 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8153 wpt_uint8 keyIndex = 0;
8154
8155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8156
8157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 -------------------------------------------------------------------------*/
8160 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8161 ( NULL == pEventData->pCBfnc ))
8162 {
8163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 }
8168
8169 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8170 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8171 /*-------------------------------------------------------------------------
8172 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008173 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008174 -------------------------------------------------------------------------*/
8175 wpalMutexAcquire(&pWDICtx->wptMutex);
8176
8177 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008178 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008179 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8181 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8182 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008183
Jeff Johnsone7245742012-09-05 17:12:55 -07008184 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008185 {
8186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008187 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8188 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008189
8190 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008191 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008192 }
8193
8194 /*------------------------------------------------------------------------
8195 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008196 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008197 ------------------------------------------------------------------------*/
8198 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8199 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8201 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8202 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008203
Jeff Johnsone7245742012-09-05 17:12:55 -07008204 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008205 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008206 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008207 }
8208
8209
8210 wpalMutexRelease(&pWDICtx->wptMutex);
8211 /*-----------------------------------------------------------------------
8212 Get message buffer
8213 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008214 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008215 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8216 &pSendBuffer, &usDataOffset, &usSendSize))||
8217 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8218 {
8219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8220 "Unable to get send buffer in set bss key req %x %x %x",
8221 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8222 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008223 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008224 }
8225
8226 /*-----------------------------------------------------------------------
8227 Copy the Key parameters into the HAL message
8228 -----------------------------------------------------------------------*/
8229
Jeff Johnsone7245742012-09-05 17:12:55 -07008230 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008231
Jeff Johnsone7245742012-09-05 17:12:55 -07008232 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008233 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8234
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008236 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8237
8238 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8239 keyIndex++)
8240 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008241 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008242 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8243 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8244 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8245 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8246 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8247 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008248 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008250 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008252 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008253 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8254 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008255 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008256 WDI_MAX_KEY_LENGTH);
8257 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008258
8259 wpalMemoryCopy( pSendBuffer+usDataOffset,
8260 &halSetBssKeyReqMsg.setBssKeyParams,
8261 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008262
8263 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008264 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008265
8266 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008267 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008268 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8270 wdiSetBSSKeyRspCb, pEventData->pUserData,
8271 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008272
8273}/*WDI_ProcessSetBssKeyReq*/
8274
8275/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008278
8279 @param pWDICtx: pointer to the WLAN DAL context
8280 pEventData: pointer to the event information structure
8281
Jeff Johnson295189b2012-06-20 16:38:30 -07008282 @see
8283 @return Result of the function call
8284*/
8285WDI_Status
8286WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008287(
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 WDI_ControlBlockType* pWDICtx,
8289 WDI_EventInfoType* pEventData
8290)
8291{
8292 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8293 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008294 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008295 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 wpt_uint16 usDataOffset = 0;
8298 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8302
8303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008305 -------------------------------------------------------------------------*/
8306 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8307 ( NULL == pEventData->pCBfnc ))
8308 {
8309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008313 }
8314
8315 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8316 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8317 /*-------------------------------------------------------------------------
8318 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 -------------------------------------------------------------------------*/
8321 wpalMutexAcquire(&pWDICtx->wptMutex);
8322
8323 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008325 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8327 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8328 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008329
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008331 {
8332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008333 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8334 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008335
8336 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 }
8339
8340 /*------------------------------------------------------------------------
8341 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008342 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008343 ------------------------------------------------------------------------*/
8344 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8345 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8347 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8348 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008349
Jeff Johnsone7245742012-09-05 17:12:55 -07008350 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008351 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008352 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 }
8354
8355
8356 wpalMutexRelease(&pWDICtx->wptMutex);
8357
8358 /*-----------------------------------------------------------------------
8359 Get message buffer
8360 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8363 &pSendBuffer, &usDataOffset, &usSendSize))||
8364 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8365 {
8366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8367 "Unable to get send buffer in set bss key req %x %x %x",
8368 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 }
8372 /*-----------------------------------------------------------------------
8373 Copy the Key parameters into the HAL message
8374 -----------------------------------------------------------------------*/
8375 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8376
Jeff Johnsone7245742012-09-05 17:12:55 -07008377 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008378 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8379
8380 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8381
Jeff Johnsone7245742012-09-05 17:12:55 -07008382 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008383 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8384
Jeff Johnsone7245742012-09-05 17:12:55 -07008385 wpalMemoryCopy( pSendBuffer+usDataOffset,
8386 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8387 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008388
8389 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008391
8392 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008393 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008394 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008395 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008396 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008397 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008398}/*WDI_ProcessRemoveBssKeyReq*/
8399
8400/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008401 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008403
8404 @param pWDICtx: pointer to the WLAN DAL context
8405 pEventData: pointer to the event information structure
8406
Jeff Johnson295189b2012-06-20 16:38:30 -07008407 @see
8408 @return Result of the function call
8409*/
8410WDI_Status
8411WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008412(
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 WDI_ControlBlockType* pWDICtx,
8414 WDI_EventInfoType* pEventData
8415)
8416{
8417 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8418 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8419 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008420 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008421 wpt_uint16 usDataOffset = 0;
8422 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008423 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008425 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008426 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8427 wpt_uint8 keyIndex = 0;
8428
8429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8430
8431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 -------------------------------------------------------------------------*/
8434 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8435 ( NULL == pEventData->pCBfnc ))
8436 {
8437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008441 }
8442
8443 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8444 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8445 /*-------------------------------------------------------------------------
8446 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008447 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008448 -------------------------------------------------------------------------*/
8449 wpalMutexAcquire(&pWDICtx->wptMutex);
8450
8451 /*------------------------------------------------------------------------
8452 Find the BSS for which the request is made and identify WDI session
8453 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8455 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008456 &macBSSID))
8457 {
8458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8459 "This station does not exist in the WDI Station Table %d");
8460 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 }
8463
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8465 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008466 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8468 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8469 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008470
8471 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008472 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008473 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008474
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 /*------------------------------------------------------------------------
8476 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 ------------------------------------------------------------------------*/
8479 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8480 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8482 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8483 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008484
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008488 }
8489
8490
8491 wpalMutexRelease(&pWDICtx->wptMutex);
8492 /*-----------------------------------------------------------------------
8493 Get message buffer
8494 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8497 &pSendBuffer, &usDataOffset, &usSendSize))||
8498 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8499 {
8500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8501 "Unable to get send buffer in set bss key req %x %x %x",
8502 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8503 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 Copy the STA Key parameters into the HAL message
8508 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8511
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008513 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8514
8515 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8516
8517 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8518
8519 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8520
Jeff Johnson295189b2012-06-20 16:38:30 -07008521 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8522 keyIndex++)
8523 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008524 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8526 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8527 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8528 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8529 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8530 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008531 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008532 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008533 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008534 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008535 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008536 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8537 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008538 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 WDI_MAX_KEY_LENGTH);
8540 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008541
Jeff Johnsone7245742012-09-05 17:12:55 -07008542 wpalMemoryCopy( pSendBuffer+usDataOffset,
8543 &halSetStaKeyReqMsg.setStaKeyParams,
8544 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008545
8546 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008548
8549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008552 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8553 wdiSetSTAKeyRspCb, pEventData->pUserData,
8554 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008555
8556}/*WDI_ProcessSetSTAKeyReq*/
8557
8558/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008559 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008560 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008561
8562 @param pWDICtx: pointer to the WLAN DAL context
8563 pEventData: pointer to the event information structure
8564
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 @see
8566 @return Result of the function call
8567*/
8568WDI_Status
8569WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008570(
Jeff Johnson295189b2012-06-20 16:38:30 -07008571 WDI_ControlBlockType* pWDICtx,
8572 WDI_EventInfoType* pEventData
8573)
8574{
8575 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8576 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8577 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008578 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008579 wpt_uint16 usDataOffset = 0;
8580 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008581 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008582 wpt_macAddr macBSSID;
8583 wpt_uint8 ucCurrentBSSSesIdx;
8584 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8586
8587 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008588 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008589 -------------------------------------------------------------------------*/
8590 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8591 ( NULL == pEventData->pCBfnc ))
8592 {
8593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008597 }
8598
8599 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8600 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8601 /*-------------------------------------------------------------------------
8602 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 -------------------------------------------------------------------------*/
8605 wpalMutexAcquire(&pWDICtx->wptMutex);
8606
8607 /*------------------------------------------------------------------------
8608 Find the BSS for which the request is made and identify WDI session
8609 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008610 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8611 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008612 &macBSSID))
8613 {
8614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8615 "This station does not exist in the WDI Station Table %d");
8616 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008618 }
8619
Jeff Johnsone7245742012-09-05 17:12:55 -07008620 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8621 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008622 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8624 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8625 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008626
8627 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008630
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 /*------------------------------------------------------------------------
8632 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 ------------------------------------------------------------------------*/
8635 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8636 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8638 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8639 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008640
Jeff Johnsone7245742012-09-05 17:12:55 -07008641 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008642 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008643 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008644 }
8645
8646
8647
8648 wpalMutexRelease(&pWDICtx->wptMutex);
8649 /*-----------------------------------------------------------------------
8650 Get message buffer
8651 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008653 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8654 &pSendBuffer, &usDataOffset, &usSendSize))||
8655 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8656 {
8657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8658 "Unable to get send buffer in set bss key req %x %x %x",
8659 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008662 }
8663
8664 /*-----------------------------------------------------------------------
8665 Copy the Key parameters into the HAL message
8666 -----------------------------------------------------------------------*/
8667
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8670
Jeff Johnsone7245742012-09-05 17:12:55 -07008671 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008672 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8673
Jeff Johnsone7245742012-09-05 17:12:55 -07008674 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008675 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8676
Jeff Johnsone7245742012-09-05 17:12:55 -07008677 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008678 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8679
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 wpalMemoryCopy( pSendBuffer+usDataOffset,
8681 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8682 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008683
8684 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008686
8687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008688 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008692 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008693
8694}/*WDI_ProcessRemoveSTAKeyReq*/
8695
8696/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008697 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008698 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008699
8700 @param pWDICtx: pointer to the WLAN DAL context
8701 pEventData: pointer to the event information structure
8702
Jeff Johnson295189b2012-06-20 16:38:30 -07008703 @see
8704 @return Result of the function call
8705*/
8706WDI_Status
8707WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008708(
Jeff Johnson295189b2012-06-20 16:38:30 -07008709 WDI_ControlBlockType* pWDICtx,
8710 WDI_EventInfoType* pEventData
8711)
8712{
8713 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8714 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8715 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 wpt_uint16 usDataOffset = 0;
8718 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008719 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8723 wpt_uint8 keyIndex = 0;
8724
8725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8726
8727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008729 -------------------------------------------------------------------------*/
8730 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8731 ( NULL == pEventData->pCBfnc ))
8732 {
8733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 }
8738
8739 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8740 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8741 /*-------------------------------------------------------------------------
8742 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 -------------------------------------------------------------------------*/
8745 wpalMutexAcquire(&pWDICtx->wptMutex);
8746
8747 /*------------------------------------------------------------------------
8748 Find the BSS for which the request is made and identify WDI session
8749 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8751 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008752 &macBSSID))
8753 {
8754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8755 "This station does not exist in the WDI Station Table %d");
8756 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 }
8759
Jeff Johnsone7245742012-09-05 17:12:55 -07008760 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8761 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 {
8763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008764 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8765 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008766
8767 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008769 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008770
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 /*------------------------------------------------------------------------
8772 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008773 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 ------------------------------------------------------------------------*/
8775 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8776 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8778 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8779 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008780
Jeff Johnsone7245742012-09-05 17:12:55 -07008781 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008783 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008784 }
8785
8786
8787 wpalMutexRelease(&pWDICtx->wptMutex);
8788 /*-----------------------------------------------------------------------
8789 Get message buffer
8790 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008792 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8793 &pSendBuffer, &usDataOffset, &usSendSize))||
8794 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8795 {
8796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8797 "Unable to get send buffer in set bss key req %x %x %x",
8798 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8799 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 Copy the STA Key parameters into the HAL message
8804 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8807
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008809 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8810
8811 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8812
8813 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8814
8815 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8816
Jeff Johnson295189b2012-06-20 16:38:30 -07008817 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8818 keyIndex++)
8819 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008820 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008821 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8822 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8823 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8824 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8825 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8826 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008828 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008829 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008830 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8833 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 WDI_MAX_KEY_LENGTH);
8836 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008837
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 wpalMemoryCopy( pSendBuffer+usDataOffset,
8839 &halSetStaKeyReqMsg.setStaKeyParams,
8840 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008841
8842 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008843 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008844
8845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008848 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8849 wdiSetSTAKeyRspCb, pEventData->pUserData,
8850 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008851
8852}/*WDI_ProcessSetSTABcastKeyReq*/
8853
8854/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008855 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008857
8858 @param pWDICtx: pointer to the WLAN DAL context
8859 pEventData: pointer to the event information structure
8860
Jeff Johnson295189b2012-06-20 16:38:30 -07008861 @see
8862 @return Result of the function call
8863*/
8864WDI_Status
8865WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008866(
Jeff Johnson295189b2012-06-20 16:38:30 -07008867 WDI_ControlBlockType* pWDICtx,
8868 WDI_EventInfoType* pEventData
8869)
8870{
8871 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8872 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8873 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008874 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008875 wpt_uint16 usDataOffset = 0;
8876 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008877 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008878 wpt_macAddr macBSSID;
8879 wpt_uint8 ucCurrentBSSSesIdx;
8880 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8882
8883 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008884 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008885 -------------------------------------------------------------------------*/
8886 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8887 ( NULL == pEventData->pCBfnc ))
8888 {
8889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008890 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008891 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008893 }
8894
8895 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8896 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8897 /*-------------------------------------------------------------------------
8898 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008899 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 -------------------------------------------------------------------------*/
8901 wpalMutexAcquire(&pWDICtx->wptMutex);
8902
8903 /*------------------------------------------------------------------------
8904 Find the BSS for which the request is made and identify WDI session
8905 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008906 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8907 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 &macBSSID))
8909 {
8910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8911 "This station does not exist in the WDI Station Table %d");
8912 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 }
8915
Jeff Johnsone7245742012-09-05 17:12:55 -07008916 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8917 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008918 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8920 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8921 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008922
8923 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008924 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008925 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008926
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 /*------------------------------------------------------------------------
8928 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008929 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008930 ------------------------------------------------------------------------*/
8931 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8932 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8934 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8935 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008936
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 }
8941
8942
8943
8944 wpalMutexRelease(&pWDICtx->wptMutex);
8945 /*-----------------------------------------------------------------------
8946 Get message buffer
8947 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008949 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
8950 &pSendBuffer, &usDataOffset, &usSendSize))||
8951 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
8952 {
8953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8954 "Unable to get send buffer in set bss key req %x %x %x",
8955 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
8956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 }
8959
8960 /*-----------------------------------------------------------------------
8961 Copy the Key parameters into the HAL message
8962 -----------------------------------------------------------------------*/
8963
Jeff Johnsone7245742012-09-05 17:12:55 -07008964 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
8966
Jeff Johnsone7245742012-09-05 17:12:55 -07008967 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
8969
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
8972
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
8975
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 wpalMemoryCopy( pSendBuffer+usDataOffset,
8977 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
8978 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008979
8980 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008982
8983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008986 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008987 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008988 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008989
8990}/*WDI_ProcessRemoveSTABcastKeyReq*/
8991
8992/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008994==========================================================================*/
8995/**
8996 @brief Process Add TSpec Request function (called when Main FSM
8997 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008998
8999 @param pWDICtx: pointer to the WLAN DAL context
9000 pEventData: pointer to the event information structure
9001
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 @see
9003 @return Result of the function call
9004*/
9005WDI_Status
9006WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009007(
Jeff Johnson295189b2012-06-20 16:38:30 -07009008 WDI_ControlBlockType* pWDICtx,
9009 WDI_EventInfoType* pEventData
9010)
9011{
9012 WDI_AddTSReqParamsType* pwdiAddTSParams;
9013 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 wpt_uint16 usDataOffset = 0;
9018 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 wpt_macAddr macBSSID;
9021 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009022
Jeff Johnson295189b2012-06-20 16:38:30 -07009023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9024
9025 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 -------------------------------------------------------------------------*/
9028 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9029 ( NULL == pEventData->pCBfnc ))
9030 {
9031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009032 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009033 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 }
9036
9037 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9038 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9039 /*-------------------------------------------------------------------------
9040 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 -------------------------------------------------------------------------*/
9043 wpalMutexAcquire(&pWDICtx->wptMutex);
9044
9045 /*------------------------------------------------------------------------
9046 Find the BSS for which the request is made and identify WDI session
9047 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9049 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009050 &macBSSID))
9051 {
9052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9053 "This station does not exist in the WDI Station Table %d");
9054 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 }
9057
Jeff Johnsone7245742012-09-05 17:12:55 -07009058 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9059 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9062 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9063 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009064
9065 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009068
Jeff Johnson295189b2012-06-20 16:38:30 -07009069 /*------------------------------------------------------------------------
9070 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 ------------------------------------------------------------------------*/
9073 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9074 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9076 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9077 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009078
Jeff Johnsone7245742012-09-05 17:12:55 -07009079 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009080 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009081 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009082 }
9083
9084 wpalMutexRelease(&pWDICtx->wptMutex);
9085 /*-----------------------------------------------------------------------
9086 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009087 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009089 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9090 sizeof(halAddTsParams),
9091 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 &usSendSize))||
9093 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9094 {
9095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9096 "Unable to get send buffer in set bss key req %x %x %x",
9097 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 }
9101
9102 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9103 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9104
9105 //TSPEC IE
9106 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9107 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009110 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009111 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009117 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009118 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009119 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009120 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009121 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009123 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009125 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009130 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009131 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009136 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9138
9139 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009140 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009142 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009143 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009146 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009147 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009148 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009149 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9154
9155 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9160
Jeff Johnsone7245742012-09-05 17:12:55 -07009161 wpalMemoryCopy( pSendBuffer+usDataOffset,
9162 &halAddTsParams,
9163 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009164
9165 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009167
9168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009169 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009174}/*WDI_ProcessAddTSpecReq*/
9175
9176
9177/**
9178 @brief Process Del TSpec Request function (called when Main FSM
9179 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009180
9181 @param pWDICtx: pointer to the WLAN DAL context
9182 pEventData: pointer to the event information structure
9183
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 @see
9185 @return Result of the function call
9186*/
9187WDI_Status
9188WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009189(
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 WDI_ControlBlockType* pWDICtx,
9191 WDI_EventInfoType* pEventData
9192)
9193{
9194 WDI_DelTSReqParamsType* pwdiDelTSParams;
9195 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009197 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009198 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 wpt_uint16 usDataOffset = 0;
9200 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9203
9204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 -------------------------------------------------------------------------*/
9207 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9208 ( NULL == pEventData->pCBfnc ))
9209 {
9210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009211 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 }
9215
9216 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9217 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9218
9219 /*-------------------------------------------------------------------------
9220 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009221 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009222 -------------------------------------------------------------------------*/
9223 wpalMutexAcquire(&pWDICtx->wptMutex);
9224
9225 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009227 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9229 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9230 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009231
Jeff Johnsone7245742012-09-05 17:12:55 -07009232 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009233 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9235 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9236 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9237
Jeff Johnson295189b2012-06-20 16:38:30 -07009238 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009239 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009240 }
9241
9242 /*------------------------------------------------------------------------
9243 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009244 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009245 ------------------------------------------------------------------------*/
9246 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9247 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9249 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9250 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009251
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 }
9256
9257
9258 wpalMutexRelease(&pWDICtx->wptMutex);
9259 /*-----------------------------------------------------------------------
9260 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009261 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009262 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009263 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009264 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9265 &pSendBuffer, &usDataOffset, &usSendSize))||
9266 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9267 {
9268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9269 "Unable to get send buffer in set bss key req %x %x %x",
9270 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 }
9274
Jeff Johnsone7245742012-09-05 17:12:55 -07009275 wpalMemoryCopy( pSendBuffer+usDataOffset,
9276 &pwdiDelTSParams->wdiDelTSInfo,
9277 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009278
9279 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009280 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009281
9282 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009283 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009284 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009285 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9286 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009287}/*WDI_ProcessDelTSpecReq*/
9288
9289/**
9290 @brief Process Update EDCA Params Request function (called when
9291 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009292
9293 @param pWDICtx: pointer to the WLAN DAL context
9294 pEventData: pointer to the event information structure
9295
Jeff Johnson295189b2012-06-20 16:38:30 -07009296 @see
9297 @return Result of the function call
9298*/
9299WDI_Status
9300WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009301(
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 WDI_ControlBlockType* pWDICtx,
9303 WDI_EventInfoType* pEventData
9304)
9305{
9306 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9307 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009310 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009311 wpt_uint16 usDataOffset = 0;
9312 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009313 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009314 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9315
9316 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009317 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009318 -------------------------------------------------------------------------*/
9319 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9320 ( NULL == pEventData->pCBfnc ))
9321 {
9322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009323 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 }
9327
9328 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9329 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9330 /*-------------------------------------------------------------------------
9331 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 -------------------------------------------------------------------------*/
9334 wpalMutexAcquire(&pWDICtx->wptMutex);
9335
9336 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009337 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9340 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9341 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009342
Jeff Johnsone7245742012-09-05 17:12:55 -07009343 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 {
9345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9347 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009348
9349 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 }
9352
9353 /*------------------------------------------------------------------------
9354 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009355 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 ------------------------------------------------------------------------*/
9357 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9358 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9360 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9361 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009362
Jeff Johnsone7245742012-09-05 17:12:55 -07009363 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 }
9367
9368
9369 wpalMutexRelease(&pWDICtx->wptMutex);
9370 /*-----------------------------------------------------------------------
9371 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9376 &pSendBuffer, &usDataOffset, &usSendSize))||
9377 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9378 {
9379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9380 "Unable to get send buffer in set bss key req %x %x %x",
9381 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009384 }
9385
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 wpalMemoryCopy( pSendBuffer+usDataOffset,
9387 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9388 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009389
9390 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009391 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009392
9393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009394 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009395 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9397 wdiUpdateEDCARspCb, pEventData->pUserData,
9398 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009399}/*WDI_ProcessUpdateEDCAParamsReq*/
9400
9401/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009402 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009403 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009404
9405 @param pWDICtx: pointer to the WLAN DAL context
9406 pEventData: pointer to the event information structure
9407
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 @see
9409 @return Result of the function call
9410*/
9411WDI_Status
9412WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009413(
Jeff Johnson295189b2012-06-20 16:38:30 -07009414 WDI_ControlBlockType* pWDICtx,
9415 WDI_EventInfoType* pEventData
9416)
9417{
9418 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9419 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 wpt_uint16 usDataOffset = 0;
9424 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009425 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009426 wpt_macAddr macBSSID;
9427
9428 tAddBASessionReqMsg halAddBASessionReq;
9429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9430
9431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 -------------------------------------------------------------------------*/
9434 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9435 ( NULL == pEventData->pCBfnc ))
9436 {
9437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009438 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009439 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009440 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009441 }
9442
Jeff Johnsone7245742012-09-05 17:12:55 -07009443 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009444 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009445 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9447 /*-------------------------------------------------------------------------
9448 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009449 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009450 -------------------------------------------------------------------------*/
9451 wpalMutexAcquire(&pWDICtx->wptMutex);
9452
9453 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009454 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009455 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009456 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9457 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009458 &macBSSID))
9459 {
9460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9461 "This station does not exist in the WDI Station Table %d");
9462 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009464 }
9465
9466
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009468
Jeff Johnsone7245742012-09-05 17:12:55 -07009469 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009470 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9472 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9473 __func__, MAC_ADDR_ARRAY(macBSSID));
9474
Jeff Johnson295189b2012-06-20 16:38:30 -07009475 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009476 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 }
9478
9479 /*------------------------------------------------------------------------
9480 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009482 ------------------------------------------------------------------------*/
9483 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9484 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9486 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9487 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009488
Jeff Johnsone7245742012-09-05 17:12:55 -07009489 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009491 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 }
9493
9494
9495 wpalMutexRelease(&pWDICtx->wptMutex);
9496 /*-----------------------------------------------------------------------
9497 Get message buffer
9498 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009499 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9500 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009501 sizeof(halAddBASessionReq.addBASessionParams),
9502 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009503 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009504 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9505 {
9506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9507 "Unable to get send buffer in Add BA session req %x %x %x",
9508 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009511 }
9512
9513 halAddBASessionReq.addBASessionParams.staIdx =
9514 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9515 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9516 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9517 WDI_MAC_ADDR_LEN);
9518 halAddBASessionReq.addBASessionParams.baTID =
9519 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9520 halAddBASessionReq.addBASessionParams.baPolicy =
9521 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9522 halAddBASessionReq.addBASessionParams.baBufferSize =
9523 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9524 halAddBASessionReq.addBASessionParams.baTimeout =
9525 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9526 halAddBASessionReq.addBASessionParams.baSSN =
9527 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9528 halAddBASessionReq.addBASessionParams.baDirection =
9529 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9530
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 wpalMemoryCopy( pSendBuffer+usDataOffset,
9532 &halAddBASessionReq.addBASessionParams,
9533 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009534
9535 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009536 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009537
9538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009540 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009541 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9542 wdiAddBASessionRspCb, pEventData->pUserData,
9543 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009544}/*WDI_ProcessAddBASessionReq*/
9545
9546/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009548 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009549
9550 @param pWDICtx: pointer to the WLAN DAL context
9551 pEventData: pointer to the event information structure
9552
Jeff Johnson295189b2012-06-20 16:38:30 -07009553 @see
9554 @return Result of the function call
9555*/
9556WDI_Status
9557WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009558(
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 WDI_ControlBlockType* pWDICtx,
9560 WDI_EventInfoType* pEventData
9561)
9562{
9563 WDI_DelBAReqParamsType* pwdiDelBAParams;
9564 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009565 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009566 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009568 wpt_uint16 usDataOffset = 0;
9569 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 wpt_macAddr macBSSID;
9572 tDelBAParams halDelBAparam;
9573 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9574
9575 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 -------------------------------------------------------------------------*/
9578 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9579 ( NULL == pEventData->pCBfnc ))
9580 {
9581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009582 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009583 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009584 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009585 }
9586
9587 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9588 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9589 /*-------------------------------------------------------------------------
9590 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009591 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 -------------------------------------------------------------------------*/
9593 wpalMutexAcquire(&pWDICtx->wptMutex);
9594
9595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9599 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 &macBSSID))
9601 {
9602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9603 "This station does not exist in the WDI Station Table %d");
9604 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009606 }
9607
Jeff Johnsone7245742012-09-05 17:12:55 -07009608 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009609
Jeff Johnsone7245742012-09-05 17:12:55 -07009610 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009611 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9613 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9614 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009615
9616 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009618 }
9619
9620 /*------------------------------------------------------------------------
9621 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 ------------------------------------------------------------------------*/
9624 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9625 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9627 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9628 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009629
Jeff Johnsone7245742012-09-05 17:12:55 -07009630 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009631 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009632 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 }
9634
9635 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009636 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 sizeof(halDelBAparam),
9638 &pSendBuffer, &usDataOffset, &usSendSize))||
9639 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9640 {
9641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9642 "Unable to get send buffer for DEL BA req %x %x %x",
9643 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 }
9647
9648 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9649 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9650 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9651
Jeff Johnsone7245742012-09-05 17:12:55 -07009652 wpalMemoryCopy( pSendBuffer+usDataOffset,
9653 &halDelBAparam,
9654 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009655
9656 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009657 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009658
9659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009660 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009661 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009662 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9663 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009664}/*WDI_ProcessDelBAReq*/
9665
9666#ifdef FEATURE_WLAN_CCX
9667
9668WDI_Status
9669WDI_ProcessTSMStatsReq
9670(
9671 WDI_ControlBlockType* pWDICtx,
9672 WDI_EventInfoType* pEventData
9673)
9674{
9675 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9676 WDI_TsmRspCb wdiTSMRspCb;
9677 wpt_uint8 ucCurrentBSSSesIdx = 0;
9678 WDI_BSSSessionType* pBSSSes = NULL;
9679 wpt_uint8* pSendBuffer = NULL;
9680 wpt_uint16 usDataOffset = 0;
9681 wpt_uint16 usSendSize = 0;
9682 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9683 tTsmStatsParams halTsmStatsReqParams = {0};
9684
9685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9686
9687 /*-------------------------------------------------------------------------
9688 Sanity check
9689 -------------------------------------------------------------------------*/
9690 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9691 ( NULL == pEventData->pCBfnc ))
9692 {
9693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 WDI_ASSERT(0);
9696 return WDI_STATUS_E_FAILURE;
9697 }
9698
9699 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9700 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9701 /*-------------------------------------------------------------------------
9702 Check to see if we are in the middle of an association, if so queue, if
9703 not it means it is free to process request
9704 -------------------------------------------------------------------------*/
9705 wpalMutexAcquire(&pWDICtx->wptMutex);
9706
9707 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9708 if ( NULL == pBSSSes )
9709 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9711 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9712 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009713
9714 wpalMutexRelease(&pWDICtx->wptMutex);
9715 return WDI_STATUS_E_NOT_ALLOWED;
9716 }
9717
9718 /*------------------------------------------------------------------------
9719 Check if this BSS is being currently processed or queued,
9720 if queued - queue the new request as well
9721 ------------------------------------------------------------------------*/
9722 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9723 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9725 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9726 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009727
9728 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9729 wpalMutexRelease(&pWDICtx->wptMutex);
9730 return wdiStatus;
9731 }
9732
9733 wpalMutexRelease(&pWDICtx->wptMutex);
9734 /*-----------------------------------------------------------------------
9735 Get message buffer
9736 ! TO DO : proper conversion into the HAL Message Request Format
9737 -----------------------------------------------------------------------*/
9738 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9739 sizeof(halTsmStatsReqParams),
9740 &pSendBuffer, &usDataOffset, &usSendSize))||
9741 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9742 {
9743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9744 "Unable to get send buffer in set bss key req %x %x %x",
9745 pEventData, pwdiTSMParams, wdiTSMRspCb);
9746 WDI_ASSERT(0);
9747 return WDI_STATUS_E_FAILURE;
9748 }
9749
9750 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9751 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9752 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9753 WDI_MAC_ADDR_LEN);
9754 wpalMemoryCopy( pSendBuffer+usDataOffset,
9755 &halTsmStatsReqParams,
9756 sizeof(halTsmStatsReqParams));
9757
9758 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9759 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9760
9761 /*-------------------------------------------------------------------------
9762 Send TSM Stats Request to HAL
9763 -------------------------------------------------------------------------*/
9764 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9765 wdiTSMRspCb, pEventData->pUserData,
9766 WDI_TSM_STATS_RESP);
9767}/*WDI_ProcessTSMStatsReq*/
9768
9769#endif
9770
9771
9772/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009775
9776 @param pWDICtx: pointer to the WLAN DAL context
9777 pEventData: pointer to the event information structure
9778
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 @see
9780 @return Result of the function call
9781*/
9782WDI_Status
9783WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009784(
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 WDI_ControlBlockType* pWDICtx,
9786 WDI_EventInfoType* pEventData
9787)
9788{
9789 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9790 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009791 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009792 wpt_uint16 usDataOffset = 0;
9793 wpt_uint16 usSendSize = 0;
9794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9795
9796 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009797 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009798 -------------------------------------------------------------------------*/
9799 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9800 ( NULL == pEventData->pCBfnc ))
9801 {
9802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009806 }
9807
9808 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9809 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9810 /*-----------------------------------------------------------------------
9811 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009814 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009815 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9816 &pSendBuffer, &usDataOffset, &usSendSize))||
9817 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9818 {
9819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9820 "Unable to get send buffer in set bss key req %x %x %x",
9821 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9822 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009823 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009824 }
9825
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 wpalMemoryCopy( pSendBuffer+usDataOffset,
9827 &pwdiFlushAcParams->wdiFlushAcInfo,
9828 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009829
9830 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009832
9833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009834 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009835 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9837 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009838}/*WDI_ProcessFlushAcReq*/
9839
9840/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009841 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009842 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009843
9844 @param pWDICtx: pointer to the WLAN DAL context
9845 pEventData: pointer to the event information structure
9846
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 @see
9848 @return Result of the function call
9849*/
9850WDI_Status
9851WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009852(
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 WDI_ControlBlockType* pWDICtx,
9854 WDI_EventInfoType* pEventData
9855)
9856{
9857 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9858 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009859 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009860 wpt_uint16 usDataOffset = 0;
9861 wpt_uint16 usSendSize = 0;
9862
9863 tBtAmpEventMsg haltBtAmpEventMsg;
9864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9865
9866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009867 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 -------------------------------------------------------------------------*/
9869 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9870 ( NULL == pEventData->pCBfnc ))
9871 {
9872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009873 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009874 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009876 }
9877
9878 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9879 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9880 /*-----------------------------------------------------------------------
9881 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009882 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009883 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009884 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009885 sizeof(haltBtAmpEventMsg.btAmpEventParams),
9886 &pSendBuffer, &usDataOffset, &usSendSize))||
9887 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
9888 {
9889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9890 "Unable to get send buffer in BT AMP event req %x %x %x",
9891 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
9892 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009894 }
9895
Jeff Johnsone7245742012-09-05 17:12:55 -07009896 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -07009898 wpalMemoryCopy( pSendBuffer+usDataOffset,
9899 &haltBtAmpEventMsg.btAmpEventParams,
9900 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009901
9902 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009903 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009904
9905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009907 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9909 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009910}/*WDI_ProcessBtAmpEventReq*/
9911
9912/**
9913 @brief Process Add STA self Request function (called when Main FSM
9914 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009915
9916 @param pWDICtx: pointer to the WLAN DAL context
9917 pEventData: pointer to the event information structure
9918
Jeff Johnson295189b2012-06-20 16:38:30 -07009919 @see
9920 @return Result of the function call
9921*/
9922WDI_Status
9923WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009924(
Jeff Johnson295189b2012-06-20 16:38:30 -07009925 WDI_ControlBlockType* pWDICtx,
9926 WDI_EventInfoType* pEventData
9927)
9928{
9929 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
9930 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009931 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009932 wpt_uint16 usDataOffset = 0;
9933 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009934 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07009935 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9936
9937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009938 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009939 -------------------------------------------------------------------------*/
9940 if (( NULL == pEventData ) ||
9941 ( NULL == pEventData->pEventData) ||
9942 ( NULL == pEventData->pCBfnc))
9943 {
9944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009948 }
9949
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009951 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009952 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009953 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
9954 /*-----------------------------------------------------------------------
9955 Get message buffer
9956 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9958 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009959 sizeof(tAddStaSelfParams),
9960 &pSendBuffer, &usDataOffset, &usSendSize))||
9961 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
9962 {
9963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9964 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
9965 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
9966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009968 }
9969
9970 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009971 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009972 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
9973
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
9976
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
9978 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009979
9980 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009981 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009982
9983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009984 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9987 wdiAddSTASelfReqRspCb, pEventData->pUserData,
9988 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009989}/*WDI_ProcessAddSTASelfReq*/
9990
9991
9992
9993/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009994 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009995 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009996
9997 @param pWDICtx: pointer to the WLAN DAL context
9998 pEventData: pointer to the event information structure
9999
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 @see
10001 @return Result of the function call
10002*/
10003WDI_Status
10004WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010005(
Jeff Johnson295189b2012-06-20 16:38:30 -070010006 WDI_ControlBlockType* pWDICtx,
10007 WDI_EventInfoType* pEventData
10008)
10009{
10010 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10011 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010012 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010013 wpt_uint16 usDataOffset = 0;
10014 wpt_uint16 usSendSize = 0;
10015 tDelStaSelfParams halSetDelSelfSTAParams;
10016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10017
10018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010020 -------------------------------------------------------------------------*/
10021 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10022 ( NULL == pEventData->pCBfnc ))
10023 {
10024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010028 }
10029
Jeff Johnsone7245742012-09-05 17:12:55 -070010030 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010031 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10032 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10033
10034 /*-----------------------------------------------------------------------
10035 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10040 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10043 {
10044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10045 "Unable to get send buffer in Del Sta Self req %x %x %x",
10046 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 }
10050
Jeff Johnsone7245742012-09-05 17:12:55 -070010051 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10053
Jeff Johnsone7245742012-09-05 17:12:55 -070010054 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10055 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010056
10057 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010058 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010059
10060 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010061 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010062 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010063 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10064 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 WDI_DEL_STA_SELF_RESP);
10066
10067}
10068
Jeff Johnsone7245742012-09-05 17:12:55 -070010069#ifdef FEATURE_OEM_DATA_SUPPORT
10070/**
10071 @brief Process Start Oem Data Request function (called when Main
10072 FSM allows it)
10073
10074 @param pWDICtx: pointer to the WLAN DAL context
10075 pEventData: pointer to the event information structure
10076
10077 @see
10078 @return Result of the function call
10079*/
10080WDI_Status
10081WDI_ProcessStartOemDataReq
10082(
10083 WDI_ControlBlockType* pWDICtx,
10084 WDI_EventInfoType* pEventData
10085)
10086{
10087 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10088 WDI_oemDataRspCb wdiOemDataRspCb;
10089 wpt_uint8* pSendBuffer = NULL;
10090 wpt_uint16 usDataOffset = 0;
10091 wpt_uint16 usSendSize = 0;
10092 wpt_uint16 reqLen;
10093 tStartOemDataReqParams* halStartOemDataReqParams;
10094
10095 /*-------------------------------------------------------------------------
10096 Sanity check
10097 -------------------------------------------------------------------------*/
10098 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10099 ( NULL == pEventData->pCBfnc ))
10100 {
10101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010102 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010103 WDI_ASSERT(0);
10104 return WDI_STATUS_E_FAILURE;
10105 }
10106
10107 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10108 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10109
10110 /*-----------------------------------------------------------------------
10111 Get message buffer
10112 -----------------------------------------------------------------------*/
10113
10114 reqLen = sizeof(tStartOemDataReqParams);
10115
10116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10117 WDI_START_OEM_DATA_REQ, reqLen,
10118 &pSendBuffer, &usDataOffset, &usSendSize))||
10119 (usSendSize < (usDataOffset + reqLen)))
10120 {
10121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10122 "Unable to get send buffer in Start Oem Data req %x %x %x",
10123 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10124 WDI_ASSERT(0);
10125 return WDI_STATUS_E_FAILURE;
10126 }
10127
10128 //copying WDI OEM DATA REQ PARAMS to shared memory
10129 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10130
10131 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10132 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10133
10134 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10135 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10136
10137 /*-------------------------------------------------------------------------
10138 Send Start Request to HAL
10139 -------------------------------------------------------------------------*/
10140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10141 wdiOemDataRspCb, pEventData->pUserData,
10142 WDI_START_OEM_DATA_RESP);
10143}/*WDI_ProcessStartOemDataReq*/
10144#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010145
10146/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010147 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010148 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010149
10150 @param pWDICtx: pointer to the WLAN DAL context
10151 pEventData: pointer to the event information structure
10152
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 @see
10154 @return Result of the function call
10155*/
10156WDI_Status
10157WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010158(
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 WDI_ControlBlockType* pWDICtx,
10160 WDI_EventInfoType* pEventData
10161)
10162{
10163 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10164 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 wpt_uint16 usDataOffset = 0;
10167 wpt_uint16 usSendSize = 0;
10168 tHalWlanHostResumeReqParam halResumeReqParams;
10169
10170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10171
10172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 -------------------------------------------------------------------------*/
10175 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10176 ( NULL == pEventData->pCBfnc ))
10177 {
10178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010179 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 }
10183
10184 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10185 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10186
10187 /*-----------------------------------------------------------------------
10188 Get message buffer
10189 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010190 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010191 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10192 &pSendBuffer, &usDataOffset, &usSendSize))||
10193 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10194 {
10195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010196 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010197 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 }
10201
Jeff Johnsone7245742012-09-05 17:12:55 -070010202 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010203 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010204
10205 wpalMemoryCopy( pSendBuffer+usDataOffset,
10206 &halResumeReqParams,
10207 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010208
10209 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010211
10212 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010213 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010214 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010215 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10216 wdiHostResumeRspCb, pEventData->pUserData,
10217 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010218}/*WDI_ProcessHostResumeReq*/
10219
10220/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010221 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010222 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010223
10224 @param pWDICtx: pointer to the WLAN DAL context
10225 pEventData: pointer to the event information structure
10226
Jeff Johnson295189b2012-06-20 16:38:30 -070010227 @see
10228 @return Result of the function call
10229*/
10230WDI_Status
10231WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010232(
Jeff Johnson295189b2012-06-20 16:38:30 -070010233 WDI_ControlBlockType* pWDICtx,
10234 WDI_EventInfoType* pEventData
10235)
10236{
10237 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10238 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010239 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010240 wpt_uint16 usDataOffset = 0;
10241 wpt_uint16 usSendSize = 0;
10242 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10244
10245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 -------------------------------------------------------------------------*/
10248 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10249 ( NULL == pEventData->pCBfnc ))
10250 {
10251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010252 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 }
10256
10257 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10258 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010259
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 /*-----------------------------------------------------------------------
10261 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010264 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010265 sizeof(halTxPerTrackingReqParam),
10266 &pSendBuffer, &usDataOffset, &usSendSize))||
10267 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10268 {
10269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10270 "Unable to get send buffer in set tx per tracking req %x %x %x",
10271 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10272 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010274 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010275
Jeff Johnson295189b2012-06-20 16:38:30 -070010276 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10277 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10278 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10279 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010280
10281 wpalMemoryCopy( pSendBuffer+usDataOffset,
10282 &halTxPerTrackingReqParam,
10283 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010284
10285 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010286 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010287
10288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010289 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010290 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010291 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10292 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010293}/*WDI_ProcessSetTxPerTrackingReq*/
10294
10295/*=========================================================================
10296 Indications
10297=========================================================================*/
10298
10299/**
10300 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010301
10302 @param pWDICtx: pointer to the WLAN DAL context
10303 pEventData: pointer to the event information structure
10304
Jeff Johnson295189b2012-06-20 16:38:30 -070010305 @see
10306 @return Result of the function call
10307*/
10308WDI_Status
10309WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010310(
Jeff Johnson295189b2012-06-20 16:38:30 -070010311 WDI_ControlBlockType* pWDICtx,
10312 WDI_EventInfoType* pEventData
10313)
10314{
10315 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010316 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 wpt_uint16 usDataOffset = 0;
10318 wpt_uint16 usSendSize = 0;
10319 WDI_Status wdiStatus;
10320 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10322
10323 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010324 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010325 -------------------------------------------------------------------------*/
10326 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10327 {
10328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010329 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010332 }
10333
10334 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10335
10336 /*-----------------------------------------------------------------------
10337 Get message buffer
10338 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010339 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10340 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 sizeof(halWlanSuspendIndparams),
10342 &pSendBuffer, &usDataOffset, &usSendSize))||
10343 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10344 {
10345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10346 "Unable to get send buffer in Suspend Ind ");
10347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010349 }
10350
10351 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10352 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10353
Jeff Johnsone7245742012-09-05 17:12:55 -070010354 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010355 WDI_GetActiveSessionsCount(pWDICtx);
10356
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10358 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010359
10360 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010361 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010362 -------------------------------------------------------------------------*/
10363 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010364 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010365
Jeff Johnsone7245742012-09-05 17:12:55 -070010366 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010367 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10368}/*WDI_ProcessHostSuspendInd*/
10369
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010370
10371
10372/**
10373 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10374
10375 @param pWDICtx: pointer to the WLAN DAL context
10376 pEventData: pointer to the event information structure
10377
10378 @see
10379 @return Result of the function call
10380*/
10381WDI_Status
10382WDI_ProcessTrafficStatsInd
10383(
10384 WDI_ControlBlockType* pWDICtx,
10385 WDI_EventInfoType* pEventData
10386)
10387{
10388 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10389 wpt_uint8* pSendBuffer = NULL;
10390 wpt_uint16 usDataOffset = 0;
10391 wpt_uint16 usSendSize = 0;
10392 WDI_Status wdiStatus;
10393 tStatsClassBIndParams* pStatsClassBIndParams;
10394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10395
10396 /*-------------------------------------------------------------------------
10397 Sanity check
10398 -------------------------------------------------------------------------*/
10399 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10400 {
10401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10402 "%s: Invalid parameters in Traffic Stats ind",__func__);
10403 WDI_ASSERT(0);
10404 return WDI_STATUS_E_FAILURE;
10405 }
10406
10407 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10408
10409 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10410 {
10411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10412 "%s: Invalid parameters in Traffic Stats ind",__func__);
10413 WDI_ASSERT(0);
10414 return WDI_STATUS_E_FAILURE;
10415 }
10416
10417 /*-----------------------------------------------------------------------
10418 Get message buffer
10419 -----------------------------------------------------------------------*/
10420 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10421 WDI_TRAFFIC_STATS_IND,
10422 sizeof(tStatsClassBIndParams),
10423 &pSendBuffer, &usDataOffset, &usSendSize))||
10424 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10425 {
10426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10427 "Unable to get send buffer in Traffic Stats Ind ");
10428 WDI_ASSERT(0);
10429 return WDI_STATUS_E_FAILURE;
10430 }
10431
10432 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10433
10434 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10435
10436 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10437 pTrafficStatsIndParams->pTrafficStats,
10438 pTrafficStatsIndParams->length);
10439
10440 /*-------------------------------------------------------------------------
10441 Send Suspend Request to HAL
10442 -------------------------------------------------------------------------*/
10443 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10444 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10445
10446 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10447 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10448}/*WDI_ProcessTrafficStatsInd*/
10449
Jeff Johnson295189b2012-06-20 16:38:30 -070010450/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010451 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010452==========================================================================*/
10453/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010455 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010456
10457 @param pWDICtx: pointer to the WLAN DAL context
10458 pEventData: pointer to the event information structure
10459
Jeff Johnson295189b2012-06-20 16:38:30 -070010460 @see
10461 @return Result of the function call
10462*/
10463WDI_Status
10464WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010465(
Jeff Johnson295189b2012-06-20 16:38:30 -070010466 WDI_ControlBlockType* pWDICtx,
10467 WDI_EventInfoType* pEventData
10468)
10469{
10470 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10471 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010472 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 wpt_uint16 usDataOffset = 0;
10474 wpt_uint16 usSendSize = 0;
10475 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10476 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10477
10478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010479 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010480 -------------------------------------------------------------------------*/
10481 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10482 ( NULL == pEventData->pCBfnc ))
10483 {
10484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010485 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010486 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010487 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 }
10489
10490 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10491 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10492 /*-----------------------------------------------------------------------
10493 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010494 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010495 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 sizeof(halSwitchChannelReq.switchChannelParams),
10498 &pSendBuffer, &usDataOffset, &usSendSize))||
10499 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10500 {
10501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10502 "Unable to get send buffer in channel switch req %x %x %x",
10503 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10504 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010506 }
10507
Jeff Johnsone7245742012-09-05 17:12:55 -070010508 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010509 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010510#ifndef WLAN_FEATURE_VOWIFI
10511 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010512 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10513#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010514 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010515 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10516
10517#ifdef WLAN_FEATURE_VOWIFI
10518 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010519 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010520 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10521 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10522 WDI_MAC_ADDR_LEN);
10523 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10524 pwdiSwitchChParams->wdiChInfo.macBSSId,
10525 WDI_MAC_ADDR_LEN);
10526#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 wpalMemoryCopy( pSendBuffer+usDataOffset,
10528 &halSwitchChannelReq.switchChannelParams,
10529 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010530
10531 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010533
10534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10538 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010539}/*WDI_ProcessChannelSwitchReq*/
10540
10541/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010543 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010544
10545 @param pWDICtx: pointer to the WLAN DAL context
10546 pEventData: pointer to the event information structure
10547
Jeff Johnson295189b2012-06-20 16:38:30 -070010548 @see
10549 @return Result of the function call
10550*/
10551WDI_Status
10552WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010553(
Jeff Johnson295189b2012-06-20 16:38:30 -070010554 WDI_ControlBlockType* pWDICtx,
10555 WDI_EventInfoType* pEventData
10556)
10557{
10558 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10559 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010560 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010561 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010562 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010563 wpt_uint16 usDataOffset = 0;
10564 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010565 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010566
Jeff Johnsone7245742012-09-05 17:12:55 -070010567 tConfigStaReqMsg halConfigStaReqMsg;
10568 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10570
10571 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010572 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010573 -------------------------------------------------------------------------*/
10574 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10575 ( NULL == pEventData->pCBfnc ))
10576 {
10577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010578 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010581 }
10582
10583 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10584 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10585 /*-------------------------------------------------------------------------
10586 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010587 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010588 -------------------------------------------------------------------------*/
10589 wpalMutexAcquire(&pWDICtx->wptMutex);
10590
10591 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010593 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10595 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10596 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010597
Jeff Johnsone7245742012-09-05 17:12:55 -070010598 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010599 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10601 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10602 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010603
10604 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010606 }
10607
10608 /*------------------------------------------------------------------------
10609 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010610 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010611 ------------------------------------------------------------------------*/
10612 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10613 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10615 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10616 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010617
Jeff Johnsone7245742012-09-05 17:12:55 -070010618 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010620 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010621 }
10622
10623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010624
10625 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10626#ifdef WLAN_FEATURE_11AC
10627 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010628 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010629 else
10630#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010631 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010632
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 /*-----------------------------------------------------------------------
10634 Get message buffer
10635 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010636 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10637 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010639 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010640 {
10641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10642 "Unable to get send buffer in config sta req %x %x %x",
10643 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 }
10647
10648 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010649 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010650 &pwdiConfigSTAParams->wdiReqInfo);
10651
10652 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10653 {
10654 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010655 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010656 WDI_STATableFindStaidByAddr(pWDICtx,
10657 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010658 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010659 {
10660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10661 "This station does not exist in the WDI Station Table %d");
10662 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010663 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 }
10666 }
10667 else
10668 {
10669 /* Need to fill in the STA Index to invalid, since at this point we have not
10670 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -070010671 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070010672 }
10673
10674 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010675 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010676
Jeff Johnsone7245742012-09-05 17:12:55 -070010677 wpalMemoryCopy( pSendBuffer+usDataOffset,
10678 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010679 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010680
10681 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010682 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010683
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10685 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010686 sizeof(pWDICtx->wdiCachedConfigStaReq));
10687
10688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010689 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010690 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10692 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010693}/*WDI_ProcessConfigStaReq*/
10694
10695
10696/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010697 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010698 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010699
10700 @param pWDICtx: pointer to the WLAN DAL context
10701 pEventData: pointer to the event information structure
10702
Jeff Johnson295189b2012-06-20 16:38:30 -070010703 @see
10704 @return Result of the function call
10705*/
10706WDI_Status
10707WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010708(
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 WDI_ControlBlockType* pWDICtx,
10710 WDI_EventInfoType* pEventData
10711)
10712{
10713 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10714 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010715 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010716 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010718 wpt_uint16 usDataOffset = 0;
10719 wpt_uint16 usSendSize = 0;
10720 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010721 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010722 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10723
10724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010725 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 -------------------------------------------------------------------------*/
10727 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10728 ( NULL == pEventData->pCBfnc ))
10729 {
10730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010731 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010732 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010733 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010734 }
10735
10736 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10737 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10738 /*-------------------------------------------------------------------------
10739 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 -------------------------------------------------------------------------*/
10742 wpalMutexAcquire(&pWDICtx->wptMutex);
10743
10744 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010745 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010747 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10748 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10749 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010750
Jeff Johnsone7245742012-09-05 17:12:55 -070010751 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010752 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010754 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10755 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010756 }
10757 else
10758 {
10759 /*------------------------------------------------------------------------
10760 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010761 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010762 ------------------------------------------------------------------------*/
10763 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10764 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10766 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10767 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10768
10769 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010770 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010771 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010772 }
10773 }
10774 /* If the link is set to enter IDLE - the Session allocated for this BSS
10775 will be deleted on the Set Link State response coming from HAL
10776 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010778 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10779
10780 wpalMutexRelease(&pWDICtx->wptMutex);
10781 /*-----------------------------------------------------------------------
10782 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010783 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010784 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010785
10786 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010787 sizeof(halLinkStateReqMsg),
10788 &pSendBuffer, &usDataOffset, &usSendSize))||
10789 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10790 {
10791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10792 "Unable to get send buffer in set bss key req %x %x %x",
10793 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010796 }
10797
10798 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10799 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10800
10801 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10802 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10803
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10806
Jeff Johnsone7245742012-09-05 17:12:55 -070010807 wpalMemoryCopy( pSendBuffer+usDataOffset,
10808 &halLinkStateReqMsg,
10809 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010810
10811 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010812 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010813
10814 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10818 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010819}/*WDI_ProcessSetLinkStateReq*/
10820
10821
10822/**
10823 @brief Process Get Stats Request function (called when Main FSM
10824 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010825
10826 @param pWDICtx: pointer to the WLAN DAL context
10827 pEventData: pointer to the event information structure
10828
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 @see
10830 @return Result of the function call
10831*/
10832WDI_Status
10833WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010834(
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 WDI_ControlBlockType* pWDICtx,
10836 WDI_EventInfoType* pEventData
10837)
10838{
10839 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
10840 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 wpt_uint16 usDataOffset = 0;
10843 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010845 WDI_BSSSessionType* pBSSSes = NULL;
10846 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010848 tHalStatsReqMsg halStatsReqMsg;
10849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10850
10851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010852 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010853 -------------------------------------------------------------------------*/
10854 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10855 ( NULL == pEventData->pCBfnc ) )
10856 {
10857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010858 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010861 }
10862
10863 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
10864 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10865
10866 /*-------------------------------------------------------------------------
10867 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 -------------------------------------------------------------------------*/
10870 wpalMutexAcquire(&pWDICtx->wptMutex);
10871
10872 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010874 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10876 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010877 &macBSSID))
10878 {
10879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10880 "This station does not exist in the WDI Station Table %d");
10881 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010883 }
10884
Jeff Johnsone7245742012-09-05 17:12:55 -070010885 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10886 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10889 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10890 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010891
10892 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010893 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010894 }
10895
10896 /*------------------------------------------------------------------------
10897 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010898 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 ------------------------------------------------------------------------*/
10900 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10901 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10903 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10904 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010905
Jeff Johnsone7245742012-09-05 17:12:55 -070010906 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010907 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010908 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010909 }
10910
10911
10912 wpalMutexRelease(&pWDICtx->wptMutex);
10913
10914 /*-----------------------------------------------------------------------
10915 Get message buffer
10916 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010917 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010918 sizeof(halStatsReqMsg.statsReqParams),
10919 &pSendBuffer, &usDataOffset, &usSendSize))||
10920 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
10921 {
10922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10923 "Unable to get send buffer in set bss key req %x %x %x",
10924 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
10925 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010927 }
10928
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010930 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070010931 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070010932 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070010933 wpalMemoryCopy( pSendBuffer+usDataOffset,
10934 &halStatsReqMsg.statsReqParams,
10935 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010936
10937 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010938 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010939
10940 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010941 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010942 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010943 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10944 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010945}/*WDI_ProcessGetStatsReq*/
10946
Srinivas Girigowda2471d832013-01-25 13:33:11 -080010947#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
10948/**
10949 @brief Process Get Roam Rssi Request function (called when Main FSM
10950 allows it)
10951
10952 @param pWDICtx: pointer to the WLAN DAL context
10953 pEventData: pointer to the event information structure
10954
10955 @see
10956 @return Result of the function call
10957*/
10958WDI_Status
10959WDI_ProcessGetRoamRssiReq
10960(
10961 WDI_ControlBlockType* pWDICtx,
10962 WDI_EventInfoType* pEventData
10963)
10964{
10965 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
10966 WDI_GetStatsRspCb wdiGetStatsRspCb;
10967 wpt_uint8* pSendBuffer = NULL;
10968 wpt_uint16 usDataOffset = 0;
10969 wpt_uint16 usSendSize = 0;
10970 wpt_uint8 ucCurrentBSSSesIdx = 0;
10971 WDI_BSSSessionType* pBSSSes = NULL;
10972 wpt_macAddr macBSSID;
10973 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10974 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
10975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10976 /*-------------------------------------------------------------------------
10977 Sanity check
10978 -------------------------------------------------------------------------*/
10979 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
10980 ( NULL == pEventData->pCBfnc ) )
10981 {
10982 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10983 "%s: Invalid parameters", __func__);
10984 WDI_ASSERT(0);
10985 return WDI_STATUS_E_FAILURE;
10986 }
10987
10988 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
10989 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
10990
10991 /*-------------------------------------------------------------------------
10992 Check to see if we are in the middle of an association, if so queue, if
10993 not it means it is free to process request
10994 -------------------------------------------------------------------------*/
10995 wpalMutexAcquire(&pWDICtx->wptMutex);
10996
10997 /*------------------------------------------------------------------------
10998 Find the BSS for which the request is made
10999 ------------------------------------------------------------------------*/
11000 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11001 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11002 &macBSSID))
11003 {
11004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11005 "This station does not exist in the WDI Station Table %d");
11006 wpalMutexRelease(&pWDICtx->wptMutex);
11007 return WDI_STATUS_E_FAILURE;
11008 }
11009
11010 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11011 if ( NULL == pBSSSes )
11012 {
11013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11014 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11015 __func__, MAC_ADDR_ARRAY(macBSSID));
11016
11017 wpalMutexRelease(&pWDICtx->wptMutex);
11018 return WDI_STATUS_E_NOT_ALLOWED;
11019 }
11020
11021 /*------------------------------------------------------------------------
11022 Check if this BSS is being currently processed or queued,
11023 if queued - queue the new request as well
11024 ------------------------------------------------------------------------*/
11025 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11026 {
11027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11028 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11029 __func__, MAC_ADDR_ARRAY(macBSSID));
11030
11031 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11032 wpalMutexRelease(&pWDICtx->wptMutex);
11033 return wdiStatus;
11034 }
11035
11036 wpalMutexRelease(&pWDICtx->wptMutex);
11037
11038 /*-----------------------------------------------------------------------
11039 Get message buffer
11040 -----------------------------------------------------------------------*/
11041 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11042 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11043 &pSendBuffer, &usDataOffset, &usSendSize))||
11044 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11045 {
11046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11047 "Unable to get send buffer in set bss key req %x %x %x",
11048 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11049 WDI_ASSERT(0);
11050 return WDI_STATUS_E_FAILURE;
11051 }
11052
11053 halRssiRoamReqMsg.roamRssiReqParams.staId =
11054 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11055 wpalMemoryCopy( pSendBuffer+usDataOffset,
11056 &halRssiRoamReqMsg.roamRssiReqParams,
11057 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11058
11059 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11060 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11061
11062 /*-------------------------------------------------------------------------
11063 Send Get STA Request to HAL
11064 -------------------------------------------------------------------------*/
11065 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11066 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11067}/*WDI_ProcessGetRoamRssiReq*/
11068#endif
11069
Jeff Johnson295189b2012-06-20 16:38:30 -070011070/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011071 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011072 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011073
11074 @param pWDICtx: pointer to the WLAN DAL context
11075 pEventData: pointer to the event information structure
11076
Jeff Johnson295189b2012-06-20 16:38:30 -070011077 @see
11078 @return Result of the function call
11079*/
11080WDI_Status
11081WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011082(
Jeff Johnson295189b2012-06-20 16:38:30 -070011083 WDI_ControlBlockType* pWDICtx,
11084 WDI_EventInfoType* pEventData
11085)
11086{
11087 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11088 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11089
Jeff Johnsone7245742012-09-05 17:12:55 -070011090 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011091 wpt_uint16 usDataOffset = 0;
11092 wpt_uint16 usSendSize = 0;
11093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11094
11095 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011096 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011097 -------------------------------------------------------------------------*/
11098 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11099 ( NULL == pEventData->pCBfnc))
11100 {
11101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011102 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011103 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011105 }
11106
11107 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11108 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11109
11110 /*-----------------------------------------------------------------------
11111 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011112 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011113 -----------------------------------------------------------------------*/
11114
Jeff Johnsone7245742012-09-05 17:12:55 -070011115 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011116 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11117 &pSendBuffer, &usDataOffset, &usSendSize))||
11118 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11119 {
11120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11121 "Unable to get send buffer in set bss key req %x %x %x",
11122 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11123 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011124 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011125 }
11126
Jeff Johnsone7245742012-09-05 17:12:55 -070011127 wpalMemoryCopy( pSendBuffer+usDataOffset,
11128 &pwdiUpdateCfgParams->uConfigBufferLen,
11129 sizeof(wpt_uint32));
11130 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11131 pwdiUpdateCfgParams->pConfigBuffer,
11132 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011133
11134 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011135 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011136
11137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011138 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011139 -------------------------------------------------------------------------*/
11140
Jeff Johnsone7245742012-09-05 17:12:55 -070011141 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11142 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011143
11144}/*WDI_ProcessUpdateCfgReq*/
11145
11146
11147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011148 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011149 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011150
11151 @param pWDICtx: pointer to the WLAN DAL context
11152 pEventData: pointer to the event information structure
11153
Jeff Johnson295189b2012-06-20 16:38:30 -070011154 @see
11155 @return Result of the function call
11156*/
11157WDI_Status
11158WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011159(
Jeff Johnson295189b2012-06-20 16:38:30 -070011160 WDI_ControlBlockType* pWDICtx,
11161 WDI_EventInfoType* pEventData
11162)
11163{
11164 WDI_AddBAReqParamsType* pwdiAddBAParams;
11165 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011166 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011167 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 wpt_uint16 usDataOffset = 0;
11170 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011171 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011172 wpt_macAddr macBSSID;
11173
11174 tAddBAReqMsg halAddBAReq;
11175 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11176
11177 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011178 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011179 -------------------------------------------------------------------------*/
11180 if (( NULL == pEventData ) ||
11181 ( NULL == pEventData->pEventData) ||
11182 ( NULL == pEventData->pCBfnc ))
11183 {
11184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011185 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011186 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011188 }
11189
11190 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11191 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11192
11193 /*-------------------------------------------------------------------------
11194 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011195 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011196 -------------------------------------------------------------------------*/
11197 wpalMutexAcquire(&pWDICtx->wptMutex);
11198
11199 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011200 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011201 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011202 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11203 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011204 &macBSSID))
11205 {
11206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11207 "This station does not exist in the WDI Station Table %d");
11208 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 }
11211
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11213 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011214 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11216 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11217 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011218
11219 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011220 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011221 }
11222
11223 /*------------------------------------------------------------------------
11224 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011225 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011226 ------------------------------------------------------------------------*/
11227 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11228 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11230 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11231 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011232
Jeff Johnsone7245742012-09-05 17:12:55 -070011233 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011234 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011236 }
11237
11238
11239 wpalMutexRelease(&pWDICtx->wptMutex);
11240 /*-----------------------------------------------------------------------
11241 Get message buffer
11242 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011243 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011244 sizeof(halAddBAReq.addBAParams),
11245 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011247 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11248 {
11249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11250 "Unable to get send buffer in Add BA req %x %x %x",
11251 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11252 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011253 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011254 }
11255
Jeff Johnsone7245742012-09-05 17:12:55 -070011256 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011257 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11258 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11259#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011260 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11262#endif
11263
Jeff Johnsone7245742012-09-05 17:12:55 -070011264 wpalMemoryCopy( pSendBuffer+usDataOffset,
11265 &halAddBAReq.addBAParams,
11266 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011267
11268 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011269 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011270
11271 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011272 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011273 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011274 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11275 wdiAddBARspCb, pEventData->pUserData,
11276 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011277}/*WDI_ProcessAddBAReq*/
11278
11279
11280
11281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011282 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011283 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011284
11285 @param pWDICtx: pointer to the WLAN DAL context
11286 pEventData: pointer to the event information structure
11287
Jeff Johnson295189b2012-06-20 16:38:30 -070011288 @see
11289 @return Result of the function call
11290*/
11291WDI_Status
11292WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011293(
Jeff Johnson295189b2012-06-20 16:38:30 -070011294 WDI_ControlBlockType* pWDICtx,
11295 WDI_EventInfoType* pEventData
11296)
11297{
11298 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11299 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011300 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011301 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011302 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 wpt_uint16 usDataOffset = 0;
11304 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011305 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011306 wpt_uint16 index;
11307 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011308
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 tTriggerBAReqMsg halTriggerBAReq;
11310 tTriggerBaReqCandidate* halTriggerBACandidate;
11311 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11313
11314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011315 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011316 -------------------------------------------------------------------------*/
11317 if (( NULL == pEventData ) ||
11318 ( NULL == pEventData->pEventData ) ||
11319 ( NULL == pEventData->pCBfnc ))
11320 {
11321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011322 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011325 }
11326
11327 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11328 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11329 /*-------------------------------------------------------------------------
11330 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011331 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011332 -------------------------------------------------------------------------*/
11333 wpalMutexAcquire(&pWDICtx->wptMutex);
11334
11335 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011336 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011337 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011338 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11339 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011340 &macBSSID))
11341 {
11342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11343 "This station does not exist in the WDI Station Table %d");
11344 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011345 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011346 }
11347
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11349 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011350 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11352 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11353 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011354
11355 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011356 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011357 }
11358
11359 /*------------------------------------------------------------------------
11360 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011361 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011362 ------------------------------------------------------------------------*/
11363 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11364 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11366 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11367 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011368
Jeff Johnsone7245742012-09-05 17:12:55 -070011369 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011370 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011371 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011372 }
11373
11374
11375 wpalMutexRelease(&pWDICtx->wptMutex);
11376 /*-----------------------------------------------------------------------
11377 Get message buffer
11378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11380 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011381 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011382 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011383 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11384 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011385 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011386 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011387 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011388 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11389 {
11390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11391 "Unable to get send buffer in Trigger BA req %x %x %x",
11392 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11393 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011394 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011395 }
11396
Jeff Johnsone7245742012-09-05 17:12:55 -070011397 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011399 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011400 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11401
Jeff Johnsone7245742012-09-05 17:12:55 -070011402 wpalMemoryCopy( pSendBuffer+usDataOffset,
11403 &halTriggerBAReq.triggerBAParams,
11404 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011405
Jeff Johnsone7245742012-09-05 17:12:55 -070011406 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011407 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11408 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11409 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011410
11411 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011412 index++)
11413 {
11414 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11415 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11416 halTriggerBACandidate++;
11417 wdiTriggerBACandidate++;
11418 }
11419
11420 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011421 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011422
11423 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011424 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011425 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011426 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11427 wdiTriggerBARspCb, pEventData->pUserData,
11428 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011429}/*WDI_ProcessTriggerBAReq*/
11430
11431
11432
11433/**
11434 @brief Process Update Beacon Params Request function (called when Main FSM
11435 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011436
11437 @param pWDICtx: pointer to the WLAN DAL context
11438 pEventData: pointer to the event information structure
11439
Jeff Johnson295189b2012-06-20 16:38:30 -070011440 @see
11441 @return Result of the function call
11442*/
11443WDI_Status
11444WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011445(
Jeff Johnson295189b2012-06-20 16:38:30 -070011446 WDI_ControlBlockType* pWDICtx,
11447 WDI_EventInfoType* pEventData
11448)
11449{
11450 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11451 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011452 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011453 wpt_uint16 usDataOffset = 0;
11454 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011455 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11457
11458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011460 -------------------------------------------------------------------------*/
11461 if (( NULL == pEventData ) ||
11462 ( NULL == pEventData->pEventData) ||
11463 ( NULL == pEventData->pCBfnc))
11464 {
11465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 }
11470
11471 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11472 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11473 /*-----------------------------------------------------------------------
11474 Get message buffer
11475 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011476 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011477 sizeof(halUpdateBeaconParams),
11478 &pSendBuffer, &usDataOffset, &usSendSize))||
11479 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11480 {
11481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11482 "Unable to get send buffer in set bss key req %x %x %x",
11483 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11484 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011485 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011486 }
11487
11488 /*BSS Index of the BSS*/
11489 halUpdateBeaconParams.bssIdx =
11490 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11491 /*shortPreamble mode. HAL should update all the STA rates when it
11492 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011493 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011494 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11495 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011496 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011497 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11498 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011499 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011500 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11501
11502 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011503 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011506 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011508 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011509 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011510 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011511 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011512 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011513 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011514 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11515 halUpdateBeaconParams.fRIFSMode =
11516 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011517 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011518 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11519
Jeff Johnsone7245742012-09-05 17:12:55 -070011520 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11521 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011522
11523 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011524 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011525
11526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011527 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011529 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11530 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011531}/*WDI_ProcessUpdateBeaconParamsReq*/
11532
11533
11534
11535/**
11536 @brief Process Send Beacon template Request function (called when Main FSM
11537 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011538
11539 @param pWDICtx: pointer to the WLAN DAL context
11540 pEventData: pointer to the event information structure
11541
Jeff Johnson295189b2012-06-20 16:38:30 -070011542 @see
11543 @return Result of the function call
11544*/
11545WDI_Status
11546WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011547(
Jeff Johnson295189b2012-06-20 16:38:30 -070011548 WDI_ControlBlockType* pWDICtx,
11549 WDI_EventInfoType* pEventData
11550)
11551{
11552 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11553 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011554 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011555 wpt_uint16 usDataOffset = 0;
11556 wpt_uint16 usSendSize = 0;
11557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11558
11559 tSendBeaconReqMsg halSendBeaconReq;
11560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 -------------------------------------------------------------------------*/
11563 if (( NULL == pEventData ) ||
11564 ( NULL == pEventData->pEventData ) ||
11565 ( NULL == pEventData->pCBfnc ))
11566 {
11567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011568 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011571 }
11572
11573 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11574 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11575 /*-----------------------------------------------------------------------
11576 Get message buffer
11577 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011578 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011579 sizeof(halSendBeaconReq.sendBeaconParam),
11580 &pSendBuffer, &usDataOffset, &usSendSize))||
11581 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11582 {
11583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11584 "Unable to get send buffer in send beacon req %x %x %x",
11585 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 }
11589
11590 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11591 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11592 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011593 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11595 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11596 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11597 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070011598 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011599 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070011600 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011601 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070011602
Jeff Johnsone7245742012-09-05 17:12:55 -070011603 wpalMemoryCopy( pSendBuffer+usDataOffset,
11604 &halSendBeaconReq.sendBeaconParam,
11605 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011606
11607 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011609
11610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11614 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011615}/*WDI_ProcessSendBeaconParamsReq*/
11616
11617/**
11618 @brief Process Update Beacon Params Request function (called when Main FSM
11619 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011620
11621 @param pWDICtx: pointer to the WLAN DAL context
11622 pEventData: pointer to the event information structure
11623
Jeff Johnson295189b2012-06-20 16:38:30 -070011624 @see
11625 @return Result of the function call
11626*/
11627WDI_Status
11628WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011629(
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 WDI_ControlBlockType* pWDICtx,
11631 WDI_EventInfoType* pEventData
11632)
11633{
11634 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11635 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011636 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011637 wpt_uint16 usDataOffset = 0;
11638 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011639 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11641
11642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011643 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011644 -------------------------------------------------------------------------*/
11645 if (( NULL == pEventData ) ||
11646 ( NULL == pEventData->pEventData) ||
11647 ( NULL == pEventData->pCBfnc))
11648 {
11649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011653 }
11654
Jeff Johnsone7245742012-09-05 17:12:55 -070011655 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011657 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011658 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11659 /*-----------------------------------------------------------------------
11660 Get message buffer
11661 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011662 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 sizeof(halUpdateProbeRspTmplParams),
11664 &pSendBuffer, &usDataOffset, &usSendSize))||
11665 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11666 {
11667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11668 "Unable to get send buffer in set bss key req %x %x %x",
11669 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11670 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011672 }
11673
11674 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 WDI_MAC_ADDR_LEN);
11677
Jeff Johnsone7245742012-09-05 17:12:55 -070011678 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011679 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11680
11681 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11682 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011683 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011684
11685
11686 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11687 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11688 WDI_PROBE_REQ_BITMAP_IE_LEN);
11689
Jeff Johnsone7245742012-09-05 17:12:55 -070011690 wpalMemoryCopy( pSendBuffer+usDataOffset,
11691 &halUpdateProbeRspTmplParams,
11692 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011693
11694 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011695 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011696
11697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011698 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011699 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11701 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11702 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011703}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11704
11705/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011706 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011707 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011708
11709 @param pWDICtx: pointer to the WLAN DAL context
11710 pEventData: pointer to the event information structure
11711
Jeff Johnson295189b2012-06-20 16:38:30 -070011712 @see
11713 @return Result of the function call
11714*/
11715WDI_Status
11716WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011717(
Jeff Johnson295189b2012-06-20 16:38:30 -070011718 WDI_ControlBlockType* pWDICtx,
11719 WDI_EventInfoType* pEventData
11720)
11721{
11722
11723 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11724 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11725
11726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011728 -------------------------------------------------------------------------*/
11729 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011730 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011731 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011732 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011733 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11734 {
11735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011736 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011739 }
11740
11741 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011742 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011743 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11744
11745 /*cache the wdi nv request message here if the the first fragment
11746 * To issue the request to HAL for the next fragment */
11747 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11748 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011749 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11750 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011751 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11752
11753 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11754 pWDICtx->pRspCBUserData = pEventData->pUserData;
11755 }
11756
11757 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11758}
11759
11760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011761 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011762 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011763
11764 @param pWDICtx: pointer to the WLAN DAL context
11765 pEventData: pointer to the event information structure
11766
Jeff Johnson295189b2012-06-20 16:38:30 -070011767 @see
11768 @return Result of the function call
11769*/
11770WDI_Status WDI_ProcessSetMaxTxPowerReq
11771(
11772 WDI_ControlBlockType* pWDICtx,
11773 WDI_EventInfoType* pEventData
11774)
11775{
11776 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11777 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011778 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011779 wpt_uint16 usDataOffset = 0;
11780 wpt_uint16 usSendSize = 0;
11781 tSetMaxTxPwrReq halSetMaxTxPower;
11782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11783
11784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011786 -------------------------------------------------------------------------*/
11787 if (( NULL == pEventData ) ||
11788 ( NULL == pEventData->pEventData ) ||
11789 ( NULL == pEventData->pCBfnc ))
11790 {
11791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011795 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011796 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011797 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011798 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011799 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
11800
11801 /*-----------------------------------------------------------------------
11802 Get message buffer
11803 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011804if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011805 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
11806 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011807 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070011808)))
11809 {
11810 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11811 "Unable to get Set Max Tx Power req %x %x %x",
11812 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
11813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011815 }
11816
11817 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
11818 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
11819 WDI_MAC_ADDR_LEN);
11820
11821 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
11822 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
11823 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011824 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070011825 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070011826
11827 wpalMemoryCopy( pSendBuffer+usDataOffset,
11828 &halSetMaxTxPower.setMaxTxPwrParams,
11829 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011830
11831 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011832 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011833
11834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011835 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011836 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011837 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11838 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
11839 WDI_SET_MAX_TX_POWER_RESP);
11840
Jeff Johnson295189b2012-06-20 16:38:30 -070011841}
11842
Jeff Johnson295189b2012-06-20 16:38:30 -070011843
11844/**
11845 @brief Process P2P Notice Of Absence Request function (called when Main FSM
11846 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011847
11848 @param pWDICtx: pointer to the WLAN DAL context
11849 pEventData: pointer to the event information structure
11850
Jeff Johnson295189b2012-06-20 16:38:30 -070011851 @see
11852 @return Result of the function call
11853*/
11854WDI_Status
11855WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011856(
Jeff Johnson295189b2012-06-20 16:38:30 -070011857 WDI_ControlBlockType* pWDICtx,
11858 WDI_EventInfoType* pEventData
11859)
11860{
11861 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
11862 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011863 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011864 wpt_uint16 usDataOffset = 0;
11865 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011866 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11868
11869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011871 -------------------------------------------------------------------------*/
11872 if (( NULL == pEventData ) ||
11873 ( NULL == pEventData->pEventData) ||
11874 ( NULL == pEventData->pCBfnc))
11875 {
11876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011877 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011880 }
11881
Jeff Johnsone7245742012-09-05 17:12:55 -070011882 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011883 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011884 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011885 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
11886 /*-----------------------------------------------------------------------
11887 Get message buffer
11888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11890 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011891 sizeof(halSetP2PGONOAParams),
11892 &pSendBuffer, &usDataOffset, &usSendSize))||
11893 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
11894 {
11895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11896 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
11897 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
11898 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011899 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011900 }
11901
Jeff Johnsone7245742012-09-05 17:12:55 -070011902 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070011903 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070011904 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070011905 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
11906 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070011907 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011908 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011909 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011910 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070011912 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070011914 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
11915
Jeff Johnsone7245742012-09-05 17:12:55 -070011916 wpalMemoryCopy( pSendBuffer+usDataOffset,
11917 &halSetP2PGONOAParams,
11918 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011919
11920 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011921 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011922
11923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011924 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011925 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011926 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11927 wdiP2PGONOAReqRspCb, pEventData->pUserData,
11928 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011929}/*WDI_ProcessP2PGONOAReq*/
11930
Jeff Johnson295189b2012-06-20 16:38:30 -070011931
11932
11933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011934 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070011936 @param None
11937
11938 @see
11939 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070011940*/
11941void
11942WDI_SetPowerStateCb
11943(
11944 wpt_status status,
11945 unsigned int dxePhyAddr,
11946 void *pContext
11947)
11948{
11949 wpt_status wptStatus;
11950 WDI_ControlBlockType *pCB = NULL;
11951 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
11952 if(eWLAN_PAL_STATUS_E_FAILURE == status )
11953 {
11954 //it shouldn't happen, put an error msg
11955 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011956 /*
11957 * Trigger the event to bring the Enter BMPS req function to come
11958 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070011959*/
11960 if( NULL != pContext )
11961 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011962 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070011963 }
11964 else
11965 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011966 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070011967 pCB = &gWDICb;
11968 }
11969 pCB->dxePhyAddr = dxePhyAddr;
11970 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
11971 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
11972 {
11973 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11974 "Failed to set an event");
11975
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070011977 }
11978 return;
11979}
11980
11981
11982/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011983 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011984 Main FSM 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_ProcessEnterImpsReq
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{
Jeff Johnson43971f52012-07-17 12:26:56 -070011999 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012000 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
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;
12004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12005
12006 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012007 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012008 -------------------------------------------------------------------------*/
12009 if (( NULL == pEventData ) ||
12010 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12011 {
12012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012013 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012014 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012015 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012016 }
12017
12018 /*-----------------------------------------------------------------------
12019 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012020 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012021 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012022 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012023 0,
12024 &pSendBuffer, &usDataOffset, &usSendSize))||
12025 ( usSendSize < (usDataOffset )))
12026 {
12027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12028 "Unable to get send buffer in Enter IMPS req %x %x",
12029 pEventData, wdiEnterImpsRspCb);
12030 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012031 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012032 }
12033
12034 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012035 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12036 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012037 {
12038 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12039 "WDI Init failed to reset an event");
12040
Jeff Johnsone7245742012-09-05 17:12:55 -070012041 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012042 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012043 }
12044
12045 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012046 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12047 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12049 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12050 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012051 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012052 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012053
12054 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012055 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012056 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012057 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12058 WDI_SET_POWER_STATE_TIMEOUT);
12059 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012060 {
12061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12062 "WDI Init failed to wait on an event");
12063
Jeff Johnsone7245742012-09-05 17:12:55 -070012064 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012065 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 }
12067
12068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012069 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012070 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012071 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12072 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012073
12074fail:
12075 // Release the message buffer so we don't leak
12076 wpalMemoryFree(pSendBuffer);
12077
12078failRequest:
12079 //WDA should have failure check to avoid the memory leak
12080 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012081}/*WDI_ProcessEnterImpsReq*/
12082
12083/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012084 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012085 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012086
12087 @param pWDICtx: pointer to the WLAN DAL context
12088 pEventData: pointer to the event information structure
12089
Jeff Johnson295189b2012-06-20 16:38:30 -070012090 @see
12091 @return Result of the function call
12092*/
12093WDI_Status
12094WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012095(
Jeff Johnson295189b2012-06-20 16:38:30 -070012096 WDI_ControlBlockType* pWDICtx,
12097 WDI_EventInfoType* pEventData
12098)
12099{
12100 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012101 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012102 wpt_uint16 usDataOffset = 0;
12103 wpt_uint16 usSendSize = 0;
12104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12105
12106 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012107 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012108 -------------------------------------------------------------------------*/
12109 if (( NULL == pEventData ) ||
12110 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12111 {
12112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012113 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012116 }
12117
12118 /*-----------------------------------------------------------------------
12119 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012120 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012121 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012122 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012123 0,
12124 &pSendBuffer, &usDataOffset, &usSendSize))||
12125 ( usSendSize < (usDataOffset )))
12126 {
12127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12128 "Unable to get send buffer in Exit IMPS req %x %x",
12129 pEventData, wdiExitImpsRspCb);
12130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012132 }
12133
12134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012135 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012136 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012137 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12138 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012139}/*WDI_ProcessExitImpsReq*/
12140
12141/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012144
12145 @param pWDICtx: pointer to the WLAN DAL context
12146 pEventData: pointer to the event information structure
12147
Jeff Johnson295189b2012-06-20 16:38:30 -070012148 @see
12149 @return Result of the function call
12150*/
12151WDI_Status
12152WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012153(
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 WDI_ControlBlockType* pWDICtx,
12155 WDI_EventInfoType* pEventData
12156)
12157{
12158 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12159 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 wpt_uint16 usDataOffset = 0;
12162 wpt_uint16 usSendSize = 0;
12163 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012164 wpt_status wptStatus;
12165
Jeff Johnson295189b2012-06-20 16:38:30 -070012166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12167
12168 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012169 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 -------------------------------------------------------------------------*/
12171 if (( NULL == pEventData ) ||
12172 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12173 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12174 {
12175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012176 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012177 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012178 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012179 }
12180
12181 /*-----------------------------------------------------------------------
12182 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012183 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012184 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012186 sizeof(enterBmpsReq),
12187 &pSendBuffer, &usDataOffset, &usSendSize))||
12188 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12189 {
12190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12191 "Unable to get send buffer in Enter BMPS req %x %x %x",
12192 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12193 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012194 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012195 }
12196
12197 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012198 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12199 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012200 {
12201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12202 "WDI Init failed to reset an event");
12203
Jeff Johnsone7245742012-09-05 17:12:55 -070012204 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012205 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012206 }
12207
12208 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012209 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12210 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12211 {
12212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12213 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12214 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012215 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012216 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012217
12218/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012219 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012220 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012221 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12222 WDI_SET_POWER_STATE_TIMEOUT);
12223 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012224 {
12225 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12226 "WDI Init failed to wait on an event");
12227
Jeff Johnsone7245742012-09-05 17:12:55 -070012228 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012229 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012230 }
12231
12232 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12233
12234 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12235 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12236 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12237 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12238
12239 // For CCX and 11R Roaming
12240 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12241 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12242 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12243
12244 wpalMemoryCopy( pSendBuffer+usDataOffset,
12245 &enterBmpsReq,
12246 sizeof(enterBmpsReq));
12247
12248 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012249 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012250
12251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012252 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012253 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012254 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12255 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012256
12257fail:
12258 // Release the message buffer so we don't leak
12259 wpalMemoryFree(pSendBuffer);
12260
12261failRequest:
12262 //WDA should have failure check to avoid the memory leak
12263 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012264}/*WDI_ProcessEnterBmpsReq*/
12265
12266/**
12267 @brief Process Exit BMPS Request function (called when Main FSM
12268 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012269
12270 @param pWDICtx: pointer to the WLAN DAL context
12271 pEventData: pointer to the event information structure
12272
Jeff Johnson295189b2012-06-20 16:38:30 -070012273 @see
12274 @return Result of the function call
12275*/
12276WDI_Status
12277WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012278(
Jeff Johnson295189b2012-06-20 16:38:30 -070012279 WDI_ControlBlockType* pWDICtx,
12280 WDI_EventInfoType* pEventData
12281)
12282{
12283 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12284 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012285 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012286 wpt_uint16 usDataOffset = 0;
12287 wpt_uint16 usSendSize = 0;
12288 tHalExitBmpsReqParams exitBmpsReq;
12289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12290
12291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012292 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012293 -------------------------------------------------------------------------*/
12294 if (( NULL == pEventData ) ||
12295 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12296 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12297 {
12298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012299 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012302 }
12303
12304 /*-----------------------------------------------------------------------
12305 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012306 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012307 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012308 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012309 sizeof(exitBmpsReq),
12310 &pSendBuffer, &usDataOffset, &usSendSize))||
12311 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12312 {
12313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12314 "Unable to get send buffer in Exit BMPS req %x %x %x",
12315 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012318 }
12319 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12320
Jeff Johnsone7245742012-09-05 17:12:55 -070012321 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12322
Jeff Johnson295189b2012-06-20 16:38:30 -070012323 wpalMemoryCopy( pSendBuffer+usDataOffset,
12324 &exitBmpsReq,
12325 sizeof(exitBmpsReq));
12326
12327 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012328 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012329
12330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012331 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012333 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12334 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012335}/*WDI_ProcessExitBmpsReq*/
12336
12337/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012338 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012339 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012340
12341 @param pWDICtx: pointer to the WLAN DAL context
12342 pEventData: pointer to the event information structure
12343
Jeff Johnson295189b2012-06-20 16:38:30 -070012344 @see
12345 @return Result of the function call
12346*/
12347WDI_Status
12348WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012349(
Jeff Johnson295189b2012-06-20 16:38:30 -070012350 WDI_ControlBlockType* pWDICtx,
12351 WDI_EventInfoType* pEventData
12352)
12353{
12354 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12355 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012356 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012357 wpt_uint16 usDataOffset = 0;
12358 wpt_uint16 usSendSize = 0;
12359 tUapsdReqParams enterUapsdReq;
12360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12361
12362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012364 -------------------------------------------------------------------------*/
12365 if (( NULL == pEventData ) ||
12366 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12367 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12368 {
12369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012371 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012372 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012373 }
12374
12375 /*-----------------------------------------------------------------------
12376 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012377 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012380 sizeof(enterUapsdReq),
12381 &pSendBuffer, &usDataOffset, &usSendSize))||
12382 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12383 {
12384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12385 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12386 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012389 }
12390
12391 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12392 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12393 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12394 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12395 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12396 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12397 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12398 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012399 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012400
Jeff Johnsone7245742012-09-05 17:12:55 -070012401 wpalMemoryCopy( pSendBuffer+usDataOffset,
12402 &enterUapsdReq,
12403 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012404
12405 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012406 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012407
12408 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12412 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012413}/*WDI_ProcessEnterUapsdReq*/
12414
12415/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012416 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012417 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012418
12419 @param pWDICtx: pointer to the WLAN DAL context
12420 pEventData: pointer to the event information structure
12421
Jeff Johnson295189b2012-06-20 16:38:30 -070012422 @see
12423 @return Result of the function call
12424*/
12425WDI_Status
12426WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012427(
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 WDI_ControlBlockType* pWDICtx,
12429 WDI_EventInfoType* pEventData
12430)
12431{
12432 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012433 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012434 wpt_uint16 usDataOffset = 0;
12435 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012436 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12437 wpt_uint8 bssIdx = 0;
12438
Jeff Johnson295189b2012-06-20 16:38:30 -070012439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12440
12441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012443 -------------------------------------------------------------------------*/
12444 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012445 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012446 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12447 {
12448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012452 }
12453
12454 /*-----------------------------------------------------------------------
12455 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012456 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012457 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012459 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012460 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012461 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 {
12463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12464 "Unable to get send buffer in Exit UAPSD req %x %x",
12465 pEventData, wdiExitUapsdRspCb);
12466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012468 }
12469
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012470 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12471
12472 wpalMemoryCopy( pSendBuffer+usDataOffset,
12473 &bssIdx,
12474 sizeof(wpt_uint8));
12475
12476 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12477 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12478
Jeff Johnson295189b2012-06-20 16:38:30 -070012479 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012480 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012481 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012482 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12483 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012484}/*WDI_ProcessExitUapsdReq*/
12485
12486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012487 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012488 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012489
12490 @param pWDICtx: pointer to the WLAN DAL context
12491 pEventData: pointer to the event information structure
12492
Jeff Johnson295189b2012-06-20 16:38:30 -070012493 @see
12494 @return Result of the function call
12495*/
12496WDI_Status
12497WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012498(
Jeff Johnson295189b2012-06-20 16:38:30 -070012499 WDI_ControlBlockType* pWDICtx,
12500 WDI_EventInfoType* pEventData
12501)
12502{
12503 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12504 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 wpt_uint16 usDataOffset = 0;
12507 wpt_uint16 usSendSize = 0;
12508 tUapsdInfo uapsdAcParamsReq;
12509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12510
12511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012513 -------------------------------------------------------------------------*/
12514 if (( NULL == pEventData ) ||
12515 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12516 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12517 {
12518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012519 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 }
12523
12524 /*-----------------------------------------------------------------------
12525 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012526 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012527 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012528 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012529 sizeof(uapsdAcParamsReq),
12530 &pSendBuffer, &usDataOffset, &usSendSize))||
12531 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12532 {
12533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12534 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12535 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12536 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012537 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012538 }
12539
12540 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12541 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12542 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12543 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12544 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12545 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12546
Jeff Johnsone7245742012-09-05 17:12:55 -070012547 wpalMemoryCopy( pSendBuffer+usDataOffset,
12548 &uapsdAcParamsReq,
12549 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012550
12551 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012552 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012553
12554 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012555 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012556 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012557 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12558 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012559}/*WDI_ProcessSetUapsdAcParamsReq*/
12560
12561/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012562 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012563 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012564
12565 @param pWDICtx: pointer to the WLAN DAL context
12566 pEventData: pointer to the event information structure
12567
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 @see
12569 @return Result of the function call
12570*/
12571WDI_Status
12572WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012573(
Jeff Johnson295189b2012-06-20 16:38:30 -070012574 WDI_ControlBlockType* pWDICtx,
12575 WDI_EventInfoType* pEventData
12576)
12577{
12578 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12579 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012580 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012581 wpt_uint16 usDataOffset = 0;
12582 wpt_uint16 usSendSize = 0;
12583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12584
12585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012587 -------------------------------------------------------------------------*/
12588 if (( NULL == pEventData ) ||
12589 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12590 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12591 {
12592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012596 }
12597
12598 /*-----------------------------------------------------------------------
12599 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012600 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012601 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012603 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12604 &pSendBuffer, &usDataOffset, &usSendSize))||
12605 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12606 {
12607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12608 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12609 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 }
12613
Jeff Johnsone7245742012-09-05 17:12:55 -070012614 wpalMemoryCopy( pSendBuffer+usDataOffset,
12615 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12616 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012617
12618 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012620
12621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012622 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012623 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012624 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12625 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012626}/*WDI_ProcessUpdateUapsdParamsReq*/
12627
12628/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012629 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012630 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012631
12632 @param pWDICtx: pointer to the WLAN DAL context
12633 pEventData: pointer to the event information structure
12634
Jeff Johnson295189b2012-06-20 16:38:30 -070012635 @see
12636 @return Result of the function call
12637*/
12638WDI_Status
12639WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012640(
Jeff Johnson295189b2012-06-20 16:38:30 -070012641 WDI_ControlBlockType* pWDICtx,
12642 WDI_EventInfoType* pEventData
12643)
12644{
12645 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12646 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012647 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012648 wpt_uint16 usDataOffset = 0;
12649 wpt_uint16 usSendSize = 0;
12650 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12651
12652 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12653
12654 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012655 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012656 -------------------------------------------------------------------------*/
12657 if (( NULL == pEventData ) ||
12658 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12659 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12660 {
12661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012662 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012665 }
12666
12667 /*-----------------------------------------------------------------------
12668 Get message buffer
12669 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012670 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012671 sizeof(halRxpFilterParams),
12672 &pSendBuffer, &usDataOffset, &usSendSize))||
12673 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12674 {
12675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12676 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12677 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012680 }
12681
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012683 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012684 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012685 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12686
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 wpalMemoryCopy( pSendBuffer+usDataOffset,
12688 &halRxpFilterParams,
12689 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012690
12691 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012693
12694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012695 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012696 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012697 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12698 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012699}/*WDI_ProcessConfigureRxpFilterReq*/
12700
12701/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012702 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012703 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012704
12705 @param pWDICtx: pointer to the WLAN DAL context
12706 pEventData: pointer to the event information structure
12707
Jeff Johnson295189b2012-06-20 16:38:30 -070012708 @see
12709 @return Result of the function call
12710*/
12711WDI_Status
12712WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012713(
Jeff Johnson295189b2012-06-20 16:38:30 -070012714 WDI_ControlBlockType* pWDICtx,
12715 WDI_EventInfoType* pEventData
12716)
12717{
12718 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12719 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012720 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012721 wpt_uint16 usDataOffset = 0;
12722 wpt_uint16 usSendSize = 0;
12723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12724
12725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 -------------------------------------------------------------------------*/
12728 if (( NULL == pEventData ) ||
12729 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
12730 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
12731 {
12732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 }
12737
12738 /*-----------------------------------------------------------------------
12739 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012740 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012741 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012742 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012743 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
12744 &pSendBuffer, &usDataOffset, &usSendSize))||
12745 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12746 {
12747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12748 "Unable to get send buffer in Set beacon filter req %x %x %x",
12749 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012752 }
12753
Jeff Johnsone7245742012-09-05 17:12:55 -070012754 wpalMemoryCopy( pSendBuffer+usDataOffset,
12755 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12756 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
12757 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12758 &pwdiBeaconFilterParams->aFilters[0],
12759 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070012760
12761 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012762 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012763
12764 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012765 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012766 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012767 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12768 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012769}/*WDI_ProcessSetBeaconFilterReq*/
12770
12771/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012772 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012773 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012774
12775 @param pWDICtx: pointer to the WLAN DAL context
12776 pEventData: pointer to the event information structure
12777
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 @see
12779 @return Result of the function call
12780*/
12781WDI_Status
12782WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012783(
Jeff Johnson295189b2012-06-20 16:38:30 -070012784 WDI_ControlBlockType* pWDICtx,
12785 WDI_EventInfoType* pEventData
12786)
12787{
12788 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12789 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012790 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012791 wpt_uint16 usDataOffset = 0;
12792 wpt_uint16 usSendSize = 0;
12793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12794
12795 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012796 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012797 -------------------------------------------------------------------------*/
12798 if (( NULL == pEventData ) ||
12799 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
12800 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
12801 {
12802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012806 }
12807
12808 /*-----------------------------------------------------------------------
12809 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012810 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012811 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012812 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
12814 &pSendBuffer, &usDataOffset, &usSendSize))||
12815 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
12816 {
12817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12818 "Unable to get send buffer in remove beacon filter req %x %x %x",
12819 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
12820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012822 }
12823
Jeff Johnsone7245742012-09-05 17:12:55 -070012824 wpalMemoryCopy( pSendBuffer+usDataOffset,
12825 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
12826 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012827
12828 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012829 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012830
12831 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012832 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012833 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012834 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12835 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012836}
12837
12838/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012839 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012840 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012841
12842 @param pWDICtx: pointer to the WLAN DAL context
12843 pEventData: pointer to the event information structure
12844
Jeff Johnson295189b2012-06-20 16:38:30 -070012845 @see
12846 @return Result of the function call
12847*/
12848WDI_Status
12849WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012850(
Jeff Johnson295189b2012-06-20 16:38:30 -070012851 WDI_ControlBlockType* pWDICtx,
12852 WDI_EventInfoType* pEventData
12853)
12854{
12855 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
12856 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012857 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012858 wpt_uint16 usDataOffset = 0;
12859 wpt_uint16 usSendSize = 0;
12860 tHalRSSIThresholds rssiThresholdsReq;
12861 WDI_Status ret_status = 0;
12862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12863
12864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012866 -------------------------------------------------------------------------*/
12867 if (( NULL == pEventData ) ||
12868 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
12869 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
12870 {
12871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012875 }
12876
12877 /*-----------------------------------------------------------------------
12878 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012879 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012880 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012881 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012882 sizeof(rssiThresholdsReq),
12883 &pSendBuffer, &usDataOffset, &usSendSize))||
12884 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
12885 {
12886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12887 "Unable to get send buffer in remove beacon filter req %x %x %x",
12888 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
12889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012891 }
12892
Jeff Johnsone7245742012-09-05 17:12:55 -070012893 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012894 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070012895 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012896 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012897 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012899 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012900 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012908 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070012909 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012910 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070012911 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070012912 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
12913
Jeff Johnsone7245742012-09-05 17:12:55 -070012914 wpalMemoryCopy( pSendBuffer+usDataOffset,
12915 &rssiThresholdsReq,
12916 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012917
12918 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012919 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012920
12921 /*-------------------------------------------------------------------------
12922 Send Set threshold req to HAL
12923 -------------------------------------------------------------------------*/
12924 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12925 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
12926 {
12927 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
12928 // req. Then as a result of processing the threshold cross ind, we trigger
12929 // a Set threshold req, then we need to indicate to WDI that it needs to
12930 // go to busy state as a result of the indication as we sent a req in the
12931 // same WDI context.
12932 // Hence expected state transition is to busy.
12933 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
12934 }
12935
12936 return ret_status;
12937}
12938
12939/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012940 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012942
12943 @param pWDICtx: pointer to the WLAN DAL context
12944 pEventData: pointer to the event information structure
12945
Jeff Johnson295189b2012-06-20 16:38:30 -070012946 @see
12947 @return Result of the function call
12948*/
12949WDI_Status
12950WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012951(
Jeff Johnson295189b2012-06-20 16:38:30 -070012952 WDI_ControlBlockType* pWDICtx,
12953 WDI_EventInfoType* pEventData
12954)
12955{
12956 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
12957 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 wpt_uint16 usDataOffset = 0;
12960 wpt_uint16 usSendSize = 0;
12961 tHalHostOffloadReq hostOffloadParams;
12962 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012963 wpt_uint8 ucCurrentBSSSesIdx = 0;
12964 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012965
12966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12967
12968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012970 -------------------------------------------------------------------------*/
12971 if (( NULL == pEventData ) ||
12972 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
12973 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
12974 {
12975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012976 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012977 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012978 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012979 }
12980
12981 /*-----------------------------------------------------------------------
12982 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012983 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012984 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012985 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012986 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
12987 &pSendBuffer, &usDataOffset, &usSendSize))||
12988 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
12989 {
12990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12991 "Unable to get send buffer in host offload req %x %x %x",
12992 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
12993 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012994 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012995 }
12996
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012997 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12998 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
12999 &pBSSSes);
13000 if ( NULL == pBSSSes )
13001 {
13002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013003 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013004 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013005 }
13006
Jeff Johnson295189b2012-06-20 16:38:30 -070013007 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13008 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013009
Jeff Johnson295189b2012-06-20 16:38:30 -070013010 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13011 {
13012 // ARP Offload
13013 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13014 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13015 4);
13016 }
13017 else
13018 {
13019 // NS Offload
13020 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13021 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13022 16);
13023
13024#ifdef WLAN_NS_OFFLOAD
13025 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13026 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13027 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13028 16);
13029 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13030 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13031 16);
13032 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13033 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13034 16);
13035 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13036 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13037 16);
13038 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13039 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13040 6);
13041 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13042 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13043 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070013044
Jeff Johnson295189b2012-06-20 16:38:30 -070013045#endif // WLAN_NS_OFFLOAD
13046 }
13047
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013048 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13049
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 // copy hostOffloadParams into pSendBuffer
13051 wpalMemoryCopy( pSendBuffer+usDataOffset,
13052 &hostOffloadParams,
13053 sizeof(hostOffloadParams));
13054
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013055 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013057 // copy nsOffloadParams into pSendBuffer
13058 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013059 &nsOffloadParams,
13060 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013061 }
13062 else
13063 {
13064#ifdef WLAN_NS_OFFLOAD
13065 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13066 {
13067 // copy nsOffloadParams into pSendBuffer
13068 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13069 &nsOffloadParams,
13070 sizeof(nsOffloadParams));
13071 }
13072#endif
13073 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013074
13075 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013076 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013077
13078 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013079 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013080 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013081 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13082 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013083
13084fail:
13085 // Release the message buffer so we don't leak
13086 wpalMemoryFree(pSendBuffer);
13087
13088failRequest:
13089 //WDA should have failure check to avoid the memory leak
13090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013091}/*WDI_ProcessHostOffloadReq*/
13092
13093/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013094 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013095 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013096
13097 @param pWDICtx: pointer to the WLAN DAL context
13098 pEventData: pointer to the event information structure
13099
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 @see
13101 @return Result of the function call
13102*/
13103WDI_Status
13104WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013105(
Jeff Johnson295189b2012-06-20 16:38:30 -070013106 WDI_ControlBlockType* pWDICtx,
13107 WDI_EventInfoType* pEventData
13108)
13109{
13110 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13111 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013112 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013113 wpt_uint16 usDataOffset = 0;
13114 wpt_uint16 usSendSize = 0;
13115 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013116 wpt_uint8 ucCurrentBSSSesIdx = 0;
13117 WDI_BSSSessionType* pBSSSes = NULL;
13118
Jeff Johnson295189b2012-06-20 16:38:30 -070013119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13120
13121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013122 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013123 -------------------------------------------------------------------------*/
13124 if (( NULL == pEventData ) ||
13125 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13126 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13127 {
13128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13129 "Invalid parameters in Keep Alive req");
13130 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013131 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013132 }
13133
13134 /*-----------------------------------------------------------------------
13135 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013136 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013137 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013138 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 sizeof(keepAliveReq),
13140 &pSendBuffer, &usDataOffset, &usSendSize))||
13141 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13142 {
13143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13144 "Unable to get send buffer in keep alive req %x %x %x",
13145 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13146 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013147 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013148 }
13149
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013150 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13151 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13152 &pBSSSes);
13153 if ( NULL == pBSSSes )
13154 {
13155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013156 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013157 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013158 }
13159
Jeff Johnson295189b2012-06-20 16:38:30 -070013160 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13161 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13162
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013163 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013164
Jeff Johnson295189b2012-06-20 16:38:30 -070013165 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13166 {
13167 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13168 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13169 HAL_IPV4_ADDR_LEN);
13170 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13171 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013172 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013173 wpalMemoryCopy(keepAliveReq.destMacAddr,
13174 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13175 HAL_MAC_ADDR_LEN);
13176 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013177
13178 wpalMemoryCopy( pSendBuffer+usDataOffset,
13179 &keepAliveReq,
13180 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013181
13182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13183 "Process keep alive req %d",sizeof(keepAliveReq));
13184
13185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13186 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13187
13188 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013190
13191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13192 "Sending keep alive req to HAL");
13193
13194 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013197 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13198 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013199
13200fail:
13201 // Release the message buffer so we don't leak
13202 wpalMemoryFree(pSendBuffer);
13203
13204failRequest:
13205 //WDA should have failure check to avoid the memory leak
13206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013207}/*WDI_ProcessKeepAliveReq*/
13208
13209
13210/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013211 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013212 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013213
13214 @param pWDICtx: pointer to the WLAN DAL context
13215 pEventData: pointer to the event information structure
13216
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 @see
13218 @return Result of the function call
13219*/
13220WDI_Status
13221WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013222(
Jeff Johnson295189b2012-06-20 16:38:30 -070013223 WDI_ControlBlockType* pWDICtx,
13224 WDI_EventInfoType* pEventData
13225)
13226{
13227 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13228 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013229 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013230 wpt_uint16 usDataOffset = 0;
13231 wpt_uint16 usSendSize = 0;
13232 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013233 wpt_uint8 ucCurrentBSSSesIdx = 0;
13234 WDI_BSSSessionType* pBSSSes = NULL;
13235
Jeff Johnson295189b2012-06-20 16:38:30 -070013236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13237
13238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013240 -------------------------------------------------------------------------*/
13241 if (( NULL == pEventData ) ||
13242 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13243 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13244 {
13245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013247 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013248 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013249 }
13250
13251 /*-----------------------------------------------------------------------
13252 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013254 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013255 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013256 sizeof(wowlAddBcPtrnReq),
13257 &pSendBuffer, &usDataOffset, &usSendSize))||
13258 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13259 {
13260 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13261 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13262 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13263 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013264 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013265 }
13266
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013267 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13268 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13269 &pBSSSes);
13270 if ( NULL == pBSSSes )
13271 {
13272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013273 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013274 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013275 }
13276
Jeff Johnsone7245742012-09-05 17:12:55 -070013277 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013278 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013279 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013280 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013283 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13285
13286 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13287 {
13288 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13289 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13290 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13291 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13292 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13293 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13294 }
13295 else
13296 {
13297 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13298 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13299 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13300 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13301 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13302 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13303
13304 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13305 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13306 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13307 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13308 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13309 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13310 }
13311
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013312 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13313
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 wpalMemoryCopy( pSendBuffer+usDataOffset,
13315 &wowlAddBcPtrnReq,
13316 sizeof(wowlAddBcPtrnReq));
13317
13318 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013319 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013320
13321 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013322 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013323 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013324 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13325 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013326fail:
13327 // Release the message buffer so we don't leak
13328 wpalMemoryFree(pSendBuffer);
13329
13330failRequest:
13331 //WDA should have failure check to avoid the memory leak
13332 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013333}/*WDI_ProcessWowlAddBcPtrnReq*/
13334
13335/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013337 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013338
13339 @param pWDICtx: pointer to the WLAN DAL context
13340 pEventData: pointer to the event information structure
13341
Jeff Johnson295189b2012-06-20 16:38:30 -070013342 @see
13343 @return Result of the function call
13344*/
13345WDI_Status
13346WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013347(
Jeff Johnson295189b2012-06-20 16:38:30 -070013348 WDI_ControlBlockType* pWDICtx,
13349 WDI_EventInfoType* pEventData
13350)
13351{
13352 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13353 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013354 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013355 wpt_uint16 usDataOffset = 0;
13356 wpt_uint16 usSendSize = 0;
13357 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013358 wpt_uint8 ucCurrentBSSSesIdx = 0;
13359 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13361
13362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013364 -------------------------------------------------------------------------*/
13365 if (( NULL == pEventData ) ||
13366 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13367 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13368 {
13369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013372 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013373 }
13374
13375 /*-----------------------------------------------------------------------
13376 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013377 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013380 sizeof(wowlDelBcPtrnReq),
13381 &pSendBuffer, &usDataOffset, &usSendSize))||
13382 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13383 {
13384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13385 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13386 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13387 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013388 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 }
13390
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013391 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13392 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13393 &pBSSSes);
13394 if ( NULL == pBSSSes )
13395 {
13396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013397 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013398 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013399 }
13400
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013403
13404 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13405
Jeff Johnsone7245742012-09-05 17:12:55 -070013406 wpalMemoryCopy( pSendBuffer+usDataOffset,
13407 &wowlDelBcPtrnReq,
13408 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013409
13410 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013411 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013412
13413 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013414 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013415 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013416 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13417 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013418
13419fail:
13420 // Release the message buffer so we don't leak
13421 wpalMemoryFree(pSendBuffer);
13422
13423failRequest:
13424 //WDA should have failure check to avoid the memory leak
13425 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013426}/*WDI_ProcessWowlDelBcPtrnReq*/
13427
13428/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013429 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013430 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013431
13432 @param pWDICtx: pointer to the WLAN DAL context
13433 pEventData: pointer to the event information structure
13434
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 @see
13436 @return Result of the function call
13437*/
13438WDI_Status
13439WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013440(
Jeff Johnson295189b2012-06-20 16:38:30 -070013441 WDI_ControlBlockType* pWDICtx,
13442 WDI_EventInfoType* pEventData
13443)
13444{
13445 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13446 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013447 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013448 wpt_uint16 usDataOffset = 0;
13449 wpt_uint16 usSendSize = 0;
13450 tHalWowlEnterParams wowlEnterReq;
13451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13452
13453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 -------------------------------------------------------------------------*/
13456 if (( NULL == pEventData ) ||
13457 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13458 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13459 {
13460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013461 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013462 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 }
13465
13466 /*-----------------------------------------------------------------------
13467 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013468 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013469 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013470 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013471 sizeof(wowlEnterReq),
13472 &pSendBuffer, &usDataOffset, &usSendSize))||
13473 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13474 {
13475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13476 "Unable to get send buffer in Wowl enter req %x %x %x",
13477 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13478 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013480 }
13481
Jeff Johnsone7245742012-09-05 17:12:55 -070013482 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013483 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013484 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013485 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013488 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013496 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013497 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13498
13499#ifdef WLAN_WAKEUP_EVENTS
13500 wowlEnterReq.ucWoWEAPIDRequestEnable =
13501 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13502
13503 wowlEnterReq.ucWoWEAPOL4WayEnable =
13504 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13505
13506 wowlEnterReq.ucWowNetScanOffloadMatch =
13507 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13508
13509 wowlEnterReq.ucWowGTKRekeyError =
13510 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13511
13512 wowlEnterReq.ucWoWBSSConnLoss =
13513 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13514#endif // WLAN_WAKEUP_EVENTS
13515
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013516 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13517
Jeff Johnson295189b2012-06-20 16:38:30 -070013518 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13519 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13520 sizeof(tSirMacAddr));
13521
Jeff Johnsone7245742012-09-05 17:12:55 -070013522 wpalMemoryCopy( pSendBuffer+usDataOffset,
13523 &wowlEnterReq,
13524 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013525
13526 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013527 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013528
13529 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013530 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013531 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013532 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13533 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013534}/*WDI_ProcessWowlEnterReq*/
13535
13536/**
13537 @brief Process Wowl exit Request function (called when Main FSM
13538 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013539
13540 @param pWDICtx: pointer to the WLAN DAL context
13541 pEventData: pointer to the event information structure
13542
Jeff Johnson295189b2012-06-20 16:38:30 -070013543 @see
13544 @return Result of the function call
13545*/
13546WDI_Status
13547WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013548(
Jeff Johnson295189b2012-06-20 16:38:30 -070013549 WDI_ControlBlockType* pWDICtx,
13550 WDI_EventInfoType* pEventData
13551)
13552{
13553 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013554 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013555 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013556 wpt_uint16 usDataOffset = 0;
13557 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013558 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13560
13561 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013562 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013563 -------------------------------------------------------------------------*/
13564 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013565 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013566 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13567 {
13568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013569 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013570 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013572 }
13573
13574 /*-----------------------------------------------------------------------
13575 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013576 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013577 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013578 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013579 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013580 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013581 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013582 {
13583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13584 "Unable to get send buffer in Wowl Exit req %x %x",
13585 pEventData, wdiWowlExitCb);
13586 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013587 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013588 }
13589
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013590 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13591
13592 wpalMemoryCopy( pSendBuffer+usDataOffset,
13593 &wowlExitparams,
13594 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013596 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013597 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13599 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013600}/*WDI_ProcessWowlExitReq*/
13601
13602/**
13603 @brief Process Configure Apps Cpu Wakeup State Request function
13604 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013605
13606 @param pWDICtx: pointer to the WLAN DAL context
13607 pEventData: pointer to the event information structure
13608
Jeff Johnson295189b2012-06-20 16:38:30 -070013609 @see
13610 @return Result of the function call
13611*/
13612WDI_Status
13613WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013614(
Jeff Johnson295189b2012-06-20 16:38:30 -070013615 WDI_ControlBlockType* pWDICtx,
13616 WDI_EventInfoType* pEventData
13617)
13618{
13619 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13620 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013621 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013622 wpt_uint16 usDataOffset = 0;
13623 wpt_uint16 usSendSize = 0;
13624 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13626
13627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013628 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013629 -------------------------------------------------------------------------*/
13630 if (( NULL == pEventData ) ||
13631 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13632 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13633 {
13634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013635 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 }
13639
13640 /*-----------------------------------------------------------------------
13641 Get message buffer
13642 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013643 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013644 sizeof(halCfgAppsCpuWakeupStateReqParams),
13645 &pSendBuffer, &usDataOffset, &usSendSize))||
13646 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13647 {
13648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13649 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13650 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013653 }
13654
Jeff Johnsone7245742012-09-05 17:12:55 -070013655 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13657
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 wpalMemoryCopy( pSendBuffer+usDataOffset,
13659 &halCfgAppsCpuWakeupStateReqParams,
13660 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013661
13662 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013663 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013664
13665 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013666 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013667 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013668 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13669 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13670 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013671}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13672
13673#ifdef WLAN_FEATURE_VOWIFI_11R
13674/**
13675 @brief Process Aggregated Add TSpec 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_ProcessAggrAddTSpecReq
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_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13692 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013693 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013694 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013695 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 wpt_uint16 usDataOffset = 0;
13697 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013698 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013699 wpt_macAddr macBSSID;
13700 tAggrAddTsReq halAggrAddTsReq;
13701 int i;
13702 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13703
13704 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 -------------------------------------------------------------------------*/
13707 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13708 ( NULL == pEventData->pCBfnc ))
13709 {
13710 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013711 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 }
13715 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13716 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13717 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13718 /*-------------------------------------------------------------------------
13719 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013720 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013721 -------------------------------------------------------------------------*/
13722 wpalMutexAcquire(&pWDICtx->wptMutex);
13723
13724 /*------------------------------------------------------------------------
13725 Find the BSS for which the request is made and identify WDI session
13726 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013727 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13728 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013729 &macBSSID))
13730 {
13731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13732 "This station does not exist in the WDI Station Table %d");
13733 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013735 }
13736
Jeff Johnsone7245742012-09-05 17:12:55 -070013737 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13738 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013739 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13741 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13742 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013743
13744 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013746 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013747
Jeff Johnson295189b2012-06-20 16:38:30 -070013748 /*------------------------------------------------------------------------
13749 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013750 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 ------------------------------------------------------------------------*/
13752 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13753 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13755 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13756 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013757
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 }
13762
13763 wpalMutexRelease(&pWDICtx->wptMutex);
13764 /*-----------------------------------------------------------------------
13765 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 sizeof(tAggrAddTsParams),
13770 &pSendBuffer, &usDataOffset, &usSendSize))||
13771 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
13772 {
13773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13774 "Unable to get send buffer in set bss key req %x %x %x",
13775 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
13776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013778 }
13779
Jeff Johnsone7245742012-09-05 17:12:55 -070013780 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013781 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070013783 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
13784
13785 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
13786 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013789 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070013790 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070013791 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013792 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13793 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013794 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070013795 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13796 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070013797 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13799 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070013800 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013801 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13802 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070013804 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13805 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070013806 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13808 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070013809 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013810 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13811 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013812 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070013813 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
13814 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070013815 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070013816 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070013817 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070013818 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070013819
13820
13821 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013822 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013823 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013824 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013825 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013826 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013827 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013828 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013829 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013830 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013831 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013834 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070013835 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013836 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013837 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013838 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013839 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013840 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013841 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070013842 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070013843 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070013844 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070013845 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013846 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070013847 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070013848 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070013849 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
13851 }
13852
Jeff Johnsone7245742012-09-05 17:12:55 -070013853 wpalMemoryCopy( pSendBuffer+usDataOffset,
13854 &halAggrAddTsReq,
13855 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013856
13857 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013858 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013859
13860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013861 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013863 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070013864 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070013865 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013866}/*WDI_ProcessAggrAddTSpecReq*/
13867#endif /* WLAN_FEATURE_VOWIFI_11R */
13868
13869/**
13870 @brief Process Shutdown Request function (called when Main FSM
13871 allows it)
13872
13873 @param pWDICtx: pointer to the WLAN DAL context
13874 pEventData: pointer to the event information structure
13875
13876 @see
13877 @return Result of the function call
13878*/
13879WDI_Status
13880WDI_ProcessShutdownReq
13881(
13882 WDI_ControlBlockType* pWDICtx,
13883 WDI_EventInfoType* pEventData
13884 )
13885{
13886 wpt_status wptStatus;
13887
13888
13889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13890
13891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013893 -------------------------------------------------------------------------*/
13894 if ( NULL == pEventData )
13895 {
13896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013897 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013898 WDI_ASSERT(0);
13899 return WDI_STATUS_E_FAILURE;
13900 }
13901
13902 wpalMutexAcquire(&pWDICtx->wptMutex);
13903
13904
13905 gWDIInitialized = eWLAN_PAL_FALSE;
13906 /*! TO DO: stop the data services */
13907 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13908 {
13909 /*Stop the STA Table !UT- check this logic again
13910 It is safer to do it here than on the response - because a stop is imminent*/
13911 WDI_STATableStop(pWDICtx);
13912
13913 /* Stop Transport Driver, DXE */
13914 WDTS_Stop(pWDICtx);
13915 }
13916
13917 /*Clear all pending request*/
13918 WDI_ClearPendingRequests(pWDICtx);
13919 /* Close Data transport*/
13920 /* FTM mode does not open Data Path */
13921 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
13922 {
13923 WDTS_Close(pWDICtx);
13924 }
13925 /*Close the STA Table !UT- check this logic again*/
13926 WDI_STATableClose(pWDICtx);
13927 /*close the PAL */
13928 wptStatus = wpalClose(pWDICtx->pPALContext);
13929 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
13930 {
13931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13932 "Failed to wpal Close %d", wptStatus);
13933 WDI_ASSERT(0);
13934 }
13935
13936 /*Transition back to init state*/
13937 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
13938
13939 wpalMutexRelease(&pWDICtx->wptMutex);
13940
13941 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013942 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070013943
13944
Jeff Johnsone7245742012-09-05 17:12:55 -070013945 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013946}/*WDI_ProcessShutdownReq*/
13947
13948/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070013949 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070013950========================================================================*/
13951
13952/**
13953 @brief Process Start Response function (called when a response
13954 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070013955
13956 @param pWDICtx: pointer to the WLAN DAL context
13957 pEventData: pointer to the event information structure
13958
Jeff Johnson295189b2012-06-20 16:38:30 -070013959 @see
13960 @return Result of the function call
13961*/
13962WDI_Status
13963WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070013964(
Jeff Johnson295189b2012-06-20 16:38:30 -070013965 WDI_ControlBlockType* pWDICtx,
13966 WDI_EventInfoType* pEventData
13967)
13968{
13969 WDI_StartRspParamsType wdiRspParams;
13970 WDI_StartRspCb wdiStartRspCb = NULL;
13971
13972 tHalMacStartRspParams* startRspParams;
13973
13974#ifndef HAL_SELF_STA_PER_BSS
13975 WDI_AddStaParams wdiAddSTAParam = {0};
13976#endif
13977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13978
Jeff Johnsone7245742012-09-05 17:12:55 -070013979 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 -------------------------------------------------------------------------*/
13983 if (( NULL == pEventData ) ||
13984 ( NULL == pEventData->pEventData) ||
13985 ( NULL == wdiStartRspCb ))
13986 {
13987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013988 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013989 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013990 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013991 }
13992
13993 /*-------------------------------------------------------------------------
13994 Extract response and send it to UMAC
13995 -------------------------------------------------------------------------*/
13996 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
13997 {
13998 // not enough data was received
13999 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14000 "Invalid response length in Start Resp Expect %x Rcvd %x",
14001 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014004 }
14005
14006 /*-------------------------------------------------------------------------
14007 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014008 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014009 -------------------------------------------------------------------------*/
14010 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14011
14012 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14013 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14014 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14015 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14016 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14017 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14018 wdiRspParams.wlanReportedVersion.major =
14019 startRspParams->wcnssWlanVersion.major;
14020 wdiRspParams.wlanReportedVersion.minor =
14021 startRspParams->wcnssWlanVersion.minor;
14022 wdiRspParams.wlanReportedVersion.version =
14023 startRspParams->wcnssWlanVersion.version;
14024 wdiRspParams.wlanReportedVersion.revision =
14025 startRspParams->wcnssWlanVersion.revision;
14026 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14027 startRspParams->wcnssCrmVersionString,
14028 sizeof(wdiRspParams.wcnssSoftwareVersion));
14029 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14030 startRspParams->wcnssWlanVersionString,
14031 sizeof(wdiRspParams.wcnssHardwareVersion));
14032 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14033
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014034 /*Save the HAL Version*/
14035 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14036
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 wpalMutexAcquire(&pWDICtx->wptMutex);
14038 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14039 {
14040 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14041
14042 /*Cache the start response for further use*/
14043 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014044 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 sizeof(pWDICtx->wdiCachedStartRspParams));
14046
14047 }
14048 else
14049 {
14050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14051 "Failed to start device with status %s(%d)",
14052 WDI_getHALStatusMsgString(startRspParams->status),
14053 startRspParams->status);
14054
14055 /*Set the expected state transition to stopped - because the start has
14056 failed*/
14057 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14058
14059 wpalMutexRelease(&pWDICtx->wptMutex);
14060
14061 /*Notify UMAC*/
14062 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014063
Jeff Johnson295189b2012-06-20 16:38:30 -070014064 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14065
14066 /*Although the response is an error - it was processed by our function
14067 so as far as the caller is concerned this is a succesful reponse processing*/
14068 return WDI_STATUS_SUCCESS;
14069 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014070
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 wpalMutexRelease(&pWDICtx->wptMutex);
14072
14073 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14074 {
14075 /* FTM mode does not need to execute below */
14076 /* Notify UMAC */
14077 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14078 return WDI_STATUS_SUCCESS;
14079 }
14080
14081 /* START the Data transport */
14082 WDTS_startTransport(pWDICtx);
14083
14084 /*Start the STA Table !- check this logic again*/
14085 WDI_STATableStart(pWDICtx);
14086
14087#ifndef HAL_SELF_STA_PER_BSS
14088 /* Store the Self STA Index */
14089 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14090
14091 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14092 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14093 WDI_MAC_ADDR_LEN);
14094
14095 /* At this point add the self-STA */
14096
14097 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14098 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14099 /*! TO DO: wdiAddSTAParam.dpuSig */
14100 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14101 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14102 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14103
14104 //all DPU indices are the same for self STA
14105 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14106 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014107 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014108 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14109 WDI_MAC_ADDR_LEN);
14110 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14111 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14112
14113 /* Note: Since we don't get an explicit config STA request for self STA, we
14114 add the self STA upon receiving the Start response message. But the
14115 self STA entry in the table is deleted when WDI gets an explicit delete STA
14116 request */
14117 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14118#endif
14119
14120 /*Notify UMAC*/
14121 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14122
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014124}/*WDI_ProcessStartRsp*/
14125
14126
14127/**
14128 @brief Process Stop Response function (called when a response
14129 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014130
14131 @param pWDICtx: pointer to the WLAN DAL context
14132 pEventData: pointer to the event information structure
14133
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 @see
14135 @return Result of the function call
14136*/
14137WDI_Status
14138WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014139(
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 WDI_ControlBlockType* pWDICtx,
14141 WDI_EventInfoType* pEventData
14142)
14143{
14144 WDI_Status wdiStatus;
14145 WDI_StopRspCb wdiStopRspCb = NULL;
14146
Jeff Johnsone7245742012-09-05 17:12:55 -070014147 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14149
Jeff Johnsone7245742012-09-05 17:12:55 -070014150 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014152 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014153 -------------------------------------------------------------------------*/
14154 if (( NULL == pEventData ) ||
14155 ( NULL == pEventData->pEventData) ||
14156 ( NULL == wdiStopRspCb ))
14157 {
14158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014159 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014160 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014161 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014162 }
14163
14164 /*-------------------------------------------------------------------------
14165 Extract response and send it to UMAC
14166 -------------------------------------------------------------------------*/
14167 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14168 {
14169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14170 "Invalid response length in Stop Resp %x %x",
14171 pEventData->uEventDataSize);
14172 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 }
14175
14176 /*-------------------------------------------------------------------------
14177 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014178 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014179 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014180 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14181 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014182 sizeof(halMacStopRspMsg.stopRspParams));
14183
Jeff Johnsone7245742012-09-05 17:12:55 -070014184 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014185
14186 wpalMutexAcquire(&pWDICtx->wptMutex);
14187
14188 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014189 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014190 --------------------------------------------------------------------------*/
14191 if ( WDI_STATUS_SUCCESS != wdiStatus )
14192 {
14193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14194 "Failed to stop the device with status %s (%d)",
14195 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14196 halMacStopRspMsg.stopRspParams.status);
14197
Jeff Johnsone7245742012-09-05 17:12:55 -070014198 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14199
Jeff Johnson295189b2012-06-20 16:38:30 -070014200 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014201 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014203
Jeff Johnson295189b2012-06-20 16:38:30 -070014204 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14205
14206 /*Transition now as WDI may get preempted imediately after it sends
14207 up the Stop Response and it will not get to process the state transition
14208 from Main Rsp function*/
14209 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14210 wpalMutexRelease(&pWDICtx->wptMutex);
14211
14212 /*! TO DO: - STOP the Data transport */
14213
14214 /*Notify UMAC*/
14215 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14216
Jeff Johnsone7245742012-09-05 17:12:55 -070014217 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014218}/*WDI_ProcessStopRsp*/
14219
14220/**
14221 @brief Process Close Rsp function (called when a response
14222 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014223
14224 @param pWDICtx: pointer to the WLAN DAL context
14225 pEventData: pointer to the event information structure
14226
Jeff Johnson295189b2012-06-20 16:38:30 -070014227 @see
14228 @return Result of the function call
14229*/
14230WDI_Status
14231WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014232(
Jeff Johnson295189b2012-06-20 16:38:30 -070014233 WDI_ControlBlockType* pWDICtx,
14234 WDI_EventInfoType* pEventData
14235)
14236{
14237 /*There is no close response comming from HAL - function just kept for
14238 simmetry */
14239 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014240 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014241}/*WDI_ProcessCloseRsp*/
14242
14243
14244/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014245 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014246============================================================================*/
14247
14248/**
14249 @brief Process Init Scan Rsp function (called when a response
14250 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014251
14252 @param pWDICtx: pointer to the WLAN DAL context
14253 pEventData: pointer to the event information structure
14254
Jeff Johnson295189b2012-06-20 16:38:30 -070014255 @see
14256 @return Result of the function call
14257*/
14258WDI_Status
14259WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014260(
Jeff Johnson295189b2012-06-20 16:38:30 -070014261 WDI_ControlBlockType* pWDICtx,
14262 WDI_EventInfoType* pEventData
14263)
14264{
14265 WDI_Status wdiStatus;
14266 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014267 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014268 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14270
14271 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014272 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014273 -------------------------------------------------------------------------*/
14274 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14275 ( NULL == pEventData->pEventData))
14276 {
14277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014278 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014281 }
14282
14283 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14284 if( NULL == wdiInitScanRspCb)
14285 {
14286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014287 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014288 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014290 }
14291
14292 /*-------------------------------------------------------------------------
14293 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014294 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014296 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14297 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 sizeof(halInitScanRspMsg.initScanRspParams));
14299
Jeff Johnsone7245742012-09-05 17:12:55 -070014300 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014301
14302 if ( pWDICtx->bInBmps )
14303 {
14304 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014305 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14306 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14308 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14309 WDI_ASSERT(0);
14310 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014311 }
14312
14313 /*Notify UMAC*/
14314 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14315
Jeff Johnsone7245742012-09-05 17:12:55 -070014316 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014317}/*WDI_ProcessInitScanRsp*/
14318
14319
14320/**
14321 @brief Process Start Scan Rsp function (called when a response
14322 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014323
14324 @param pWDICtx: pointer to the WLAN DAL context
14325 pEventData: pointer to the event information structure
14326
Jeff Johnson295189b2012-06-20 16:38:30 -070014327 @see
14328 @return Result of the function call
14329*/
14330WDI_Status
14331WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014332(
Jeff Johnson295189b2012-06-20 16:38:30 -070014333 WDI_ControlBlockType* pWDICtx,
14334 WDI_EventInfoType* pEventData
14335)
14336{
14337 WDI_StartScanRspParamsType wdiStartScanParams;
14338 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014339
14340 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14342
14343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014344 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 -------------------------------------------------------------------------*/
14346 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14347 ( NULL == pEventData->pEventData))
14348 {
14349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014350 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014351 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014352 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014353 }
14354
14355 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14356 if( NULL == wdiStartScanRspCb)
14357 {
14358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014359 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 }
14363
14364 /*-------------------------------------------------------------------------
14365 Extract response and send it to UMAC
14366 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014367 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14368 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014369 sizeof(halStartScanRspMsg.startScanRspParams));
14370
14371 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14372 halStartScanRspMsg.startScanRspParams.status);
14373#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014376 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014377 halStartScanRspMsg.startScanRspParams.startTSF,
14378 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014379#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014380
14381 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14382 {
14383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14384 "Start scan failed with status %s (%d)",
14385 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14386 halStartScanRspMsg.startScanRspParams.status);
14387 /* send the status to UMAC, don't return from here*/
14388 }
14389
14390 /*Notify UMAC*/
14391 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14392
Jeff Johnsone7245742012-09-05 17:12:55 -070014393 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014394
14395}/*WDI_ProcessStartScanRsp*/
14396
14397
14398/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014399 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014400 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014401
14402 @param pWDICtx: pointer to the WLAN DAL context
14403 pEventData: pointer to the event information structure
14404
Jeff Johnson295189b2012-06-20 16:38:30 -070014405 @see
14406 @return Result of the function call
14407*/
14408WDI_Status
14409WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014410(
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 WDI_ControlBlockType* pWDICtx,
14412 WDI_EventInfoType* pEventData
14413)
14414{
14415 WDI_Status wdiStatus;
14416 tHalEndScanRspMsg halEndScanRspMsg;
14417 WDI_EndScanRspCb wdiEndScanRspCb;
14418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14419
14420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 -------------------------------------------------------------------------*/
14423 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14424 ( NULL == pEventData->pEventData))
14425 {
14426 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014427 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014429 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014430 }
14431
14432 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14433
14434 /*-------------------------------------------------------------------------
14435 Extract response and send it to UMAC
14436 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014437 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14438 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014439 sizeof(halEndScanRspMsg.endScanRspParams));
14440
Jeff Johnsone7245742012-09-05 17:12:55 -070014441 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014442
14443 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14444 {
14445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14446 "End Scan failed with status %s (%d )",
14447 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14448 halEndScanRspMsg.endScanRspParams.status);
14449 /* send the status to UMAC, don't return from here*/
14450 }
14451
14452 /*Notify UMAC*/
14453 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14454
Jeff Johnsone7245742012-09-05 17:12:55 -070014455 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014456}/*WDI_ProcessEndScanRsp*/
14457
14458
14459/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014460 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014462
14463 @param pWDICtx: pointer to the WLAN DAL context
14464 pEventData: pointer to the event information structure
14465
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 @see
14467 @return Result of the function call
14468*/
14469WDI_Status
14470WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014471(
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 WDI_ControlBlockType* pWDICtx,
14473 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014474)
Jeff Johnson295189b2012-06-20 16:38:30 -070014475{
14476 WDI_Status wdiStatus;
14477 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014478
14479 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14481
14482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 -------------------------------------------------------------------------*/
14485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14486 ( NULL == pEventData->pEventData))
14487 {
14488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014490 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 }
14493
14494 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14495
14496 /*-------------------------------------------------------------------------
14497 Extract response and send it to UMAC
14498 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014499 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14500 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14502
Jeff Johnsone7245742012-09-05 17:12:55 -070014503 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014504
14505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014506 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014507 halFinishScanRspMsg.finishScanRspParams.status);
14508
14509 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14510 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14511 {
14512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14513 "Finish Scan failed with status %s (%d)",
14514 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14515 halFinishScanRspMsg.finishScanRspParams.status);
14516 /* send the status to UMAC, don't return from here*/
14517 }
14518
14519 /*Notify UMAC*/
14520 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14521
Jeff Johnsone7245742012-09-05 17:12:55 -070014522 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014523}/*WDI_ProcessFinishScanRsp*/
14524
14525/**
14526 @brief Process Join Response function (called when a response
14527 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014528
14529 @param pWDICtx: pointer to the WLAN DAL context
14530 pEventData: pointer to the event information structure
14531
Jeff Johnson295189b2012-06-20 16:38:30 -070014532 @see
14533 @return Result of the function call
14534*/
14535WDI_Status
14536WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014537(
Jeff Johnson295189b2012-06-20 16:38:30 -070014538 WDI_ControlBlockType* pWDICtx,
14539 WDI_EventInfoType* pEventData
14540)
14541{
14542 WDI_Status wdiStatus;
14543 WDI_JoinRspCb wdiJoinRspCb;
14544 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014545
14546 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14548
14549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 -------------------------------------------------------------------------*/
14552 if (( NULL == pWDICtx ) ||
14553 ( NULL == pWDICtx->pfncRspCB ) ||
14554 ( NULL == pEventData ) ||
14555 ( NULL == pEventData->pEventData))
14556 {
14557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014558 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014559 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014561 }
14562
14563 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14564
14565 /*-------------------------------------------------------------------------
14566 Extract response and send it to UMAC
14567 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014568 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14569 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014570 sizeof(halJoinRspMsg.joinRspParams));
14571
Jeff Johnsone7245742012-09-05 17:12:55 -070014572 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014573
14574 wpalMutexAcquire(&pWDICtx->wptMutex);
14575
14576 /*-----------------------------------------------------------------------
14577 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014578 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14582 {
14583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014584 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14585 "association no longer in progress %d - mysterious HAL response",
14586 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014587
Jeff Johnsone7245742012-09-05 17:12:55 -070014588 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014590 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014591 }
14592
14593 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14594
14595 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014596 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 -----------------------------------------------------------------------*/
14598 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14599 {
14600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14601 "Join only allowed in Joining state - failure state is %d "
14602 "strange HAL response", pBSSSes->wdiAssocState);
14603
Jeff Johnsone7245742012-09-05 17:12:55 -070014604 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14605
Jeff Johnson295189b2012-06-20 16:38:30 -070014606 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014607 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014608 }
14609
14610
14611 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014612 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014613 -----------------------------------------------------------------------*/
14614 if ( WDI_STATUS_SUCCESS != wdiStatus )
14615 {
14616 /*Association was failed by HAL - remove session*/
14617 WDI_DeleteSession(pWDICtx, pBSSSes);
14618
14619 /*Association no longer in progress */
14620 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14621
14622 /*Association no longer in progress - prepare pending assoc for processing*/
14623 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014624
Jeff Johnson295189b2012-06-20 16:38:30 -070014625 }
14626 else
14627 {
14628 /*Transition to state Joining - this may be redundant as we are supposed
14629 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 }
14632
14633 wpalMutexRelease(&pWDICtx->wptMutex);
14634
14635 /*Notify UMAC*/
14636 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14637
Jeff Johnsone7245742012-09-05 17:12:55 -070014638 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014639}/*WDI_ProcessJoinRsp*/
14640
14641
14642/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014643 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014644 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014645
14646 @param pWDICtx: pointer to the WLAN DAL context
14647 pEventData: pointer to the event information structure
14648
Jeff Johnson295189b2012-06-20 16:38:30 -070014649 @see
14650 @return Result of the function call
14651*/
14652WDI_Status
14653WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014654(
Jeff Johnson295189b2012-06-20 16:38:30 -070014655 WDI_ControlBlockType* pWDICtx,
14656 WDI_EventInfoType* pEventData
14657)
14658{
14659 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14660 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014661 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014662 WDI_BSSSessionType* pBSSSes = NULL;
14663
Jeff Johnsone7245742012-09-05 17:12:55 -070014664 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014665 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14666 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014667
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14669
14670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 -------------------------------------------------------------------------*/
14673 if (( NULL == pEventData ) ||
14674 ( NULL == pEventData->pEventData))
14675 {
14676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 }
14681
14682 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14683
14684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14688 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 sizeof(halConfigBssRspMsg.configBssRspParams));
14690
14691 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14692 halConfigBssRspMsg.configBssRspParams.status);
14693 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14694 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14697 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014698
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014700
14701 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014702 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014703
14704 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014705 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014706
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014708
Jeff Johnson295189b2012-06-20 16:38:30 -070014709 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014710 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14712 #endif
14713 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14714 halConfigBssRspMsg.configBssRspParams.staMac,
14715 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014716
Jeff Johnson295189b2012-06-20 16:38:30 -070014717 wpalMutexAcquire(&pWDICtx->wptMutex);
14718 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014719 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014721 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14722 wdiConfigBSSParams.macBSSID,
14723 &pBSSSes);
14724
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 /*-----------------------------------------------------------------------
14726 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014727 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 -----------------------------------------------------------------------*/
14729 if ( NULL == pBSSSes )
14730 {
14731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14732 "Association sequence for this BSS does not yet exist "
14733 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070014734
14735 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14736
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014738 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014740
Jeff Johnson295189b2012-06-20 16:38:30 -070014741 /*Save data for this BSS*/
14742 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
14743 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014744 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014746 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014747 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014748 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014749 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014752 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014753 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
14754 pBSSSes->bcastStaIdx =
14755 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014756
Jeff Johnson295189b2012-06-20 16:38:30 -070014757 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070014758
Jeff Johnson295189b2012-06-20 16:38:30 -070014759 /*-------------------------------------------------------------------------
14760 Add Peer STA
14761 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014762 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014763 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
14764 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014765
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014769 wdiAddSTAParam.ucHTCapable =
14770 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
14771 wdiAddSTAParam.ucStaType =
14772 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
14773
Jeff Johnson295189b2012-06-20 16:38:30 -070014774 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070014775 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
14776 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014778
14779 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
14780 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
14781 WDI_MAC_ADDR_LEN);
14782
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014784 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014786 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014788 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070014789 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014790 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070014791 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014792 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014794 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014795 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014796
Jeff Johnson295189b2012-06-20 16:38:30 -070014797 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14798 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014799
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14801 /*-------------------------------------------------------------------------
14802 Add Broadcast STA only in AP mode
14803 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014804 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 WDI_BSS_OPERATIONAL_MODE_AP )
14806 {
14807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
14808 "Add BCAST STA to table for index: %d",
14809 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070014810
14811 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070014812 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070014813
Jeff Johnson295189b2012-06-20 16:38:30 -070014814 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
14815 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
14816 }
14817 wpalMutexRelease(&pWDICtx->wptMutex);
14818 }
14819 else
14820 {
14821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14822 "Config BSS RSP failed with status : %s(%d)",
14823 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 halConfigBssRspMsg.configBssRspParams.status);
14826
Jeff Johnsone7245742012-09-05 17:12:55 -070014827
Jeff Johnson295189b2012-06-20 16:38:30 -070014828 /*Association was failed by HAL - remove session*/
14829 WDI_DeleteSession(pWDICtx, pBSSSes);
14830
14831 /*Association no longer in progress */
14832 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14833
14834 /*Association no longer in progress - prepare pending assoc for processing*/
14835 WDI_DequeueAssocRequest(pWDICtx);
14836
14837 }
14838
14839 /*Notify UMAC*/
14840 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
14841
Jeff Johnsone7245742012-09-05 17:12:55 -070014842 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014843}/*WDI_ProcessConfigBSSRsp*/
14844
14845
14846/**
14847 @brief Process Del BSS Response function (called when a response
14848 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014849
14850 @param pWDICtx: pointer to the WLAN DAL context
14851 pEventData: pointer to the event information structure
14852
Jeff Johnson295189b2012-06-20 16:38:30 -070014853 @see
14854 @return Result of the function call
14855*/
14856WDI_Status
14857WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014858(
Jeff Johnson295189b2012-06-20 16:38:30 -070014859 WDI_ControlBlockType* pWDICtx,
14860 WDI_EventInfoType* pEventData
14861)
14862{
14863 WDI_DelBSSRspParamsType wdiDelBSSParams;
14864 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014865 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014866 WDI_BSSSessionType* pBSSSes = NULL;
14867
Jeff Johnsone7245742012-09-05 17:12:55 -070014868 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14870
14871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014872 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014873 -------------------------------------------------------------------------*/
14874 if (( NULL == pEventData ) ||
14875 ( NULL == pEventData->pEventData))
14876 {
14877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 }
14882
14883 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
14884
14885 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014886 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014887 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
14889 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014890 sizeof(halDelBssRspMsg.deleteBssRspParams));
14891
14892
14893 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014895
14896 wpalMutexAcquire(&pWDICtx->wptMutex);
14897
14898 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014899 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014900 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014901 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
14902 halDelBssRspMsg.deleteBssRspParams.bssIdx,
14903 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070014904
14905 /*-----------------------------------------------------------------------
14906 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014907 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 -----------------------------------------------------------------------*/
14909 if ( NULL == pBSSSes )
14910 {
14911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14912 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014913 "association no longer in progress - mysterious HAL response");
14914
14915 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14916
14917 wpalMutexRelease(&pWDICtx->wptMutex);
14918 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014919 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014920
14921 /*Extract BSSID for the response to UMAC*/
14922 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
14923 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
14924
14925 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
14926
14927 /*-----------------------------------------------------------------------
14928 The current session will be deleted
14929 -----------------------------------------------------------------------*/
14930 WDI_DeleteSession(pWDICtx, pBSSSes);
14931
14932
14933 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
14934 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070014935 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014936 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070014937 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080014938
14939 /* Delete the STA's in this BSS */
14940 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
14941
Jeff Johnson295189b2012-06-20 16:38:30 -070014942 wpalMutexRelease(&pWDICtx->wptMutex);
14943
14944 /*Notify UMAC*/
14945 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
14946
Jeff Johnsone7245742012-09-05 17:12:55 -070014947 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014948}/*WDI_ProcessDelBSSRsp*/
14949
14950/**
14951 @brief Process Post Assoc Rsp function (called when a response
14952 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014953
14954 @param pWDICtx: pointer to the WLAN DAL context
14955 pEventData: pointer to the event information structure
14956
Jeff Johnson295189b2012-06-20 16:38:30 -070014957 @see
14958 @return Result of the function call
14959*/
14960WDI_Status
14961WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014962(
Jeff Johnson295189b2012-06-20 16:38:30 -070014963 WDI_ControlBlockType* pWDICtx,
14964 WDI_EventInfoType* pEventData
14965)
14966{
14967 WDI_PostAssocRspParamsType wdiPostAssocParams;
14968 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014969 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014970 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14973
14974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014976 -------------------------------------------------------------------------*/
14977 if (( NULL == pEventData ) ||
14978 ( NULL == pEventData->pEventData))
14979 {
14980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014981 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014982 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014984 }
14985
14986 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
14987
14988 /*-------------------------------------------------------------------------
14989 Extract response and send it to UMAC
14990 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014991 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
14992 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014993 sizeof(halPostAssocRspMsg.postAssocRspParams));
14994
14995 /*Extract the Post Assoc STA Params */
14996
Jeff Johnsone7245742012-09-05 17:12:55 -070014997 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014999 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015000 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015001 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15003
Jeff Johnsone7245742012-09-05 17:12:55 -070015004 wdiPostAssocParams.wdiStatus =
15005 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015006
15007 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15008 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015009 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15010 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015011 WDI_MAC_ADDR_LEN);
15012
15013 /* Extract Post Assoc BSS Params */
15014
Jeff Johnsone7245742012-09-05 17:12:55 -070015015 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15016 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15017 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015018
15019 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15020 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015021 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15023 .macSTA, WDI_MAC_ADDR_LEN);
15024
Jeff Johnsone7245742012-09-05 17:12:55 -070015025 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015026 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15027
Jeff Johnsone7245742012-09-05 17:12:55 -070015028 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15030
15031 wdiPostAssocParams.bssParams.ucBSSIdx =
15032 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15033
Jeff Johnsone7245742012-09-05 17:12:55 -070015034 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15036
15037 wpalMutexAcquire(&pWDICtx->wptMutex);
15038
15039 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015040 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015041 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015042 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015043 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015045
15046 /*-----------------------------------------------------------------------
15047 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 -----------------------------------------------------------------------*/
15050 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015051 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015052 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15053 {
15054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15055 "Association sequence for this BSS does not yet exist or "
15056 "association no longer in progress - mysterious HAL response");
15057
Jeff Johnsone7245742012-09-05 17:12:55 -070015058 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15059
Jeff Johnson295189b2012-06-20 16:38:30 -070015060 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015061 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 }
15063
15064 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015065 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015066 -----------------------------------------------------------------------*/
15067 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15068 {
15069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15070 "Post Assoc not allowed before JOIN - failing request "
15071 "strange HAL response");
15072
Jeff Johnsone7245742012-09-05 17:12:55 -070015073 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15074
Jeff Johnson295189b2012-06-20 16:38:30 -070015075 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015076 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 }
15078
15079 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 -----------------------------------------------------------------------*/
15082 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15083 {
15084 /*Association was failed by HAL - remove session*/
15085 WDI_DeleteSession(pWDICtx, pBSSSes);
15086 }
15087 else
15088 {
15089 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015090 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015091
15092 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015093 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015094 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015095 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015096 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015097 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015098 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015099 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015100 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15101
Jeff Johnsone7245742012-09-05 17:12:55 -070015102 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15104 }
15105
15106 /*Association no longer in progress */
15107 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15108
15109 /*Association no longer in progress - prepare pending assoc for processing*/
15110 WDI_DequeueAssocRequest(pWDICtx);
15111
15112 wpalMutexRelease(&pWDICtx->wptMutex);
15113
15114 /*Notify UMAC*/
15115 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15116
Jeff Johnsone7245742012-09-05 17:12:55 -070015117 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015118}/*WDI_ProcessPostAssocRsp*/
15119
15120/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015121 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015123
15124 @param pWDICtx: pointer to the WLAN DAL context
15125 pEventData: pointer to the event information structure
15126
Jeff Johnson295189b2012-06-20 16:38:30 -070015127 @see
15128 @return Result of the function call
15129*/
15130WDI_Status
15131WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015132(
Jeff Johnson295189b2012-06-20 16:38:30 -070015133 WDI_ControlBlockType* pWDICtx,
15134 WDI_EventInfoType* pEventData
15135)
15136{
15137 WDI_DelSTARspParamsType wdiDelSTARsp;
15138 WDI_DelSTARspCb wdiDelSTARspCb;
15139 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015140 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15142
15143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015145 -------------------------------------------------------------------------*/
15146 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15147 ( NULL == pEventData->pEventData))
15148 {
15149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015153 }
15154
15155 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15156
15157 /*-------------------------------------------------------------------------
15158 Extract response and send it to UMAC
15159 -------------------------------------------------------------------------*/
15160 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015161 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015162 sizeof(halDelStaRspMsg.delStaRspParams));
15163
15164 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015165 wdiDelSTARsp.wdiStatus =
15166 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015167
15168 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15169
15170 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15171 if(staType == WDI_STA_ENTRY_SELF)
15172 {
15173 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15174
15175 /* At this point add the self-STA */
15176
15177 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15178 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15179 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15180
15181#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15182#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15183
15184 //all DPU indices are the same for self STA
15185 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15186 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15187 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15188 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15189 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15190 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015191
15192 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015193 }
15194 else
15195 {
15196 //Delete the station in the table
15197 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15198 }
15199
15200 /*Notify UMAC*/
15201 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15202
Jeff Johnsone7245742012-09-05 17:12:55 -070015203 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015204}/*WDI_ProcessDelSTARsp*/
15205
15206
15207/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015208 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015209==========================================================================*/
15210
15211/**
15212 @brief Process Set BSS Key Rsp function (called when a response
15213 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015214
15215 @param pWDICtx: pointer to the WLAN DAL context
15216 pEventData: pointer to the event information structure
15217
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 @see
15219 @return Result of the function call
15220*/
15221WDI_Status
15222WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015223(
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 WDI_ControlBlockType* pWDICtx,
15225 WDI_EventInfoType* pEventData
15226)
15227{
15228 WDI_Status wdiStatus;
15229 eHalStatus halStatus;
15230 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15232
15233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015235 -------------------------------------------------------------------------*/
15236 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15237 ( NULL == pEventData->pEventData))
15238 {
15239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 }
15244
15245 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15246
15247 /*-------------------------------------------------------------------------
15248 Extract response and send it to UMAC
15249 -------------------------------------------------------------------------*/
15250 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015252
15253 if ( eHAL_STATUS_SUCCESS != halStatus )
15254 {
15255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15256 "Set BSS Key failed with status %s (%d)",
15257 WDI_getHALStatusMsgString(halStatus),
15258 halStatus);
15259 /* send the status to UMAC, don't return from here*/
15260 }
15261
15262 /*Notify UMAC*/
15263 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15264
Jeff Johnsone7245742012-09-05 17:12:55 -070015265 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015266}/*WDI_ProcessSetBssKeyRsp*/
15267
15268/**
15269 @brief Process Remove BSS Key Rsp function (called when a response
15270 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015271
15272 @param pWDICtx: pointer to the WLAN DAL context
15273 pEventData: pointer to the event information structure
15274
Jeff Johnson295189b2012-06-20 16:38:30 -070015275 @see
15276 @return Result of the function call
15277*/
15278WDI_Status
15279WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015280(
Jeff Johnson295189b2012-06-20 16:38:30 -070015281 WDI_ControlBlockType* pWDICtx,
15282 WDI_EventInfoType* pEventData
15283)
15284{
15285 WDI_Status wdiStatus;
15286 eHalStatus halStatus;
15287 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15289
15290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015292 -------------------------------------------------------------------------*/
15293 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15294 ( NULL == pEventData->pEventData))
15295 {
15296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 }
15301
15302 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15303
15304 /*-------------------------------------------------------------------------
15305 Extract response and send it to UMAC
15306 -------------------------------------------------------------------------*/
15307 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015308 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015309
15310 if ( eHAL_STATUS_SUCCESS != halStatus )
15311 {
15312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15313 "Remove BSS Key failed with status %s (%d )",
15314 WDI_getHALStatusMsgString(halStatus),
15315 halStatus);
15316 /* send the status to UMAC, don't return from here*/
15317 }
15318
15319 /*Notify UMAC*/
15320 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15321
Jeff Johnsone7245742012-09-05 17:12:55 -070015322 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015323}/*WDI_ProcessSetBssKeyRsp*/
15324
15325
15326/**
15327 @brief Process Set STA Key Rsp function (called when a response
15328 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015329
15330 @param pWDICtx: pointer to the WLAN DAL context
15331 pEventData: pointer to the event information structure
15332
Jeff Johnson295189b2012-06-20 16:38:30 -070015333 @see
15334 @return Result of the function call
15335*/
15336WDI_Status
15337WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015338(
Jeff Johnson295189b2012-06-20 16:38:30 -070015339 WDI_ControlBlockType* pWDICtx,
15340 WDI_EventInfoType* pEventData
15341)
15342{
15343 WDI_Status wdiStatus;
15344 eHalStatus halStatus;
15345 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15347
15348 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015349 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 -------------------------------------------------------------------------*/
15351 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15352 ( NULL == pEventData->pEventData))
15353 {
15354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 }
15359
15360 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15361
15362 /*-------------------------------------------------------------------------
15363 Extract response and send it to UMAC
15364 -------------------------------------------------------------------------*/
15365 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015367
15368 if ( eHAL_STATUS_SUCCESS != halStatus )
15369 {
15370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15371 "Set STA Key failed with status %s (%d)",
15372 WDI_getHALStatusMsgString(halStatus),
15373 halStatus);
15374 /* send the status to UMAC, don't return from here*/
15375 }
15376
15377 /*Notify UMAC*/
15378 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15379
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015381}/*WDI_ProcessSetSTAKeyRsp*/
15382
15383/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015384 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015385 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015386
15387 @param pWDICtx: pointer to the WLAN DAL context
15388 pEventData: pointer to the event information structure
15389
Jeff Johnson295189b2012-06-20 16:38:30 -070015390 @see
15391 @return Result of the function call
15392*/
15393WDI_Status
15394WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015395(
Jeff Johnson295189b2012-06-20 16:38:30 -070015396 WDI_ControlBlockType* pWDICtx,
15397 WDI_EventInfoType* pEventData
15398)
15399{
15400 WDI_Status wdiStatus;
15401 eHalStatus halStatus;
15402 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15403 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15404
15405 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015406 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015407 -------------------------------------------------------------------------*/
15408 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15409 ( NULL == pEventData->pEventData))
15410 {
15411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015412 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015413 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015415 }
15416
15417 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15418
15419 /*-------------------------------------------------------------------------
15420 Extract response and send it to UMAC
15421 -------------------------------------------------------------------------*/
15422 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015423 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015424
15425 if ( eHAL_STATUS_SUCCESS != halStatus )
15426 {
15427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15428 "Remove STA Key failed with status %s (%d)",
15429 WDI_getHALStatusMsgString(halStatus),
15430 halStatus);
15431 /* send the status to UMAC, don't return from here*/
15432 }
15433
15434 /*Notify UMAC*/
15435 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15436
Jeff Johnsone7245742012-09-05 17:12:55 -070015437 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015438}/*WDI_ProcessRemoveStaKeyRsp*/
15439
15440/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015441 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015442 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015443
15444 @param pWDICtx: pointer to the WLAN DAL context
15445 pEventData: pointer to the event information structure
15446
Jeff Johnson295189b2012-06-20 16:38:30 -070015447 @see
15448 @return Result of the function call
15449*/
15450WDI_Status
15451WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015452(
Jeff Johnson295189b2012-06-20 16:38:30 -070015453 WDI_ControlBlockType* pWDICtx,
15454 WDI_EventInfoType* pEventData
15455)
15456{
15457 WDI_Status wdiStatus;
15458 eHalStatus halStatus;
15459 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15460 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15461
15462 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015463 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015464 -------------------------------------------------------------------------*/
15465 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15466 ( NULL == pEventData->pEventData))
15467 {
15468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015472 }
15473
15474 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15475
15476 /*-------------------------------------------------------------------------
15477 Extract response and send it to UMAC
15478 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015479 wpalMemoryCopy( &halStatus,
15480 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015481 sizeof(halStatus));
15482
Jeff Johnsone7245742012-09-05 17:12:55 -070015483 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015484
15485 if ( eHAL_STATUS_SUCCESS != halStatus )
15486 {
15487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15488 "Set STA Key failed with status %s (%d)",
15489 WDI_getHALStatusMsgString(halStatus),
15490 halStatus);
15491 /* send the status to UMAC, don't return from here*/
15492 }
15493
15494 /*Notify UMAC*/
15495 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15496
Jeff Johnsone7245742012-09-05 17:12:55 -070015497 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015498}/*WDI_ProcessSetSTABcastKeyRsp*/
15499
15500/**
15501 @brief Process Remove STA Bcast Key Rsp function (called when a
15502 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015503
15504 @param pWDICtx: pointer to the WLAN DAL context
15505 pEventData: pointer to the event information structure
15506
Jeff Johnson295189b2012-06-20 16:38:30 -070015507 @see
15508 @return Result of the function call
15509*/
15510WDI_Status
15511WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015512(
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 WDI_ControlBlockType* pWDICtx,
15514 WDI_EventInfoType* pEventData
15515)
15516{
15517 WDI_Status wdiStatus;
15518 eHalStatus halStatus;
15519 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15521
15522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015524 -------------------------------------------------------------------------*/
15525 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15526 ( NULL == pEventData->pEventData))
15527 {
15528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015529 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015530 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015531 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015532 }
15533
15534 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15535
15536 /*-------------------------------------------------------------------------
15537 Extract response and send it to UMAC
15538 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 wpalMemoryCopy( &halStatus,
15540 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015541 sizeof(halStatus));
15542
Jeff Johnsone7245742012-09-05 17:12:55 -070015543 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015544
15545 if ( eHAL_STATUS_SUCCESS != halStatus )
15546 {
15547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15548 "Remove STA Key failed with status %s (%d)",
15549 WDI_getHALStatusMsgString(halStatus),
15550 halStatus);
15551 /* send the status to UMAC, don't return from here*/
15552 }
15553
15554 /*Notify UMAC*/
15555 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15556
Jeff Johnsone7245742012-09-05 17:12:55 -070015557 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015558}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15559
15560
15561/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015562 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015563==========================================================================*/
15564
15565/**
15566 @brief Process Add TSpec Rsp function (called when a response
15567 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015568
15569 @param pWDICtx: pointer to the WLAN DAL context
15570 pEventData: pointer to the event information structure
15571
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 @see
15573 @return Result of the function call
15574*/
15575WDI_Status
15576WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015577(
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 WDI_ControlBlockType* pWDICtx,
15579 WDI_EventInfoType* pEventData
15580)
15581{
15582 WDI_Status wdiStatus;
15583 eHalStatus halStatus;
15584 WDI_AddTsRspCb wdiAddTsRspCb;
15585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15586
15587 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015588 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015589 -------------------------------------------------------------------------*/
15590 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15591 ( NULL == pEventData->pEventData))
15592 {
15593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 }
15598
15599 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15600
15601 /*-------------------------------------------------------------------------
15602 Extract response and send it to UMAC
15603 -------------------------------------------------------------------------*/
15604 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015605 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015606
15607 /*Notify UMAC*/
15608 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15609
Jeff Johnsone7245742012-09-05 17:12:55 -070015610 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015611}/*WDI_ProcessAddTSpecRsp*/
15612
15613
15614/**
15615 @brief Process Del TSpec Rsp function (called when a response
15616 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015617
15618 @param pWDICtx: pointer to the WLAN DAL context
15619 pEventData: pointer to the event information structure
15620
Jeff Johnson295189b2012-06-20 16:38:30 -070015621 @see
15622 @return Result of the function call
15623*/
15624WDI_Status
15625WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015626(
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 WDI_ControlBlockType* pWDICtx,
15628 WDI_EventInfoType* pEventData
15629)
15630{
15631 WDI_Status wdiStatus;
15632 eHalStatus halStatus;
15633 WDI_DelTsRspCb wdiDelTsRspCb;
15634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15635
15636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015638 -------------------------------------------------------------------------*/
15639 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15640 ( NULL == pEventData->pEventData))
15641 {
15642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 }
15647
15648 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15649
15650 /*-------------------------------------------------------------------------
15651 Extract response and send it to UMAC
15652 -------------------------------------------------------------------------*/
15653 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015654 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015655
15656 /*Notify UMAC*/
15657 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15658
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015660}/*WDI_ProcessDelTSpecRsp*/
15661
15662/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015663 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015664 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015665
15666 @param pWDICtx: pointer to the WLAN DAL context
15667 pEventData: pointer to the event information structure
15668
Jeff Johnson295189b2012-06-20 16:38:30 -070015669 @see
15670 @return Result of the function call
15671*/
15672WDI_Status
15673WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015674(
Jeff Johnson295189b2012-06-20 16:38:30 -070015675 WDI_ControlBlockType* pWDICtx,
15676 WDI_EventInfoType* pEventData
15677)
15678{
15679 WDI_Status wdiStatus;
15680 eHalStatus halStatus;
15681 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15683
15684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 -------------------------------------------------------------------------*/
15687 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15688 ( NULL == pEventData->pEventData))
15689 {
15690 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015691 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 }
15695
15696 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15697
15698 /*-------------------------------------------------------------------------
15699 Extract response and send it to UMAC
15700 -------------------------------------------------------------------------*/
15701 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015702 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015703
15704 /*Notify UMAC*/
15705 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15706
Jeff Johnsone7245742012-09-05 17:12:55 -070015707 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015708}/*WDI_ProcessUpdateEDCAParamsRsp*/
15709
15710
15711/**
15712 @brief Process Add BA Rsp function (called when a response
15713 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015714
15715 @param pWDICtx: pointer to the WLAN DAL context
15716 pEventData: pointer to the event information structure
15717
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 @see
15719 @return Result of the function call
15720*/
15721WDI_Status
15722WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015723(
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 WDI_ControlBlockType* pWDICtx,
15725 WDI_EventInfoType* pEventData
15726)
15727{
15728 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
15729
15730 tAddBASessionRspParams halBASessionRsp;
15731 WDI_AddBASessionRspParamsType wdiBASessionRsp;
15732
Jeff Johnsone7245742012-09-05 17:12:55 -070015733
Jeff Johnson295189b2012-06-20 16:38:30 -070015734 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15735
15736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015737 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015738 -------------------------------------------------------------------------*/
15739 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15740 ( NULL == pEventData->pEventData))
15741 {
15742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015743 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 }
15747
15748 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
15749
15750 /*-------------------------------------------------------------------------
15751 Extract response and send it to UMAC
15752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 wpalMemoryCopy( &halBASessionRsp,
15754 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015755 sizeof(halBASessionRsp));
15756
15757 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
15758
Jeff Johnson43971f52012-07-17 12:26:56 -070015759 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015760 {
15761 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
15762 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
15763 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
15764 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
15765 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
15766 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
15767 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
15768 }
15769
15770 /*Notify UMAC*/
15771 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
15772
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015774}/*WDI_ProcessAddSessionBARsp*/
15775
15776
15777/**
15778 @brief Process Del BA Rsp function (called when a response
15779 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015780
15781 @param pWDICtx: pointer to the WLAN DAL context
15782 pEventData: pointer to the event information structure
15783
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 @see
15785 @return Result of the function call
15786*/
15787WDI_Status
15788WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015789(
Jeff Johnson295189b2012-06-20 16:38:30 -070015790 WDI_ControlBlockType* pWDICtx,
15791 WDI_EventInfoType* pEventData
15792)
15793{
15794 WDI_Status wdiStatus;
15795 eHalStatus halStatus;
15796 WDI_DelBARspCb wdiDelBARspCb;
15797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15798
15799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015801 -------------------------------------------------------------------------*/
15802 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15803 ( NULL == pEventData->pEventData))
15804 {
15805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015809 }
15810
15811 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
15812
15813 /*-------------------------------------------------------------------------
15814 Extract response and send it to UMAC
15815 -------------------------------------------------------------------------*/
15816 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015817 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015818
15819 if ( eHAL_STATUS_SUCCESS == halStatus )
15820 {
15821 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
15822 }
15823
15824 /*Notify UMAC*/
15825 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
15826
Jeff Johnsone7245742012-09-05 17:12:55 -070015827 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015828}/*WDI_ProcessDelBARsp*/
15829
15830#ifdef FEATURE_WLAN_CCX
15831/**
15832 @brief Process TSM Stats Rsp function (called when a response
15833 is being received over the bus from HAL)
15834
15835 @param pWDICtx: pointer to the WLAN DAL context
15836 pEventData: pointer to the event information structure
15837
15838 @see
15839 @return Result of the function call
15840*/
15841WDI_Status
15842WDI_ProcessTsmStatsRsp
15843(
15844 WDI_ControlBlockType* pWDICtx,
15845 WDI_EventInfoType* pEventData
15846)
15847{
15848 WDI_TsmRspCb wdiTsmStatsRspCb;
15849 tTsmStatsRspMsg halTsmStatsRspMsg;
15850 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
15851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15852
15853 /*-------------------------------------------------------------------------
15854 Sanity check
15855 -------------------------------------------------------------------------*/
15856 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15857 ( NULL == pEventData->pEventData))
15858 {
15859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015860 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015861 WDI_ASSERT(0);
15862 return WDI_STATUS_E_FAILURE;
15863 }
15864
15865 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
15866
15867 /*-------------------------------------------------------------------------
15868 Unpack HAL Response Message - the header was already extracted by the
15869 main Response Handling procedure
15870 -------------------------------------------------------------------------*/
15871 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
15872 pEventData->pEventData,
15873 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
15874
15875 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
15876 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
15877 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
15878 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
15879 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
15880 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
15881 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
15882 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
15883 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
15884 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
15885 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
15886 halTsmStatsRspMsg.tsmStatsRspParams.status);
15887
15888 /*Notify UMAC*/
15889 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
15890
15891 return WDI_STATUS_SUCCESS;
15892}/*WDI_ProcessTsmStatsRsp*/
15893
15894#endif
15895
15896
15897
15898/**
15899 @brief Process Flush AC Rsp function (called when a response
15900 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015901
15902 @param pWDICtx: pointer to the WLAN DAL context
15903 pEventData: pointer to the event information structure
15904
Jeff Johnson295189b2012-06-20 16:38:30 -070015905 @see
15906 @return Result of the function call
15907*/
15908WDI_Status
15909WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015910(
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 WDI_ControlBlockType* pWDICtx,
15912 WDI_EventInfoType* pEventData
15913)
15914{
15915 WDI_Status wdiStatus;
15916 eHalStatus halStatus;
15917 WDI_FlushAcRspCb wdiFlushAcRspCb;
15918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15919
15920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 -------------------------------------------------------------------------*/
15923 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15924 ( NULL == pEventData->pEventData))
15925 {
15926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015927 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015928 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015929 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 }
15931
15932 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
15933
15934 /*-------------------------------------------------------------------------
15935 Extract response and send it to UMAC
15936 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 wpalMemoryCopy( &halStatus,
15938 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015939 sizeof(halStatus));
15940
Jeff Johnsone7245742012-09-05 17:12:55 -070015941 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015942
15943 /*Notify UMAC*/
15944 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15945
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015947}/*WDI_ProcessFlushAcRsp*/
15948
15949/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015952
15953 @param pWDICtx: pointer to the WLAN DAL context
15954 pEventData: pointer to the event information structure
15955
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 @see
15957 @return Result of the function call
15958*/
15959WDI_Status
15960WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015961(
Jeff Johnson295189b2012-06-20 16:38:30 -070015962 WDI_ControlBlockType* pWDICtx,
15963 WDI_EventInfoType* pEventData
15964)
15965{
15966 WDI_Status wdiStatus;
15967 eHalStatus halStatus;
15968 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
15969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15970
15971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015972 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015973 -------------------------------------------------------------------------*/
15974 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15975 ( NULL == pEventData->pEventData))
15976 {
15977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015978 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015979 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015980 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015981 }
15982
15983 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
15984
15985 /*-------------------------------------------------------------------------
15986 Extract response and send it to UMAC
15987 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015988 wpalMemoryCopy( &halStatus,
15989 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015990 sizeof(halStatus));
15991
Jeff Johnsone7245742012-09-05 17:12:55 -070015992 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015993
15994 /*Notify UMAC*/
15995 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15996
Jeff Johnsone7245742012-09-05 17:12:55 -070015997 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015998}/*WDI_ProcessBtAmpEventRsp*/
15999
16000
16001/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016002 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016003 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016004
16005 @param pWDICtx: pointer to the WLAN DAL context
16006 pEventData: pointer to the event information structure
16007
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 @see
16009 @return Result of the function call
16010*/
16011WDI_Status
16012WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016013(
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 WDI_ControlBlockType* pWDICtx,
16015 WDI_EventInfoType* pEventData
16016)
16017{
16018 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16019 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16020 tAddStaSelfRspMsg halAddStaSelfRsp;
16021 WDI_AddStaParams wdiAddSTAParam = {0};
16022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16023
16024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016025 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016026 -------------------------------------------------------------------------*/
16027 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16028 ( NULL == pEventData->pEventData))
16029 {
16030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016031 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016032 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016034 }
16035
Jeff Johnsone7245742012-09-05 17:12:55 -070016036 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016037 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16038
16039 /*-------------------------------------------------------------------------
16040 Extract response and send it to UMAC
16041 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016042 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16043 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016044 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16045
16046
Jeff Johnsone7245742012-09-05 17:12:55 -070016047 wdiAddSTASelfParams.wdiStatus =
16048 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016049
Jeff Johnsone7245742012-09-05 17:12:55 -070016050 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016052 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016053 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016054 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016055 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16056
16057 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16058 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16059 WDI_MAC_ADDR_LEN);
16060
16061
16062#ifdef HAL_SELF_STA_PER_BSS
16063
16064 /* At this point add the self-STA */
16065
16066 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16067 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16068 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16069
16070 //all DPU indices are the same for self STA
16071
16072 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016073 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016074 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16075 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16076 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16077 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16078 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16079
16080 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16081 WDI_MAC_ADDR_LEN);
16082
16083 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16084 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16085
Jeff Johnsone7245742012-09-05 17:12:55 -070016086 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016087 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16088 {
16089 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16090 }
16091#endif
16092
16093 /*Notify UMAC*/
16094 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16095
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016097}/*WDI_ProcessAddSTASelfRsp*/
16098
16099
16100
16101/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016102 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016103 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016104
16105 @param pWDICtx: pointer to the WLAN DAL context
16106 pEventData: pointer to the event information structure
16107
Jeff Johnson295189b2012-06-20 16:38:30 -070016108 @see
16109 @return Result of the function call
16110*/
16111WDI_Status
16112WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016113(
Jeff Johnson295189b2012-06-20 16:38:30 -070016114 WDI_ControlBlockType* pWDICtx,
16115 WDI_EventInfoType* pEventData
16116)
16117{
16118 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16119 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16120 tDelStaSelfRspParams delStaSelfRspParams;
16121 wpt_uint8 ucStaIdx;
16122
16123 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16124
16125 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016127 -------------------------------------------------------------------------*/
16128 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16129 ( NULL == pEventData->pEventData))
16130 {
16131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016132 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016135 }
16136
16137 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16138
16139 /*-------------------------------------------------------------------------
16140 Extract response and send it to UMAC
16141 -------------------------------------------------------------------------*/
16142
Jeff Johnsone7245742012-09-05 17:12:55 -070016143 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016144 (wpt_uint8*)pEventData->pEventData,
16145 sizeof(tDelStaSelfRspParams));
16146
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 wdiDelStaSelfRspParams.wdiStatus =
16148 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016149
Jeff Johnsone7245742012-09-05 17:12:55 -070016150 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016151 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16152 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16153 {
16154 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016155 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016156 delStaSelfRspParams.selfMacAddr,
16157 &ucStaIdx);
16158 if(WDI_STATUS_E_FAILURE == wdiStatus)
16159 {
16160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016161 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 }
16165 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16166 }
16167
16168 /*Notify UMAC*/
16169 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16170
16171 return WDI_STATUS_SUCCESS;
16172}
16173
Jeff Johnsone7245742012-09-05 17:12:55 -070016174#ifdef FEATURE_OEM_DATA_SUPPORT
16175/**
16176 @brief Start Oem Data Rsp function (called when a
16177 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016178
Jeff Johnsone7245742012-09-05 17:12:55 -070016179 @param pWDICtx: pointer to the WLAN DAL context
16180 pEventData: pointer to the event information structure
16181
16182 @see
16183 @return Result of the function call
16184*/
16185#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16186
16187WDI_Status
16188WDI_ProcessStartOemDataRsp
16189(
16190 WDI_ControlBlockType* pWDICtx,
16191 WDI_EventInfoType* pEventData
16192)
16193{
16194 WDI_oemDataRspCb wdiOemDataRspCb;
16195 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16196 tStartOemDataRspParams* halStartOemDataRspParams;
16197
16198 /*-------------------------------------------------------------------------
16199 Sanity check
16200 -------------------------------------------------------------------------*/
16201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16202 ( NULL == pEventData->pEventData))
16203 {
16204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016205 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016206 WDI_ASSERT(0);
16207 return WDI_STATUS_E_FAILURE;
16208 }
16209
16210 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16211
16212 /*-------------------------------------------------------------------------
16213 Extract response and send it to UMAC
16214 -------------------------------------------------------------------------*/
16215 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16216
16217
16218 //It is the responsibility of the application code to check for failure
16219 //conditions!
16220
16221 //Allocate memory for WDI OEM DATA RSP structure
16222 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16223
16224 if(NULL == wdiOemDataRspParams)
16225 {
16226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16227 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16228 pWDICtx, pEventData, pEventData->pEventData);
16229 WDI_ASSERT(0);
16230 return WDI_STATUS_E_FAILURE;
16231 }
16232
16233 /* Populate WDI structure members */
16234 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16235
16236 /*Notify UMAC*/
16237 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16238
16239 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16240 wpalMemoryFree(wdiOemDataRspParams);
16241
16242 return WDI_STATUS_SUCCESS;
16243}/*WDI_PrcoessStartOemDataRsp*/
16244#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016245
16246/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016247 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016248===========================================================================*/
16249
16250/**
16251 @brief Process Channel Switch Rsp function (called when a response
16252 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016253
16254 @param pWDICtx: pointer to the WLAN DAL context
16255 pEventData: pointer to the event information structure
16256
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 @see
16258 @return Result of the function call
16259*/
16260WDI_Status
16261WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016262(
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 WDI_ControlBlockType* pWDICtx,
16264 WDI_EventInfoType* pEventData
16265)
16266{
16267 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16268 WDI_SwitchChRspCb wdiChSwitchRspCb;
16269 tSwitchChannelRspParams halSwitchChannelRsp;
16270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16271
16272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016274 -------------------------------------------------------------------------*/
16275 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16276 ( NULL == pEventData->pEventData))
16277 {
16278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016279 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016282 }
16283
16284 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16285
16286 /*-------------------------------------------------------------------------
16287 Extract response and send it to UMAC
16288 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016289 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016290 (wpt_uint8*)pEventData->pEventData,
16291 sizeof(halSwitchChannelRsp));
16292
Jeff Johnsone7245742012-09-05 17:12:55 -070016293 wdiSwitchChRsp.wdiStatus =
16294 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016295 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16296
16297#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016298 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016299#endif
16300
16301 /*Notify UMAC*/
16302 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16303
Jeff Johnsone7245742012-09-05 17:12:55 -070016304 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016305}/*WDI_ProcessChannelSwitchRsp*/
16306
16307
16308/**
16309 @brief Process Config STA Rsp function (called when a response
16310 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016311
16312 @param pWDICtx: pointer to the WLAN DAL context
16313 pEventData: pointer to the event information structure
16314
Jeff Johnson295189b2012-06-20 16:38:30 -070016315 @see
16316 @return Result of the function call
16317*/
16318WDI_Status
16319WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016320(
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 WDI_ControlBlockType* pWDICtx,
16322 WDI_EventInfoType* pEventData
16323)
16324{
16325 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16326 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16327 WDI_AddStaParams wdiAddSTAParam;
16328
16329 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016331
Jeff Johnsone7245742012-09-05 17:12:55 -070016332 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016333 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16334
16335 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016336 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016337 -------------------------------------------------------------------------*/
16338 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16339 ( NULL == pEventData->pEventData))
16340 {
16341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016342 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016343 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016344 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016345 }
16346
16347 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16348
16349 /*-------------------------------------------------------------------------
16350 Extract response and send it to UMAC
16351 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016352 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16353 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016354 sizeof(halConfigStaRsp.configStaRspParams));
16355
16356
16357 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16358 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16359 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16360 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16361 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16362
16363 /* MAC Address of STA - take from cache as it does not come back in the
16364 response*/
16365 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016366 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016367 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016368
16369 wdiCfgSTAParams.wdiStatus =
16370 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016371
16372 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16373 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16374 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16375
16376 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16377 {
16378 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16379 {
16380 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016381 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016382 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16383 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016384
Jeff Johnson295189b2012-06-20 16:38:30 -070016385 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016386 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016387 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016388 wdiAddSTAParam.ucHTCapable =
16389 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16390 wdiAddSTAParam.ucStaType =
16391 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16392
Jeff Johnson295189b2012-06-20 16:38:30 -070016393 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016394 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16395 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016396 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016397
16398 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16399 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16400 WDI_MAC_ADDR_LEN);
16401
16402 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16403 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16404 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016405
16406 if ( NULL == pBSSSes )
16407 {
16408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16409 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016410
Jeff Johnson295189b2012-06-20 16:38:30 -070016411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016412 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016413 }
16414
16415 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016416 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016418 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016419 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016422 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016423 halConfigStaRsp.configStaRspParams.ucBcastSig;
16424 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16425 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016426
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16428 }
16429 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16430 {
16431 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16432
Jeff Johnsone7245742012-09-05 17:12:55 -070016433 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016434 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016435 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016436 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016437 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016438 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016439 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016440 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016441 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016442 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016443 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016444 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016445 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016446 halConfigStaRsp.configStaRspParams.ucUcastSig;
16447 }
16448 }
16449
16450 /*Notify UMAC*/
16451 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16452
Jeff Johnsone7245742012-09-05 17:12:55 -070016453 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016454}/*WDI_ProcessConfigStaRsp*/
16455
16456
16457/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016458 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016459 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016460
16461 @param pWDICtx: pointer to the WLAN DAL context
16462 pEventData: pointer to the event information structure
16463
Jeff Johnson295189b2012-06-20 16:38:30 -070016464 @see
16465 @return Result of the function call
16466*/
16467WDI_Status
16468WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016469(
Jeff Johnson295189b2012-06-20 16:38:30 -070016470 WDI_ControlBlockType* pWDICtx,
16471 WDI_EventInfoType* pEventData
16472)
16473{
16474 WDI_Status wdiStatus;
16475 eHalStatus halStatus;
16476 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16477
16478 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016479 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16481
16482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 -------------------------------------------------------------------------*/
16485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16486 ( NULL == pEventData->pEventData))
16487 {
16488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016490 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016492 }
16493
16494 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16495
16496 wpalMutexAcquire(&pWDICtx->wptMutex);
16497
16498 /*If the link is being transitioned to idle - the BSS is to be deleted
16499 - this type of ending a session is possible when UMAC has failed an
16500 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016501 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016502 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16503 {
16504 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016505 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016506 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016507 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16508 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16509 &pBSSSes);
16510
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 /*-----------------------------------------------------------------------
16512 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016513 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016514 -----------------------------------------------------------------------*/
16515 if ( NULL == pBSSSes )
16516 {
16517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16518 "Set link response received outside association session");
16519 }
16520 else
16521 {
16522 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16523 will be del BSS coming after this to stop the beaconing & cleaning up the
16524 sessions*/
16525 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16526 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16527 {
16528 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016529 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016530 -----------------------------------------------------------------------*/
16531 WDI_DeleteSession(pWDICtx, pBSSSes);
16532
16533 /*-----------------------------------------------------------------------
16534 Check to see if this association is in progress - if so disable the
16535 flag as this has ended
16536 -----------------------------------------------------------------------*/
16537 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016538 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016539 /*Association no longer in progress */
16540 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16541 /*Association no longer in progress - prepare pending assoc for processing*/
16542 WDI_DequeueAssocRequest(pWDICtx);
16543 }
16544 }
16545 }
16546 }
16547 /* If the link state has been set to POST ASSOC, reset the "association in
16548 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016549 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016550 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16551 {
16552 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16553 WDI_DequeueAssocRequest(pWDICtx);
16554 }
16555
16556 wpalMutexRelease(&pWDICtx->wptMutex);
16557
16558 /*-------------------------------------------------------------------------
16559 Extract response and send it to UMAC
16560 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016561 wpalMemoryCopy( &halStatus,
16562 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 sizeof(halStatus));
16564
Jeff Johnsone7245742012-09-05 17:12:55 -070016565 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016566
16567 /*Notify UMAC*/
16568 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16569
Jeff Johnsone7245742012-09-05 17:12:55 -070016570 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016571}/*WDI_ProcessSetLinkStateRsp*/
16572
16573/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016574 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016575 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016576
16577 @param pWDICtx: pointer to the WLAN DAL context
16578 pEventData: pointer to the event information structure
16579
Jeff Johnson295189b2012-06-20 16:38:30 -070016580 @see
16581 @return Result of the function call
16582*/
16583WDI_Status
16584WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016585(
Jeff Johnson295189b2012-06-20 16:38:30 -070016586 WDI_ControlBlockType* pWDICtx,
16587 WDI_EventInfoType* pEventData
16588)
16589{
16590 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16591 WDI_GetStatsRspCb wdiGetStatsRspCb;
16592 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016593
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16595
16596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016597 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016598 -------------------------------------------------------------------------*/
16599 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16600 ( NULL == pEventData->pEventData))
16601 {
16602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016606 }
16607
16608 /*-------------------------------------------------------------------------
16609 Extract response and send it to UMAC
16610 -------------------------------------------------------------------------*/
16611 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16612
16613 /*allocate the stats response buffer */
16614 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16615 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16616 + sizeof(WDI_GetStatsRspParamsType));
16617
16618 if(NULL == wdiGetStatsRsp)
16619 {
16620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16621 "Failed to allocate memory in Get Stats Response %x %x %x ",
16622 pWDICtx, pEventData, pEventData->pEventData);
16623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016625 }
16626
16627 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16628
16629 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16630 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16631 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16632 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16633 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16634 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16635
16636 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16637 wpalMemoryCopy(wdiGetStatsRsp + 1,
16638 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16639 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16640
16641 /*Notify UMAC*/
16642 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16643
16644 wpalMemoryFree(wdiGetStatsRsp);
16645
Jeff Johnsone7245742012-09-05 17:12:55 -070016646 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016647}/*WDI_ProcessGetStatsRsp*/
16648
Srinivas Girigowda2471d832013-01-25 13:33:11 -080016649#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
16650/**
16651 @brief Process Get Roam Rssi Rsp function (called when a response is
16652 being received over the bus from HAL)
16653
16654 @param pWDICtx: pointer to the WLAN DAL context
16655 pEventData: pointer to the event information structure
16656
16657 @see
16658 @return Result of the function call
16659*/
16660WDI_Status
16661WDI_ProcessGetRoamRssiRsp
16662(
16663 WDI_ControlBlockType* pWDICtx,
16664 WDI_EventInfoType* pEventData
16665)
16666{
16667 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
16668 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
16669 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
16670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16671
16672 /*-------------------------------------------------------------------------
16673 Sanity check
16674 -------------------------------------------------------------------------*/
16675 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16676 ( NULL == pEventData->pEventData))
16677 {
16678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16679 "%s: Invalid parameters", __func__);
16680 WDI_ASSERT(0);
16681 return WDI_STATUS_E_FAILURE;
16682 }
16683
16684 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
16685 if(NULL == wdiGetRoamRssiRspCb)
16686 {
16687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16688 "%s: call back function is NULL", __func__);
16689 WDI_ASSERT(0);
16690 return WDI_STATUS_E_FAILURE;
16691 }
16692
16693 /*-------------------------------------------------------------------------
16694 Extract response and send it to UMAC
16695 -------------------------------------------------------------------------*/
16696 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
16697 pEventData->pEventData,
16698 sizeof(halRoamRssiRspParams.roamRssiRspParams));
16699
16700 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
16701 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
16702 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
16703
16704 /*Notify UMAC*/
16705 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
16706
16707 return WDI_STATUS_SUCCESS;
16708}/*WDI_ProcessGetRoamRssiRsp*/
16709#endif
16710
Jeff Johnson295189b2012-06-20 16:38:30 -070016711
16712/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016713 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016714 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016715
16716 @param pWDICtx: pointer to the WLAN DAL context
16717 pEventData: pointer to the event information structure
16718
Jeff Johnson295189b2012-06-20 16:38:30 -070016719 @see
16720 @return Result of the function call
16721*/
16722WDI_Status
16723WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016724(
Jeff Johnson295189b2012-06-20 16:38:30 -070016725 WDI_ControlBlockType* pWDICtx,
16726 WDI_EventInfoType* pEventData
16727)
16728{
16729 WDI_Status wdiStatus;
16730 eHalStatus halStatus;
16731 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
16732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
16747
16748 /*-------------------------------------------------------------------------
16749 Extract response and send it to UMAC
16750 -------------------------------------------------------------------------*/
16751 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016752 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016753
16754 /*Notify UMAC*/
16755 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16756
Jeff Johnsone7245742012-09-05 17:12:55 -070016757 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016758}/*WDI_ProcessUpdateCfgRsp*/
16759
16760
16761
16762/**
16763 @brief Process Add BA Rsp function (called when a response
16764 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016765
16766 @param pWDICtx: pointer to the WLAN DAL context
16767 pEventData: pointer to the event information structure
16768
Jeff Johnson295189b2012-06-20 16:38:30 -070016769 @see
16770 @return Result of the function call
16771*/
16772WDI_Status
16773WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016774(
Jeff Johnson295189b2012-06-20 16:38:30 -070016775 WDI_ControlBlockType* pWDICtx,
16776 WDI_EventInfoType* pEventData
16777)
16778{
16779 WDI_AddBARspCb wdiAddBARspCb;
16780
16781 tAddBARspParams halAddBARsp;
16782 WDI_AddBARspinfoType wdiAddBARsp;
16783
16784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16785
16786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016788 -------------------------------------------------------------------------*/
16789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16790 ( NULL == pEventData->pEventData))
16791 {
16792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016796 }
16797
16798 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
16799
16800 /*-------------------------------------------------------------------------
16801 Extract response and send it to UMAC
16802 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016803 wpalMemoryCopy( &halAddBARsp,
16804 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 sizeof(halAddBARsp));
16806
16807 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
16808
Jeff Johnson43971f52012-07-17 12:26:56 -070016809 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016810 {
16811 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
16812 }
16813
16814 /*Notify UMAC*/
16815 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
16816
Jeff Johnsone7245742012-09-05 17:12:55 -070016817 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016818}/*WDI_ProcessAddSessionBARsp*/
16819
16820/**
16821 @brief Process Add BA Rsp function (called when a response
16822 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016823
16824 @param pWDICtx: pointer to the WLAN DAL context
16825 pEventData: pointer to the event information structure
16826
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 @see
16828 @return Result of the function call
16829*/
16830WDI_Status
16831WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016832(
Jeff Johnson295189b2012-06-20 16:38:30 -070016833 WDI_ControlBlockType* pWDICtx,
16834 WDI_EventInfoType* pEventData
16835)
16836{
16837 WDI_TriggerBARspCb wdiTriggerBARspCb;
16838
16839 tTriggerBARspParams* halTriggerBARsp;
16840 tTriggerBaRspCandidate* halBaCandidate;
16841 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
16842 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
16843 wpt_uint16 index;
16844 wpt_uint16 TidIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016845
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16847
16848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 -------------------------------------------------------------------------*/
16851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16852 ( NULL == pEventData->pEventData))
16853 {
16854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 }
16859
16860 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
16861
16862 /*-------------------------------------------------------------------------
16863 Extract response and send it to UMAC
16864 -------------------------------------------------------------------------*/
16865 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
16866
Jeff Johnsone7245742012-09-05 17:12:55 -070016867 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
16868 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070016869 sizeof(WDI_TriggerBARspCandidateType));
16870 if(NULL == wdiTriggerBARsp)
16871 {
16872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16873 "Failed to allocate memory in Trigger BA Response %x %x %x ",
16874 pWDICtx, pEventData, pEventData->pEventData);
16875 wpalMemoryFree(halTriggerBARsp);
16876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016878 }
16879
16880 wdiTriggerBARsp->wdiStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
16881
16882 if ( WDI_STATUS_SUCCESS == wdiTriggerBARsp->wdiStatus)
16883 {
16884 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070016885 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070016886 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
16887
16888 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
16889 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
16890
16891 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
16892 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016893 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016894 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
16895 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
16896 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016897 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016899 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 halBaCandidate->baInfo[TidIndex].startingSeqNum;
16901 }
16902 wdiTriggerBARspCandidate++;
16903 halBaCandidate++;
16904 }
16905 }
16906
16907 /*Notify UMAC*/
16908 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
16909
16910 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070016911 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016912}/*WDI_ProcessAddSessionBARsp*/
16913
16914/**
16915 @brief Process Update Beacon Params Rsp function (called when a response
16916 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016917
16918 @param pWDICtx: pointer to the WLAN DAL context
16919 pEventData: pointer to the event information structure
16920
Jeff Johnson295189b2012-06-20 16:38:30 -070016921 @see
16922 @return Result of the function call
16923*/
16924WDI_Status
16925WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016926(
Jeff Johnson295189b2012-06-20 16:38:30 -070016927 WDI_ControlBlockType* pWDICtx,
16928 WDI_EventInfoType* pEventData
16929)
16930{
16931 WDI_Status wdiStatus;
16932 eHalStatus halStatus;
16933 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
16934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16935
16936 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016937 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016938 -------------------------------------------------------------------------*/
16939 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16940 ( NULL == pEventData->pEventData))
16941 {
16942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016943 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016944 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016945 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016946 }
16947
16948 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
16949
16950 /*-------------------------------------------------------------------------
16951 Extract response and send it to UMAC
16952 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016953 wpalMemoryCopy( &halStatus,
16954 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016955 sizeof(halStatus));
16956
Jeff Johnsone7245742012-09-05 17:12:55 -070016957 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016958
16959 /*Notify UMAC*/
16960 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16961
Jeff Johnsone7245742012-09-05 17:12:55 -070016962 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016963}/*WDI_ProcessUpdateBeaconParamsRsp*/
16964
16965/**
16966 @brief Process Send Beacon template Rsp function (called when a response
16967 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016968
16969 @param pWDICtx: pointer to the WLAN DAL context
16970 pEventData: pointer to the event information structure
16971
Jeff Johnson295189b2012-06-20 16:38:30 -070016972 @see
16973 @return Result of the function call
16974*/
16975WDI_Status
16976WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016977(
Jeff Johnson295189b2012-06-20 16:38:30 -070016978 WDI_ControlBlockType* pWDICtx,
16979 WDI_EventInfoType* pEventData
16980)
16981{
16982 WDI_Status wdiStatus;
16983 eHalStatus halStatus;
16984 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
16985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16986
16987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016989 -------------------------------------------------------------------------*/
16990 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16991 ( NULL == pEventData->pEventData))
16992 {
16993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016997 }
16998
16999 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17000
17001 /*-------------------------------------------------------------------------
17002 Extract response and send it to UMAC
17003 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017004 wpalMemoryCopy( &halStatus,
17005 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017006 sizeof(halStatus));
17007
Jeff Johnsone7245742012-09-05 17:12:55 -070017008 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017009
17010 /*Notify UMAC*/
17011 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17012
Jeff Johnsone7245742012-09-05 17:12:55 -070017013 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017014}/*WDI_ProcessSendBeaconParamsRsp*/
17015
Jeff Johnsone7245742012-09-05 17:12:55 -070017016
Jeff Johnson295189b2012-06-20 16:38:30 -070017017/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017018 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017019 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017020
17021 @param pWDICtx: pointer to the WLAN DAL context
17022 pEventData: pointer to the event information structure
17023
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 @see
17025 @return Result of the function call
17026*/
17027WDI_Status
17028WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017029(
Jeff Johnson295189b2012-06-20 16:38:30 -070017030 WDI_ControlBlockType* pWDICtx,
17031 WDI_EventInfoType* pEventData
17032)
17033{
17034 WDI_Status wdiStatus;
17035 eHalStatus halStatus;
17036 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17038
17039 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017040 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017041 -------------------------------------------------------------------------*/
17042 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17043 ( NULL == pEventData->pEventData))
17044 {
17045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017046 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 }
17050
17051 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17052
17053 /*-------------------------------------------------------------------------
17054 Extract response and send it to UMAC
17055 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017056 wpalMemoryCopy( &halStatus,
17057 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 sizeof(halStatus));
17059
Jeff Johnsone7245742012-09-05 17:12:55 -070017060 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017061
17062 /*Notify UMAC*/
17063 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17064
Jeff Johnsone7245742012-09-05 17:12:55 -070017065 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017066}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17067
17068 /**
17069 @brief Process Set Max Tx Power Rsp function (called when a response
17070 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017071
17072 @param pWDICtx: pointer to the WLAN DAL context
17073 pEventData: pointer to the event information structure
17074
Jeff Johnson295189b2012-06-20 16:38:30 -070017075 @see
17076 @return Result of the function call
17077*/
17078WDI_Status
17079WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017080(
Jeff Johnson295189b2012-06-20 16:38:30 -070017081 WDI_ControlBlockType* pWDICtx,
17082 WDI_EventInfoType* pEventData
17083)
17084{
17085 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017086
Jeff Johnson295189b2012-06-20 16:38:30 -070017087 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017088
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
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 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17105
17106 /*-------------------------------------------------------------------------
17107 Extract response and send it to UMAC
17108 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017109 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17110 pEventData->pEventData,
17111 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017112
17113 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17114 {
17115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17116 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017117 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017119 }
17120
Jeff Johnsone7245742012-09-05 17:12:55 -070017121 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017123 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017124
17125 /*Notify UMAC*/
17126 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17127
Jeff Johnsone7245742012-09-05 17:12:55 -070017128 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017129}
17130
Jeff Johnson295189b2012-06-20 16:38:30 -070017131/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017132 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017133 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017134
17135 @param pWDICtx: pointer to the WLAN DAL context
17136 pEventData: pointer to the event information structure
17137
Jeff Johnson295189b2012-06-20 16:38:30 -070017138 @see
17139 @return Result of the function call
17140*/
17141WDI_Status
17142WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017143(
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 WDI_ControlBlockType* pWDICtx,
17145 WDI_EventInfoType* pEventData
17146)
17147{
17148 WDI_Status wdiStatus;
17149 eHalStatus halStatus;
17150 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17151 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17152
17153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017154 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017155 -------------------------------------------------------------------------*/
17156 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17157 ( NULL == pEventData->pEventData))
17158 {
17159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 }
17164
17165 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17166
17167 /*-------------------------------------------------------------------------
17168 Extract response and send it to UMAC
17169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017170 wpalMemoryCopy( &halStatus,
17171 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 sizeof(halStatus));
17173
Jeff Johnsone7245742012-09-05 17:12:55 -070017174 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017175
17176 /*Notify UMAC*/
17177 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17178
Jeff Johnsone7245742012-09-05 17:12:55 -070017179 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017180}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017181/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017182 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017183 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017184
17185 @param pWDICtx: pointer to the WLAN DAL context
17186 pEventData: pointer to the event information structure
17187
Jeff Johnson295189b2012-06-20 16:38:30 -070017188 @see
17189 @return Result of the function call
17190*/
17191WDI_Status
17192WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017193(
Jeff Johnson295189b2012-06-20 16:38:30 -070017194 WDI_ControlBlockType* pWDICtx,
17195 WDI_EventInfoType* pEventData
17196)
17197{
17198 WDI_Status wdiStatus;
17199 eHalStatus halStatus;
17200 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017201 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017202 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17203
17204 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017205 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017206 -------------------------------------------------------------------------*/
17207 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17208 ( NULL == pEventData->pEventData))
17209 {
17210 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017211 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017213 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017214 }
17215
17216 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17217
17218 /*-------------------------------------------------------------------------
17219 Extract response and send it to UMAC
17220 -------------------------------------------------------------------------*/
17221 halStatus = *((eHalStatus*)pEventData->pEventData);
17222
Jeff Johnsone7245742012-09-05 17:12:55 -070017223 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017224
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017225 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17226 * Other module states are taken care by PMC.
17227 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17228 */
17229 if (wdiStatus != WDI_STATUS_SUCCESS) {
17230
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17232 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17233 halStatus);
17234 /* Call Back is not required as we are putting the DXE in FULL
17235 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017236 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17237
17238 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17240 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17241 WDI_ASSERT(0);
17242 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017243 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 /*Notify UMAC*/
17245 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17246
Jeff Johnsone7245742012-09-05 17:12:55 -070017247 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017248}/*WDI_ProcessEnterImpsRsp*/
17249
17250/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017251 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017252 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017253
17254 @param pWDICtx: pointer to the WLAN DAL context
17255 pEventData: pointer to the event information structure
17256
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 @see
17258 @return Result of the function call
17259*/
17260WDI_Status
17261WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017262(
Jeff Johnson295189b2012-06-20 16:38:30 -070017263 WDI_ControlBlockType* pWDICtx,
17264 WDI_EventInfoType* pEventData
17265)
17266{
17267 WDI_Status wdiStatus;
17268 eHalStatus halStatus;
17269 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017270 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17272
17273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017275 -------------------------------------------------------------------------*/
17276 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17277 ( NULL == pEventData->pEventData))
17278 {
17279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017280 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017283 }
17284
17285 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17286
17287 /*-------------------------------------------------------------------------
17288 Extract response and send it to UMAC
17289 -------------------------------------------------------------------------*/
17290 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017291 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017292
17293 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017294 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17295 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17296 {
17297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17298 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17299 WDI_ASSERT(0);
17300 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017301 /*Notify UMAC*/
17302 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17303
Jeff Johnsone7245742012-09-05 17:12:55 -070017304 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017305}/*WDI_ProcessExitImpsRsp*/
17306
17307/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017308 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017309 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017310
17311 @param pWDICtx: pointer to the WLAN DAL context
17312 pEventData: pointer to the event information structure
17313
Jeff Johnson295189b2012-06-20 16:38:30 -070017314 @see
17315 @return Result of the function call
17316*/
17317WDI_Status
17318WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017319(
Jeff Johnson295189b2012-06-20 16:38:30 -070017320 WDI_ControlBlockType* pWDICtx,
17321 WDI_EventInfoType* pEventData
17322)
17323{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017324 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17325 tHalEnterBmpsRspParams halEnterBmpsRsp;
17326 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17327 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017328 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17330
17331 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017332 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017333 -------------------------------------------------------------------------*/
17334 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17335 ( NULL == pEventData->pEventData))
17336 {
17337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017338 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017339 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017340 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017341 }
17342
Jeff Johnson295189b2012-06-20 16:38:30 -070017343 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017344 Extract response and send it to UMAC
17345 -------------------------------------------------------------------------*/
17346 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17347 {
17348 wpalMemoryCopy( &halEnterBmpsRsp,
17349 pEventData->pEventData,
17350 sizeof(halEnterBmpsRsp));
17351
17352 //Used to print debug message
17353 halStatus = halEnterBmpsRsp.status;
17354 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17355 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17356 }
17357 else
17358 {
17359 halStatus = *((eHalStatus*)pEventData->pEventData);
17360 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17361 }
17362
17363 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017364
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017365 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17366 * Other module states are taken care by PMC.
17367 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17368 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017369 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17370 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017371
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017373 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17374 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017375 /* Call Back is not required as we are putting the DXE in FULL
17376 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017377 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17378 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17379 {
17380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17381 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17382 WDI_ASSERT(0);
17383 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017384 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017385 }
17386
Jeff Johnson295189b2012-06-20 16:38:30 -070017387 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017388 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017389
Jeff Johnsone7245742012-09-05 17:12:55 -070017390 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017391}/*WDI_ProcessEnterBmpsRsp*/
17392
17393/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017394 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017395 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017396
17397 @param pWDICtx: pointer to the WLAN DAL context
17398 pEventData: pointer to the event information structure
17399
Jeff Johnson295189b2012-06-20 16:38:30 -070017400 @see
17401 @return Result of the function call
17402*/
17403WDI_Status
17404WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017405(
Jeff Johnson295189b2012-06-20 16:38:30 -070017406 WDI_ControlBlockType* pWDICtx,
17407 WDI_EventInfoType* pEventData
17408)
17409{
Jeff Johnson295189b2012-06-20 16:38:30 -070017410 eHalStatus halStatus;
17411 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017412 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017413 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17414 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17416
17417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017418 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017419 -------------------------------------------------------------------------*/
17420 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17421 ( NULL == pEventData->pEventData))
17422 {
17423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017424 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017427 }
17428
17429 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17430
17431 /*-------------------------------------------------------------------------
17432 Extract response and send it to UMAC
17433 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017434
17435 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17436 {
17437 wpalMemoryCopy( &halExitBmpsRsp,
17438 pEventData->pEventData,
17439 sizeof(halExitBmpsRsp));
17440
17441 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17442 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17443 }
17444 else
17445 {
17446 halStatus = *((eHalStatus*)pEventData->pEventData);
17447 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17448 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017449
17450 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017451 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17452 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17453 {
17454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17455 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17456 WDI_ASSERT(0);
17457 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017458 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17459
17460 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017461 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017462
Jeff Johnsone7245742012-09-05 17:12:55 -070017463 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017464}/*WDI_ProcessExitBmpsRsp*/
17465
17466/**
17467 @brief Process Enter UAPSD Rsp function (called when a response
17468 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_ProcessEnterUapsdRsp
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{
Jeff Johnson295189b2012-06-20 16:38:30 -070017483 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017484 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017485 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017486 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17487
Jeff Johnson295189b2012-06-20 16:38:30 -070017488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17489
17490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017491 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017492 -------------------------------------------------------------------------*/
17493 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17494 ( NULL == pEventData->pEventData))
17495 {
17496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017497 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017500 }
17501
17502 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17503
17504 /*-------------------------------------------------------------------------
17505 Extract response and send it to UMAC
17506 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017507 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17508 {
17509 wpalMemoryCopy( &halEnterUapsdRsp,
17510 pEventData->pEventData,
17511 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017512
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017513 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17514 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17515 }
17516 else
17517 {
17518 halStatus = *((eHalStatus*)pEventData->pEventData);
17519 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17520 }
17521
17522 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017523 {
17524 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17525 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17526 // the traffic to decide when to suspend the trigger frames when there is no traffic
17527 // activity on the trigger enabled ACs
17528 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17529
17530#ifdef WLAN_PERF
17531 // Increment the BD signature to refresh the fast path BD utilization
17532 pWDICtx->uBdSigSerialNum++;
17533#endif
17534 }
17535
17536 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017537 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017538
Jeff Johnsone7245742012-09-05 17:12:55 -070017539 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017540}/*WDI_ProcessEnterUapsdRsp*/
17541
17542/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017543 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017545
17546 @param pWDICtx: pointer to the WLAN DAL context
17547 pEventData: pointer to the event information structure
17548
Jeff Johnson295189b2012-06-20 16:38:30 -070017549 @see
17550 @return Result of the function call
17551*/
17552WDI_Status
17553WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017554(
Jeff Johnson295189b2012-06-20 16:38:30 -070017555 WDI_ControlBlockType* pWDICtx,
17556 WDI_EventInfoType* pEventData
17557)
17558{
Jeff Johnson295189b2012-06-20 16:38:30 -070017559 eHalStatus halStatus;
17560 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017561 tHalExitUapsdRspParams halExitUapsdRsp;
17562 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017563 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17564
17565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017566 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017567 -------------------------------------------------------------------------*/
17568 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17569 ( NULL == pEventData->pEventData))
17570 {
17571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017572 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017573 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017574 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017575 }
17576
17577 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17578
17579 /*-------------------------------------------------------------------------
17580 Extract response and send it to UMAC
17581 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017582 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17583 {
17584 wpalMemoryCopy( &halExitUapsdRsp,
17585 pEventData->pEventData,
17586 sizeof(halExitUapsdRsp));
17587
17588 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17589 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17590 }
17591 else
17592 {
17593 halStatus = *((eHalStatus*)pEventData->pEventData);
17594 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17595 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017596 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17597 // directly instead of the FW WQ.
17598 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17599
17600#ifdef WLAN_PERF
17601 // Increment the BD signature to refresh the fast path BD utilization
17602 pWDICtx->uBdSigSerialNum++;
17603#endif
17604
17605 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017606 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017607
Jeff Johnsone7245742012-09-05 17:12:55 -070017608 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017609}/*WDI_ProcessExitUapsdRsp*/
17610
17611/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017612 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017614
17615 @param pWDICtx: pointer to the WLAN DAL context
17616 pEventData: pointer to the event information structure
17617
Jeff Johnson295189b2012-06-20 16:38:30 -070017618 @see
17619 @return Result of the function call
17620*/
17621WDI_Status
17622WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017623(
Jeff Johnson295189b2012-06-20 16:38:30 -070017624 WDI_ControlBlockType* pWDICtx,
17625 WDI_EventInfoType* pEventData
17626)
17627{
17628 WDI_Status wdiStatus;
17629 eHalStatus halStatus;
17630 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
17646
17647 /*-------------------------------------------------------------------------
17648 Extract response and send it to UMAC
17649 -------------------------------------------------------------------------*/
17650 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017651 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017652
17653 /*Notify UMAC*/
17654 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17655
Jeff Johnsone7245742012-09-05 17:12:55 -070017656 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017657}/*WDI_ProcessSetUapsdAcParamsRsp*/
17658
17659/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017660 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017661 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017662
17663 @param pWDICtx: pointer to the WLAN DAL context
17664 pEventData: pointer to the event information structure
17665
Jeff Johnson295189b2012-06-20 16:38:30 -070017666 @see
17667 @return Result of the function call
17668*/
17669WDI_Status
17670WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017671(
Jeff Johnson295189b2012-06-20 16:38:30 -070017672 WDI_ControlBlockType* pWDICtx,
17673 WDI_EventInfoType* pEventData
17674)
17675{
17676 WDI_Status wdiStatus;
17677 eHalStatus halStatus;
17678 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
17679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17680
17681 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017682 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017683 -------------------------------------------------------------------------*/
17684 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17685 ( NULL == pEventData->pEventData))
17686 {
17687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017688 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017689 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017690 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017691 }
17692
17693 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
17694
17695 /*-------------------------------------------------------------------------
17696 Extract response and send it to UMAC
17697 -------------------------------------------------------------------------*/
17698 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017699 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017700
17701 /*Notify UMAC*/
17702 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
17703
Jeff Johnsone7245742012-09-05 17:12:55 -070017704 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017705}/*WDI_ProcessUpdateUapsdParamsRsp*/
17706
17707/**
17708 @brief Process Configure RXP filter Rsp function (called when a
17709 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017710
17711 @param pWDICtx: pointer to the WLAN DAL context
17712 pEventData: pointer to the event information structure
17713
Jeff Johnson295189b2012-06-20 16:38:30 -070017714 @see
17715 @return Result of the function call
17716*/
17717WDI_Status
17718WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017719(
Jeff Johnson295189b2012-06-20 16:38:30 -070017720 WDI_ControlBlockType* pWDICtx,
17721 WDI_EventInfoType* pEventData
17722)
17723{
17724 WDI_Status wdiStatus;
17725 eHalStatus halStatus;
17726 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
17727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17728
17729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017731 -------------------------------------------------------------------------*/
17732 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17733 ( NULL == pEventData->pEventData))
17734 {
17735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017736 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017739 }
17740
17741 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
17742
17743 /*-------------------------------------------------------------------------
17744 Extract response and send it to UMAC
17745 -------------------------------------------------------------------------*/
17746 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017747 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017748
17749 /*Notify UMAC*/
17750 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17751
Jeff Johnsone7245742012-09-05 17:12:55 -070017752 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017753}/*WDI_ProcessConfigureRxpFilterRsp*/
17754
17755/**
17756 @brief Process Set beacon filter Rsp function (called when a
17757 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017758
17759 @param pWDICtx: pointer to the WLAN DAL context
17760 pEventData: pointer to the event information structure
17761
Jeff Johnson295189b2012-06-20 16:38:30 -070017762 @see
17763 @return Result of the function call
17764*/
17765WDI_Status
17766WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017767(
Jeff Johnson295189b2012-06-20 16:38:30 -070017768 WDI_ControlBlockType* pWDICtx,
17769 WDI_EventInfoType* pEventData
17770)
17771{
17772 WDI_Status wdiStatus;
17773 eHalStatus halStatus;
17774 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
17775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17776
17777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017778 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017779 -------------------------------------------------------------------------*/
17780 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17781 ( NULL == pEventData->pEventData))
17782 {
17783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017784 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017786 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 }
17788
17789 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
17790
17791 /*-------------------------------------------------------------------------
17792 Extract response and send it to UMAC
17793 -------------------------------------------------------------------------*/
17794 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017795 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017796
17797 /*Notify UMAC*/
17798 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17799
Jeff Johnsone7245742012-09-05 17:12:55 -070017800 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017801}/*WDI_ProcessSetBeaconFilterRsp*/
17802
17803/**
17804 @brief Process remove beacon filter Rsp function (called when a
17805 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017806
17807 @param pWDICtx: pointer to the WLAN DAL context
17808 pEventData: pointer to the event information structure
17809
Jeff Johnson295189b2012-06-20 16:38:30 -070017810 @see
17811 @return Result of the function call
17812*/
17813WDI_Status
17814WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017815(
Jeff Johnson295189b2012-06-20 16:38:30 -070017816 WDI_ControlBlockType* pWDICtx,
17817 WDI_EventInfoType* pEventData
17818)
17819{
17820 WDI_Status wdiStatus;
17821 eHalStatus halStatus;
17822 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
17823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17824
17825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017826 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017827 -------------------------------------------------------------------------*/
17828 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17829 ( NULL == pEventData->pEventData))
17830 {
17831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017835 }
17836
17837 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
17838
17839 /*-------------------------------------------------------------------------
17840 Extract response and send it to UMAC
17841 -------------------------------------------------------------------------*/
17842 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017843 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017844
17845 /*Notify UMAC*/
17846 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
17847
Jeff Johnsone7245742012-09-05 17:12:55 -070017848 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017849}/*WDI_ProcessRemBeaconFilterRsp*/
17850
17851/**
17852 @brief Process set RSSI thresholds Rsp function (called when a
17853 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017854
17855 @param pWDICtx: pointer to the WLAN DAL context
17856 pEventData: pointer to the event information structure
17857
Jeff Johnson295189b2012-06-20 16:38:30 -070017858 @see
17859 @return Result of the function call
17860*/
17861WDI_Status
17862WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017863(
Jeff Johnson295189b2012-06-20 16:38:30 -070017864 WDI_ControlBlockType* pWDICtx,
17865 WDI_EventInfoType* pEventData
17866)
17867{
17868 WDI_Status wdiStatus;
17869 eHalStatus halStatus;
17870 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
17871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17872
17873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017874 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017875 -------------------------------------------------------------------------*/
17876 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17877 ( NULL == pEventData->pEventData))
17878 {
17879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017883 }
17884
17885 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
17886
17887 /*-------------------------------------------------------------------------
17888 Extract response and send it to UMAC
17889 -------------------------------------------------------------------------*/
17890 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017891 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017892
17893 /*Notify UMAC*/
17894 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
17895
Jeff Johnsone7245742012-09-05 17:12:55 -070017896 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017897}/*WDI_ProcessSetRSSIThresoldsRsp*/
17898
17899/**
17900 @brief Process host offload Rsp function (called when a
17901 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017902
17903 @param pWDICtx: pointer to the WLAN DAL context
17904 pEventData: pointer to the event information structure
17905
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 @see
17907 @return Result of the function call
17908*/
17909WDI_Status
17910WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017911(
Jeff Johnson295189b2012-06-20 16:38:30 -070017912 WDI_ControlBlockType* pWDICtx,
17913 WDI_EventInfoType* pEventData
17914)
17915{
17916 WDI_Status wdiStatus;
17917 eHalStatus halStatus;
17918 WDI_HostOffloadCb wdiHostOffloadCb;
17919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17920
17921 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017922 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017923 -------------------------------------------------------------------------*/
17924 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17925 ( NULL == pEventData->pEventData))
17926 {
17927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017931 }
17932
17933 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
17934
17935 /*-------------------------------------------------------------------------
17936 Extract response and send it to UMAC
17937 -------------------------------------------------------------------------*/
17938 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017939 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017940
17941 /*Notify UMAC*/
17942 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
17943
Jeff Johnsone7245742012-09-05 17:12:55 -070017944 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017945}/*WDI_ProcessHostOffloadRsp*/
17946
17947/**
17948 @brief Process keep alive Rsp function (called when a
17949 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017950
17951 @param pWDICtx: pointer to the WLAN DAL context
17952 pEventData: pointer to the event information structure
17953
Jeff Johnson295189b2012-06-20 16:38:30 -070017954 @see
17955 @return Result of the function call
17956*/
17957WDI_Status
17958WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017959(
Jeff Johnson295189b2012-06-20 16:38:30 -070017960 WDI_ControlBlockType* pWDICtx,
17961 WDI_EventInfoType* pEventData
17962)
17963{
17964 WDI_Status wdiStatus;
17965 eHalStatus halStatus;
17966 WDI_KeepAliveCb wdiKeepAliveCb;
17967 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17969 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
17970
17971
17972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017974 -------------------------------------------------------------------------*/
17975 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17976 ( NULL == pEventData->pEventData))
17977 {
17978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017979 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017980 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017981 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017982 }
17983
Jeff Johnsone7245742012-09-05 17:12:55 -070017984 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
17985
Jeff Johnson295189b2012-06-20 16:38:30 -070017986 /*-------------------------------------------------------------------------
17987 Extract response and send it to UMAC
17988 -------------------------------------------------------------------------*/
17989 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017990 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017991
17992 /*Notify UMAC*/
17993 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
17994
Jeff Johnsone7245742012-09-05 17:12:55 -070017995 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017996}/*WDI_ProcessKeepAliveRsp*/
17997
17998/**
17999 @brief Process wowl add ptrn Rsp function (called when a
18000 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018001
18002 @param pWDICtx: pointer to the WLAN DAL context
18003 pEventData: pointer to the event information structure
18004
Jeff Johnson295189b2012-06-20 16:38:30 -070018005 @see
18006 @return Result of the function call
18007*/
18008WDI_Status
18009WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018010(
Jeff Johnson295189b2012-06-20 16:38:30 -070018011 WDI_ControlBlockType* pWDICtx,
18012 WDI_EventInfoType* pEventData
18013)
18014{
Jeff Johnson295189b2012-06-20 16:38:30 -070018015 eHalStatus halStatus;
18016 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018017 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18018 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18019
Jeff Johnson295189b2012-06-20 16:38:30 -070018020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18021
18022 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018023 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 -------------------------------------------------------------------------*/
18025 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18026 ( NULL == pEventData->pEventData))
18027 {
18028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018029 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018030 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018032 }
18033
18034 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18035
18036 /*-------------------------------------------------------------------------
18037 Extract response and send it to UMAC
18038 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018039 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18040 {
18041 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18042 pEventData->pEventData,
18043 sizeof(halAddWowlBcastPtrRsp));
18044
18045 wdiWowlAddBcPtrRsp.wdiStatus =
18046 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18047 }
18048 else
18049 {
18050 halStatus = *((eHalStatus*)pEventData->pEventData);
18051 wdiWowlAddBcPtrRsp.wdiStatus =
18052 WDI_HAL_2_WDI_STATUS(halStatus);
18053 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018054
18055 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018056 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018057
Jeff Johnsone7245742012-09-05 17:12:55 -070018058 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018059}/*WDI_ProcessWowlAddBcPtrnRsp*/
18060
18061/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018063 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018064
18065 @param pWDICtx: pointer to the WLAN DAL context
18066 pEventData: pointer to the event information structure
18067
Jeff Johnson295189b2012-06-20 16:38:30 -070018068 @see
18069 @return Result of the function call
18070*/
18071WDI_Status
18072WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018073(
Jeff Johnson295189b2012-06-20 16:38:30 -070018074 WDI_ControlBlockType* pWDICtx,
18075 WDI_EventInfoType* pEventData
18076)
18077{
Jeff Johnson295189b2012-06-20 16:38:30 -070018078 eHalStatus halStatus;
18079 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018080 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18081 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18083
18084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018086 -------------------------------------------------------------------------*/
18087 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18088 ( NULL == pEventData->pEventData))
18089 {
18090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018094 }
18095
18096 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18097
18098 /*-------------------------------------------------------------------------
18099 Extract response and send it to UMAC
18100 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018101 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18102 {
18103 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18104 pEventData->pEventData,
18105 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018106
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018107 wdiWowlDelBcstPtrRsp.wdiStatus =
18108 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18109 }
18110 else
18111 {
18112 halStatus = *((eHalStatus*)pEventData->pEventData);
18113 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18114 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018115 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018116 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018117
Jeff Johnsone7245742012-09-05 17:12:55 -070018118 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018119}/*WDI_ProcessWowlDelBcPtrnRsp*/
18120
18121/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018122 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018123 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018124
18125 @param pWDICtx: pointer to the WLAN DAL context
18126 pEventData: pointer to the event information structure
18127
Jeff Johnson295189b2012-06-20 16:38:30 -070018128 @see
18129 @return Result of the function call
18130*/
18131WDI_Status
18132WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018133(
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 WDI_ControlBlockType* pWDICtx,
18135 WDI_EventInfoType* pEventData
18136)
18137{
Jeff Johnson295189b2012-06-20 16:38:30 -070018138 eHalStatus halStatus;
18139 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018140 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18141 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18143
18144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018146 -------------------------------------------------------------------------*/
18147 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18148 ( NULL == pEventData->pEventData))
18149 {
18150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018154 }
18155
18156 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18157
18158 /*-------------------------------------------------------------------------
18159 Extract response and send it to UMAC
18160 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018161 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18162 {
18163 wpalMemoryCopy( &halEnterWowlRspParams,
18164 (wpt_uint8*)pEventData->pEventData,
18165 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018166
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018167 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18168 wdiwowlEnterRsp.status =
18169 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18170 }
18171 else
18172 {
18173 halStatus = *((eHalStatus*)pEventData->pEventData);
18174 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18175 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018177 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018178
Jeff Johnsone7245742012-09-05 17:12:55 -070018179 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018180}/*WDI_ProcessWowlEnterRsp*/
18181
18182/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018183 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018184 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018185
18186 @param pWDICtx: pointer to the WLAN DAL context
18187 pEventData: pointer to the event information structure
18188
Jeff Johnson295189b2012-06-20 16:38:30 -070018189 @see
18190 @return Result of the function call
18191*/
18192WDI_Status
18193WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018194(
Jeff Johnson295189b2012-06-20 16:38:30 -070018195 WDI_ControlBlockType* pWDICtx,
18196 WDI_EventInfoType* pEventData
18197)
18198{
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 eHalStatus halStatus;
18200 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018201 tHalExitWowlRspParams halExitWowlRspParams;
18202 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18203
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18205
18206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018207 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018208 -------------------------------------------------------------------------*/
18209 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18210 ( NULL == pEventData->pEventData))
18211 {
18212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018213 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018214 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018215 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018216 }
18217
18218 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18219
18220 /*-------------------------------------------------------------------------
18221 Extract response and send it to UMAC
18222 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018223 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18224 {
18225 wpalMemoryCopy( &halExitWowlRspParams,
18226 pEventData->pEventData,
18227 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018228
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018229 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18230 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18231
18232 }
18233 else
18234 {
18235 halStatus = *((eHalStatus*)pEventData->pEventData);
18236 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18237 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018238 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018239 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018240
Jeff Johnsone7245742012-09-05 17:12:55 -070018241 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018242}/*WDI_ProcessWowlExitRsp*/
18243
18244/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018245 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018246 (called when a response is being received over the bus
18247 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018248
18249 @param pWDICtx: pointer to the WLAN DAL context
18250 pEventData: pointer to the event information structure
18251
Jeff Johnson295189b2012-06-20 16:38:30 -070018252 @see
18253 @return Result of the function call
18254*/
18255WDI_Status
18256WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018257(
Jeff Johnson295189b2012-06-20 16:38:30 -070018258 WDI_ControlBlockType* pWDICtx,
18259 WDI_EventInfoType* pEventData
18260)
18261{
18262 WDI_Status wdiStatus;
18263 eHalStatus halStatus;
18264 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18266
18267 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018268 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018269 -------------------------------------------------------------------------*/
18270 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18271 ( NULL == pEventData->pEventData))
18272 {
18273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018274 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018275 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018277 }
18278
18279 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18280
18281 /*-------------------------------------------------------------------------
18282 Extract response and send it to UMAC
18283 -------------------------------------------------------------------------*/
18284 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018285 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018286
18287 /*Notify UMAC*/
18288 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18289
Jeff Johnsone7245742012-09-05 17:12:55 -070018290 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018291}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18292
18293
18294/**
18295 @brief Process Nv download(called when a response
18296 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018297
18298 @param pWDICtx: pointer to the WLAN DAL context
18299 pEventData: pointer to the event information structure
18300
Jeff Johnson295189b2012-06-20 16:38:30 -070018301 @see
18302 @return Result of the function call
18303*/
18304WDI_Status
18305WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018306(
Jeff Johnson295189b2012-06-20 16:38:30 -070018307 WDI_ControlBlockType* pWDICtx,
18308 WDI_EventInfoType* pEventData
18309)
18310{
18311
18312 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18313 tHalNvImgDownloadRspParams halNvDownloadRsp;
18314 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18315
18316 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018317 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018318 -------------------------------------------------------------------------*/
18319 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18320 ( NULL == pEventData->pEventData))
18321 {
18322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018323 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018326 }
18327
18328 /*-------------------------------------------------------------------------
18329 Extract response and send it to UMAC
18330 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018331 wpalMemoryCopy( &halNvDownloadRsp,
18332 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018333 sizeof(halNvDownloadRsp));
18334
18335 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18336
18337 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018338 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18339 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018340 {
18341 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018342 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018343 }
18344 else
18345 {
18346 /*Reset the Nv related global information in WDI context information */
18347 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18348 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18349 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18350 /*call WDA callback function for last fragment */
18351 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18352 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18353 }
18354
Jeff Johnsone7245742012-09-05 17:12:55 -070018355 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018356}
18357#ifdef WLAN_FEATURE_VOWIFI_11R
18358/**
18359 @brief Process Add TSpec Rsp function (called when a response
18360 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018361
18362 @param pWDICtx: pointer to the WLAN DAL context
18363 pEventData: pointer to the event information structure
18364
Jeff Johnson295189b2012-06-20 16:38:30 -070018365 @see
18366 @return Result of the function call
18367*/
18368WDI_Status
18369WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018370(
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 WDI_ControlBlockType* pWDICtx,
18372 WDI_EventInfoType* pEventData
18373)
18374{
18375 WDI_Status wdiStatus;
18376 tAggrAddTsRspParams aggrAddTsRsp;
18377 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18379
18380 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018381 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 -------------------------------------------------------------------------*/
18383 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18384 ( NULL == pEventData->pEventData))
18385 {
18386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018388 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018389 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018390 }
18391
18392 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18393
18394 /*-------------------------------------------------------------------------
18395 Extract response and send it to UMAC
18396 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018397 wpalMemoryCopy( &aggrAddTsRsp,
18398 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018399 sizeof(aggrAddTsRsp));
18400
18401 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018402 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018403
18404 /*Notify UMAC*/
18405 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18406
Jeff Johnsone7245742012-09-05 17:12:55 -070018407 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018408}/*WDI_ProcessAddTSpecRsp*/
18409#endif /* WLAN_FEATURE_VOWIFI_11R */
18410
18411/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018412 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018413 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018414
18415 @param pWDICtx: pointer to the WLAN DAL context
18416 pEventData: pointer to the event information structure
18417
Jeff Johnson295189b2012-06-20 16:38:30 -070018418 @see
18419 @return Result of the function call
18420*/
18421WDI_Status
18422WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018423(
Jeff Johnson295189b2012-06-20 16:38:30 -070018424 WDI_ControlBlockType* pWDICtx,
18425 WDI_EventInfoType* pEventData
18426)
18427{
18428 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18429 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18430 tHalHostResumeRspParams hostResumeRspMsg;
18431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18432
18433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 -------------------------------------------------------------------------*/
18436 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18437 ( NULL == pEventData->pEventData))
18438 {
18439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018440 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018443 }
18444
18445 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18446
18447 /*-------------------------------------------------------------------------
18448 Extract response and send it to UMAC
18449 -------------------------------------------------------------------------*/
18450
Jeff Johnsone7245742012-09-05 17:12:55 -070018451 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018452 (wpt_uint8*)pEventData->pEventData,
18453 sizeof(hostResumeRspMsg));
18454
Jeff Johnsone7245742012-09-05 17:12:55 -070018455 wdiResumeRspParams.wdiStatus =
18456 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018457
18458 /*Notify UMAC*/
18459 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18460
18461 return WDI_STATUS_SUCCESS;
18462}
18463
18464/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018465 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018466 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018467
18468 @param pWDICtx: pointer to the WLAN DAL context
18469 pEventData: pointer to the event information structure
18470
Jeff Johnson295189b2012-06-20 16:38:30 -070018471 @see
18472 @return Result of the function call
18473*/
18474WDI_Status
18475WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018476(
Jeff Johnson295189b2012-06-20 16:38:30 -070018477 WDI_ControlBlockType* pWDICtx,
18478 WDI_EventInfoType* pEventData
18479)
18480{
18481 WDI_Status wdiStatus;
18482 eHalStatus halStatus;
18483 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18485
18486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018488 -------------------------------------------------------------------------*/
18489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18490 ( NULL == pEventData->pEventData))
18491 {
18492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018496 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018497
18498 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018499
18500 /*-------------------------------------------------------------------------
18501 Extract response and send it to UMAC
18502 -------------------------------------------------------------------------*/
18503 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018504 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018505
18506 /*Notify UMAC*/
18507 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18508
Jeff Johnsone7245742012-09-05 17:12:55 -070018509 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018510}/*WDI_ProcessSetTxPerTrackingRsp*/
18511
18512/*==========================================================================
18513 Indications from HAL
18514 ==========================================================================*/
18515/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018516 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018517 indication of this kind is being received over the bus
18518 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018519
18520 @param pWDICtx: pointer to the WLAN DAL context
18521 pEventData: pointer to the event information structure
18522
Jeff Johnson295189b2012-06-20 16:38:30 -070018523 @see
18524 @return Result of the function call
18525*/
18526WDI_Status
18527WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018528(
Jeff Johnson295189b2012-06-20 16:38:30 -070018529 WDI_ControlBlockType* pWDICtx,
18530 WDI_EventInfoType* pEventData
18531)
18532{
18533 WDI_LowLevelIndType wdiInd;
18534 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18536
18537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018539 -------------------------------------------------------------------------*/
18540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18541 ( NULL == pEventData->pEventData))
18542 {
18543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018547 }
18548
18549 /*-------------------------------------------------------------------------
18550 Extract indication and send it to UMAC
18551 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018552 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18553 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018554 sizeof(tHalRSSINotification));
18555
18556 /*Fill in the indication parameters*/
18557 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18558 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18559 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18560 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18561 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18562 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18563 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18564 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18565 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18566 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18567 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18568 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18569 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018570 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18571 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018572
ltimariu034f7d62013-01-24 18:54:33 -080018573 if ( pWDICtx->wdiLowLevelIndCB )
18574 {
18575 /*Notify UMAC of indication*/
18576 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18577 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018578
18579 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018580}/*WDI_ProcessLowRSSIInd*/
18581
18582
18583/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018584 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018585 an indication of this kind is being received over the
18586 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018587
18588 @param pWDICtx: pointer to the WLAN DAL context
18589 pEventData: pointer to the event information structure
18590
Jeff Johnson295189b2012-06-20 16:38:30 -070018591 @see
18592 @return Result of the function call
18593*/
18594WDI_Status
18595WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018596(
Jeff Johnson295189b2012-06-20 16:38:30 -070018597 WDI_ControlBlockType* pWDICtx,
18598 WDI_EventInfoType* pEventData
18599)
18600{
18601 WDI_Status wdiStatus;
18602 eHalStatus halStatus;
18603 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018604 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18606
18607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018608 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018609 -------------------------------------------------------------------------*/
18610 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18611 ( NULL == pEventData->pEventData))
18612 {
18613 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018614 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018617 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018618 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018619 /*-------------------------------------------------------------------------
18620 Extract indication and send it to UMAC
18621 -------------------------------------------------------------------------*/
18622 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18623 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018624 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018625
18626 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018627 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018628 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
18629 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080018630 if ( pWDICtx->wdiLowLevelIndCB )
18631 {
18632 /*Notify UMAC*/
18633 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18634 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018635
18636 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018637}/*WDI_ProcessMissedBeaconInd*/
18638
18639
18640/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018641 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018642 an indication of this kind is being received over the
18643 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018644
18645 @param pWDICtx: pointer to the WLAN DAL context
18646 pEventData: pointer to the event information structure
18647
Jeff Johnson295189b2012-06-20 16:38:30 -070018648 @see
18649 @return Result of the function call
18650*/
18651WDI_Status
18652WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018653(
Jeff Johnson295189b2012-06-20 16:38:30 -070018654 WDI_ControlBlockType* pWDICtx,
18655 WDI_EventInfoType* pEventData
18656)
18657{
18658 WDI_Status wdiStatus;
18659 eHalStatus halStatus;
18660 WDI_LowLevelIndType wdiInd;
18661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18662
18663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018665 -------------------------------------------------------------------------*/
18666 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18667 ( NULL == pEventData->pEventData))
18668 {
18669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018670 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018673 }
18674
18675 /*-------------------------------------------------------------------------
18676 Extract indication and send it to UMAC
18677 -------------------------------------------------------------------------*/
18678 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18679 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018680 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018681
18682 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018683 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018684 /* ! TO DO - fill in from HAL struct:
18685 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
18686
ltimariu034f7d62013-01-24 18:54:33 -080018687 if ( pWDICtx->wdiLowLevelIndCB )
18688 {
18689 /*Notify UMAC*/
18690 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18691 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018692
18693 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018694}/*WDI_ProcessUnkAddrFrameInd*/
18695
18696
18697/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018698 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018699 indication of this kind is being received over the bus
18700 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018701
18702 @param pWDICtx: pointer to the WLAN DAL context
18703 pEventData: pointer to the event information structure
18704
Jeff Johnson295189b2012-06-20 16:38:30 -070018705 @see
18706 @return Result of the function call
18707*/
18708WDI_Status
18709WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018710(
Jeff Johnson295189b2012-06-20 16:38:30 -070018711 WDI_ControlBlockType* pWDICtx,
18712 WDI_EventInfoType* pEventData
18713)
18714{
18715 WDI_LowLevelIndType wdiInd;
18716 tpSirMicFailureInd pHalMicFailureInd;
18717
18718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18719
18720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018722 -------------------------------------------------------------------------*/
18723 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18724 ( NULL == pEventData->pEventData))
18725 {
18726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018730 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018731
Jeff Johnson295189b2012-06-20 16:38:30 -070018732 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
18733 /*-------------------------------------------------------------------------
18734 Extract indication and send it to UMAC
18735 -------------------------------------------------------------------------*/
18736
18737 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018738 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018739 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
18740 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
18741 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
18742 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
18743 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
18744 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
18745 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
18746 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018747 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070018748 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070018749 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070018750 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070018751 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070018752 pHalMicFailureInd->info.keyId;
18753 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
18754 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
18755 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
18756 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080018757
18758 if ( pWDICtx->wdiLowLevelIndCB )
18759 {
18760 /*Notify UMAC*/
18761 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18762 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018763
18764 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018765}/*WDI_ProcessMicFailureInd*/
18766
18767
18768/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018769 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018770 an indication of this kind is being received over the
18771 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018772
18773 @param pWDICtx: pointer to the WLAN DAL context
18774 pEventData: pointer to the event information structure
18775
Jeff Johnson295189b2012-06-20 16:38:30 -070018776 @see
18777 @return Result of the function call
18778*/
18779WDI_Status
18780WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018781(
Jeff Johnson295189b2012-06-20 16:38:30 -070018782 WDI_ControlBlockType* pWDICtx,
18783 WDI_EventInfoType* pEventData
18784)
18785{
18786 WDI_Status wdiStatus;
18787 eHalStatus halStatus;
18788 WDI_LowLevelIndType wdiInd;
18789 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18790
18791 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018792 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018793 -------------------------------------------------------------------------*/
18794 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18795 ( NULL == pEventData->pEventData))
18796 {
18797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018798 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018801 }
18802
18803 /*-------------------------------------------------------------------------
18804 Extract indication and send it to UMAC
18805 -------------------------------------------------------------------------*/
18806
18807 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18808 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018809 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018810
18811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18812 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070018813
Jeff Johnson295189b2012-06-20 16:38:30 -070018814 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018815 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
18816 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018817
ltimariu034f7d62013-01-24 18:54:33 -080018818 if ( pWDICtx->wdiLowLevelIndCB )
18819 {
18820 /*Notify UMAC*/
18821 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18822 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018823
18824 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018825}/*WDI_ProcessFatalErrorInd*/
18826
18827/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018828 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018829 an indication of this kind is being received over the
18830 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018831
18832 @param pWDICtx: pointer to the WLAN DAL context
18833 pEventData: pointer to the event information structure
18834
Jeff Johnson295189b2012-06-20 16:38:30 -070018835 @see
18836 @return Result of the function call
18837*/
18838WDI_Status
18839WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018840(
Jeff Johnson295189b2012-06-20 16:38:30 -070018841 WDI_ControlBlockType* pWDICtx,
18842 WDI_EventInfoType* pEventData
18843)
18844{
18845 tDeleteStaContextParams halDelSTACtx;
18846 WDI_LowLevelIndType wdiInd;
18847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18848
18849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018850 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018851 -------------------------------------------------------------------------*/
18852 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18853 ( NULL == pEventData->pEventData))
18854 {
18855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018856 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018859 }
18860
18861 /*-------------------------------------------------------------------------
18862 Extract indication and send it to UMAC
18863 -------------------------------------------------------------------------*/
18864
18865 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018866 wpalMemoryCopy( &halDelSTACtx,
18867 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 sizeof(halDelSTACtx));
18869
18870 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018871 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070018872
18873 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
18874 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
18875 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
18876 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
18877
Jeff Johnsone7245742012-09-05 17:12:55 -070018878 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070018879 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018880 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018881 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018882 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
18883 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070018884
ltimariu034f7d62013-01-24 18:54:33 -080018885 if ( pWDICtx->wdiLowLevelIndCB )
18886 {
18887 /*Notify UMAC*/
18888 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18889 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018890
18891 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018892}/*WDI_ProcessDelSTAInd*/
18893
18894/**
18895*@brief Process Coex Indication function (called when
18896 an indication of this kind is being received over the
18897 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018898
18899 @param pWDICtx: pointer to the WLAN DAL context
18900 pEventData: pointer to the event information structure
18901
Jeff Johnson295189b2012-06-20 16:38:30 -070018902 @see
18903 @return Result of the function call
18904*/
18905WDI_Status
18906WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018907(
Jeff Johnson295189b2012-06-20 16:38:30 -070018908 WDI_ControlBlockType* pWDICtx,
18909 WDI_EventInfoType* pEventData
18910)
18911{
18912 WDI_LowLevelIndType wdiInd;
18913 tCoexIndMsg halCoexIndMsg;
18914 wpt_uint32 index;
18915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18916
18917 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018918 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018919 -------------------------------------------------------------------------*/
18920 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18921 ( NULL == pEventData->pEventData ))
18922 {
18923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018924 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018925 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070018926 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018927 }
18928
18929 /*-------------------------------------------------------------------------
18930 Extract indication and send it to UMAC
18931 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018932 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
18933 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018934 sizeof(halCoexIndMsg.coexIndParams) );
18935
18936 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018937 wdiInd.wdiIndicationType = WDI_COEX_IND;
18938 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070018939 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
18940 {
Jeff Johnsone7245742012-09-05 17:12:55 -070018941 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070018942 }
18943
18944 // DEBUG
18945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
18946 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070018947 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
18948 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
18949 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
18950 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
18951 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070018952
ltimariu034f7d62013-01-24 18:54:33 -080018953 if ( pWDICtx->wdiLowLevelIndCB )
18954 {
18955 /*Notify UMAC*/
18956 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18957 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018958
18959 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018960}/*WDI_ProcessCoexInd*/
18961
18962/**
18963*@brief Process Tx Complete Indication function (called when
18964 an indication of this kind is being received over the
18965 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018966
18967 @param pWDICtx: pointer to the WLAN DAL context
18968 pEventData: pointer to the event information structure
18969
Jeff Johnson295189b2012-06-20 16:38:30 -070018970 @see
18971 @return Result of the function call
18972*/
18973WDI_Status
18974WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018975(
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 WDI_ControlBlockType* pWDICtx,
18977 WDI_EventInfoType* pEventData
18978)
18979{
18980 WDI_LowLevelIndType wdiInd;
18981 tTxComplIndMsg halTxComplIndMsg;
18982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18983
18984 /*-------------------------------------------------------------------------
18985 Sanity check
18986 -------------------------------------------------------------------------*/
18987 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18988 ( NULL == pEventData->pEventData ))
18989 {
18990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018991 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018992 WDI_ASSERT( 0 );
18993 return WDI_STATUS_E_FAILURE;
18994 }
18995
18996 /*-------------------------------------------------------------------------
18997 Extract indication and send it to UMAC
18998 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018999 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19000 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019001 sizeof(halTxComplIndMsg.txComplParams) );
19002
19003 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019004 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19005 wdiInd.wdiIndicationData.tx_complete_status
19006 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019007
ltimariu034f7d62013-01-24 18:54:33 -080019008 if ( pWDICtx->wdiLowLevelIndCB )
19009 {
19010 /*Notify UMAC*/
19011 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19012 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019013
19014 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019015}/*WDI_ProcessTxCompleteInd*/
19016
Jeff Johnson295189b2012-06-20 16:38:30 -070019017/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019018*@brief Process Noa Start Indication function (called when
19019 an indication of this kind is being received over the
19020 bus from HAL)
19021
19022 @param pWDICtx: pointer to the WLAN DAL context
19023 pEventData: pointer to the event information structure
19024
19025 @see
19026 @return Result of the function call
19027*/
19028WDI_Status
19029WDI_ProcessP2pNoaStartInd
19030(
19031 WDI_ControlBlockType* pWDICtx,
19032 WDI_EventInfoType* pEventData
19033)
19034{
19035 WDI_LowLevelIndType wdiInd;
19036 tNoaStartIndMsg halNoaStartIndMsg;
19037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19038
19039 /*-------------------------------------------------------------------------
19040 Sanity check
19041 -------------------------------------------------------------------------*/
19042 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19043 ( NULL == pEventData->pEventData ))
19044 {
19045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19046 "%s: Invalid parameters", __func__);
19047 WDI_ASSERT( 0 );
19048 return WDI_STATUS_E_FAILURE;
19049 }
19050
19051 /*-------------------------------------------------------------------------
19052 Extract indication and send it to UMAC
19053 -------------------------------------------------------------------------*/
19054 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19055 pEventData->pEventData,
19056 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19057
19058 /*Fill in the indication parameters*/
19059 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19060
19061 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19062 = halNoaStartIndMsg.noaStartIndParams.status;
19063
19064 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19065 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19066
19067 /*Notify UMAC*/
19068 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19069
19070 return WDI_STATUS_SUCCESS;
19071}/*WDI_ProcessNoaAttrInd*/
19072
19073/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019074*@brief Process Noa Attr Indication function (called when
19075 an indication of this kind is being received over the
19076 bus from HAL)
19077
19078 @param pWDICtx: pointer to the WLAN DAL context
19079 pEventData: pointer to the event information structure
19080
19081 @see
19082 @return Result of the function call
19083*/
19084WDI_Status
19085WDI_ProcessP2pNoaAttrInd
19086(
19087 WDI_ControlBlockType* pWDICtx,
19088 WDI_EventInfoType* pEventData
19089)
19090{
19091 WDI_LowLevelIndType wdiInd;
19092 tNoaAttrIndMsg halNoaAttrIndMsg;
19093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19094
19095 /*-------------------------------------------------------------------------
19096 Sanity check
19097 -------------------------------------------------------------------------*/
19098 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19099 ( NULL == pEventData->pEventData ))
19100 {
19101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019102 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019103 WDI_ASSERT( 0 );
19104 return WDI_STATUS_E_FAILURE;
19105 }
19106
19107 /*-------------------------------------------------------------------------
19108 Extract indication and send it to UMAC
19109 -------------------------------------------------------------------------*/
19110 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19111 pEventData->pEventData,
19112 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19113
19114 /*Fill in the indication parameters*/
19115 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019116
Jeff Johnson295189b2012-06-20 16:38:30 -070019117 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19118 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019119
Jeff Johnson295189b2012-06-20 16:38:30 -070019120 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19121 = halNoaAttrIndMsg.noaAttrIndParams.index;
19122 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19123 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19124 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19125 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019126
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19128 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19129 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19130 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19131 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19132 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19133 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19134 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019135
Jeff Johnson295189b2012-06-20 16:38:30 -070019136 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19137 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19138 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19139 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19140 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19141 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19142 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19143 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19144
ltimariu034f7d62013-01-24 18:54:33 -080019145 if ( pWDICtx->wdiLowLevelIndCB )
19146 {
19147 /*Notify UMAC*/
19148 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19149 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019150
19151 return WDI_STATUS_SUCCESS;
19152}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019153
19154/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019155 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019156 an indication of this kind is being received over the
19157 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019158
19159 @param pWDICtx: pointer to the WLAN DAL context
19160 pEventData: pointer to the event information structure
19161
Jeff Johnson295189b2012-06-20 16:38:30 -070019162 @see
19163 @return Result of the function call
19164*/
19165WDI_Status
19166WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019167(
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 WDI_ControlBlockType* pWDICtx,
19169 WDI_EventInfoType* pEventData
19170)
19171{
19172 WDI_LowLevelIndType wdiInd;
19173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019174
Jeff Johnson295189b2012-06-20 16:38:30 -070019175 /*-------------------------------------------------------------------------
19176 Extract indication and send it to UMAC
19177 -------------------------------------------------------------------------*/
19178 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019179 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19180
ltimariu034f7d62013-01-24 18:54:33 -080019181 if ( pWDICtx->wdiLowLevelIndCB )
19182 {
19183 /*Notify UMAC*/
19184 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19185 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019186
Jeff Johnsone7245742012-09-05 17:12:55 -070019187 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019188}/*WDI_ProcessTxPerHitInd*/
19189
Jeff Johnson295189b2012-06-20 16:38:30 -070019190/**
19191 @brief WDI_ProcessFTMCommandReq
19192 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019193
19194 @param pWDICtx: pointer to the WLAN DAL context
19195 pEventData: pointer to the event information structure
19196
Jeff Johnson295189b2012-06-20 16:38:30 -070019197 @see
19198 @return Result of the function call
19199*/
19200WDI_Status
19201WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019202(
Jeff Johnson295189b2012-06-20 16:38:30 -070019203 WDI_ControlBlockType* pWDICtx,
19204 WDI_EventInfoType* pEventData
19205)
19206{
19207 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19208 wpt_uint8 *ftmCommandBuffer = NULL;
19209 wpt_uint16 dataOffset;
19210 wpt_uint16 bufferSize;
19211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 -------------------------------------------------------------------------*/
19214 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19215 ( NULL == pEventData->pEventData))
19216
19217 {
19218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019219 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019222 }
19223
19224 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19225
19226 /* Get MSG Buffer */
19227 WDI_GetMessageBuffer(pWDICtx,
19228 WDI_FTM_CMD_REQ,
19229 ftmCommandReq->bodyLength,
19230 &ftmCommandBuffer,
19231 &dataOffset,
19232 &bufferSize);
19233
19234 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19235 ftmCommandReq->FTMCommandBody,
19236 ftmCommandReq->bodyLength);
19237
19238 /* Send MSG */
19239 return WDI_SendMsg(pWDICtx,
19240 ftmCommandBuffer,
19241 bufferSize,
19242 pEventData->pCBfnc,
19243 pEventData->pUserData,
19244 WDI_FTM_CMD_RESP);
19245}
19246
19247/**
19248 @brief WDI_ProcessFTMCommandRsp
19249 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019250
19251 @param pWDICtx: pointer to the WLAN DAL context
19252 pEventData: pointer to the event information structure
19253
Jeff Johnson295189b2012-06-20 16:38:30 -070019254 @see
19255 @return Result of the function call
19256*/
19257WDI_Status
19258WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019259(
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 WDI_ControlBlockType* pWDICtx,
19261 WDI_EventInfoType* pEventData
19262)
19263{
19264 WDI_FTMCommandRspCb ftmCMDRspCb;
19265 tProcessPttRspParams *ftmCMDRspData = NULL;
19266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19267
19268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019269 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019270 -------------------------------------------------------------------------*/
19271 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19272 ( NULL == pEventData->pEventData))
19273 {
19274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019275 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019278 }
19279
19280 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19281
19282 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19283
Jeff Johnsone7245742012-09-05 17:12:55 -070019284 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19285 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019286 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19287
19288 /*Notify UMAC*/
19289 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19290
Jeff Johnsone7245742012-09-05 17:12:55 -070019291 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019292}
Jeff Johnson295189b2012-06-20 16:38:30 -070019293/**
19294 @brief WDI_ProcessHalDumpCmdReq
19295 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019296
19297 @param pWDICtx: pointer to the WLAN DAL context
19298 pEventData: pointer to the event information structure
19299
Jeff Johnson295189b2012-06-20 16:38:30 -070019300 @see
19301 @return Result of the function call
19302*/
19303WDI_Status
19304WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019305(
Jeff Johnson295189b2012-06-20 16:38:30 -070019306 WDI_ControlBlockType* pWDICtx,
19307 WDI_EventInfoType* pEventData
19308)
19309{
19310 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19311 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19312 wpt_uint16 usDataOffset = 0;
19313 wpt_uint16 usSendSize = 0;
19314 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019315 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019316
19317 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019318 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019319 -------------------------------------------------------------------------*/
19320 if (( NULL == pEventData ) ||
19321 ( NULL == pEventData->pEventData) ||
19322 ( NULL == pEventData->pCBfnc ))
19323 {
19324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019325 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019328 }
19329
19330 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19331 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19332
19333 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019334 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019335 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019336 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019337 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019338 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019339 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019340 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019341 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019342 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019343 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019344
Jeff Johnson295189b2012-06-20 16:38:30 -070019345 /*-----------------------------------------------------------------------
19346 Get message buffer
19347 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019348 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019349 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19350 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019351 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019352 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19353 {
19354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19355 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19356 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019359 }
19360
Jeff Johnsone7245742012-09-05 17:12:55 -070019361 wpalMemoryCopy( pSendBuffer+usDataOffset,
19362 &halDumpCmdReqMsg.dumpCmdReqParams,
19363 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019364
19365 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019366 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019367
19368 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019369 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019370 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019371 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19372 wdiHALDumpCmdRspCb, pEventData->pUserData,
19373 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019374}
19375
19376/**
19377 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019378 Process hal Dump Command Response from HAL, simply route to HDD
19379
19380 @param pWDICtx: pointer to the WLAN DAL context
19381 pEventData: pointer to the event information structure
19382
Jeff Johnson295189b2012-06-20 16:38:30 -070019383 @see
19384 @return Result of the function call
19385*/
19386WDI_Status
19387WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019388(
Jeff Johnson295189b2012-06-20 16:38:30 -070019389 WDI_ControlBlockType* pWDICtx,
19390 WDI_EventInfoType* pEventData
19391)
19392{
19393 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019394 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019395 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19396
19397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019399 -------------------------------------------------------------------------*/
19400 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19401 ( NULL == pEventData->pEventData))
19402 {
19403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019404 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019405 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019406 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019407 }
19408
Jeff Johnsone7245742012-09-05 17:12:55 -070019409 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019410
19411 /*Initialize the WDI Response structure */
19412 wdiHALDumpCmdRsp.usBufferLen = 0;
19413 wdiHALDumpCmdRsp.pBuffer = NULL;
19414
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019415 wpalMemoryCopy( &halDumpCmdRspParams,
19416 pEventData->pEventData,
19417 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019418
19419 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019420 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019421
19422 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019423 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019424 {
19425 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019426 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19427 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19428
19429 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19430 &halDumpCmdRspParams.rspBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019431 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19432 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019433
Jeff Johnson295189b2012-06-20 16:38:30 -070019434 /*Notify UMAC*/
19435 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19436
19437 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19438 {
19439 /* Free the allocated buffer */
19440 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19441 }
19442 return WDI_STATUS_SUCCESS;
19443}
19444
19445/*==========================================================================
19446 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019447
Jeff Johnson295189b2012-06-20 16:38:30 -070019448 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019449 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019450==========================================================================*/
19451/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019452 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019453 when it wishes to send up a notification like the ones
19454 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019455
Jeff Johnson295189b2012-06-20 16:38:30 -070019456 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019457
19458 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019460 wctsNotifyCBData: the callback data of the user
19461
Jeff Johnson295189b2012-06-20 16:38:30 -070019462 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019463
19464 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019465*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019466void
Jeff Johnson295189b2012-06-20 16:38:30 -070019467WDI_NotifyMsgCTSCB
19468(
Jeff Johnsone7245742012-09-05 17:12:55 -070019469 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019470 WCTS_NotifyEventType wctsEvent,
19471 void* wctsNotifyCBData
19472)
19473{
Jeff Johnsone7245742012-09-05 17:12:55 -070019474 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19476
19477 if (NULL == pWDICtx )
19478 {
19479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019482 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019483 }
19484
19485 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19486 {
19487 /* callback presumably occurred after close */
19488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019489 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019490 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019491 }
19492
19493 if ( WCTS_EVENT_OPEN == wctsEvent )
19494 {
19495 /*Flag must be set atomically as it is checked from incoming request
19496 functions*/
19497 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019498 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019499
19500 /*Nothing to do - so try to dequeue any pending request that may have
19501 occurred while we were trying to establish this*/
19502 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019503 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019504 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019505 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019506 {
19507 /*Flag must be set atomically as it is checked from incoming request
19508 functions*/
19509 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019510 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019511
19512 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019513 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019514 wpalMutexRelease(&pWDICtx->wptMutex);
19515
19516 /*Notify that the Control Channel is closed */
19517 wpalEventSet(&pWDICtx->wctsActionEvent);
19518 }
19519
19520}/*WDI_NotifyMsgCTSCB*/
19521
19522
19523/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019524 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019525 when it wishes to send up a packet received over the
19526 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019527
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019529
19530 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019531 pMsg: the packet
19532 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019533 wctsRxMsgCBData: the callback data of the user
19534
Jeff Johnson295189b2012-06-20 16:38:30 -070019535 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019536
19537 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019538*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019539void
19540WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019541(
Jeff Johnsone7245742012-09-05 17:12:55 -070019542 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019543 void* pMsg,
19544 wpt_uint32 uLen,
19545 void* wctsRxMsgCBData
19546)
19547{
Jeff Johnsone7245742012-09-05 17:12:55 -070019548 tHalMsgHeader *pHalMsgHeader;
19549 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019550 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19552
19553 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019554 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019555 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019556 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019557 ( uLen < sizeof(tHalMsgHeader)))
19558 {
19559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019560 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019562 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019563 }
19564
19565 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19566 {
19567 /* callback presumably occurred after close */
19568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019569 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019570 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019571 }
19572
Jeff Johnsone7245742012-09-05 17:12:55 -070019573 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 context - so no serialization is necessary here
19575 ! - revisit this assumption */
19576
19577 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19578
19579 if ( uLen != pHalMsgHeader->msgLen )
19580 {
19581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19582 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019583 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19584 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019585 }
19586
19587 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19588
19589 /*The message itself starts after the header*/
19590 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19591 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19592 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19593 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19594
19595
19596 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19597 {
19598 /*Stop the timer as the response was received */
19599 /*!UT - check for potential race conditions between stop and response */
19600 wpalTimerStop(&pWDICtx->wptResponseTimer);
19601 }
19602 /* Check if we receive a response message which is not expected */
19603 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19604 {
19605 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19606 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19607 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019608 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019609 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19610 pWDICtx->wdiExpectedResponse);
19611 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19612 return;
19613 }
19614
19615 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19616 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19617
19618 /*Post response event to the state machine*/
19619 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19620
19621}/*WDI_RXMsgCTSCB*/
19622
19623
19624/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019625 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019626========================================================================*/
19627
19628/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019629 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019630 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019631
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 @param pWDICtx - pointer to the control block
19633
19634 @return Result of the function call
19635*/
19636WPT_INLINE WDI_Status
19637WDI_CleanCB
19638(
19639 WDI_ControlBlockType* pWDICtx
19640)
19641{
19642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19643
19644 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019645 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070019646
Jeff Johnsone7245742012-09-05 17:12:55 -070019647 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070019648 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
19649 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
19650
19651 WDI_ResetAssocSessions( pWDICtx );
19652
19653 return WDI_STATUS_SUCCESS;
19654}/*WDI_CleanCB*/
19655
19656
19657/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019658 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070019659
Jeff Johnsone7245742012-09-05 17:12:55 -070019660
19661 @param pWDICtx: pointer to the WLAN DAL context
19662 pEventData: pointer to the event information structure
19663
Jeff Johnson295189b2012-06-20 16:38:30 -070019664 @see
19665 @return Result of the function call
19666*/
19667WPT_INLINE WDI_Status
19668WDI_ProcessRequest
19669(
19670 WDI_ControlBlockType* pWDICtx,
19671 WDI_EventInfoType* pEventData
19672)
19673{
19674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19675
Jeff Johnsone7245742012-09-05 17:12:55 -070019676 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070019677 already checked these pointers*/
19678
19679 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
19680 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070019681 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019682 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19683 "Calling request processing function for req %s (%d) %x",
19684 WDI_getReqMsgString(pEventData->wdiRequest),
19685 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
19686 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
19687 }
19688 else
19689 {
19690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070019691 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019692 pEventData->wdiRequest);
19693 return WDI_STATUS_E_NOT_IMPLEMENT;
19694 }
19695}/*WDI_ProcessRequest*/
19696
19697
19698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019699 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070019700 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070019701 prefixes it with a send message header
19702
19703 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019704 wdiReqType: type of the request being sent
19705 uBufferLen: message buffer len
19706 pMsgBuffer: resulting allocated buffer
19707 pusDataOffset: offset in the buffer where the caller
19708 can start copying its message data
19709 puBufferSize: the resulting buffer size (offset+buff
19710 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070019711
Jeff Johnson295189b2012-06-20 16:38:30 -070019712 @see
19713 @return Result of the function call
19714*/
19715WDI_Status
19716WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070019717(
19718 WDI_ControlBlockType* pWDICtx,
19719 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070019720 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070019721 wpt_uint8** pMsgBuffer,
19722 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070019723 wpt_uint16* pusBufferSize
19724)
19725{
19726 tHalMsgHeader halMsgHeader;
19727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19728
Jeff Johnsone7245742012-09-05 17:12:55 -070019729 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070019730 again*/
19731
19732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019733 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019734 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019735 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070019736 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
19737 if ( NULL == *pMsgBuffer )
19738 {
19739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19740 "Unable to allocate message buffer for req %s (%d)",
19741 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070019742 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070019743 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019744 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019745 }
19746
19747 /*-------------------------------------------------------------------------
19748 Fill in the message header
19749 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019750 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
19751 /* Fill msgVersion */
19752#ifdef WLAN_FEATURE_11AC
19753 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019754 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019755 else
19756#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070019757 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019758
Jeff Johnsone7245742012-09-05 17:12:55 -070019759 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
19760 *pusDataOffset = sizeof(halMsgHeader);
19761 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
19762
19763 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019764}/*WDI_GetMessageBuffer*/
19765
19766
19767/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019768 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070019769 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070019770 the CB
19771
19772 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019774
Jeff Johnson295189b2012-06-20 16:38:30 -070019775 usSendSize size of the buffer to be sent
19776 pRspCb: response callback - save in the WDI
19777 CB
19778 pUserData: user data associated with the
19779 callback
19780 wdiExpectedResponse: the code of the response that is
19781 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070019782
Jeff Johnson295189b2012-06-20 16:38:30 -070019783 @see
19784 @return Result of the function call
19785*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019786WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019787WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070019788(
19789 WDI_ControlBlockType* pWDICtx,
19790 wpt_uint8* pSendBuffer,
19791 wpt_uint32 usSendSize,
19792 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070019793 void* pUserData,
19794 WDI_ResponseEnumType wdiExpectedResponse
19795)
19796{
Jeff Johnsond13512a2012-07-17 11:42:19 -070019797 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019798 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070019799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19800
19801 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019802 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070019803 ------------------------------------------------------------------------*/
19804 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070019805 pWDICtx->pfncRspCB = pRspCb;
19806 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070019807
19808 /*-----------------------------------------------------------------------
19809 Call the CTS to send this message over - free message afterwards
19810 - notify transport failure
19811 Note: CTS is reponsible for freeing the message buffer.
19812 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019813 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
19814 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
19815 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070019816 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070019818 "Failed to send message over the bus - catastrophic failure");
19819
Jeff Johnsond13512a2012-07-17 11:42:19 -070019820 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019822 else
19823 {
19824 /* even when message was placed in CTS deferred Q, we will treat it
19825 success but log this info
19826 */
19827 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
19828 {
19829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19830 "WDI_SendMsg: message placed in CTS deferred Q, expected "
19831 "response %s (%d)",
19832 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19833 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080019834 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019835 }
19836 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019837
Jeff Johnsond13512a2012-07-17 11:42:19 -070019838 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019839 if ( NULL != pWDICtx->wdiReqStatusCB )
19840 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070019841 /*Inform originator whether request went through or not*/
19842 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
19843 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019844 pWDICtx->wdiReqStatusCB = NULL;
19845 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070019846 callback(wdiStatus, callbackContext);
19847
19848 /*For WDI requests which have registered a request callback,
19849 inform the WDA caller of the same via setting the return value
19850 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
19851 end up repeating the functonality in the req callback for the
19852 WDI_STATUS_E_FAILURE case*/
19853 if (wdiStatus == WDI_STATUS_E_FAILURE)
19854 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070019855 }
19856
Jeff Johnsond13512a2012-07-17 11:42:19 -070019857 if ( wdiStatus == WDI_STATUS_SUCCESS )
19858 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019859 /*Start timer for the expected response */
19860 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019861
19862 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080019863 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070019864 }
19865 else
19866 {
Jeff Johnson1920a722012-12-10 14:28:09 -080019867 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070019868 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19869 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019870
Jeff Johnsond13512a2012-07-17 11:42:19 -070019871 return wdiStatus;
19872
Jeff Johnson295189b2012-06-20 16:38:30 -070019873}/*WDI_SendMsg*/
19874
19875
19876
19877/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019878 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019879 the bus using the control transport and saves some info
19880 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070019881
19882 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019883 pSendBuffer: buffer to be sent
19884 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070019885
Jeff Johnson295189b2012-06-20 16:38:30 -070019886 @see
19887 @return Result of the function call
19888*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019889WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070019890WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070019891(
19892 WDI_ControlBlockType* pWDICtx,
19893 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019894 wpt_uint32 usSendSize
19895)
19896{
19897 wpt_uint32 uStatus ;
19898 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19899
19900 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019901 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070019902 Note: CTS is reponsible for freeing the message buffer.
19903 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019904 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019905 (void*)pSendBuffer, usSendSize );
19906
19907 /*Inform Upper MAC about the outcome of the request*/
19908 if ( NULL != pWDICtx->wdiReqStatusCB )
19909 {
19910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19911 "Send indication status : %d", uStatus);
19912
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019913 /* even if CTS placed indication into its deferred Q, we treat it
19914 * as success and let CTS drain its queue as per smd interrupt to CTS
19915 */
19916 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 -070019917 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070019918 }
19919
19920 /*If sending of the message failed - it is considered catastrophic and
19921 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080019922 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
19923 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
19924
Jeff Johnson295189b2012-06-20 16:38:30 -070019925 {
19926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070019927 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070019928
19929 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
19930 return WDI_STATUS_E_FAILURE;
19931 }
19932
Jeff Johnsone7245742012-09-05 17:12:55 -070019933 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019934}/*WDI_SendIndication*/
19935
19936
19937/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019938 @brief WDI_DetectedDeviceError - called internally by DAL when
19939 it has detected a failure in the device
19940
19941 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070019942 usErrorCode: error code detected by WDI or received
19943 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019944
Jeff Johnson295189b2012-06-20 16:38:30 -070019945 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070019946 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019947*/
19948void
19949WDI_DetectedDeviceError
19950(
19951 WDI_ControlBlockType* pWDICtx,
19952 wpt_uint16 usErrorCode
19953)
19954{
19955 WDI_LowLevelIndType wdiInd;
19956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19957
19958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19959 "Device Error detected code: %d - transitioning to stopped state",
19960 usErrorCode);
19961
19962 wpalMutexAcquire(&pWDICtx->wptMutex);
19963
19964 WDI_STATableStop(pWDICtx);
19965
19966 WDI_ResetAssocSessions(pWDICtx);
19967
19968 /*Set the expected state transition to stopped - because the device
19969 experienced a failure*/
19970 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
19971
19972 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019973 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070019974
Jeff Johnsone7245742012-09-05 17:12:55 -070019975 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019976
19977 /*TO DO: - there should be an attempt to reset the device here*/
19978
19979 wpalMutexRelease(&pWDICtx->wptMutex);
19980
19981 /*------------------------------------------------------------------------
19982 Notify UMAC if a handler is registered
19983 ------------------------------------------------------------------------*/
19984 if (pWDICtx->wdiLowLevelIndCB)
19985 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019986 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19987 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019988
19989 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
19990 }
19991}/*WDI_DetectedDeviceError*/
19992
19993/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019994 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070019995 we started on send message has expire - this should
19996 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070019997 reply - trigger catastrophic failure
19998 @param
19999
Jeff Johnson295189b2012-06-20 16:38:30 -070020000 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020001
20002 @see
20003 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020004*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020005void
Jeff Johnson295189b2012-06-20 16:38:30 -070020006WDI_ResponseTimerCB
20007(
20008 void *pUserData
20009)
20010{
20011 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20012 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20013
20014 if (NULL == pWDICtx )
20015 {
20016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 }
20021
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020022 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020023 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020024
20025 /* If response timer is running at this time that means this timer
20026 * event is not for the last request but rather last-to-last request and
20027 * this timer event has come after we recevied respone for last-to-last
20028 * message
20029 */
20030 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20031 {
20032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20033 "WDI_ResponseTimerCB: timer in running state on timer event, "
20034 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20035 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20036 return;
20037 }
20038
Jeff Johnson295189b2012-06-20 16:38:30 -070020039 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
20040 {
20041
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053020042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020043 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020044 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020045 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020046 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20047 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020048 /* WDI timeout means Riva is not responding or SMD communication to Riva
20049 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020050 * is to initiate SSR from APPS
20051 * There is also an option to re-enable wifi, which will eventually
20052 * trigger SSR
20053 */
20054#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070020055 wpalWcnssResetIntr();
20056 /* if this timer fires, it means Riva did not receive the FIQ */
20057 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020058#else
20059 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20060 wpalWlanReload();
20061#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020062 }
20063 else
20064 {
20065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020066 "Timeout occurred but not waiting for any response %d "
20067 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20068 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20069 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020070 }
20071
20072 return;
20073
20074}/*WDI_ResponseTimerCB*/
20075
20076
20077/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020078 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020079
Jeff Johnsone7245742012-09-05 17:12:55 -070020080
20081 @param pWDICtx: pointer to the WLAN DAL context
20082 pEventData: pointer to the event information structure
20083
Jeff Johnson295189b2012-06-20 16:38:30 -070020084 @see
20085 @return Result of the function call
20086*/
20087WPT_INLINE WDI_Status
20088WDI_ProcessResponse
20089(
20090 WDI_ControlBlockType* pWDICtx,
20091 WDI_EventInfoType* pEventData
20092)
20093{
20094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20095
Jeff Johnsone7245742012-09-05 17:12:55 -070020096 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020097 already checked these pointers
20098 ! - revisit this assumption */
20099 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20100 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020101 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020103 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020104 WDI_getRespMsgString(pEventData->wdiResponse),
20105 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20106 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20107 }
20108 else
20109 {
20110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020111 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020112 pEventData->wdiResponse);
20113 return WDI_STATUS_E_NOT_IMPLEMENT;
20114 }
20115}/*WDI_ProcessResponse*/
20116
20117
20118/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020119 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020120=========================================================================*/
20121
20122/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020123 @brief Utility function used by the DAL Core to help queue a
20124 request that cannot be processed right away.
20125 @param
20126
Jeff Johnson295189b2012-06-20 16:38:30 -070020127 pWDICtx: - pointer to the WDI control block
20128 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020129 queued
20130
20131 @see
20132 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020133*/
20134WDI_Status
20135WDI_QueuePendingReq
20136(
20137 WDI_ControlBlockType* pWDICtx,
20138 WDI_EventInfoType* pEventData
20139)
20140{
Jeff Johnsone7245742012-09-05 17:12:55 -070020141 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020142 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020143 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020144 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20145
20146 if ( NULL == pEventDataQueue )
20147 {
20148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020149 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020150 WDI_ASSERT(0);
20151 return WDI_STATUS_MEM_FAILURE;
20152 }
20153
20154 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20155 pEventDataQueue->pUserData = pEventData->pUserData;
20156 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20157 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020158 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020159
20160 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20161 {
20162 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020163
Jeff Johnson295189b2012-06-20 16:38:30 -070020164 if ( NULL == pEventInfo )
20165 {
20166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020167 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020168 WDI_ASSERT(0);
20169 wpalMemoryFree(pEventDataQueue);
20170 return WDI_STATUS_MEM_FAILURE;
20171 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020172
Jeff Johnson295189b2012-06-20 16:38:30 -070020173 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20174
20175 }
20176 pEventDataQueue->pEventData = pEventInfo;
20177
20178 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020179 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020180
Jeff Johnsone7245742012-09-05 17:12:55 -070020181 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020182
20183 return WDI_STATUS_SUCCESS;
20184}/*WDI_QueuePendingReq*/
20185
20186/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020187 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020188 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020189 @param
20190
20191 pMsg - pointer to the message
20192
20193 @see
20194 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020195*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020196void
Jeff Johnson295189b2012-06-20 16:38:30 -070020197WDI_PALCtrlMsgCB
20198(
20199 wpt_msg *pMsg
20200)
20201{
20202 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020203 WDI_ControlBlockType* pWDICtx = NULL;
20204 WDI_Status wdiStatus;
20205 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020206 void* pUserData;
20207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20208
20209 if (( NULL == pMsg )||
20210 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20211 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20212 {
20213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020214 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020215 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020216 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020217 }
20218
20219 /*Transition back to the state that we had before serialization
20220 - serialization transitions us to BUSY to stop any incomming requests
20221 ! TO DO L: possible race condition here if a request comes in between the
20222 state transition and the post function*/
20223
Jeff Johnsone7245742012-09-05 17:12:55 -070020224 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020225
20226 /*-----------------------------------------------------------------------
20227 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020228 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020229 -----------------------------------------------------------------------*/
20230 switch ( pEventData->wdiRequest )
20231 {
20232
Jeff Johnsone7245742012-09-05 17:12:55 -070020233 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020234 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20235 break;
20236
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 case WDI_NV_DOWNLOAD_REQ:
20238 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20239 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20240 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20241 {
20242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020243 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20245 }
20246 else
20247 {
20248 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20249 }
20250
20251 break;
20252
20253 default:
20254 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20255 break;
20256 }/*switch ( pEventData->wdiRequest )*/
20257
20258 if ( WDI_STATUS_SUCCESS != wdiStatus )
20259 {
20260 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20261
20262 if ( NULL != pfnReqStatusCB )
20263 {
20264 /*Fail the request*/
20265 pfnReqStatusCB( wdiStatus, pUserData);
20266 }
20267 }
20268
20269 /* Free data - that was allocated when queueing*/
20270 if( pEventData != NULL )
20271 {
20272 if( pEventData->pEventData != NULL )
20273 {
20274 wpalMemoryFree(pEventData->pEventData);
20275 }
20276 wpalMemoryFree(pEventData);
20277 }
20278
20279 if( pMsg != NULL )
20280 {
20281 wpalMemoryFree(pMsg);
20282 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020283
Jeff Johnson295189b2012-06-20 16:38:30 -070020284}/*WDI_PALCtrlMsgCB*/
20285
20286/**
20287 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020288 and schedule for execution a pending request
20289 @param
20290
Jeff Johnson295189b2012-06-20 16:38:30 -070020291 pWDICtx: - pointer to the WDI control block
20292 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020293 queued
20294
20295 @see
20296 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020297*/
20298WDI_Status
20299WDI_DequeuePendingReq
20300(
20301 WDI_ControlBlockType* pWDICtx
20302)
20303{
Jeff Johnsone7245742012-09-05 17:12:55 -070020304 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020305 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020306 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020307 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20308
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020310
20311 if ( NULL == pNode )
20312 {
20313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020314 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020315 return WDI_STATUS_SUCCESS;
20316 }
20317
20318 /*The node actually points to the 1st element inside the Event Data struct -
20319 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020320 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020321
20322 /*Serialize processing in the control thread
20323 !TO DO: - check to see if these are all the messages params that need
20324 to be filled in*/
20325 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20326
20327 if ( NULL == palMsg )
20328 {
20329 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020330 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020331 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020332 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020333 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020334 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020335 palMsg->callback = WDI_PALCtrlMsgCB;
20336 palMsg->ptr = pEventData;
20337
20338 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020339 palMsg->val = pWDICtx->uGlobalState;
20340
Jeff Johnson295189b2012-06-20 16:38:30 -070020341 /*Transition back to BUSY as we need to handle a queued request*/
20342 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020343
Jeff Johnson295189b2012-06-20 16:38:30 -070020344 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20345
20346 return WDI_STATUS_PENDING;
20347}/*WDI_DequeuePendingReq*/
20348
20349
20350/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020351 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020352 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020353 away.- The assoc requests will be queued by BSSID
20354 @param
20355
Jeff Johnson295189b2012-06-20 16:38:30 -070020356 pWDICtx: - pointer to the WDI control block
20357 pEventData: pointer to the evnt info that needs to be queued
20358 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020359
20360 @see
20361 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020362*/
20363WDI_Status
20364WDI_QueueNewAssocRequest
20365(
20366 WDI_ControlBlockType* pWDICtx,
20367 WDI_EventInfoType* pEventData,
20368 wpt_macAddr macBSSID
20369)
20370{
Jeff Johnsone7245742012-09-05 17:12:55 -070020371 wpt_uint8 i;
20372 WDI_BSSSessionType* pSession = NULL;
20373 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020374 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020375 void* pEventInfo;
20376 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020378
Jeff Johnsone7245742012-09-05 17:12:55 -070020379
20380 /*------------------------------------------------------------------------
20381 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 ------------------------------------------------------------------------*/
20383 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20384 {
20385 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20386 {
20387 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020388 pSession = &pWDICtx->aBSSSessions[i];
20389 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020390 }
20391 }
20392
20393 if ( i >= WDI_MAX_BSS_SESSIONS )
20394 {
20395 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020397 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020398
Jeff Johnson295189b2012-06-20 16:38:30 -070020399 /*------------------------------------------------------------------------
20400 Fill in the BSSID for this session and set the usage flag
20401 ------------------------------------------------------------------------*/
20402 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020403 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020404
20405 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020406 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020407 ------------------------------------------------------------------------*/
20408 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20409 if ( NULL == pEventDataQueue )
20410 {
20411 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020412 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020413 WDI_ASSERT(0);
20414 return WDI_STATUS_MEM_FAILURE;
20415 }
20416
20417 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20418 if ( NULL == pSessionIdElement )
20419 {
20420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020421 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020422 WDI_ASSERT(0);
20423 wpalMemoryFree(pEventDataQueue);
20424 return WDI_STATUS_MEM_FAILURE;
20425 }
20426
20427 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20428 if ( NULL == pEventInfo )
20429 {
20430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020431 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020432 WDI_ASSERT(0);
20433 wpalMemoryFree(pSessionIdElement);
20434 wpalMemoryFree(pEventDataQueue);
20435 return WDI_STATUS_MEM_FAILURE;
20436 }
20437
20438 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20439 pEventDataQueue->pUserData = pEventData->pUserData;
20440 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20441 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020442 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020443
20444 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20445 pEventDataQueue->pEventData = pEventInfo;
20446
20447 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020448 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020449
20450 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020451 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020452
Jeff Johnsone7245742012-09-05 17:12:55 -070020453 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020454
20455 /*We need to maintain a separate list that keeps track of the order in which
20456 the new assoc requests are being queued such that we can start processing
20457 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020458 pSessionIdElement->ucIndex = i;
20459 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020460
20461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20462 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020463 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020464
20465 /*Return pending as this is what the status of the request is since it has
20466 been queued*/
20467 return WDI_STATUS_PENDING;
20468}/*WDI_QueueNewAssocRequest*/
20469
20470/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020471 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020472 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020473 away.- The assoc requests will be queued by BSSID
20474 @param
20475
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 pWDICtx: - pointer to the WDI control block
20477 pSession: - session in which to queue
20478 pEventData: pointer to the event info that needs to be
20479 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020480
20481 @see
20482 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020483*/
20484WDI_Status
20485WDI_QueueAssocRequest
20486(
20487 WDI_ControlBlockType* pWDICtx,
20488 WDI_BSSSessionType* pSession,
20489 WDI_EventInfoType* pEventData
20490)
20491{
Jeff Johnsone7245742012-09-05 17:12:55 -070020492 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020493 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020494 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020496
20497 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020498 Sanity check
20499 ------------------------------------------------------------------------*/
20500 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20501 {
20502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020503 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020504
Jeff Johnsone7245742012-09-05 17:12:55 -070020505 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020506 }
20507
20508 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020509 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020510 ------------------------------------------------------------------------*/
20511 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20512 if ( NULL == pEventDataQueue )
20513 {
20514 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020515 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 WDI_ASSERT(0);
20517 return WDI_STATUS_MEM_FAILURE;
20518 }
20519
20520 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20521 if ( NULL == pEventInfo )
20522 {
20523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20524 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020525 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020526 WDI_ASSERT(0);
20527 wpalMemoryFree(pEventDataQueue);
20528 return WDI_STATUS_MEM_FAILURE;
20529 }
20530
20531 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20532 pEventDataQueue->pUserData = pEventData->pUserData;
20533 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20534 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020535 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020536 pEventDataQueue->pEventData = pEventInfo;
20537
20538 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20539
20540 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020541 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020542
20543 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020544 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020545
Jeff Johnsone7245742012-09-05 17:12:55 -070020546 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020547
20548 /*The result of this operation is pending because the request has been
20549 queued and it will be processed at a later moment in time */
20550 return WDI_STATUS_PENDING;
20551}/*WDI_QueueAssocRequest*/
20552
20553/**
20554 @brief Utility function used by the DAL Core to help dequeue
20555 an association request that was pending
20556 The request will be queued up in front of the main
20557 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020558 @param
20559
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020561
20562
20563 @see
20564 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020565*/
20566WDI_Status
20567WDI_DequeueAssocRequest
20568(
20569 WDI_ControlBlockType* pWDICtx
20570)
20571{
Jeff Johnsone7245742012-09-05 17:12:55 -070020572 wpt_list_node* pNode = NULL;
20573 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 WDI_BSSSessionType* pSession;
20575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020576
20577 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020578 Sanity check
20579 ------------------------------------------------------------------------*/
20580 if ( NULL == pWDICtx )
20581 {
20582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020583 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020584
Jeff Johnsone7245742012-09-05 17:12:55 -070020585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 }
20587
20588 /*------------------------------------------------------------------------
20589 An association has been completed => a new association can occur
20590 Check to see if there are any pending associations ->
20591 If so , transfer all the pending requests into the busy queue for
20592 processing
20593 These requests have arrived prior to the requests in the busy queue
20594 (bc they needed to be processed in order to be placed in this queue)
20595 => they will be placed at the front of the busy queue
20596 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020597 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020598
20599 if ( NULL == pNode )
20600 {
20601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020602 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020603 return WDI_STATUS_SUCCESS;
20604 }
20605
20606 /*The node actually points to the 1st element inside the Session Id struct -
20607 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020608 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020609
20610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20611 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20612
20613 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20614 {
20615 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020616
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020618 the front of the main waiting queue for subsequent execution*/
20619 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020620 while ( NULL != pNode )
20621 {
20622 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020623 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20624 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020625 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020626 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020627 }
20628 else
20629 {
20630 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020631 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020632 WPAL_ASSERT(0);
20633 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020635 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020636
Jeff Johnson295189b2012-06-20 16:38:30 -070020637 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20638 wpalMemoryFree(pSessionIdElement);
20639 return WDI_STATUS_SUCCESS;
20640}/*WDI_DequeueAssocRequest*/
20641
20642/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020643 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020644 pending requests - all req cb will be called with
20645 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070020646 @param
20647
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020649
20650 @see
20651 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020652*/
20653WDI_Status
20654WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070020655(
Jeff Johnson295189b2012-06-20 16:38:30 -070020656 WDI_ControlBlockType* pWDICtx
20657)
20658{
Jeff Johnsone7245742012-09-05 17:12:55 -070020659 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020660 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020661 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020662 void* pUserData;
20663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20664
Jeff Johnsone7245742012-09-05 17:12:55 -070020665 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020666
20667 /*------------------------------------------------------------------------
20668 Go through all the requests and fail them - this will only be called
20669 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070020670 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 ------------------------------------------------------------------------*/
20672 while( pNode )
20673 {
20674 /*The node actually points to the 1st element inside the Event Data struct -
20675 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020676 pEventDataQueue = (WDI_EventInfoType*)pNode;
20677
Jeff Johnson295189b2012-06-20 16:38:30 -070020678 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
20679 if ( NULL != pfnReqStatusCB )
20680 {
20681 /*Fail the request*/
20682 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
20683 }
20684 /* Free data - that was allocated when queueing */
20685 if ( pEventDataQueue->pEventData != NULL )
20686 {
20687 wpalMemoryFree(pEventDataQueue->pEventData);
20688 }
20689 wpalMemoryFree(pEventDataQueue);
20690
20691 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
20692 {
20693 break;
20694 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 }
20696
Jeff Johnson295189b2012-06-20 16:38:30 -070020697 return WDI_STATUS_SUCCESS;
20698}/*WDI_ClearPendingRequests*/
20699
20700/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 @brief Helper routine used to init the BSS Sessions in the WDI control block
20702
20703
20704 @param pWDICtx: pointer to the WLAN DAL context
20705
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 @see
20707*/
20708void
20709WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020710(
Jeff Johnson295189b2012-06-20 16:38:30 -070020711 WDI_ControlBlockType* pWDICtx
20712)
20713{
Jeff Johnsone7245742012-09-05 17:12:55 -070020714 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20716
20717 /*-------------------------------------------------------------------------
20718 No Sanity check
20719 -------------------------------------------------------------------------*/
20720 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20721 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020722 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070020723 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
20724 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
20725 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
20726 }
20727}/*WDI_ResetAssocSessions*/
20728
20729/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020730 @brief Helper routine used to find a session based on the BSSID
20731
20732
20733 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020734 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070020735 pSession: pointer to the session (if found)
20736
Jeff Johnson295189b2012-06-20 16:38:30 -070020737 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020738 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020739*/
20740wpt_uint8
20741WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020742(
Jeff Johnson295189b2012-06-20 16:38:30 -070020743 WDI_ControlBlockType* pWDICtx,
20744 wpt_macAddr macBSSID,
20745 WDI_BSSSessionType** ppSession
20746)
20747{
Jeff Johnsone7245742012-09-05 17:12:55 -070020748 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20750
20751 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020752 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020753 -------------------------------------------------------------------------*/
20754 if ( NULL == ppSession )
20755 {
20756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020757 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020758 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020759 }
20760
Jeff Johnsone7245742012-09-05 17:12:55 -070020761 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020762
Jeff Johnsone7245742012-09-05 17:12:55 -070020763 /*------------------------------------------------------------------------
20764 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020765 ------------------------------------------------------------------------*/
20766 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20767 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070020768 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
20769 (eWLAN_PAL_TRUE ==
20770 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
20771 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070020772 {
20773 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020774 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020775 return i;
20776 }
20777 }
20778
Jeff Johnsone7245742012-09-05 17:12:55 -070020779 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020780}/*WDI_FindAssocSession*/
20781
20782/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020783 @brief Helper routine used to find a session based on the BSSID
20784
20785
20786 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020787 ucBSSIdx: BSS Index of the session
20788 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020789
Jeff Johnson295189b2012-06-20 16:38:30 -070020790 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020791 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020792*/
20793wpt_uint8
20794WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020795(
Jeff Johnson295189b2012-06-20 16:38:30 -070020796 WDI_ControlBlockType* pWDICtx,
20797 wpt_uint16 ucBSSIdx,
20798 WDI_BSSSessionType** ppSession
20799)
20800{
Jeff Johnsone7245742012-09-05 17:12:55 -070020801 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20803
20804 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020805 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020806 -------------------------------------------------------------------------*/
20807 if ( NULL == ppSession )
20808 {
20809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020810 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020811 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020812 }
20813
Jeff Johnsone7245742012-09-05 17:12:55 -070020814 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020815
Jeff Johnsone7245742012-09-05 17:12:55 -070020816 /*------------------------------------------------------------------------
20817 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 ------------------------------------------------------------------------*/
20819 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20820 {
20821 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
20822 {
20823 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020824 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020825 return i;
20826 }
20827 }
20828
Jeff Johnsone7245742012-09-05 17:12:55 -070020829 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020830}/*WDI_FindAssocSessionByBSSIdx*/
20831
20832/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020833 @brief Helper routine used to find a session based on the BSSID
20834
20835
20836 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 ucBSSIdx: BSS Index of the session
20838 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070020839
Jeff Johnson295189b2012-06-20 16:38:30 -070020840 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020841 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020842*/
20843wpt_uint8
20844WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070020845(
Jeff Johnson295189b2012-06-20 16:38:30 -070020846 WDI_ControlBlockType* pWDICtx,
20847 wpt_uint16 usIdx,
20848 WDI_BSSSessionType** ppSession
20849)
20850{
20851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20852
20853 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020854 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020855 -------------------------------------------------------------------------*/
20856 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
20857 {
20858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020859 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020860 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020861 }
20862
20863 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020864 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070020865
20866 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070020867
Jeff Johnson295189b2012-06-20 16:38:30 -070020868}/*WDI_FindAssocSessionByBSSIdx*/
20869
20870/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020871 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020872 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020873
20874
20875 @param pWDICtx: pointer to the WLAN DAL context
20876 pSession: pointer to the session (if found)
20877
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020879 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020880*/
20881wpt_uint8
20882WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070020883(
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 WDI_ControlBlockType* pWDICtx,
20885 WDI_BSSSessionType** ppSession
20886)
20887{
Jeff Johnsone7245742012-09-05 17:12:55 -070020888 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020891 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020892 -------------------------------------------------------------------------*/
20893 if ( NULL == ppSession )
20894 {
20895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020896 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020897 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020898 }
20899
Jeff Johnsone7245742012-09-05 17:12:55 -070020900 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020901
Jeff Johnsone7245742012-09-05 17:12:55 -070020902 /*------------------------------------------------------------------------
20903 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 ------------------------------------------------------------------------*/
20905 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20906 {
20907 if ( ! pWDICtx->aBSSSessions[i].bInUse )
20908 {
20909 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020910 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070020911 return i;
20912 }
20913 }
20914
Jeff Johnsone7245742012-09-05 17:12:55 -070020915 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070020916}/*WDI_FindEmptySession*/
20917
20918
20919/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020920 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070020921 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070020922
20923
20924 @param pWDICtx: pointer to the WLAN DAL context
20925
Jeff Johnson295189b2012-06-20 16:38:30 -070020926 @see
20927 @return Number of sessions in use
20928*/
20929wpt_uint8
20930WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070020931(
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 WDI_ControlBlockType* pWDICtx
20933)
20934{
Jeff Johnsone7245742012-09-05 17:12:55 -070020935 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020937
20938 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020939 Count all sessions in use
20940 ------------------------------------------------------------------------*/
20941 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20942 {
20943 if ( pWDICtx->aBSSSessions[i].bInUse )
20944 {
20945 ucCount++;
20946 }
20947 }
20948
Jeff Johnsone7245742012-09-05 17:12:55 -070020949 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070020950}/*WDI_GetActiveSessionsCount*/
20951
20952/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020953 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070020954 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020955
20956
20957 @param pWDICtx: pointer to the WLAN DAL context
20958 pSession: pointer to the session (if found)
20959
Jeff Johnson295189b2012-06-20 16:38:30 -070020960 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020961 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070020962*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020963void
Jeff Johnson295189b2012-06-20 16:38:30 -070020964WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070020965(
Jeff Johnson295189b2012-06-20 16:38:30 -070020966 WDI_ControlBlockType* pWDICtx,
20967 WDI_BSSSessionType* ppSession
20968)
20969{
20970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020971 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020972 -------------------------------------------------------------------------*/
20973 if ( NULL == ppSession )
20974 {
20975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020976 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070020977 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070020978 }
20979
Jeff Johnsone7245742012-09-05 17:12:55 -070020980 /*------------------------------------------------------------------------
20981 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070020982 ------------------------------------------------------------------------*/
20983 wpal_list_destroy(&ppSession->wptPendingQueue);
20984 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070020985 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
20986 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
20988 wpal_list_init(&ppSession->wptPendingQueue);
20989
20990}/*WDI_DeleteSession*/
20991
20992/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020993 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070020994 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070020995 @param
20996
Jeff Johnson295189b2012-06-20 16:38:30 -070020997 WDI_AddStaParams: - pointer to the WDI Add STA params
20998 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020999
21000 @see
21001 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021002*/
21003void
21004WDI_AddBcastSTAtoSTATable
21005(
21006 WDI_ControlBlockType* pWDICtx,
21007 WDI_AddStaParams * staParams,
21008 wpt_uint16 usBcastStaIdx
21009)
21010{
21011 WDI_AddStaParams wdiAddSTAParam = {0};
21012 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21014
21015 /*---------------------------------------------------------------------
21016 Sanity check
21017 ---------------------------------------------------------------------*/
21018 if ( NULL == staParams )
21019 {
21020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021022
Jeff Johnsone7245742012-09-05 17:12:55 -070021023 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 }
21025
21026 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21027 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21028 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21029 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21030 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21031 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21032 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21033 WDI_MAC_ADDR_LEN );
21034 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21035 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21036 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21037 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21038 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21039 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21040 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021041
Jeff Johnson295189b2012-06-20 16:38:30 -070021042 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21043}
21044
21045/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021046 @brief NV blob will be divided into fragments of size 4kb and
21047 Sent to HAL
21048
21049 @param pWDICtx: pointer to the WLAN DAL context
21050 pEventData: pointer to the event information structure
21051
Jeff Johnson295189b2012-06-20 16:38:30 -070021052 @see
21053 @return Result of the function call
21054 */
21055
21056WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021057(
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 WDI_ControlBlockType* pWDICtx,
21059 WDI_EventInfoType* pEventData
21060)
21061{
21062
21063 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21064 wpt_uint8* pSendBuffer = NULL;
21065 wpt_uint16 usDataOffset = 0;
21066 wpt_uint16 usSendSize = 0;
21067 wpt_uint16 usCurrentFragmentSize =0;
21068 wpt_uint8* pSrcBuffer = NULL;
21069 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21070 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21071
21072 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21073 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21074 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21075
Jeff Johnsone7245742012-09-05 17:12:55 -070021076 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021077 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21078
21079 /* Update the current Fragment Number */
21080 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21081
21082 /*Update the HAL REQ structure */
21083 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21084 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21085 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21086
21087 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021089 image will be sent to HAL*/
21090
Jeff Johnsone7245742012-09-05 17:12:55 -070021091 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021092 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021093 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021094 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021095 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021096 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21097 usCurrentFragmentSize = FRAGMENT_SIZE;
21098
21099 /*Update the HAL REQ structure */
21100 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21101 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21102
21103 }
21104 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021105 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021106 usCurrentFragmentSize = FRAGMENT_SIZE;
21107
21108 /*Update the HAL REQ structure */
21109 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21110 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21111 }
21112
21113 /*-----------------------------------------------------------------------
21114 Get message buffer
21115 -----------------------------------------------------------------------*/
21116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21117 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21118 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021119 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021120 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21121 {
21122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21123 "Unable to get send buffer in NV Download req %x %x ",
21124 pEventData, pwdiNvDownloadReqParams);
21125 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 }
21128
21129 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021130 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021131 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21132
21133 /* Appending the NV image fragment */
21134 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21135 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21136 usCurrentFragmentSize);
21137
21138 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021139 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021140
Jeff Johnsone7245742012-09-05 17:12:55 -070021141 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21142 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021143 WDI_NV_DOWNLOAD_RESP);
21144
21145}
Jeff Johnsone7245742012-09-05 17:12:55 -070021146/*============================================================================
21147 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021148 ============================================================================*/
21149/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021150 @brief Helper routine used to find a session based on the BSSID
21151 @param pContext: pointer to the WLAN DAL context
21152 @param pDPContext: pointer to the Datapath context
21153
Jeff Johnson295189b2012-06-20 16:38:30 -070021154 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021155 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021156*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021157WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021158WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21159{
21160 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21161
21162 pCB->pDPContext = pDPContext;
21163 return;
21164}
21165
21166/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021167 @brief Helper routine used to find a session based on the BSSID
21168
21169
21170 @param pContext: pointer to the WLAN DAL context
21171
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 @see
21173 @return pointer to Datapath context
21174*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021175WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021176WDI_DS_GetDatapathContext (void *pContext)
21177{
21178 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21179 return pCB->pDPContext;
21180}
21181/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021182 @brief Helper routine used to find a session based on the BSSID
21183
21184
21185 @param pContext: pointer to the WLAN DAL context
21186 @param pDTDriverContext: pointer to the Transport Driver context
21187
Jeff Johnson295189b2012-06-20 16:38:30 -070021188 @see
21189 @return void
21190*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021191WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021192WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21193{
21194 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21195
21196 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021197 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021198}
21199
21200/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021201 @brief Helper routine used to find a session based on the BSSID
21202
21203
21204 @param pWDICtx: pointer to the WLAN DAL context
21205
Jeff Johnson295189b2012-06-20 16:38:30 -070021206 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021207 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021208*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021209WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021210WDT_GetTransportDriverContext (void *pContext)
21211{
21212 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021213 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021214}
21215
Jeff Johnsone7245742012-09-05 17:12:55 -070021216/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021217 Helper inline converters
21218 ============================================================================*/
21219/*Convert WDI driver type into HAL driver type*/
21220WPT_STATIC WPT_INLINE WDI_Status
21221WDI_HAL_2_WDI_STATUS
21222(
21223 eHalStatus halStatus
21224)
21225{
Jeff Johnsone7245742012-09-05 17:12:55 -070021226 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021227 the chances of getting inlined*/
21228 switch( halStatus )
21229 {
21230 case eHAL_STATUS_SUCCESS:
21231 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21232 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21233 return WDI_STATUS_SUCCESS;
21234 case eHAL_STATUS_FAILURE:
21235 return WDI_STATUS_E_FAILURE;
21236 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021237 return WDI_STATUS_MEM_FAILURE;
21238 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021239 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021240 default:
21241 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21242 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021243
Jeff Johnsone7245742012-09-05 17:12:55 -070021244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021245}/*WDI_HAL_2_WDI_STATUS*/
21246
21247/*Convert WDI request type into HAL request type*/
21248WPT_STATIC WPT_INLINE tHalHostMsgType
21249WDI_2_HAL_REQ_TYPE
21250(
21251 WDI_RequestEnumType wdiReqType
21252)
21253{
Jeff Johnsone7245742012-09-05 17:12:55 -070021254 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021255 the chances of getting inlined*/
21256 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021257 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021258 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021259 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021260 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021261 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021262 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021263 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021264 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021265 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021266 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021267 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021268 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021269 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021270 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021271 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021272 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021273 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021274 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021275 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021277 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021278 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021279 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021280 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021281 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021282 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021283 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021284 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021285 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021286 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021287 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021288 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021289 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021290 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021291 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021292 return WLAN_HAL_RMV_STAKEY_REQ;
21293 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021294 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021295 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021296 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021297 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021298 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021299 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021300 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021301 case WDI_DEL_BA_REQ:
21302 return WLAN_HAL_DEL_BA_REQ;
21303#ifdef FEATURE_WLAN_CCX
21304 case WDI_TSM_STATS_REQ:
21305 return WLAN_HAL_TSM_STATS_REQ;
21306#endif
21307 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021308 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021309 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021310 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021311 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021312 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021313 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021315 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021316 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021317 case WDI_ADD_BA_SESSION_REQ:
21318 return WLAN_HAL_ADD_BA_SESSION_REQ;
21319 case WDI_TRIGGER_BA_REQ:
21320 return WLAN_HAL_TRIGGER_BA_REQ;
21321 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021322 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021323 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021324 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021325 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21326 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21327 case WDI_SET_MAX_TX_POWER_REQ:
21328 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021329 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21330 return WLAN_HAL_SET_P2P_GONOA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021331 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021332 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021333 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021334 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021335 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021336 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021337 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021338 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021339 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021340 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021341 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021342 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021343 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021344 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021345 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021346 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021347 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021348 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021349 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 case WDI_REM_BEACON_FILTER_REQ:
21352 return WLAN_HAL_REM_BCN_FILTER_REQ;
21353 case WDI_SET_RSSI_THRESHOLDS_REQ:
21354 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21355 case WDI_HOST_OFFLOAD_REQ:
21356 return WLAN_HAL_HOST_OFFLOAD_REQ;
21357 case WDI_WOWL_ADD_BC_PTRN_REQ:
21358 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21359 case WDI_WOWL_DEL_BC_PTRN_REQ:
21360 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21361 case WDI_WOWL_ENTER_REQ:
21362 return WLAN_HAL_ENTER_WOWL_REQ;
21363 case WDI_WOWL_EXIT_REQ:
21364 return WLAN_HAL_EXIT_WOWL_REQ;
21365 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21366 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21367 case WDI_NV_DOWNLOAD_REQ:
21368 return WLAN_HAL_DOWNLOAD_NV_REQ;
21369 case WDI_FLUSH_AC_REQ:
21370 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21371 case WDI_BTAMP_EVENT_REQ:
21372 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21373#ifdef WLAN_FEATURE_VOWIFI_11R
21374 case WDI_AGGR_ADD_TS_REQ:
21375 return WLAN_HAL_AGGR_ADD_TS_REQ;
21376#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070021377 case WDI_FTM_CMD_REQ:
21378 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021379 case WDI_ADD_STA_SELF_REQ:
21380 return WLAN_HAL_ADD_STA_SELF_REQ;
21381 case WDI_DEL_STA_SELF_REQ:
21382 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021383#ifdef FEATURE_OEM_DATA_SUPPORT
21384 case WDI_START_OEM_DATA_REQ:
21385 return WLAN_HAL_START_OEM_DATA_REQ;
21386#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021387 case WDI_HOST_RESUME_REQ:
21388 return WLAN_HAL_HOST_RESUME_REQ;
21389 case WDI_HOST_SUSPEND_IND:
21390 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080021391 case WDI_TRAFFIC_STATS_IND:
21392 return WLAN_HAL_CLASS_B_STATS_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021393 case WDI_KEEP_ALIVE_REQ:
21394 return WLAN_HAL_KEEP_ALIVE_REQ;
21395
21396#ifdef FEATURE_WLAN_SCAN_PNO
21397 case WDI_SET_PREF_NETWORK_REQ:
21398 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21399 case WDI_SET_RSSI_FILTER_REQ:
21400 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21401 case WDI_UPDATE_SCAN_PARAMS_REQ:
21402 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21403#endif // FEATURE_WLAN_SCAN_PNO
21404 case WDI_SET_TX_PER_TRACKING_REQ:
21405 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21406#ifdef WLAN_FEATURE_PACKET_FILTERING
21407 case WDI_8023_MULTICAST_LIST_REQ:
21408 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21409 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021410 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021411 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21412 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21413 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21414 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21415#endif // WLAN_FEATURE_PACKET_FILTERING
21416 case WDI_HAL_DUMP_CMD_REQ:
21417 return WLAN_HAL_DUMP_COMMAND_REQ;
21418#ifdef WLAN_FEATURE_GTK_OFFLOAD
21419 case WDI_GTK_OFFLOAD_REQ:
21420 return WLAN_HAL_GTK_OFFLOAD_REQ;
21421 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21422 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21423#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21424
21425 case WDI_INIT_SCAN_CON_REQ:
21426 return WLAN_HAL_INIT_SCAN_CON_REQ;
21427 case WDI_SET_POWER_PARAMS_REQ:
21428 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21429 case WDI_SET_TM_LEVEL_REQ:
21430 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21431 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21432 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021433#ifdef WLAN_FEATURE_11AC
21434 case WDI_UPDATE_VHT_OP_MODE_REQ:
21435 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21436#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021437 case WDI_GET_ROAM_RSSI_REQ:
21438 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021439 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021440 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021441 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021442
Jeff Johnson295189b2012-06-20 16:38:30 -070021443}/*WDI_2_HAL_REQ_TYPE*/
21444
21445/*Convert WDI response type into HAL response type*/
21446WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21447HAL_2_WDI_RSP_TYPE
21448(
21449 tHalHostMsgType halMsg
21450)
21451{
Jeff Johnsone7245742012-09-05 17:12:55 -070021452 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021453 the chances of getting inlined*/
21454 switch( halMsg )
21455 {
21456 case WLAN_HAL_START_RSP:
21457 return WDI_START_RESP;
21458 case WLAN_HAL_STOP_RSP:
21459 return WDI_STOP_RESP;
21460 case WLAN_HAL_INIT_SCAN_RSP:
21461 return WDI_INIT_SCAN_RESP;
21462 case WLAN_HAL_START_SCAN_RSP:
21463 return WDI_START_SCAN_RESP;
21464 case WLAN_HAL_END_SCAN_RSP:
21465 return WDI_END_SCAN_RESP;
21466 case WLAN_HAL_FINISH_SCAN_RSP:
21467 return WDI_FINISH_SCAN_RESP;
21468 case WLAN_HAL_CONFIG_STA_RSP:
21469 return WDI_CONFIG_STA_RESP;
21470 case WLAN_HAL_DELETE_STA_RSP:
21471 return WDI_DEL_STA_RESP;
21472 case WLAN_HAL_CONFIG_BSS_RSP:
21473 return WDI_CONFIG_BSS_RESP;
21474 case WLAN_HAL_DELETE_BSS_RSP:
21475 return WDI_DEL_BSS_RESP;
21476 case WLAN_HAL_JOIN_RSP:
21477 return WDI_JOIN_RESP;
21478 case WLAN_HAL_POST_ASSOC_RSP:
21479 return WDI_POST_ASSOC_RESP;
21480 case WLAN_HAL_SET_BSSKEY_RSP:
21481 return WDI_SET_BSS_KEY_RESP;
21482 case WLAN_HAL_SET_STAKEY_RSP:
21483 return WDI_SET_STA_KEY_RESP;
21484 case WLAN_HAL_RMV_BSSKEY_RSP:
21485 return WDI_RMV_BSS_KEY_RESP;
21486 case WLAN_HAL_RMV_STAKEY_RSP:
21487 return WDI_RMV_STA_KEY_RESP;
21488 case WLAN_HAL_SET_BCASTKEY_RSP:
21489 return WDI_SET_STA_BCAST_KEY_RESP;
21490 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21491 // return WDI_RMV_STA_BCAST_KEY_RESP;
21492 case WLAN_HAL_ADD_TS_RSP:
21493 return WDI_ADD_TS_RESP;
21494 case WLAN_HAL_DEL_TS_RSP:
21495 return WDI_DEL_TS_RESP;
21496 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21497 return WDI_UPD_EDCA_PRMS_RESP;
21498 case WLAN_HAL_ADD_BA_RSP:
21499 return WDI_ADD_BA_RESP;
21500 case WLAN_HAL_DEL_BA_RSP:
21501 return WDI_DEL_BA_RESP;
21502#ifdef FEATURE_WLAN_CCX
21503 case WLAN_HAL_TSM_STATS_RSP:
21504 return WDI_TSM_STATS_RESP;
21505#endif
21506 case WLAN_HAL_CH_SWITCH_RSP:
21507 return WDI_CH_SWITCH_RESP;
21508 case WLAN_HAL_SET_LINK_ST_RSP:
21509 return WDI_SET_LINK_ST_RESP;
21510 case WLAN_HAL_GET_STATS_RSP:
21511 return WDI_GET_STATS_RESP;
21512 case WLAN_HAL_UPDATE_CFG_RSP:
21513 return WDI_UPDATE_CFG_RESP;
21514 case WLAN_HAL_ADD_BA_SESSION_RSP:
21515 return WDI_ADD_BA_SESSION_RESP;
21516 case WLAN_HAL_TRIGGER_BA_RSP:
21517 return WDI_TRIGGER_BA_RESP;
21518 case WLAN_HAL_UPDATE_BEACON_RSP:
21519 return WDI_UPD_BCON_PRMS_RESP;
21520 case WLAN_HAL_SEND_BEACON_RSP:
21521 return WDI_SND_BCON_RESP;
21522 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21523 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21524 /*Indications*/
21525 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21526 return WDI_HAL_RSSI_NOTIFICATION_IND;
21527 case WLAN_HAL_MISSED_BEACON_IND:
21528 return WDI_HAL_MISSED_BEACON_IND;
21529 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21530 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21531 case WLAN_HAL_MIC_FAILURE_IND:
21532 return WDI_HAL_MIC_FAILURE_IND;
21533 case WLAN_HAL_FATAL_ERROR_IND:
21534 return WDI_HAL_FATAL_ERROR_IND;
21535 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21536 return WDI_HAL_DEL_STA_IND;
21537 case WLAN_HAL_COEX_IND:
21538 return WDI_HAL_COEX_IND;
21539 case WLAN_HAL_OTA_TX_COMPL_IND:
21540 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 case WLAN_HAL_P2P_NOA_ATTR_IND:
21542 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021543 case WLAN_HAL_P2P_NOA_START_IND:
21544 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021545 case WLAN_HAL_TX_PER_HIT_IND:
21546 return WDI_HAL_TX_PER_HIT_IND;
21547 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21548 return WDI_SET_MAX_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 case WLAN_HAL_SET_P2P_GONOA_RSP:
21550 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021552 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021553 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021554 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021555 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021556 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021557 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021558 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021559 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021560 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021561 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021562 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021563 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021564 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021565 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021566 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021567 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021568 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021569 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21570 return WDI_SET_BEACON_FILTER_RESP;
21571 case WLAN_HAL_REM_BCN_FILTER_RSP:
21572 return WDI_REM_BEACON_FILTER_RESP;
21573 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21574 return WDI_SET_RSSI_THRESHOLDS_RESP;
21575 case WLAN_HAL_HOST_OFFLOAD_RSP:
21576 return WDI_HOST_OFFLOAD_RESP;
21577 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21578 return WDI_WOWL_ADD_BC_PTRN_RESP;
21579 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21580 return WDI_WOWL_DEL_BC_PTRN_RESP;
21581 case WLAN_HAL_ENTER_WOWL_RSP:
21582 return WDI_WOWL_ENTER_RESP;
21583 case WLAN_HAL_EXIT_WOWL_RSP:
21584 return WDI_WOWL_EXIT_RESP;
21585 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21586 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21587 case WLAN_HAL_DOWNLOAD_NV_RSP:
21588 return WDI_NV_DOWNLOAD_RESP;
21589 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21590 return WDI_FLUSH_AC_RESP;
21591 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21592 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021593 case WLAN_HAL_PROCESS_PTT_RSP:
21594 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021595 case WLAN_HAL_ADD_STA_SELF_RSP:
21596 return WDI_ADD_STA_SELF_RESP;
21597case WLAN_HAL_DEL_STA_SELF_RSP:
21598 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021599#ifdef FEATURE_OEM_DATA_SUPPORT
21600 case WLAN_HAL_START_OEM_DATA_RSP:
21601 return WDI_START_OEM_DATA_RESP;
21602#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021603 case WLAN_HAL_HOST_RESUME_RSP:
21604 return WDI_HOST_RESUME_RESP;
21605 case WLAN_HAL_KEEP_ALIVE_RSP:
21606 return WDI_KEEP_ALIVE_RESP;
21607#ifdef FEATURE_WLAN_SCAN_PNO
21608 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21609 return WDI_SET_PREF_NETWORK_RESP;
21610 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021611 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021612 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21613 return WDI_UPDATE_SCAN_PARAMS_RESP;
21614 case WLAN_HAL_PREF_NETW_FOUND_IND:
21615 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21616#endif // FEATURE_WLAN_SCAN_PNO
21617 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21618 return WDI_SET_TX_PER_TRACKING_RESP;
21619#ifdef WLAN_FEATURE_PACKET_FILTERING
21620 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21621 return WDI_8023_MULTICAST_LIST_RESP;
21622 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21623 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21624 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21625 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21626 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21627 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21628#endif // WLAN_FEATURE_PACKET_FILTERING
21629
21630 case WLAN_HAL_DUMP_COMMAND_RSP:
21631 return WDI_HAL_DUMP_CMD_RESP;
21632 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21633 return WDI_SET_POWER_PARAMS_RESP;
21634#ifdef WLAN_FEATURE_VOWIFI_11R
21635 case WLAN_HAL_AGGR_ADD_TS_RSP:
21636 return WDI_AGGR_ADD_TS_RESP;
21637#endif
21638
21639#ifdef WLAN_FEATURE_GTK_OFFLOAD
21640 case WLAN_HAL_GTK_OFFLOAD_RSP:
21641 return WDI_GTK_OFFLOAD_RESP;
21642 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
21643 return WDI_GTK_OFFLOAD_GETINFO_RESP;
21644#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21645#ifdef WLAN_WAKEUP_EVENTS
21646 case WLAN_HAL_WAKE_REASON_IND:
21647 return WDI_HAL_WAKE_REASON_IND;
21648#endif // WLAN_WAKEUP_EVENTS
21649
21650 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
21651 return WDI_SET_TM_LEVEL_RESP;
21652 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
21653 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021654#ifdef WLAN_FEATURE_11AC
21655 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
21656 return WDI_UPDATE_VHT_OP_MODE_RESP;
21657#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021658#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
21659 case WLAN_HAL_GET_ROAM_RSSI_RSP:
21660 return WDI_GET_ROAM_RSSI_RESP;
21661#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021662 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021663 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021664 }
21665
21666}/*HAL_2_WDI_RSP_TYPE*/
21667
21668
21669/*Convert WDI driver type into HAL driver type*/
21670WPT_STATIC WPT_INLINE tDriverType
21671WDI_2_HAL_DRV_TYPE
21672(
21673 WDI_DriverType wdiDriverType
21674)
21675{
Jeff Johnsone7245742012-09-05 17:12:55 -070021676 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021677 the chances of getting inlined*/
21678 switch( wdiDriverType )
21679 {
21680 case WDI_DRIVER_TYPE_PRODUCTION:
21681 return eDRIVER_TYPE_PRODUCTION;
21682 case WDI_DRIVER_TYPE_MFG:
21683 return eDRIVER_TYPE_MFG;
21684 case WDI_DRIVER_TYPE_DVT:
21685 return eDRIVER_TYPE_DVT;
21686 }
21687
Jeff Johnsone7245742012-09-05 17:12:55 -070021688 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021689}/*WDI_2_HAL_DRV_TYPE*/
21690
21691
21692/*Convert WDI stop reason into HAL stop reason*/
21693WPT_STATIC WPT_INLINE tHalStopType
21694WDI_2_HAL_STOP_REASON
21695(
21696 WDI_StopType wdiDriverType
21697)
21698{
Jeff Johnsone7245742012-09-05 17:12:55 -070021699 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021700 the chances of getting inlined*/
21701 switch( wdiDriverType )
21702 {
21703 case WDI_STOP_TYPE_SYS_RESET:
21704 return HAL_STOP_TYPE_SYS_RESET;
21705 case WDI_DRIVER_TYPE_MFG:
21706 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
21707 case WDI_STOP_TYPE_RF_KILL:
21708 return HAL_STOP_TYPE_RF_KILL;
21709 }
21710
Jeff Johnsone7245742012-09-05 17:12:55 -070021711 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021712}/*WDI_2_HAL_STOP_REASON*/
21713
21714
21715/*Convert WDI scan mode type into HAL scan mode type*/
21716WPT_STATIC WPT_INLINE eHalSysMode
21717WDI_2_HAL_SCAN_MODE
21718(
21719 WDI_ScanMode wdiScanMode
21720)
21721{
Jeff Johnsone7245742012-09-05 17:12:55 -070021722 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021723 the chances of getting inlined*/
21724 switch( wdiScanMode )
21725 {
21726 case WDI_SCAN_MODE_NORMAL:
21727 return eHAL_SYS_MODE_NORMAL;
21728 case WDI_SCAN_MODE_LEARN:
21729 return eHAL_SYS_MODE_LEARN;
21730 case WDI_SCAN_MODE_SCAN:
21731 return eHAL_SYS_MODE_SCAN;
21732 case WDI_SCAN_MODE_PROMISC:
21733 return eHAL_SYS_MODE_PROMISC;
21734 case WDI_SCAN_MODE_SUSPEND_LINK:
21735 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070021736 case WDI_SCAN_MODE_ROAM_SCAN:
21737 return eHAL_SYS_MODE_ROAM_SCAN;
21738 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
21739 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070021740 }
21741
Jeff Johnsone7245742012-09-05 17:12:55 -070021742 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021743}/*WDI_2_HAL_SCAN_MODE*/
21744
21745/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021746WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070021747WDI_2_HAL_SEC_CH_OFFSET
21748(
21749 WDI_HTSecondaryChannelOffset wdiSecChOffset
21750)
21751{
Jeff Johnsone7245742012-09-05 17:12:55 -070021752 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 the chances of getting inlined*/
21754 switch( wdiSecChOffset )
21755 {
21756 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021757 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070021758 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021759 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070021761 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
21762#ifdef WLAN_FEATURE_11AC
21763 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21764 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21765 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21766 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21767 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21768 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21769 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21770 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21771 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21772 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21773 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21774 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21775 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21776 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21777#endif
21778 default:
21779 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021780 }
21781
Jeff Johnsone7245742012-09-05 17:12:55 -070021782 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021783}/*WDI_2_HAL_SEC_CH_OFFSET*/
21784
21785/*Convert WDI BSS type into HAL BSS type*/
21786WPT_STATIC WPT_INLINE tSirBssType
21787WDI_2_HAL_BSS_TYPE
21788(
21789 WDI_BssType wdiBSSType
21790)
21791{
Jeff Johnsone7245742012-09-05 17:12:55 -070021792 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021793 the chances of getting inlined*/
21794 switch( wdiBSSType )
21795 {
21796 case WDI_INFRASTRUCTURE_MODE:
21797 return eSIR_INFRASTRUCTURE_MODE;
21798 case WDI_INFRA_AP_MODE:
21799 return eSIR_INFRA_AP_MODE;
21800 case WDI_IBSS_MODE:
21801 return eSIR_IBSS_MODE;
21802 case WDI_BTAMP_STA_MODE:
21803 return eSIR_BTAMP_STA_MODE;
21804 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070021805 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021806 case WDI_BSS_AUTO_MODE:
21807 return eSIR_AUTO_MODE;
21808 }
21809
Jeff Johnsone7245742012-09-05 17:12:55 -070021810 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021811}/*WDI_2_HAL_BSS_TYPE*/
21812
21813/*Convert WDI NW type into HAL NW type*/
21814WPT_STATIC WPT_INLINE tSirNwType
21815WDI_2_HAL_NW_TYPE
21816(
21817 WDI_NwType wdiNWType
21818)
21819{
Jeff Johnsone7245742012-09-05 17:12:55 -070021820 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021821 the chances of getting inlined*/
21822 switch( wdiNWType )
21823 {
21824 case WDI_11A_NW_TYPE:
21825 return eSIR_11A_NW_TYPE;
21826 case WDI_11B_NW_TYPE:
21827 return eSIR_11B_NW_TYPE;
21828 case WDI_11G_NW_TYPE:
21829 return eSIR_11G_NW_TYPE;
21830 case WDI_11N_NW_TYPE:
21831 return eSIR_11N_NW_TYPE;
21832 }
21833
Jeff Johnsone7245742012-09-05 17:12:55 -070021834 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021835}/*WDI_2_HAL_NW_TYPE*/
21836
21837/*Convert WDI chanel bonding type into HAL cb type*/
21838WPT_STATIC WPT_INLINE ePhyChanBondState
21839WDI_2_HAL_CB_STATE
21840(
21841 WDI_PhyChanBondState wdiCbState
21842)
21843{
Jeff Johnsone7245742012-09-05 17:12:55 -070021844 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021845 the chances of getting inlined*/
21846 switch ( wdiCbState )
21847 {
21848 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
21849 return PHY_SINGLE_CHANNEL_CENTERED;
21850 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
21851 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
21852 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
21853 return PHY_DOUBLE_CHANNEL_CENTERED;
21854 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
21855 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070021856#ifdef WLAN_FEATURE_11AC
21857 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
21858 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
21859 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
21860 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
21861 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
21862 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
21863 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
21864 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
21865 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
21866 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
21867 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
21868 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
21869 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
21870 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
21871#endif
21872 case WDI_MAX_CB_STATE:
21873 default:
21874 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070021875 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021876
Jeff Johnson295189b2012-06-20 16:38:30 -070021877 return PHY_CHANNEL_BONDING_STATE_MAX;
21878}/*WDI_2_HAL_CB_STATE*/
21879
21880/*Convert WDI chanel bonding type into HAL cb type*/
21881WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
21882WDI_2_HAL_HT_OPER_MODE
21883(
21884 WDI_HTOperatingMode wdiHTOperMode
21885)
21886{
Jeff Johnsone7245742012-09-05 17:12:55 -070021887 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021888 the chances of getting inlined*/
21889 switch ( wdiHTOperMode )
21890 {
21891 case WDI_HT_OP_MODE_PURE:
21892 return eSIR_HT_OP_MODE_PURE;
21893 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
21894 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
21895 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
21896 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
21897 case WDI_HT_OP_MODE_MIXED:
21898 return eSIR_HT_OP_MODE_MIXED;
21899 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021900
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 return eSIR_HT_OP_MODE_MAX;
21902}/*WDI_2_HAL_HT_OPER_MODE*/
21903
21904/*Convert WDI mimo PS type into HAL mimo PS type*/
21905WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
21906WDI_2_HAL_MIMO_PS
21907(
21908 WDI_HTMIMOPowerSaveState wdiHTOperMode
21909)
21910{
Jeff Johnsone7245742012-09-05 17:12:55 -070021911 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021912 the chances of getting inlined*/
21913 switch ( wdiHTOperMode )
21914 {
21915 case WDI_HT_MIMO_PS_STATIC:
21916 return eSIR_HT_MIMO_PS_STATIC;
21917 case WDI_HT_MIMO_PS_DYNAMIC:
21918 return eSIR_HT_MIMO_PS_DYNAMIC;
21919 case WDI_HT_MIMO_PS_NA:
21920 return eSIR_HT_MIMO_PS_NA;
21921 case WDI_HT_MIMO_PS_NO_LIMIT:
21922 return eSIR_HT_MIMO_PS_NO_LIMIT;
21923 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021924
Jeff Johnson295189b2012-06-20 16:38:30 -070021925 return eSIR_HT_MIMO_PS_MAX;
21926}/*WDI_2_HAL_MIMO_PS*/
21927
21928/*Convert WDI ENC type into HAL ENC type*/
21929WPT_STATIC WPT_INLINE tAniEdType
21930WDI_2_HAL_ENC_TYPE
21931(
21932 WDI_EncryptType wdiEncType
21933)
21934{
Jeff Johnsone7245742012-09-05 17:12:55 -070021935 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021936 the chances of getting inlined*/
21937 switch ( wdiEncType )
21938 {
21939 case WDI_ENCR_NONE:
21940 return eSIR_ED_NONE;
21941
21942 case WDI_ENCR_WEP40:
21943 return eSIR_ED_WEP40;
21944
21945 case WDI_ENCR_WEP104:
21946 return eSIR_ED_WEP104;
21947
21948 case WDI_ENCR_TKIP:
21949 return eSIR_ED_TKIP;
21950
21951 case WDI_ENCR_CCMP:
21952 return eSIR_ED_CCMP;
21953
21954 case WDI_ENCR_AES_128_CMAC:
21955 return eSIR_ED_AES_128_CMAC;
21956#if defined(FEATURE_WLAN_WAPI)
21957 case WDI_ENCR_WPI:
21958 return eSIR_ED_WPI;
21959#endif
21960 default:
21961 return eSIR_ED_NOT_IMPLEMENTED;
21962 }
21963
21964}/*WDI_2_HAL_ENC_TYPE*/
21965
21966/*Convert WDI WEP type into HAL WEP type*/
21967WPT_STATIC WPT_INLINE tAniWepType
21968WDI_2_HAL_WEP_TYPE
21969(
21970 WDI_WepType wdiWEPType
21971)
21972{
Jeff Johnsone7245742012-09-05 17:12:55 -070021973 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021974 the chances of getting inlined*/
21975 switch ( wdiWEPType )
21976 {
21977 case WDI_WEP_STATIC:
21978 return eSIR_WEP_STATIC;
21979
21980 case WDI_WEP_DYNAMIC:
21981 return eSIR_WEP_DYNAMIC;
21982 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021983
Jeff Johnson295189b2012-06-20 16:38:30 -070021984 return eSIR_WEP_MAX;
21985}/*WDI_2_HAL_WEP_TYPE*/
21986
21987WPT_STATIC WPT_INLINE tSirLinkState
21988WDI_2_HAL_LINK_STATE
21989(
21990 WDI_LinkStateType wdiLinkState
21991)
21992{
Jeff Johnsone7245742012-09-05 17:12:55 -070021993 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021994 the chances of getting inlined*/
21995 switch ( wdiLinkState )
21996 {
21997 case WDI_LINK_IDLE_STATE:
21998 return eSIR_LINK_IDLE_STATE;
21999
22000 case WDI_LINK_PREASSOC_STATE:
22001 return eSIR_LINK_PREASSOC_STATE;
22002
22003 case WDI_LINK_POSTASSOC_STATE:
22004 return eSIR_LINK_POSTASSOC_STATE;
22005
22006 case WDI_LINK_AP_STATE:
22007 return eSIR_LINK_AP_STATE;
22008
22009 case WDI_LINK_IBSS_STATE:
22010 return eSIR_LINK_IBSS_STATE;
22011
22012 case WDI_LINK_BTAMP_PREASSOC_STATE:
22013 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22014
22015 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22016 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22017
22018 case WDI_LINK_BTAMP_AP_STATE:
22019 return eSIR_LINK_BTAMP_AP_STATE;
22020
22021 case WDI_LINK_BTAMP_STA_STATE:
22022 return eSIR_LINK_BTAMP_STA_STATE;
22023
22024 case WDI_LINK_LEARN_STATE:
22025 return eSIR_LINK_LEARN_STATE;
22026
22027 case WDI_LINK_SCAN_STATE:
22028 return eSIR_LINK_SCAN_STATE;
22029
22030 case WDI_LINK_FINISH_SCAN_STATE:
22031 return eSIR_LINK_FINISH_SCAN_STATE;
22032
22033 case WDI_LINK_INIT_CAL_STATE:
22034 return eSIR_LINK_INIT_CAL_STATE;
22035
22036 case WDI_LINK_FINISH_CAL_STATE:
22037 return eSIR_LINK_FINISH_CAL_STATE;
22038
Jeff Johnson295189b2012-06-20 16:38:30 -070022039 case WDI_LINK_LISTEN_STATE:
22040 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022041
22042 default:
22043 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022044 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022045}
22046
Jeff Johnsone7245742012-09-05 17:12:55 -070022047/*Translate a STA Context from WDI into HAL*/
22048WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022049void
22050WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022051(
Jeff Johnson295189b2012-06-20 16:38:30 -070022052 tConfigStaParams* phalConfigSta,
22053 WDI_ConfigStaReqInfoType* pwdiConfigSta
22054)
22055{
22056 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022057#ifdef WLAN_FEATURE_11AC
22058 /* Get the Version 1 Handler */
22059 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22060 if (WDI_getFwWlanFeatCaps(DOT11AC))
22061 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022062 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022063 }
22064#endif
22065 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022066 the chances of getting inlined*/
22067
Jeff Johnsone7245742012-09-05 17:12:55 -070022068 wpalMemoryCopy(phalConfigSta->bssId,
22069 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22070
22071 wpalMemoryCopy(phalConfigSta->staMac,
22072 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022073
22074 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22075 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22076 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22077 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22078 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22079 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22080 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22081 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22082 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22083 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22084 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22085 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22086 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22087 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22088 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22089 phalConfigSta->action = pwdiConfigSta->wdiAction;
22090 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22091 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22092 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22093 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22094 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22095 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22096 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022097
Jeff Johnson295189b2012-06-20 16:38:30 -070022098 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22099
Jeff Johnsone7245742012-09-05 17:12:55 -070022100 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022101 pwdiConfigSta->wdiSupportedRates.opRateMode;
22102 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22103 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022104 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022105 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22106 }
22107 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22108 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022109 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022110 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22111 }
22112 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22113 {
22114 phalConfigSta->supportedRates.aniLegacyRates[i] =
22115 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22116 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022117 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022118 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22119 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22120 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022121 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022122 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22123 }
22124 phalConfigSta->supportedRates.rxHighestDataRate =
22125 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22126
Jeff Johnsone7245742012-09-05 17:12:55 -070022127#ifdef WLAN_FEATURE_11AC
22128 if(phalConfigSta_V1 != NULL)
22129 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022130 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22131 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22132 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22133 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022134 }
22135#endif
22136
Jeff Johnson295189b2012-06-20 16:38:30 -070022137 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022138
Jeff Johnsone7245742012-09-05 17:12:55 -070022139#ifdef WLAN_FEATURE_11AC
22140 if(phalConfigSta_V1 != NULL)
22141 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022142 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22143 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022144 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022145 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22146 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22147
Jeff Johnsone7245742012-09-05 17:12:55 -070022148 }
22149#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022150}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022151
22152/*Translate a Rate set info from WDI into HAL*/
22153WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022154WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022155(
Jeff Johnson295189b2012-06-20 16:38:30 -070022156 tSirMacRateSet* pHalRateSet,
22157 WDI_RateSet* pwdiRateSet
22158)
22159{
Jeff Johnsone7245742012-09-05 17:12:55 -070022160 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22162
22163 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22164 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22165
22166 for ( i = 0; i < pHalRateSet->numRates; i++ )
22167 {
22168 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22169 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022170
Jeff Johnson295189b2012-06-20 16:38:30 -070022171}/*WDI_CopyWDIRateSetToHALRateSet*/
22172
22173
22174/*Translate an EDCA Parameter Record from WDI into HAL*/
22175WPT_STATIC WPT_INLINE void
22176WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022177(
Jeff Johnson295189b2012-06-20 16:38:30 -070022178 tSirMacEdcaParamRecord* phalEdcaParam,
22179 WDI_EdcaParamRecord* pWDIEdcaParam
22180)
22181{
Jeff Johnsone7245742012-09-05 17:12:55 -070022182 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 the chances of getting inlined*/
22184
22185 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22186 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22187 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22188 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22189
22190 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22191 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22192 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22193}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22194
22195
22196/*Copy a management frame header from WDI fmt into HAL fmt*/
22197WPT_STATIC WPT_INLINE void
22198WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22199(
22200 tSirMacMgmtHdr* pmacMgmtHdr,
22201 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22202)
22203{
22204 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22205 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22206 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22207 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22208 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22209 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22210 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22211 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22212 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22213 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22214 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22215
22216 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22217 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22218
Jeff Johnsone7245742012-09-05 17:12:55 -070022219 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022220 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022221 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022222 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022223 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022224 pwdiMacMgmtHdr->bssId, 6);
22225
22226 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22227 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22228 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22229
22230}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22231
22232
22233/*Copy config bss parameters from WDI fmt into HAL fmt*/
22234WPT_STATIC WPT_INLINE void
22235WDI_CopyWDIConfigBSSToHALConfigBSS
22236(
22237 tConfigBssParams* phalConfigBSS,
22238 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22239)
22240{
22241
22242 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022243#ifdef WLAN_FEATURE_11AC
22244 /* Get the Version 1 Handler */
22245 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22246 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022247 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022248#endif
22249
Jeff Johnson295189b2012-06-20 16:38:30 -070022250 wpalMemoryCopy( phalConfigBSS->bssId,
22251 pwdiConfigBSS->macBSSID,
22252 WDI_MAC_ADDR_LEN);
22253
22254#ifdef HAL_SELF_STA_PER_BSS
22255 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22256 pwdiConfigBSS->macSelfAddr,
22257 WDI_MAC_ADDR_LEN);
22258#endif
22259
22260 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22261
22262 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22263 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22264
Jeff Johnsone7245742012-09-05 17:12:55 -070022265 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022266 pwdiConfigBSS->ucShortSlotTimeSupported;
22267 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22268 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22269 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22270 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22271 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022272 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022273 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22274 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22275 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22276 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22277 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22278 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22279 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22280 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22281 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22282 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22283 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22284
Jeff Johnsone7245742012-09-05 17:12:55 -070022285 phalConfigBSS->htOperMode =
22286 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022287
22288 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22289 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22290 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22291 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22292
22293#ifdef WLAN_FEATURE_VOWIFI
22294 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22295#endif
22296
22297 /*! Used 32 as magic number because that is how the ssid is declared inside the
22298 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022299 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022300 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22301 pwdiConfigBSS->wdiSSID.ucLength : 32;
22302 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022303 pwdiConfigBSS->wdiSSID.sSSID,
22304 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022305
22306 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22307 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022308
Jeff Johnson295189b2012-06-20 16:38:30 -070022309 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22310 &pwdiConfigBSS->wdiRateSet);
22311
22312 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22313
22314 if(phalConfigBSS->edcaParamsValid)
22315 {
22316 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22317 &pwdiConfigBSS->wdiBEEDCAParams);
22318 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22319 &pwdiConfigBSS->wdiBKEDCAParams);
22320 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22321 &pwdiConfigBSS->wdiVIEDCAParams);
22322 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22323 &pwdiConfigBSS->wdiVOEDCAParams);
22324 }
22325
Jeff Johnsone7245742012-09-05 17:12:55 -070022326 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022327
22328 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22329
22330#ifdef WLAN_FEATURE_VOWIFI_11R
22331
Jeff Johnsone7245742012-09-05 17:12:55 -070022332 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022333 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022334
Jeff Johnson295189b2012-06-20 16:38:30 -070022335 if( phalConfigBSS->extSetStaKeyParamValid )
22336 {
22337 /*-----------------------------------------------------------------------
22338 Copy the STA Key parameters into the HAL message
22339 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022340 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022341 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22342
Jeff Johnsone7245742012-09-05 17:12:55 -070022343 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022344 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22345
22346 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22347
22348 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22349
22350 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22351
Jeff Johnson295189b2012-06-20 16:38:30 -070022352 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22353 keyIndex++)
22354 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022355 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022356 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22357 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22358 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22359 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22360 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22361 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022362 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022363 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022364 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022365 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022366 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022367 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22368 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022369 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022370 WDI_MAX_KEY_LENGTH);
22371 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022372 }
22373 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22374 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022375 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 sizeof(phalConfigBSS->extSetStaKeyParam) );
22377 }
22378
22379#endif /*WLAN_FEATURE_VOWIFI_11R*/
22380
Jeff Johnsone7245742012-09-05 17:12:55 -070022381#ifdef WLAN_FEATURE_11AC
22382 if(phalConfigBSS_V1 != NULL)
22383 {
22384 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22385 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22386 }
22387#endif
22388
Jeff Johnson295189b2012-06-20 16:38:30 -070022389}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22390
22391
Jeff Johnsone7245742012-09-05 17:12:55 -070022392/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022393 pointed to by user data */
22394WPT_STATIC WPT_INLINE void
22395WDI_ExtractRequestCBFromEvent
22396(
22397 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022398 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022399 void** ppUserData
22400)
22401{
22402 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22403 switch ( pEvent->wdiRequest )
22404 {
22405 case WDI_START_REQ:
22406 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22407 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22408 break;
22409 case WDI_STOP_REQ:
22410 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22411 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22412 break;
22413 case WDI_INIT_SCAN_REQ:
22414 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22415 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22416 break;
22417 case WDI_START_SCAN_REQ:
22418 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22419 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22420 break;
22421 case WDI_END_SCAN_REQ:
22422 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22423 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22424 break;
22425 case WDI_FINISH_SCAN_REQ:
22426 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22427 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22428 break;
22429 case WDI_JOIN_REQ:
22430 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22431 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22432 break;
22433 case WDI_CONFIG_BSS_REQ:
22434 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22435 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22436 break;
22437 case WDI_DEL_BSS_REQ:
22438 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22439 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22440 break;
22441 case WDI_POST_ASSOC_REQ:
22442 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22443 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22444 break;
22445 case WDI_DEL_STA_REQ:
22446 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22447 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22448 break;
22449 case WDI_DEL_STA_SELF_REQ:
22450 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22451 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22452 break;
22453
22454 case WDI_SET_BSS_KEY_REQ:
22455 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22456 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22457 break;
22458 case WDI_RMV_BSS_KEY_REQ:
22459 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22460 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22461 break;
22462 case WDI_SET_STA_KEY_REQ:
22463 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22464 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22465 break;
22466 case WDI_RMV_STA_KEY_REQ:
22467 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22468 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22469 break;
22470 case WDI_ADD_TS_REQ:
22471 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22472 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22473 break;
22474 case WDI_DEL_TS_REQ:
22475 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22476 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22477 break;
22478 case WDI_UPD_EDCA_PRMS_REQ:
22479 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22480 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22481 break;
22482 case WDI_ADD_BA_SESSION_REQ:
22483 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22484 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22485 break;
22486 case WDI_DEL_BA_REQ:
22487 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22488 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22489 break;
22490#ifdef FEATURE_WLAN_CCX
22491 case WDI_TSM_STATS_REQ:
22492 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22493 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22494 break;
22495#endif
22496 case WDI_CH_SWITCH_REQ:
22497 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22498 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22499 break;
22500 case WDI_CONFIG_STA_REQ:
22501 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22502 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22503 break;
22504 case WDI_SET_LINK_ST_REQ:
22505 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22506 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22507 break;
22508 case WDI_GET_STATS_REQ:
22509 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22510 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22511 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022512#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22513 case WDI_GET_ROAM_RSSI_REQ:
22514 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22515 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
22516 break;
22517#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 case WDI_UPDATE_CFG_REQ:
22519 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22520 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22521 break;
22522 case WDI_ADD_BA_REQ:
22523 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22524 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22525 break;
22526 case WDI_TRIGGER_BA_REQ:
22527 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22528 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22529 break;
22530 case WDI_UPD_BCON_PRMS_REQ:
22531 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22532 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22533 break;
22534 case WDI_SND_BCON_REQ:
22535 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22536 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22537 break;
22538 case WDI_ENTER_BMPS_REQ:
22539 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22540 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22541 break;
22542 case WDI_EXIT_BMPS_REQ:
22543 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22544 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22545 break;
22546 case WDI_ENTER_UAPSD_REQ:
22547 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22548 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22549 break;
22550 case WDI_UPDATE_UAPSD_PARAM_REQ:
22551 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22552 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22553 break;
22554 case WDI_CONFIGURE_RXP_FILTER_REQ:
22555 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22556 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22557 break;
22558 case WDI_SET_BEACON_FILTER_REQ:
22559 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22560 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22561 break;
22562 case WDI_REM_BEACON_FILTER_REQ:
22563 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22564 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022565 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022566 case WDI_SET_RSSI_THRESHOLDS_REQ:
22567 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22568 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22569 break;
22570 case WDI_HOST_OFFLOAD_REQ:
22571 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22572 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22573 break;
22574 case WDI_WOWL_ADD_BC_PTRN_REQ:
22575 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22576 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22577 break;
22578 case WDI_WOWL_DEL_BC_PTRN_REQ:
22579 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22580 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22581 break;
22582 case WDI_WOWL_ENTER_REQ:
22583 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22584 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22585 break;
22586 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22587 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22588 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22589 break;
22590 case WDI_FLUSH_AC_REQ:
22591 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22592 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22593 break;
22594 case WDI_BTAMP_EVENT_REQ:
22595 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22596 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22597 break;
22598 case WDI_KEEP_ALIVE_REQ:
22599 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22600 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22601 break;
22602 case WDI_SET_TX_PER_TRACKING_REQ:
22603 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22604 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
22605 default:
22606 *ppfnReqCB = NULL;
22607 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022608 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 }
22610}/*WDI_ExtractRequestCBFromEvent*/
22611
22612
22613/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022614 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022615 frame xtl is enabled for a particular STA.
22616
22617 WDI_PostAssocReq must have been called.
22618
Jeff Johnsone7245742012-09-05 17:12:55 -070022619 @param uSTAIdx: STA index
22620
Jeff Johnson295189b2012-06-20 16:38:30 -070022621 @see WDI_PostAssocReq
22622 @return Result of the function call
22623*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022624wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070022625WDI_IsHwFrameTxTranslationCapable
22626(
22627 wpt_uint8 uSTAIdx
22628)
22629{
Jeff Johnsone7245742012-09-05 17:12:55 -070022630 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 uma value*/
22632 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022633 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022634 ------------------------------------------------------------------------*/
22635 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22636 {
22637 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22638 "WDI API call before module is initialized - Fail request");
22639
Jeff Johnsone7245742012-09-05 17:12:55 -070022640 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022641 }
22642
Gopichand Nakkalaba261272013-01-03 15:45:56 -080022643#ifdef WLAN_SOFTAP_VSTA_FEATURE
22644 if (IS_VSTA_IDX(uSTAIdx))
22645 {
22646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22647 "STA %d is a Virtual STA, "
22648 "HW frame translation disabled", uSTAIdx);
22649 return eWLAN_PAL_FALSE;
22650 }
22651#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070022652
Jeff Johnson295189b2012-06-20 16:38:30 -070022653 return gWDICb.bFrameTransEnabled;
22654}/*WDI_IsHwFrameTxTranslationCapable*/
22655
22656#ifdef FEATURE_WLAN_SCAN_PNO
22657/**
22658 @brief WDI_SetPreferredNetworkList
22659
Jeff Johnsone7245742012-09-05 17:12:55 -070022660 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022661 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022662
Jeff Johnson295189b2012-06-20 16:38:30 -070022663 wdiPNOScanCb: callback for passing back the response
22664 of the Set PNO operation received from the
22665 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022666
Jeff Johnson295189b2012-06-20 16:38:30 -070022667 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022668 callback
22669
Jeff Johnson295189b2012-06-20 16:38:30 -070022670 @return Result of the function call
22671*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022672WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022673WDI_SetPreferredNetworkReq
22674(
22675 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22676 WDI_PNOScanCb wdiPNOScanCb,
22677 void* pUserData
22678)
22679{
22680 WDI_EventInfoType wdiEventData = {{0}};
22681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22682
22683 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022684 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022685 ------------------------------------------------------------------------*/
22686 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22687 {
22688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22689 "WDI API call before module is initialized - Fail request");
22690
Jeff Johnsone7245742012-09-05 17:12:55 -070022691 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022692 }
22693
22694 /*------------------------------------------------------------------------
22695 Fill in Event data and post to the Main FSM
22696 ------------------------------------------------------------------------*/
22697 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022698 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022699 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022700 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022701 wdiEventData.pUserData = pUserData;
22702
22703 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22704}
22705
22706
22707/**
22708 @brief WDI_SetRssiFilterReq
22709
Jeff Johnsone7245742012-09-05 17:12:55 -070022710 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070022711 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022712
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 wdiRssiFilterCb: callback for passing back the response
22714 of the Set RSSI Filter operation received from the
22715 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022716
Jeff Johnson295189b2012-06-20 16:38:30 -070022717 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022718 callback
22719
Jeff Johnson295189b2012-06-20 16:38:30 -070022720 @return Result of the function call
22721*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022722WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022723WDI_SetRssiFilterReq
22724(
22725 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
22726 WDI_RssiFilterCb wdiRssiFilterCb,
22727 void* pUserData
22728)
22729{
22730 WDI_EventInfoType wdiEventData = {{0}};
22731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22732
22733 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 ------------------------------------------------------------------------*/
22736 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22737 {
22738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22739 "WDI API call before module is initialized - Fail request");
22740
Jeff Johnsone7245742012-09-05 17:12:55 -070022741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022742 }
22743
22744 /*------------------------------------------------------------------------
22745 Fill in Event data and post to the Main FSM
22746 ------------------------------------------------------------------------*/
22747 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022748 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022749 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070022750 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022751 wdiEventData.pUserData = pUserData;
22752
22753 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22754}/*WDI_SetRssiFilterReq*/
22755
22756/**
22757 @brief WDI_UpdateScanParamsReq
22758
Jeff Johnsone7245742012-09-05 17:12:55 -070022759 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070022761
Jeff Johnson295189b2012-06-20 16:38:30 -070022762 wdiUpdateScanParamsCb: callback for passing back the response
22763 of the Set PNO operation received from the
22764 device
Jeff Johnsone7245742012-09-05 17:12:55 -070022765
Jeff Johnson295189b2012-06-20 16:38:30 -070022766 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070022767 callback
22768
Jeff Johnson295189b2012-06-20 16:38:30 -070022769 @return Result of the function call
22770*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022771WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022772WDI_UpdateScanParamsReq
22773(
22774 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
22775 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
22776 void* pUserData
22777)
22778{
22779 WDI_EventInfoType wdiEventData = {{0}};
22780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22781
22782 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022783 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070022784 ------------------------------------------------------------------------*/
22785 if ( eWLAN_PAL_FALSE == gWDIInitialized )
22786 {
22787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22788 "WDI API call before module is initialized - Fail request");
22789
Jeff Johnsone7245742012-09-05 17:12:55 -070022790 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022791 }
22792
22793 /*------------------------------------------------------------------------
22794 Fill in Event data and post to the Main FSM
22795 ------------------------------------------------------------------------*/
22796 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070022797 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022798 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070022799 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070022800 wdiEventData.pUserData = pUserData;
22801
22802 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
22803}
22804
22805/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022806 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022807 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022808
22809 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022810 pwdiPNOScanReqParams: pointer to the info received
22811 from upper layers
22812 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 and its size
22814
Jeff Johnson295189b2012-06-20 16:38:30 -070022815 @return Result of the function call
22816*/
22817
22818WDI_Status
22819WDI_PackPreferredNetworkList
22820(
22821 WDI_ControlBlockType* pWDICtx,
22822 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22823 wpt_uint8** ppSendBuffer,
22824 wpt_uint16* pSize
22825)
22826{
Jeff Johnsone7245742012-09-05 17:12:55 -070022827 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022828 wpt_uint16 usDataOffset = 0;
22829 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022830 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022831 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022832 /*-----------------------------------------------------------------------
22833 Get message buffer
22834 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022835 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022836 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070022837 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022838 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022839 {
22840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22841 "Unable to get send buffer in Set PNO req %x ",
22842 pwdiPNOScanReqParams);
22843 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022844 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022845 }
22846
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022847 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
22848
Jeff Johnson295189b2012-06-20 16:38:30 -070022849 /*-------------------------------------------------------------------------
22850 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
22851 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022852 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070022853 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022854 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070022855 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
22856
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022857 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022858 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022859 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070022860 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070022861 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
22862
22863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070022864 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070022865 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
22866 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
22867 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
22868
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022869 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022870 {
22871 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022872 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070022873 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
22874
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022875 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022876 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022877 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022878
22879 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022880 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070022881 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070022882
22883 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022884 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070022885 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070022886
Jeff Johnsone7245742012-09-05 17:12:55 -070022887 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070022888 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022889 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070022890 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
22891 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
22892 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
22893 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022894
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022895 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070022896 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022897 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070022898
22899 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022900 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070022901 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
22902
22903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022904 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022905 pPrefNetwListParams->aNetworks[i].ssId.length,
22906 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070022907 }
22908
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022909 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070022910 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070022911 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
22912 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
22913 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
22914
22915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022916 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022917 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070022918 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
22919 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
22920
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022921 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070022922 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022923 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070022924 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022925 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070022926 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
22927 }
22928
22929 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022930 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022931 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
22932 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22933 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022934 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022935
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022936 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022937 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022938 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022939
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022940 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070022941 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
22942 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
22943 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070022944 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022945
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022946 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070022947 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022948 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070022949
22950 /*Set the output values*/
22951 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070022952 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070022953
22954 return WDI_STATUS_SUCCESS;
22955}/*WDI_PackPreferredNetworkList*/
22956
22957/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022958 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070022959 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070022960
22961 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022962 pwdiPNOScanReqParams: pointer to the info received
22963 from upper layers
22964 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022965 and its size
22966
Jeff Johnson295189b2012-06-20 16:38:30 -070022967 @return Result of the function call
22968*/
22969
22970WDI_Status
22971WDI_PackPreferredNetworkListNew
22972(
22973 WDI_ControlBlockType* pWDICtx,
22974 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
22975 wpt_uint8** ppSendBuffer,
22976 wpt_uint16* pSize
22977)
22978{
Jeff Johnsone7245742012-09-05 17:12:55 -070022979 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022980 wpt_uint16 usDataOffset = 0;
22981 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022982 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022983 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022984
22985 /*-----------------------------------------------------------------------
22986 Get message buffer
22987 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022988 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022989 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070022991 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070022992 {
22993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22994 "Unable to get send buffer in Set PNO req %x ",
22995 pwdiPNOScanReqParams);
22996 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022997 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022998 }
22999
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023000 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23001
Jeff Johnson295189b2012-06-20 16:38:30 -070023002 /*-------------------------------------------------------------------------
23003 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23004 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023005 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023006 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023007 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023008 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23009
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023010 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023011 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023012 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023013 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023014 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23015
23016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023017 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023018 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23019 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23020 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23021
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023022 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023023 {
23024 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023025 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023026 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23027
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023028 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023029 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023030 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023031
23032 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023033 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023034 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023035
23036 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023037 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023038 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023039
23040 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023041 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023042 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023043
Jeff Johnsone7245742012-09-05 17:12:55 -070023044 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023045 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023046 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023047 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23048
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023049 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023050 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023051 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023052
23053 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023054 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023055 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23056
23057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023058 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023059 pPrefNetwListParams->aNetworks[i].ssId.length,
23060 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 }
23062
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023063 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023064 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023065 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23066 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23067 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23068
23069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023070 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023071 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23073 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23074
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023075 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023076 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023077 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023078 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023079 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023080 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23081 }
23082
23083 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023084 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23086 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23087 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023088 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023089
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023090 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023091 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023092 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023093
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023094 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023095 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23096 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23097 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023098 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023099
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023100 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023101 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023102 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023103
Jeff Johnson295189b2012-06-20 16:38:30 -070023104
23105 /*Set the output values*/
23106 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023107 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023108
23109 return WDI_STATUS_SUCCESS;
23110}/*WDI_PackPreferredNetworkListNew*/
23111
23112/**
23113 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023114
23115 @param pWDICtx: pointer to the WLAN DAL context
23116 pEventData: pointer to the event information structure
23117
Jeff Johnson295189b2012-06-20 16:38:30 -070023118 @return Result of the function call
23119*/
23120WDI_Status
23121WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023122(
Jeff Johnson295189b2012-06-20 16:38:30 -070023123 WDI_ControlBlockType* pWDICtx,
23124 WDI_EventInfoType* pEventData
23125)
23126{
23127 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23128 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023129 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023130 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023131 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023132
23133 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023134 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023135 -------------------------------------------------------------------------*/
23136 if (( NULL == pEventData ) ||
23137 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23138 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23139 {
23140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023141 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023142 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023143 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023144 }
23145
23146 /*-------------------------------------------------------------------------
23147 Pack the PNO request structure based on version
23148 -------------------------------------------------------------------------*/
23149 if ( pWDICtx->wdiPNOVersion > 0 )
23150 {
23151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023152 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023153 pWDICtx->wdiPNOVersion);
23154
23155 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23156 &pSendBuffer, &usSendSize);
23157 }
23158 else
23159 {
23160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023161 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023162 pWDICtx->wdiPNOVersion);
23163
23164 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23165 &pSendBuffer, &usSendSize);
23166 }
23167
23168 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23169 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23170 {
23171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023172 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023173 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023174 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023175 }
23176
23177 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023178 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023179
23180 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023181 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023182 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023183 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23184 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023185}
23186
23187/**
23188 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023189
23190 @param pWDICtx: pointer to the WLAN DAL context
23191 pEventData: pointer to the event information structure
23192
Jeff Johnson295189b2012-06-20 16:38:30 -070023193 @see
23194 @return Result of the function call
23195*/
23196WDI_Status
23197WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023198(
Jeff Johnson295189b2012-06-20 16:38:30 -070023199 WDI_ControlBlockType* pWDICtx,
23200 WDI_EventInfoType* pEventData
23201)
23202{
23203 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23204 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023205 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 wpt_uint16 usDataOffset = 0;
23207 wpt_uint16 usSendSize = 0;
23208 wpt_uint8 ucRssiThreshold;
23209
23210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023211 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023212 -------------------------------------------------------------------------*/
23213 if (( NULL == pEventData ) ||
23214 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
23215 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
23216 {
23217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023221 }
23222
23223 /*-----------------------------------------------------------------------
23224 Get message buffer
23225 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023226 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023227 sizeof(ucRssiThreshold),
23228 &pSendBuffer, &usDataOffset, &usSendSize))||
23229 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
23230 {
23231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23232 "Unable to get send buffer in Set PNO req %x %x %x",
23233 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
23234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023236 }
23237
23238 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
23239
Jeff Johnsone7245742012-09-05 17:12:55 -070023240 wpalMemoryCopy( pSendBuffer+usDataOffset,
23241 &ucRssiThreshold,
23242 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070023243
23244 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023245 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023246
23247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023248 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023249 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023250 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23251 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023252}
23253
23254
23255/**
23256 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070023257
23258 @param pWDICtx: pointer to the WLAN DAL context
23259 pEventData: pointer to the event information structure
23260
Jeff Johnson295189b2012-06-20 16:38:30 -070023261 @see
23262 @return Result of the function call
23263*/
23264WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023265WDI_PackUpdateScanParamsReq
23266(
23267 WDI_ControlBlockType* pWDICtx,
23268 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23269 wpt_uint8** ppSendBuffer,
23270 wpt_uint16* pSize
23271)
23272{
23273 wpt_uint8* pSendBuffer = NULL;
23274 wpt_uint16 usDataOffset = 0;
23275 wpt_uint16 usSendSize = 0;
23276 tUpdateScanParams updateScanParams = {0};
23277
23278
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023280 "Begin WDI Update Scan Parameters Old Style Params");
23281 /*-----------------------------------------------------------------------
23282 Get message buffer
23283 -----------------------------------------------------------------------*/
23284 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23285 sizeof(updateScanParams),
23286 &pSendBuffer, &usDataOffset, &usSendSize))||
23287 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23288 {
23289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23290 "Unable to get send buffer in Update Scan Params req %x",
23291 pwdiUpdateScanParams);
23292 WDI_ASSERT(0);
23293 return WDI_STATUS_E_FAILURE;
23294 }
23295
23296 //
23297 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23298 //
23299
23300 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23301 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23302
23303 updateScanParams.ucChannelCount =
23304 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23305 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23306 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23307 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
23308
23309 wpalMemoryCopy( updateScanParams.aChannels,
23310 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23311 updateScanParams.ucChannelCount);
23312
23313
23314 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23315 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23316 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23317 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23318 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23319
23320 wpalMemoryCopy( pSendBuffer+usDataOffset,
23321 &updateScanParams,
23322 sizeof(updateScanParams));
23323
23324 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23325 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23326
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023328 "End Update Scan Parameters Old Style");
23329
23330 /*Set the output values*/
23331 *ppSendBuffer = pSendBuffer;
23332 *pSize = usSendSize;
23333
23334 return WDI_STATUS_SUCCESS;
23335}
23336
23337/**
23338 @brief Process Update Scan Params function
23339
23340 @param pWDICtx: pointer to the WLAN DAL context
23341 pEventData: pointer to the event information structure
23342
23343 @see
23344 @return Result of the function call
23345*/
23346WDI_Status
23347WDI_PackUpdateScanParamsReqEx
23348(
23349 WDI_ControlBlockType* pWDICtx,
23350 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23351 wpt_uint8** ppSendBuffer,
23352 wpt_uint16* pSize
23353)
23354{
23355 wpt_uint8* pSendBuffer = NULL;
23356 wpt_uint16 usDataOffset = 0;
23357 wpt_uint16 usSendSize = 0;
23358 tUpdateScanParamsEx updateScanParams = {0};
23359
23360
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023361 /*-----------------------------------------------------------------------
23362 Get message buffer
23363 -----------------------------------------------------------------------*/
23364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23365 sizeof(updateScanParams),
23366 &pSendBuffer, &usDataOffset, &usSendSize))||
23367 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23368 {
23369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23370 "Unable to get send buffer in Update Scan Params Ex req %x",
23371 pwdiUpdateScanParams);
23372 WDI_ASSERT(0);
23373 return WDI_STATUS_E_FAILURE;
23374 }
23375
23376 //
23377 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23378 //
23379
23380 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23381 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23382
23383 updateScanParams.ucChannelCount =
23384 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23385 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
23386 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23387 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23388
23389 wpalMemoryCopy( updateScanParams.aChannels,
23390 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23391 updateScanParams.ucChannelCount);
23392
23393
23394 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23395 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23396 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23397 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23398 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23399
23400 wpalMemoryCopy( pSendBuffer+usDataOffset,
23401 &updateScanParams,
23402 sizeof(updateScanParams));
23403
23404 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23405 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23406
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023407 /*Set the output values*/
23408 *ppSendBuffer = pSendBuffer;
23409 *pSize = usSendSize;
23410
23411 return WDI_STATUS_SUCCESS;
23412}
23413
23414/**
23415 @brief Process Update Scan Params function
23416
23417 @param pWDICtx: pointer to the WLAN DAL context
23418 pEventData: pointer to the event information structure
23419
23420 @see
23421 @return Result of the function call
23422*/
23423WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023424WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023425(
Jeff Johnson295189b2012-06-20 16:38:30 -070023426 WDI_ControlBlockType* pWDICtx,
23427 WDI_EventInfoType* pEventData
23428)
23429{
23430 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23431 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023432 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023433 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023434 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023435
23436 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023437 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023438 -------------------------------------------------------------------------*/
23439 if (( NULL == pEventData ) ||
23440 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23441 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23442 {
23443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023444 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023445 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023446 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023447 }
23448
23449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23450 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023451
23452 //
23453 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23454 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023455 if ( pWDICtx->wlanVersion.revision < 1 )
23456 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023457 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023458 &pSendBuffer, &usSendSize);
23459 }
23460 else
23461 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023462 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23463 &pSendBuffer, &usSendSize);
23464 }
23465
23466 if(WDI_STATUS_SUCCESS != wdiStatus)
23467 {
23468 //memory allocation failed
23469 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023470 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023471
Jeff Johnson295189b2012-06-20 16:38:30 -070023472 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023473 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023474 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023475 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023476 wdiUpdateScanParamsCb, pEventData->pUserData,
23477 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023478}
23479
23480/**
23481 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023482
23483 @param pWDICtx: pointer to the WLAN DAL context
23484 pEventData: pointer to the event information structure
23485
Jeff Johnson295189b2012-06-20 16:38:30 -070023486 @see
23487 @return Result of the function call
23488*/
23489WDI_Status
23490WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023491(
Jeff Johnson295189b2012-06-20 16:38:30 -070023492 WDI_ControlBlockType* pWDICtx,
23493 WDI_EventInfoType* pEventData
23494)
23495{
23496 WDI_LowLevelIndType wdiInd;
23497 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23498
23499
23500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023502 -------------------------------------------------------------------------*/
23503 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23504 ( NULL == pEventData->pEventData ))
23505 {
23506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023507 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023508 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023510 }
23511
23512 /*-------------------------------------------------------------------------
23513 Extract indication and send it to UMAC
23514 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023515 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23516 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023517 sizeof(tPrefNetwFoundParams));
23518
23519 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023520 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023521
23522 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23523
Jeff Johnsone7245742012-09-05 17:12:55 -070023524 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023525 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023526 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023527
Jeff Johnsone7245742012-09-05 17:12:55 -070023528 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23529 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023530 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23531
23532 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23533 prefNetwFoundInd.prefNetwFoundParams.rssi;
23534
23535 // DEBUG
23536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23537 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23538 wdiInd.wdiIndicationType,
23539 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23540 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23541
ltimariu034f7d62013-01-24 18:54:33 -080023542 if ( pWDICtx->wdiLowLevelIndCB )
23543 {
23544 /*Notify UMAC*/
23545 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
23546 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023547
23548 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023549}
23550
23551/**
23552 @brief Process PNO Rsp function (called when a
23553 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023554
23555 @param pWDICtx: pointer to the WLAN DAL context
23556 pEventData: pointer to the event information structure
23557
Jeff Johnson295189b2012-06-20 16:38:30 -070023558 @see
23559 @return Result of the function call
23560*/
23561WDI_Status
23562WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023563(
Jeff Johnson295189b2012-06-20 16:38:30 -070023564 WDI_ControlBlockType* pWDICtx,
23565 WDI_EventInfoType* pEventData
23566)
23567{
23568 WDI_Status wdiStatus;
23569 eHalStatus halStatus;
23570 WDI_PNOScanCb wdiPNOScanCb = NULL;
23571 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23572
23573 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023574 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023575 -------------------------------------------------------------------------*/
23576 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23577 ( NULL == pEventData->pEventData ))
23578 {
23579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023580 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023581 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023582 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023583 }
23584
23585
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023587
23588 /*-------------------------------------------------------------------------
23589 Extract response and send it to UMAC
23590 -------------------------------------------------------------------------*/
23591 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023592 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023593
23594 /*Notify UMAC*/
23595 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23596
Jeff Johnsone7245742012-09-05 17:12:55 -070023597 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023598}/*WDI_ProcessSetPreferredNetworkRsp*/
23599
23600/**
23601 @brief Process RSSI Filter Rsp function (called when a
23602 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023603
23604 @param pWDICtx: pointer to the WLAN DAL context
23605 pEventData: pointer to the event information structure
23606
Jeff Johnson295189b2012-06-20 16:38:30 -070023607 @see
23608 @return Result of the function call
23609*/
23610WDI_Status
23611WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023612(
Jeff Johnson295189b2012-06-20 16:38:30 -070023613 WDI_ControlBlockType* pWDICtx,
23614 WDI_EventInfoType* pEventData
23615)
23616{
23617 WDI_Status wdiStatus;
23618 eHalStatus halStatus;
23619 WDI_RssiFilterCb wdiRssiFilterCb;
23620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23621
23622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023624 -------------------------------------------------------------------------*/
23625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23626 ( NULL == pEventData->pEventData ))
23627 {
23628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023632 }
23633
Jeff Johnsone7245742012-09-05 17:12:55 -070023634 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023635
23636 /*-------------------------------------------------------------------------
23637 Extract response and send it to UMAC
23638 -------------------------------------------------------------------------*/
23639 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023640 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023641
23642 /*Notify UMAC*/
23643 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
23644
Jeff Johnsone7245742012-09-05 17:12:55 -070023645 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023646}/*WDI_ProcessSetRssiFilterRsp*/
23647
23648/**
23649 @brief Process Update Scan Params Rsp function (called when a
23650 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023651
23652 @param pWDICtx: pointer to the WLAN DAL context
23653 pEventData: pointer to the event information structure
23654
Jeff Johnson295189b2012-06-20 16:38:30 -070023655 @see
23656 @return Result of the function call
23657*/
23658WDI_Status
23659WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023660(
Jeff Johnson295189b2012-06-20 16:38:30 -070023661 WDI_ControlBlockType* pWDICtx,
23662 WDI_EventInfoType* pEventData
23663)
23664{
23665 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070023666 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023667 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023668 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23670
23671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023672 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023673 -------------------------------------------------------------------------*/
23674 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23675 ( NULL == pEventData->pEventData ))
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,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023684 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023685
Jeff Johnsone7245742012-09-05 17:12:55 -070023686 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023687
23688 /*-------------------------------------------------------------------------
23689 Extract response and send it to UMAC
23690 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023691 wpalMemoryCopy( (void *)&halUpdScanParams.status,
23692 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023693 sizeof(halUpdScanParams.status));
23694
23695 uStatus = halUpdScanParams.status;
23696
23697 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070023698 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023699
23700 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023701 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070023702
Jeff Johnsone7245742012-09-05 17:12:55 -070023703 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023704
23705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023706 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023707 halUpdScanParams.status);
23708
23709 /*Notify UMAC*/
23710 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
23711
Jeff Johnsone7245742012-09-05 17:12:55 -070023712 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023713}
23714#endif // FEATURE_WLAN_SCAN_PNO
23715
23716#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070023717WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023718WDI_8023MulticastListReq
23719(
23720 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
23721 WDI_8023MulticastListCb wdi8023MulticastListCallback,
23722 void* pUserData
23723)
23724{
23725 WDI_EventInfoType wdiEventData;
23726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23727
23728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023729 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023730
23731 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 ------------------------------------------------------------------------*/
23734 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23735 {
23736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23737 "WDI API call before module is initialized - Fail request");
23738
Jeff Johnsone7245742012-09-05 17:12:55 -070023739 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023740 }
23741
23742 /*------------------------------------------------------------------------
23743 Fill in Event data and post to the Main FSM
23744 ------------------------------------------------------------------------*/
23745 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023746 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023747 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023748 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023749 wdiEventData.pUserData = pUserData;
23750
23751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23752}
23753
Jeff Johnsone7245742012-09-05 17:12:55 -070023754WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023755WDI_ReceiveFilterSetFilterReq
23756(
23757 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
23758 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
23759 void* pUserData
23760)
23761{
23762 WDI_EventInfoType wdiEventData;
23763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23764
23765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023766 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023767
23768 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023769 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023770 ------------------------------------------------------------------------*/
23771 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23772 {
23773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23774 "WDI API call before module is initialized - Fail request");
23775
Jeff Johnsone7245742012-09-05 17:12:55 -070023776 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023777 }
23778
23779 /*------------------------------------------------------------------------
23780 Fill in Event data and post to the Main FSM
23781 ------------------------------------------------------------------------*/
23782 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023783 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
23784 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
23785 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams
Jeff Johnson295189b2012-06-20 16:38:30 -070023786 * sizeof(WDI_RcvPktFilterFieldParams) - 1);
Jeff Johnsone7245742012-09-05 17:12:55 -070023787 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 wdiEventData.pUserData = pUserData;
23789
23790
23791 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23792}
23793
Jeff Johnsone7245742012-09-05 17:12:55 -070023794WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023795WDI_FilterMatchCountReq
23796(
23797 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
23798 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
23799 void* pUserData
23800)
23801{
23802 WDI_EventInfoType wdiEventData;
23803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23804
23805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023806 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023807
23808 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023809 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023810 ------------------------------------------------------------------------*/
23811 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23812 {
23813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23814 "WDI API call before module is initialized - Fail request");
23815
Jeff Johnsone7245742012-09-05 17:12:55 -070023816 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023817 }
23818
23819 /*------------------------------------------------------------------------
23820 Fill in Event data and post to the Main FSM
23821 ------------------------------------------------------------------------*/
23822 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023823 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023824 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023825 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023826 wdiEventData.pUserData = pUserData;
23827
23828
23829 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23830}
23831
Jeff Johnsone7245742012-09-05 17:12:55 -070023832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023833WDI_ReceiveFilterClearFilterReq
23834(
23835 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
23836 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
23837 void* pUserData
23838)
23839{
23840 WDI_EventInfoType wdiEventData;
23841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23842
23843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023844 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023845
23846 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023848 ------------------------------------------------------------------------*/
23849 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23850 {
23851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23852 "WDI API call before module is initialized - Fail request");
23853
Jeff Johnsone7245742012-09-05 17:12:55 -070023854 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023855 }
23856
23857 /*------------------------------------------------------------------------
23858 Fill in Event data and post to the Main FSM
23859 ------------------------------------------------------------------------*/
23860 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023861 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023862 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070023863 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070023864 wdiEventData.pUserData = pUserData;
23865
23866
23867 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23868}
23869
23870/**
23871 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023872
23873 @param pWDICtx: pointer to the WLAN DAL context
23874 pEventData: pointer to the event information structure
23875
Jeff Johnson295189b2012-06-20 16:38:30 -070023876 @see
23877 @return Result of the function call
23878*/
23879WDI_Status
23880WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023881(
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 WDI_ControlBlockType* pWDICtx,
23883 WDI_EventInfoType* pEventData
23884)
23885{
23886 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
23887 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023888 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023889 wpt_uint16 usDataOffset = 0;
23890 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023891 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023892 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070023893 wpt_uint8 ucCurrentBSSSesIdx = 0;
23894 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023895
23896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023897 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023898
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023899 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
23900 if( NULL == pRcvFltMcAddrListType )
23901 {
23902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23903 "Failed to alloc in WDI_Process8023MulticastListReq");
23904 return WDI_STATUS_E_FAILURE;
23905 }
23906
Jeff Johnson295189b2012-06-20 16:38:30 -070023907 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023909 -------------------------------------------------------------------------*/
23910 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023911 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070023912 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070023913 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070023914 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
23915 {
23916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023917 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023918 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023920 return WDI_STATUS_E_FAILURE;
23921 }
23922
23923 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
23924 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
23925 &pBSSSes);
23926 if ( NULL == pBSSSes )
23927 {
23928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023929 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023930 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023932 }
23933
23934 /*-----------------------------------------------------------------------
23935 Get message buffer
23936 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023937 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
23938 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023939 sizeof(tHalRcvFltMcAddrListType),
23940 &pSendBuffer, &usDataOffset, &usSendSize))||
23941 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
23942 {
23943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23944 "Unable to get send buffer in "
23945 "WDI_Process8023MulticastListReq() %x %x %x",
23946 pEventData, pwdiFltPktSetMcListReqParamsType,
23947 wdi8023MulticastListCb);
23948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023950 }
23951
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023952 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070023953 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023954 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023955 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023956 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070023957 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
23958 sizeof(tSirMacAddr));
23959 }
23960
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023961 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023962 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023963 pRcvFltMcAddrListType,
23964 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070023965
23966 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023967 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023968
23969
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023970 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023971 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023972 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023973 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023974 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070023975 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023977}
23978
23979/**
23980 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023981
23982 @param pWDICtx: pointer to the WLAN DAL context
23983 pEventData: pointer to the event information structure
23984
Jeff Johnson295189b2012-06-20 16:38:30 -070023985 @see
23986 @return Result of the function call
23987*/
23988WDI_Status
23989WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023990(
Jeff Johnson295189b2012-06-20 16:38:30 -070023991 WDI_ControlBlockType* pWDICtx,
23992 WDI_EventInfoType* pEventData
23993)
23994{
23995 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
23996 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023997 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023998 wpt_uint16 usDataOffset = 0;
23999 wpt_uint16 usSendSize = 0;
24000 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024001 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024002 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024003 wpt_uint8 ucCurrentBSSSesIdx = 0;
24004 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024005 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
24006 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024007
24008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024009 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024010
24011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024013 -------------------------------------------------------------------------*/
24014 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024015 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070024016 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024017 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024018 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
24019 {
24020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024023 return WDI_STATUS_E_FAILURE;
24024 }
24025
24026 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24027 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
24028 &pBSSSes);
24029 if ( NULL == pBSSSes )
24030 {
24031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024032 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024033 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024034 }
24035
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024036 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
24037 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024038
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024039 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
24040 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24041 * sizeof(tHalSessionizedRcvPktFilterCfgType));
24042
24043 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
24044 usSessRcvPktFilterCfgSize);
24045
24046 if(NULL == pSessRcvPktFilterCfg)
24047 {
24048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24049 "%s: Failed to allocate memory for "
24050 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024051 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024052 WDI_ASSERT(0);
24053 return WDI_STATUS_E_FAILURE;
24054 }
24055
24056 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
24057
24058 /*-----------------------------------------------------------------------
24059 Get message buffer
24060 -----------------------------------------------------------------------*/
24061
24062 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
24063 usSessRcvPktFilterCfgSize,
24064 &pSendBuffer, &usDataOffset, &usSendSize))||
24065 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
24066 {
24067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24068 "Unable to get send buffer in "
24069 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24070 pEventData, pwdiSetRcvPktFilterReqInfo,
24071 wdiReceiveFilterSetFilterCb);
24072 WDI_ASSERT(0);
24073 wpalMemoryFree(pSessRcvPktFilterCfg);
24074 return WDI_STATUS_E_FAILURE;
24075 }
24076
24077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24078 "UsData Off %d UsSend %d cfg %d",usDataOffset,
24079 usSendSize,pSessRcvPktFilterCfg);
24080
24081 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24082 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24083 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24084 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
24085
24086 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
24087
24088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24089 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
24090 pSessRcvPktFilterCfg->filterType);
24091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24092 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
24093 pSessRcvPktFilterCfg->coleasceTime);
24094
24095 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
24096 {
24097 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
24098 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24099 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
24100 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24101 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
24102 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24103 pSessRcvPktFilterCfg->paramsData[i].dataLength =
24104 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
24105
24106 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
24107 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24108 8);
24109 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
24110 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24111 8);
24112
24113 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24114 "Out:Proto %d Comp Flag %d \n",
24115 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
24116 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
24117
24118 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24119 "Data Offset %d Data Len %d\n",
24120 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
24121 pSessRcvPktFilterCfg->paramsData[i].dataLength);
24122
24123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24124 "CData: %d:%d:%d:%d:%d:%d\n",
24125 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
24126 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
24127 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
24128 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
24129 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
24130 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
24131
24132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24133 "MData: %d:%d:%d:%d:%d:%d\n",
24134 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
24135 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
24136 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
24137 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
24138 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
24139 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
24140 }
24141
24142 wpalMemoryCopy( pSendBuffer+usDataOffset,
24143 pSessRcvPktFilterCfg,
24144 usSessRcvPktFilterCfgSize);
24145
24146
24147 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24148 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
24149
24150 wpalMemoryFree(pSessRcvPktFilterCfg);
24151
24152 }
24153 /*If SLM_SESSIONIZATION is not supported then do this */
24154 else
24155 {
24156 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
24157 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24158 * sizeof(tHalRcvPktFilterParams));
24159
24160 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070024161 usRcvPktFilterCfgSize);
24162
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024163 if(NULL == pRcvPktFilterCfg)
24164 {
24165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24166 "%s: Failed to allocate memory for "
24167 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024168 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024169 WDI_ASSERT(0);
24170 return WDI_STATUS_E_FAILURE;
24171 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024172
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024173 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024174
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024175 /*-----------------------------------------------------------------------
24176 Get message buffer
24177 -----------------------------------------------------------------------*/
24178 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024179 usRcvPktFilterCfgSize,
24180 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024181 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
24182 {
24183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070024184 "Unable to get send buffer in "
24185 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24186 pEventData, pwdiSetRcvPktFilterReqInfo,
24187 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024188 WDI_ASSERT(0);
24189 wpalMemoryFree(pRcvPktFilterCfg);
24190 return WDI_STATUS_E_FAILURE;
24191 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024192
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024194 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070024195 usSendSize,usRcvPktFilterCfgSize);
24196
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024197 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24198 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24199 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24200 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070024201
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024203 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024204 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024206 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070024207 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070024208
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024209 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
24210 {
24211 pRcvPktFilterCfg->paramsData[i].protocolLayer =
24212 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24213 pRcvPktFilterCfg->paramsData[i].cmpFlag =
24214 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24215 pRcvPktFilterCfg->paramsData[i].dataOffset =
24216 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24217 pRcvPktFilterCfg->paramsData[i].dataLength =
24218 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070024219
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024220 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024221 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24222 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024223 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070024224 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24225 8);
24226
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024228 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070024229 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070024230 pRcvPktFilterCfg->paramsData[i].cmpFlag);
24231
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24233 "Data Offset %d Data Len %d\n",
24234 pRcvPktFilterCfg->paramsData[i].dataOffset,
24235 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024236
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24238 "CData: %d:%d:%d:%d:%d:%d\n",
24239 pRcvPktFilterCfg->paramsData[i].compareData[0],
24240 pRcvPktFilterCfg->paramsData[i].compareData[1],
24241 pRcvPktFilterCfg->paramsData[i].compareData[2],
24242 pRcvPktFilterCfg->paramsData[i].compareData[3],
24243 pRcvPktFilterCfg->paramsData[i].compareData[4],
24244 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070024245
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24247 "MData: %d:%d:%d:%d:%d:%d\n",
24248 pRcvPktFilterCfg->paramsData[i].dataMask[0],
24249 pRcvPktFilterCfg->paramsData[i].dataMask[1],
24250 pRcvPktFilterCfg->paramsData[i].dataMask[2],
24251 pRcvPktFilterCfg->paramsData[i].dataMask[3],
24252 pRcvPktFilterCfg->paramsData[i].dataMask[4],
24253 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
24254 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024255
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024256 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070024257 pRcvPktFilterCfg,
24258 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024259
24260
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024261 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24262 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024263
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024265 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024266 wpalMemoryFree(pRcvPktFilterCfg);
24267 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024269 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024270 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024271 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024272 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024273 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024274}
24275
24276/**
24277 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024278
24279 @param pWDICtx: pointer to the WLAN DAL context
24280 pEventData: pointer to the event information structure
24281
Jeff Johnson295189b2012-06-20 16:38:30 -070024282 @see
24283 @return Result of the function call
24284*/
24285WDI_Status
24286WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024287(
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 WDI_ControlBlockType* pWDICtx,
24289 WDI_EventInfoType* pEventData
24290)
24291{
24292 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
24293 NULL;
24294 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
24295 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024296 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024297 wpt_uint16 usDataOffset = 0;
24298 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024299 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
24300 wpt_uint8 ucCurrentBSSSesIdx = 0;
24301 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024302
24303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024304 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024305
24306 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024307 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 -------------------------------------------------------------------------*/
24309 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024310 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024311 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024312 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024313 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
24314 {
24315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024316 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024317 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024318 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024319 }
24320
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024321 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24322 pwdiRcvFltPktMatchCntReqParamsType->bssId,
24323 &pBSSSes);
24324 if ( NULL == pBSSSes )
24325 {
24326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024327 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024328 return WDI_STATUS_E_FAILURE;
24329 }
24330
Jeff Johnson295189b2012-06-20 16:38:30 -070024331 /*-----------------------------------------------------------------------
24332 Get message buffer
24333 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024334 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24335 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024336 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024337 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024338 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070024339 {
24340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24341 "Unable to get send buffer in "
24342 "WDI_ProcessFilterMatchCountReq() %x %x %x",
24343 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
24344 wdiFilterMatchCountCb);
24345 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024346 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024347 }
24348
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024349 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
24350 wpalMemoryCopy( pSendBuffer+usDataOffset,
24351 &rcvFltPktMatchCntReqParam,
24352 sizeof(rcvFltPktMatchCntReqParam));
24353
Jeff Johnson295189b2012-06-20 16:38:30 -070024354 //
24355 // Don't need to fill send buffer other than header
24356 //
24357 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024358 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024359
24360
24361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024362 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024363 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024364 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24365 wdiFilterMatchCountCb,
24366 pEventData->pUserData,
24367 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024368}
24369
24370/**
24371 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024372
24373 @param pWDICtx: pointer to the WLAN DAL context
24374 pEventData: pointer to the event information structure
24375
Jeff Johnson295189b2012-06-20 16:38:30 -070024376 @see
24377 @return Result of the function call
24378*/
24379WDI_Status
24380WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024381(
Jeff Johnson295189b2012-06-20 16:38:30 -070024382 WDI_ControlBlockType* pWDICtx,
24383 WDI_EventInfoType* pEventData
24384)
Jeff Johnsone7245742012-09-05 17:12:55 -070024385{
Jeff Johnson295189b2012-06-20 16:38:30 -070024386 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24387 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024388 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 wpt_uint16 usDataOffset = 0;
24390 wpt_uint16 usSendSize = 0;
24391 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024392 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024393 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024394
24395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024396 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024397
24398 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024399 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 -------------------------------------------------------------------------*/
24401 if (( NULL == pEventData ) ||
24402 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24403 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024404 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24406 {
24407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024408 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024410 return WDI_STATUS_E_FAILURE;
24411 }
24412
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024413 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024414 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24415 &pBSSSes);
24416 if ( NULL == pBSSSes )
24417 {
24418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024419 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024420 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024421 }
24422
24423 /*-----------------------------------------------------------------------
24424 Get message buffer
24425 -----------------------------------------------------------------------*/
24426 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024427 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024428 sizeof(tHalRcvFltPktClearParam),
24429 &pSendBuffer, &usDataOffset, &usSendSize))||
24430 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24431 {
24432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24433 "Unable to get send buffer in "
24434 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24435 pEventData, pwdiRcvFltPktClearReqParamsType,
24436 wdiRcvFltPktClearFilterCb);
24437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024438 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024439 }
24440
24441
24442 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024443 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024445 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024446
Jeff Johnsone7245742012-09-05 17:12:55 -070024447 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24448 wpalMemoryCopy( pSendBuffer+usDataOffset,
24449 &rcvFltPktClearParam,
24450 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024451
24452 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024453 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024454
24455
24456 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024457 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024458 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024459 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024460 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024461 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024462}
24463
24464/**
24465 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024466
24467 @param pWDICtx: pointer to the WLAN DAL context
24468 pEventData: pointer to the event information structure
24469
Jeff Johnson295189b2012-06-20 16:38:30 -070024470 @see
24471 @return Result of the function call
24472*/
24473WDI_Status
24474WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024475(
Jeff Johnson295189b2012-06-20 16:38:30 -070024476 WDI_ControlBlockType* pWDICtx,
24477 WDI_EventInfoType* pEventData
24478)
24479{
Jeff Johnson295189b2012-06-20 16:38:30 -070024480 eHalStatus halStatus;
24481 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024482 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24483 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24485
24486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024487 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024488
24489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024491 -------------------------------------------------------------------------*/
24492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24493 ( NULL == pEventData->pEventData ))
24494 {
24495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024499 }
24500
Jeff Johnsone7245742012-09-05 17:12:55 -070024501 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024502
24503 /*-------------------------------------------------------------------------
24504 Extract response and send it to UMAC
24505 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024506 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24507 {
24508 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24509 pEventData->pEventData,
24510 sizeof(halRcvFltPktSetMcListRsp));
24511
24512 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24513 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24514 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24515 halRcvFltPktSetMcListRsp.bssIdx;
24516 }
24517 else
24518 {
24519 halStatus = *((eHalStatus*)pEventData->pEventData);
24520 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24521 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024522
24523 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024524 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024525
Jeff Johnsone7245742012-09-05 17:12:55 -070024526 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024527}
24528
24529/**
24530 @brief Process Set Rsp function (called when a
24531 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024532
24533 @param pWDICtx: pointer to the WLAN DAL context
24534 pEventData: pointer to the event information structure
24535
Jeff Johnson295189b2012-06-20 16:38:30 -070024536 @see
24537 @return Result of the function call
24538*/
24539WDI_Status
24540WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024541(
Jeff Johnson295189b2012-06-20 16:38:30 -070024542 WDI_ControlBlockType* pWDICtx,
24543 WDI_EventInfoType* pEventData
24544)
24545{
Jeff Johnson295189b2012-06-20 16:38:30 -070024546 eHalStatus halStatus;
24547 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024548 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24549 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24551
24552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024553 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024554
24555 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024556 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024557 -------------------------------------------------------------------------*/
24558 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24559 ( NULL == pEventData->pEventData ))
24560 {
24561 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024562 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024565 }
24566
24567 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024568 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024569
24570 /*-------------------------------------------------------------------------
24571 Extract response and send it to UMAC
24572 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024573 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24574 {
24575 wpalMemoryCopy( &halSetPktFilterRspParams,
24576 pEventData->pEventData,
24577 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024578
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024579 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24580 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24581 }
24582 else
24583 {
24584 halStatus = *((eHalStatus*)pEventData->pEventData);
24585 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24586 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024587 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024588 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024589
Jeff Johnsone7245742012-09-05 17:12:55 -070024590 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024591}
24592
24593/**
24594 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024595
24596 @param pWDICtx: pointer to the WLAN DAL context
24597 pEventData: pointer to the event information structure
24598
Jeff Johnson295189b2012-06-20 16:38:30 -070024599 @see
24600 @return Result of the function call
24601*/
24602WDI_Status
24603WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024604(
Jeff Johnson295189b2012-06-20 16:38:30 -070024605 WDI_ControlBlockType* pWDICtx,
24606 WDI_EventInfoType* pEventData
24607)
24608{
Jeff Johnson295189b2012-06-20 16:38:30 -070024609 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024610 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024611 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24612 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024613
24614 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24615
24616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024617 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024618
24619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024620 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024621 -------------------------------------------------------------------------*/
24622 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24623 ( NULL == pEventData->pEventData ))
24624 {
24625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024629 }
24630
Jeff Johnsone7245742012-09-05 17:12:55 -070024631 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024632
24633 /*-------------------------------------------------------------------------
24634 Extract response and send it to UMAC
24635 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024636 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24637 {
24638 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
24639 pEventData->pEventData,
24640 sizeof(halRcvFltrPktMatachRsp));
24641
24642 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
24643 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
24644 }
24645 else
24646 {
24647 halStatus = *((eHalStatus*)pEventData->pEventData);
24648 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24649 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024650
24651 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024652 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024653
Jeff Johnsone7245742012-09-05 17:12:55 -070024654 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024655}
24656
24657/**
24658 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024659
24660 @param pWDICtx: pointer to the WLAN DAL context
24661 pEventData: pointer to the event information structure
24662
Jeff Johnson295189b2012-06-20 16:38:30 -070024663 @see
24664 @return Result of the function call
24665*/
24666WDI_Status
24667WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024668(
Jeff Johnson295189b2012-06-20 16:38:30 -070024669 WDI_ControlBlockType* pWDICtx,
24670 WDI_EventInfoType* pEventData
24671)
24672{
Jeff Johnson295189b2012-06-20 16:38:30 -070024673 eHalStatus halStatus;
24674 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024675 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
24676 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24678
24679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024680 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024681
24682 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024683 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024684 -------------------------------------------------------------------------*/
24685 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24686 ( NULL == pEventData->pEventData ))
24687 {
24688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024689 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024690 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024691 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024692 }
24693
24694 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024695 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024696
24697 /*-------------------------------------------------------------------------
24698 Extract response and send it to UMAC
24699 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024700 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24701 {
24702 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
24703 pEventData->pEventData,
24704 sizeof(halRcvFltPktClearRspMsg));
24705
24706 wdiRcvFltPktClearRspParamsType.wdiStatus =
24707 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
24708 wdiRcvFltPktClearRspParamsType.bssIdx =
24709 halRcvFltPktClearRspMsg.bssIdx;
24710 }
24711 else
24712 {
24713 halStatus = *((eHalStatus*)pEventData->pEventData);
24714 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24715 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024716
24717 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024718 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024719
Jeff Johnsone7245742012-09-05 17:12:55 -070024720 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024721}
24722#endif // WLAN_FEATURE_PACKET_FILTERING
24723
24724/**
24725 @brief Process Shutdown Rsp function
24726 There is no shutdown response comming from HAL
24727 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070024728
Jeff Johnson295189b2012-06-20 16:38:30 -070024729 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070024730 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070024731
24732 @see
24733 @return Result of the function call
24734*/
24735WDI_Status
24736WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024737(
Jeff Johnson295189b2012-06-20 16:38:30 -070024738 WDI_ControlBlockType* pWDICtx,
24739 WDI_EventInfoType* pEventData
24740)
24741{
24742 /*There is no shutdown response comming from HAL - function just kept for
24743 simmetry */
24744 WDI_ASSERT(0);
24745 return WDI_STATUS_SUCCESS;
24746}/*WDI_ProcessShutdownRsp*/
24747
24748/**
24749 @brief WDI_SetPowerParamsReq
24750
Jeff Johnsone7245742012-09-05 17:12:55 -070024751 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070024752 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070024753
Jeff Johnson295189b2012-06-20 16:38:30 -070024754 wdiPowerParamsCb: callback for passing back the response
24755 of the Set Power Params operation received from the
24756 device
Jeff Johnsone7245742012-09-05 17:12:55 -070024757
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070024759 callback
24760
Jeff Johnson295189b2012-06-20 16:38:30 -070024761 @return Result of the function call
24762*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024763WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024764WDI_SetPowerParamsReq
24765(
24766 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
24767 WDI_SetPowerParamsCb wdiPowerParamsCb,
24768 void* pUserData
24769)
24770{
24771 WDI_EventInfoType wdiEventData;
24772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24773
24774 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024775 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024776 ------------------------------------------------------------------------*/
24777 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24778 {
24779 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24780 "WDI API call before module is initialized - Fail request");
24781
Jeff Johnsone7245742012-09-05 17:12:55 -070024782 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024783 }
24784
24785 /*------------------------------------------------------------------------
24786 Fill in Event data and post to the Main FSM
24787 ------------------------------------------------------------------------*/
24788 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024789 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024790 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024791 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070024792 wdiEventData.pUserData = pUserData;
24793
24794 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24795}/*WDI_SetPowerParamsReq*/
24796
24797/**
24798 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024799
24800 @param pWDICtx: pointer to the WLAN DAL context
24801 pEventData: pointer to the event information structure
24802
Jeff Johnson295189b2012-06-20 16:38:30 -070024803 @see
24804 @return Result of the function call
24805*/
24806WDI_Status
24807WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024808(
Jeff Johnson295189b2012-06-20 16:38:30 -070024809 WDI_ControlBlockType* pWDICtx,
24810 WDI_EventInfoType* pEventData
24811)
24812{
24813 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
24814 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024815 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024816 wpt_uint16 usDataOffset = 0;
24817 wpt_uint16 usSendSize = 0;
24818 tSetPowerParamsType powerParams;
24819
24820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024821 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024822 -------------------------------------------------------------------------*/
24823 if (( NULL == pEventData ) ||
24824 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
24825 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
24826 {
24827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024828 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024831 }
24832
24833 /*-----------------------------------------------------------------------
24834 Get message buffer
24835 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024836 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024837 sizeof(powerParams),
24838 &pSendBuffer, &usDataOffset, &usSendSize))||
24839 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
24840 {
24841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24842 "Unable to get send buffer in Set PNO req %x %x %x",
24843 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
24844 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024845 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024846 }
24847
24848 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070024849 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070024850 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
24851
24852 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024853 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070024854 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
24855
24856 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024857 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070024858 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
24859
24860 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070024861 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070024862 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
24863
24864 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070024865 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070024866 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
24867
24868 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070024869 powerParams.uBETInterval =
24870 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070024871
Jeff Johnsone7245742012-09-05 17:12:55 -070024872
24873 wpalMemoryCopy( pSendBuffer+usDataOffset,
24874 &powerParams,
24875 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024876
24877 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024878 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024879
24880 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024881 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024882 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024883 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24884 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024885}
24886
24887/**
24888 @brief Process Power Params Rsp function (called when a
24889 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024890
24891 @param pWDICtx: pointer to the WLAN DAL context
24892 pEventData: pointer to the event information structure
24893
Jeff Johnson295189b2012-06-20 16:38:30 -070024894 @see
24895 @return Result of the function call
24896*/
24897WDI_Status
24898WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024899(
Jeff Johnson295189b2012-06-20 16:38:30 -070024900 WDI_ControlBlockType* pWDICtx,
24901 WDI_EventInfoType* pEventData
24902)
24903{
24904 WDI_Status wdiStatus;
24905 eHalStatus halStatus;
24906 WDI_SetPowerParamsCb wdiPowerParamsCb;
24907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24908
24909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024911 -------------------------------------------------------------------------*/
24912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24913 ( NULL == pEventData->pEventData ))
24914 {
24915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024919 }
24920
Jeff Johnsone7245742012-09-05 17:12:55 -070024921 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024922
24923 /*-------------------------------------------------------------------------
24924 Extract response and send it to UMAC
24925 -------------------------------------------------------------------------*/
24926 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024927 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024928
24929 /*Notify UMAC*/
24930 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24931
Jeff Johnsone7245742012-09-05 17:12:55 -070024932 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024933}/*WDI_ProcessSetPowerParamsRsp*/
24934
24935#ifdef WLAN_FEATURE_GTK_OFFLOAD
24936/**
24937 @brief WDI_GTKOffloadReq will be called when the upper MAC
24938 wants to set GTK Rekey Counter while in power save. Upon
24939 the call of this API the WLAN DAL will pack and send a
24940 HAL GTK offload request message to the lower RIVA
24941 sub-system if DAL is in state STARTED.
24942
24943 In state BUSY this request will be queued. Request won't
24944 be allowed in any other state.
24945
24946 WDI_PostAssocReq must have been called.
24947
24948 @param pwdiGtkOffloadParams: the GTK offload as specified
24949 by the Device Interface
24950
24951 wdiGtkOffloadCb: callback for passing back the response
24952 of the GTK offload operation received from the device
24953
24954 pUserData: user data will be passed back with the
24955 callback
24956
24957 @see WDI_PostAssocReq
24958 @return Result of the function call
24959*/
24960WDI_Status
24961WDI_GTKOffloadReq
24962(
24963 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
24964 WDI_GtkOffloadCb wdiGtkOffloadCb,
24965 void* pUserData
24966)
24967{
24968 WDI_EventInfoType wdiEventData = {0};
24969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24970
24971 /*------------------------------------------------------------------------
24972 Sanity Check
24973 ------------------------------------------------------------------------*/
24974 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24975 {
24976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24977 "WDI API call before module is initialized - Fail request");
24978
24979 return WDI_STATUS_E_NOT_ALLOWED;
24980 }
24981
24982 /*------------------------------------------------------------------------
24983 Fill in Event data and post to the Main FSM
24984 ------------------------------------------------------------------------*/
24985 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
24986 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070024987 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070024988 wdiEventData.pCBfnc = wdiGtkOffloadCb;
24989 wdiEventData.pUserData = pUserData;
24990
24991 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24992}
24993
24994
24995/**
24996 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
24997 MAC wants to get GTK Rekey Counter while in power save.
24998 Upon the call of this API the WLAN DAL will pack and
24999 send a HAL GTK offload request message to the lower RIVA
25000 sub-system if DAL is in state STARTED.
25001
25002 In state BUSY this request will be queued. Request won't
25003 be allowed in any other state.
25004
25005 WDI_PostAssocReq must have been called.
25006
25007 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
25008 Information Message as specified by the
25009 Device Interface
25010
25011 wdiGtkOffloadGetInfoCb: callback for passing back the
25012 response of the GTK offload operation received from the
25013 device
25014
25015 pUserData: user data will be passed back with the
25016 callback
25017
25018 @see WDI_PostAssocReq
25019 @return Result of the function call
25020*/
25021WDI_Status
25022WDI_GTKOffloadGetInfoReq
25023(
25024 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
25025 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
25026 void* pUserData
25027)
25028{
25029 WDI_EventInfoType wdiEventData = {0};
25030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25031
25032 /*------------------------------------------------------------------------
25033 Sanity Check
25034 ------------------------------------------------------------------------*/
25035 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25036 {
25037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25038 "WDI API call before module is initialized - Fail request");
25039
25040 return WDI_STATUS_E_NOT_ALLOWED;
25041 }
25042
25043 /*------------------------------------------------------------------------
25044 Fill in Event data and post to the Main FSM
25045 ------------------------------------------------------------------------*/
25046 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
25047 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
25048 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
25049 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
25050 wdiEventData.pUserData = pUserData;
25051
25052 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25053}
25054
25055
25056/**
25057 @brief Process set GTK Offload Request function
25058
25059 @param pWDICtx: pointer to the WLAN DAL context
25060 pEventData: pointer to the event information structure
25061
25062 @see
25063 @return Result of the function call
25064*/
25065WDI_Status
25066WDI_ProcessGTKOffloadReq
25067(
25068 WDI_ControlBlockType* pWDICtx,
25069 WDI_EventInfoType* pEventData
25070)
25071{
25072 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
25073 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
25074 wpt_uint8* pSendBuffer = NULL;
25075 wpt_uint16 usDataOffset = 0;
25076 wpt_uint16 usSendSize = 0;
25077 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025078 wpt_uint8 ucCurrentSessionId = 0;
25079 WDI_BSSSessionType* pBSSSes = NULL;
25080
Jeff Johnson295189b2012-06-20 16:38:30 -070025081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25082
25083 /*-------------------------------------------------------------------------
25084 Sanity check
25085 -------------------------------------------------------------------------*/
25086 if (( NULL == pEventData ) ||
25087 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
25088 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
25089 {
25090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025092 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025093 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025094 }
25095
25096 /*-----------------------------------------------------------------------
25097 Get message buffer
25098 -----------------------------------------------------------------------*/
25099 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
25100 sizeof(gtkOffloadReqParams),
25101 &pSendBuffer, &usDataOffset, &usSendSize))||
25102 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
25103 {
25104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25105 "Unable to get send buffer in GTK offload req %x %x %x",
25106 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
25107 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025108 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025109 }
25110
25111 //
25112 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
25113 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025114 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25115 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
25116 &pBSSSes);
25117 if ( NULL == pBSSSes )
25118 {
25119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025120 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025121 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025122 }
25123
25124 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
25125
Jeff Johnson295189b2012-06-20 16:38:30 -070025126 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
25127 // Copy KCK
25128 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
25129 // Copy KEK
25130 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
25131 // Copy KeyReplayCounter
25132 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
25133
25134 wpalMemoryCopy( pSendBuffer+usDataOffset,
25135 &gtkOffloadReqParams,
25136 sizeof(gtkOffloadReqParams));
25137
25138 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
25139 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
25140
25141 /*-------------------------------------------------------------------------
25142 Send Get STA Request to HAL
25143 -------------------------------------------------------------------------*/
25144 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25145 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025146
25147fail:
25148 // Release the message buffer so we don't leak
25149 wpalMemoryFree(pSendBuffer);
25150
25151failRequest:
25152 //WDA should have failure check to avoid the memory leak
25153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025154}
25155
25156
25157/**
25158 @brief Process GTK Offload Get Information Request function
25159
25160 @param pWDICtx: pointer to the WLAN DAL context
25161 pEventData: pointer to the event information structure
25162
25163 @see
25164 @return Result of the function call
25165*/
25166WDI_Status
25167WDI_ProcessGTKOffloadGetInfoReq
25168(
25169 WDI_ControlBlockType* pWDICtx,
25170 WDI_EventInfoType* pEventData
25171)
25172{
25173 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
25174 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
25175 wpt_uint8* pSendBuffer = NULL;
25176 wpt_uint16 usDataOffset = 0;
25177 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025178 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
25179 wpt_uint8 ucCurrentSessionId = 0;
25180 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025181
25182 /*-------------------------------------------------------------------------
25183 Sanity check
25184 -------------------------------------------------------------------------*/
25185 if (( NULL == pEventData ) ||
25186 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
25187 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
25188 {
25189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025190 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025191 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025192 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025193 }
25194
25195 /*-----------------------------------------------------------------------
25196 Get message buffer
25197 -----------------------------------------------------------------------*/
25198 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025199 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025200 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025201 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070025202 {
25203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25204 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
25205 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
25206 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025207 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025208 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025209 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25210 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
25211 &pBSSSes);
25212 if ( NULL == pBSSSes )
25213 {
25214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025215 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025216 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025217 }
25218 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025219
25220 //
25221 // Don't need to fill send buffer other than header
25222 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025223 wpalMemoryCopy( pSendBuffer+usDataOffset,
25224 &halGtkOffloadGetInfoReqParams,
25225 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025226
25227 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
25228 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
25229
25230 /*-------------------------------------------------------------------------
25231 Send Get STA Request to HAL
25232 -------------------------------------------------------------------------*/
25233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25234 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025235fail:
25236 // Release the message buffer so we don't leak
25237 wpalMemoryFree(pSendBuffer);
25238
25239failRequest:
25240 //WDA should have failure check to avoid the memory leak
25241 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025242}
25243
25244/**
25245 @brief Process host offload Rsp function (called when a
25246 response is being received over the bus from HAL)
25247
25248 @param pWDICtx: pointer to the WLAN DAL context
25249 pEventData: pointer to the event information structure
25250
25251 @see
25252 @return Result of the function call
25253*/
25254WDI_Status
25255WDI_ProcessGtkOffloadRsp
25256(
25257 WDI_ControlBlockType* pWDICtx,
25258 WDI_EventInfoType* pEventData
25259)
25260{
Jeff Johnson295189b2012-06-20 16:38:30 -070025261 eHalStatus halStatus;
25262 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025263 tHalGtkOffloadRspParams halGtkOffloadRspParams;
25264 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25266
25267 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
25268
25269 /*-------------------------------------------------------------------------
25270 Sanity check
25271 -------------------------------------------------------------------------*/
25272 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25273 ( NULL == pEventData->pEventData))
25274 {
25275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025277 WDI_ASSERT(0);
25278 return WDI_STATUS_E_FAILURE;
25279 }
25280
25281 /*-------------------------------------------------------------------------
25282 Extract response and send it to UMAC
25283 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025284 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25285 {
25286 wpalMemoryCopy( &halGtkOffloadRspParams,
25287 pEventData->pEventData,
25288 sizeof(halGtkOffloadRspParams));
25289
25290 wdiGtkOffloadRsparams.ulStatus =
25291 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
25292 wdiGtkOffloadRsparams.bssIdx =
25293 halGtkOffloadRspParams.bssIdx;
25294 }
25295 else
25296 {
25297 halStatus = *((eHalStatus*)pEventData->pEventData);
25298 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25299 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025300
25301 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025302 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025303
25304 return WDI_STATUS_SUCCESS;
25305}
25306
25307/**
25308 @brief Process GTK Offload Get Information Response function
25309
25310 @param pWDICtx: pointer to the WLAN DAL context
25311 pEventData: pointer to the event information structure
25312
25313 @see
25314 @return Result of the function call
25315*/
25316WDI_Status
25317WDI_ProcessGTKOffloadGetInfoRsp
25318(
25319 WDI_ControlBlockType* pWDICtx,
25320 WDI_EventInfoType* pEventData
25321)
25322{
Jeff Johnson295189b2012-06-20 16:38:30 -070025323 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025324 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025325 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
25326 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025327
25328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25329
25330 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
25331
25332 /*-------------------------------------------------------------------------
25333 Sanity check
25334 -------------------------------------------------------------------------*/
25335 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25336 ( NULL == pEventData->pEventData ))
25337 {
25338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025339 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025340 WDI_ASSERT(0);
25341 return WDI_STATUS_E_FAILURE;
25342 }
25343
25344 /*-------------------------------------------------------------------------
25345 Extract response and send it to UMAC
25346 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025347 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25348 {
25349 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
25350 pEventData->pEventData,
25351 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025352
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025353 wdiGtkOffloadGetInfoRsparams.ulStatus =
25354 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
25355 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
25356 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
25357 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
25358 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
25359 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
25360 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
25361 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
25362 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
25363 wdiGtkOffloadGetInfoRsparams.bssIdx =
25364 halGtkOffloadGetInfoRspParams.bssIdx;
25365 }
25366 else
25367 {
25368 halStatus = *((eHalStatus*)pEventData->pEventData);
25369 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25370 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025371 /*Notify UMAC*/
25372 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25373 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025374 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025375
25376 return WDI_STATUS_SUCCESS;
25377}
25378#endif // WLAN_FEATURE_GTK_OFFLOAD
25379
25380#ifdef WLAN_WAKEUP_EVENTS
25381WDI_Status
25382WDI_ProcessWakeReasonInd
25383(
25384 WDI_ControlBlockType* pWDICtx,
25385 WDI_EventInfoType* pEventData
25386)
25387{
25388 WDI_LowLevelIndType *pWdiInd;
25389 tpWakeReasonParams pWakeReasonParams;
25390 wpt_uint32 allocSize = 0;
25391
25392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025393 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025394
25395 /*-------------------------------------------------------------------------
25396 Sanity check
25397 -------------------------------------------------------------------------*/
25398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25399 ( NULL == pEventData->pEventData ))
25400 {
25401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025403 WDI_ASSERT( 0 );
25404 return WDI_STATUS_E_FAILURE;
25405 }
25406
25407 /*-------------------------------------------------------------------------
25408 Extract indication and send it to UMAC
25409 -------------------------------------------------------------------------*/
25410 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25411
25412 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25413
25414 //Allocate memory for WDI_WakeReasonIndType structure
25415 pWdiInd = wpalMemoryAllocate(allocSize) ;
25416
25417 if(NULL == pWdiInd)
25418 {
25419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25420 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025421 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025422 WDI_ASSERT(0);
25423 return WDI_STATUS_E_FAILURE;
25424 }
25425
25426 wpalMemoryZero(pWdiInd, allocSize);
25427
25428 /* Fill in the indication parameters*/
25429 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25430 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25431 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25432 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25433 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25434 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25435 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25436 &(pWakeReasonParams->aDataStart[0]),
25437 pWakeReasonParams->ulStoredDataLen);
25438
ltimariu034f7d62013-01-24 18:54:33 -080025439
25440 if ( pWDICtx->wdiLowLevelIndCB )
25441 {
25442 /*Notify UMAC*/
25443 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25444 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025445
25446 //Free memory allocated for WDI_WakeReasonIndType structure
25447 wpalMemoryFree(pWdiInd);
25448
25449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025450 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025451
25452 return WDI_STATUS_SUCCESS;
25453}
25454#endif // WLAN_WAKEUP_EVENTS
25455
25456void WDI_GetWcnssCompiledApiVersion
25457(
25458 WDI_WlanVersionType *pWcnssApiVersion
25459)
25460{
25461 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25462 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25463 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25464 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25465}
25466
25467/**
25468 @brief Process Set TM Level Rsp function (called when a
25469 response is being received over the bus from HAL)
25470
25471 @param pWDICtx: pointer to the WLAN DAL context
25472 pEventData: pointer to the event information structure
25473
25474 @see
25475 @return Result of the function call
25476*/
25477WDI_Status
25478WDI_ProcessSetTmLevelRsp
25479(
25480 WDI_ControlBlockType* pWDICtx,
25481 WDI_EventInfoType* pEventData
25482)
25483{
25484 WDI_Status wdiStatus;
25485 eHalStatus halStatus;
25486 WDI_SetTmLevelCb wdiSetTmLevelCb;
25487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25488
25489 /*-------------------------------------------------------------------------
25490 Sanity check
25491 -------------------------------------------------------------------------*/
25492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25493 ( NULL == pEventData->pEventData ))
25494 {
25495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 WDI_ASSERT(0);
25498 return WDI_STATUS_E_FAILURE;
25499 }
25500
25501 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25502
25503 /*-------------------------------------------------------------------------
25504 Extract response and send it to UMAC
25505 -------------------------------------------------------------------------*/
25506 halStatus = *((eHalStatus*)pEventData->pEventData);
25507 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25508
25509 /*Notify UMAC*/
25510 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25511
25512 return WDI_STATUS_SUCCESS;
25513}/*WDI_ProcessSetTmLevelRsp*/
25514
25515/**
25516 @brief Process Set Thermal Mitigation level Changed request
25517
25518 @param pWDICtx: pointer to the WLAN DAL context
25519 pEventData: pointer to the event information structure
25520
25521 @see
25522 @return Result of the function call
25523*/
25524WDI_Status
25525WDI_ProcessSetTmLevelReq
25526(
25527 WDI_ControlBlockType* pWDICtx,
25528 WDI_EventInfoType* pEventData
25529)
25530{
25531 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25532 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25533 wpt_uint8* pSendBuffer = NULL;
25534 wpt_uint16 usDataOffset = 0;
25535 wpt_uint16 usSendSize = 0;
25536 tSetThermalMitgationType halTmMsg;
25537
25538 /*-------------------------------------------------------------------------
25539 Sanity check
25540 -------------------------------------------------------------------------*/
25541 if (( NULL == pEventData ) ||
25542 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25543 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25544 {
25545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025547 WDI_ASSERT(0);
25548 return WDI_STATUS_E_FAILURE;
25549 }
25550
25551 /*-----------------------------------------------------------------------
25552 Get message buffer
25553 -----------------------------------------------------------------------*/
25554 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25555 sizeof(halTmMsg),
25556 &pSendBuffer, &usDataOffset, &usSendSize))||
25557 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25558 {
25559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25560 "Unable to get send buffer in Set PNO req %x %x %x",
25561 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25562 WDI_ASSERT(0);
25563 return WDI_STATUS_E_FAILURE;
25564 }
25565
25566 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25567 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25568
25569 wpalMemoryCopy( pSendBuffer+usDataOffset,
25570 &halTmMsg,
25571 sizeof(halTmMsg));
25572
25573 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25574 pWDICtx->pfncRspCB = NULL;
25575 /*-------------------------------------------------------------------------
25576 Send Get STA Request to HAL
25577 -------------------------------------------------------------------------*/
25578 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25579 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25580}
25581
25582/* Fill the value from the global features enabled array to the global capabilities
25583 * bitmap struct
25584 */
25585static void
25586FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25587{
25588 wpt_int8 i;
25589 for (i=0; i<len; i++)
25590 {
25591 setFeatCaps(fCaps, enabledFeat[i]);
25592 }
25593}
25594
25595/**
25596 @brief WDI_featureCapsExchangeReq
25597 Post feature capability bitmap exchange event.
25598 Host will send its own capability to FW in this req and
25599 expect FW to send its capability back as a bitmap in Response
25600
25601 @param
25602
25603 wdiFeatureCapsExchangeCb: callback called on getting the response.
25604 It is kept to mantain similarity between WDI reqs and if needed, can
25605 be used in future. Currently, It is set to NULL
25606
25607 pUserData: user data will be passed back with the
25608 callback
25609
25610 @see
25611 @return Result of the function call
25612*/
25613WDI_Status
25614WDI_featureCapsExchangeReq
25615(
25616 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25617 void* pUserData
25618)
25619{
25620 WDI_EventInfoType wdiEventData;
25621 wpt_int32 fCapsStructSize;
25622
25623 /*------------------------------------------------------------------------
25624 Sanity Check
25625 ------------------------------------------------------------------------*/
25626 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25627 {
25628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25629 "WDI API call before module is initialized - Fail request");
25630
25631 return WDI_STATUS_E_NOT_ALLOWED;
25632 }
25633
25634 /* Allocate memory separately for global variable carrying FW caps */
25635 fCapsStructSize = sizeof(tWlanFeatCaps);
25636 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25637 if ( NULL == gpHostWlanFeatCaps )
25638 {
25639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25640 "Cannot allocate memory for host capability info\n");
25641 WDI_ASSERT(0);
25642 return WDI_STATUS_MEM_FAILURE;
25643 }
25644
25645 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
25646
25647 /*------------------------------------------------------------------------
25648 Fill in Event data and post to the Main FSM
25649 ------------------------------------------------------------------------*/
25650 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
25651 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070025652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25653 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025654 gpHostWlanFeatCaps->featCaps[0],
25655 gpHostWlanFeatCaps->featCaps[1],
25656 gpHostWlanFeatCaps->featCaps[2],
25657 gpHostWlanFeatCaps->featCaps[3]
25658 );
25659
25660 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
25661 wdiEventData.pEventData = gpHostWlanFeatCaps;
25662 wdiEventData.uEventDataSize = fCapsStructSize;
25663 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
25664 wdiEventData.pUserData = pUserData;
25665
25666 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25667}
25668
25669/**
Yathishd8713192012-12-10 14:21:35 -080025670 @brief Disable Active mode offload in Host
25671
25672 @param void
25673 @see
25674 @return void
25675*/
25676void
25677WDI_disableCapablityFeature(wpt_uint8 feature_index)
25678{
25679 supportEnabledFeatures[feature_index] = 0;
25680 return;
25681}
25682
25683/**
Jeff Johnson295189b2012-06-20 16:38:30 -070025684 @brief Process Host-FW Capability Exchange Request function
25685
25686 @param pWDICtx: pointer to the WLAN DAL context
25687 pEventData: pointer to the event information structure
25688
25689 @see
25690 @return Result of the function call
25691*/
25692WDI_Status
25693WDI_ProcessFeatureCapsExchangeReq
25694(
25695 WDI_ControlBlockType* pWDICtx,
25696 WDI_EventInfoType* pEventData
25697)
25698{
25699 wpt_uint8* pSendBuffer = NULL;
25700 wpt_uint16 usDataOffset = 0;
25701 wpt_uint16 usSendSize = 0;
25702 wpt_uint16 usLen = 0;
25703
25704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25705
25706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025707 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025708
25709 /*-------------------------------------------------------------------------
25710 Sanity check
25711 -------------------------------------------------------------------------*/
25712 /* Call back function is NULL since not required for cap exchange req */
25713 if (( NULL == pEventData ) ||
25714 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
25715 {
25716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025718 WDI_ASSERT(0);
25719 return WDI_STATUS_E_FAILURE;
25720 }
25721
25722 /*-----------------------------------------------------------------------
25723 Get message buffer
25724 -----------------------------------------------------------------------*/
25725 usLen = sizeof(tWlanFeatCaps);
25726
25727 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
25728 WDI_FEATURE_CAPS_EXCHANGE_REQ,
25729 usLen,
25730 &pSendBuffer, &usDataOffset, &usSendSize))||
25731 ( usSendSize < (usDataOffset + usLen )))
25732 {
25733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
25734 "Unable to get send buffer in feat caps exchange req %x %x",
25735 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
25736 WDI_ASSERT(0);
25737 return WDI_STATUS_E_FAILURE;
25738 }
25739
25740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070025741 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025742 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
25743 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
25744 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
25745 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
25746 );
25747
25748 /* Copy host caps after the offset in the send buffer */
25749 wpalMemoryCopy( pSendBuffer+usDataOffset,
25750 (tWlanFeatCaps *)pEventData->pEventData,
25751 usLen);
25752
25753 /*-------------------------------------------------------------------------
25754 Send Start Request to HAL
25755 -------------------------------------------------------------------------*/
25756 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25757 (WDI_StartRspCb)pEventData->pCBfnc,
25758 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
25759
25760}/*WDI_ProcessFeatureCapsExchangeReq*/
25761
25762/**
25763 @brief Process Host-FW Capability Exchange Response function
25764
25765 @param pWDICtx: pointer to the WLAN DAL context
25766 pEventData: pointer to the event information structure
25767
25768 @see
25769 @return Result of the function call
25770*/
25771WDI_Status
25772WDI_ProcessFeatureCapsExchangeRsp
25773(
25774 WDI_ControlBlockType* pWDICtx,
25775 WDI_EventInfoType* pEventData
25776)
25777{
25778 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
25779 wpt_int32 fCapsStructSize;
25780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25781
25782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025783 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025784
25785 /*-------------------------------------------------------------------------
25786 Sanity check
25787 -------------------------------------------------------------------------*/
25788 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25789 ( NULL == pEventData->pEventData ))
25790 {
25791 /* It will go here when riva is old (doesn't understand this msg) and host is new */
25792 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025794 WDI_ASSERT(0);
25795 return WDI_STATUS_E_FAILURE;
25796 }
25797
25798 /* Allocate memory separately for global variable carrying FW caps */
25799 fCapsStructSize = sizeof(tWlanFeatCaps);
25800 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
25801 if ( NULL == gpFwWlanFeatCaps )
25802 {
25803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25804 "Cannot allocate memory for host capability info\n");
25805 WDI_ASSERT(0);
25806 return WDI_STATUS_MEM_FAILURE;
25807 }
25808
25809 /*-------------------------------------------------------------------------
25810 Unpack HAL Response Message - the header was already extracted by the
25811 main Response Handling procedure
25812 -------------------------------------------------------------------------*/
25813 /*-------------------------------------------------------------------------
25814 Extract response and send it to UMAC
25815 -------------------------------------------------------------------------*/
25816
25817 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
25818 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070025819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
25820 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070025821 gpFwWlanFeatCaps->featCaps[0],
25822 gpFwWlanFeatCaps->featCaps[1],
25823 gpFwWlanFeatCaps->featCaps[2],
25824 gpFwWlanFeatCaps->featCaps[3]
25825 );
Jeff Johnson295189b2012-06-20 16:38:30 -070025826 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
25827
25828 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
25829 if (wdiFeatureCapsExchangeCb != NULL)
25830 wdiFeatureCapsExchangeCb(NULL, NULL);
25831
25832 return WDI_STATUS_SUCCESS;
25833}
25834
Mohit Khanna4a70d262012-09-11 16:30:12 -070025835#ifdef WLAN_FEATURE_11AC
25836WDI_Status
25837WDI_ProcessUpdateVHTOpModeRsp
25838(
25839 WDI_ControlBlockType* pWDICtx,
25840 WDI_EventInfoType* pEventData
25841)
25842{
25843 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25844 WDI_Status wdiStatus;
25845 eHalStatus halStatus;
25846
25847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25848
25849 /*-------------------------------------------------------------------------
25850 Sanity check
25851 -------------------------------------------------------------------------*/
25852 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25853 ( NULL == pEventData->pEventData))
25854 {
25855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025856 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025857 WDI_ASSERT(0);
25858 return WDI_STATUS_E_FAILURE;
25859 }
25860 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
25861
25862 /*-------------------------------------------------------------------------
25863 Extract response and send it to UMAC
25864 -------------------------------------------------------------------------*/
25865 halStatus = *((eHalStatus*)pEventData->pEventData);
25866 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25867
25868 /*Notify UMAC*/
25869 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
25870
25871 return WDI_STATUS_SUCCESS;
25872}
25873#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025874/**
25875 @brief WDI_getHostWlanFeatCaps
25876 WDI API that returns whether the feature passed to it as enum value in
25877 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
25878 variable storing host capability bitmap to find this. This can be used by
25879 other moduels to decide certain things like call different APIs based on
25880 whether a particular feature is supported.
25881
25882 @param
25883
25884 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
25885
25886 @see
25887 @return
25888 0 - if the feature is NOT supported in host
25889 any non-zero value - if the feature is SUPPORTED in host.
25890*/
25891wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
25892{
25893 wpt_uint8 featSupported = 0;
25894 if (gpHostWlanFeatCaps != NULL)
25895 {
25896 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
25897 }
25898 else
25899 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025900 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025901 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025902 }
25903 return featSupported;
25904}
25905
25906/**
25907 @brief WDI_getFwWlanFeatCaps
25908 WDI API that returns whether the feature passed to it as enum value in
25909 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
25910 variable storing host capability bitmap to find this. This can be used by
25911 other moduels to decide certain things like call different APIs based on
25912 whether a particular feature is supported.
25913
25914 @param
25915
25916 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
25917 in wlan_hal_msg.h.
25918
25919 @see
25920 @return
25921 0 - if the feature is NOT supported in FW
25922 any non-zero value - if the feature is SUPPORTED in FW.
25923*/
25924wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
25925{
25926 wpt_uint8 featSupported = 0;
25927 if (gpFwWlanFeatCaps != NULL)
25928 {
25929 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
25930 }
25931 else
25932 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070025933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070025934 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070025935 }
25936 return featSupported;
25937}
Mohit Khanna4a70d262012-09-11 16:30:12 -070025938
25939#ifdef WLAN_FEATURE_11AC
25940WDI_Status
25941WDI_ProcessUpdateVHTOpModeReq
25942(
25943 WDI_ControlBlockType* pWDICtx,
25944 WDI_EventInfoType* pEventData
25945)
25946{
25947 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
25948 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
25949 wpt_uint8* pSendBuffer = NULL;
25950 wpt_uint16 usDataOffset = 0;
25951 wpt_uint16 usSendSize = 0;
25952
25953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25954
25955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025956 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025957
25958 /*-------------------------------------------------------------------------
25959 Sanity check
25960 -------------------------------------------------------------------------*/
25961 if (( NULL == pEventData ) ||
25962 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
25963 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
25964 {
25965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025966 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070025967 WDI_ASSERT(0);
25968 return WDI_STATUS_E_FAILURE;
25969 }
25970
25971 /*-----------------------------------------------------------------------
25972 Get message buffer
25973 -----------------------------------------------------------------------*/
25974 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
25975 sizeof(WDI_UpdateVHTOpMode),
25976 &pSendBuffer, &usDataOffset, &usSendSize))||
25977 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
25978 {
25979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25980 "Unable to get send buffer in update vht opMode req");
25981 WDI_ASSERT(0);
25982 return WDI_STATUS_E_FAILURE;
25983 }
25984
25985 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25986 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
25987
25988 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
25989 sizeof(WDI_UpdateVHTOpMode));
25990
25991 /*-------------------------------------------------------------------------
25992 Send Start Request to HAL
25993 -------------------------------------------------------------------------*/
25994 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25995 wdiVHTOpModeCb,
25996 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
25997
25998}
25999
26000WDI_Status
26001WDI_UpdateVHTOpModeReq
26002(
26003 WDI_UpdateVHTOpMode *pData,
26004 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
26005 void* pUserData
26006)
26007{
26008 WDI_EventInfoType wdiEventData;
26009
26010 /*------------------------------------------------------------------------
26011 Sanity Check
26012 ------------------------------------------------------------------------*/
26013 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26014 {
26015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26016 "WDI API call before module is initialized - Fail request");
26017
26018 return WDI_STATUS_E_NOT_ALLOWED;
26019 }
26020
26021 /*------------------------------------------------------------------------
26022 Fill in Event data and post to the Main FSM
26023 ------------------------------------------------------------------------*/
26024 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
26025 wdiEventData.pEventData = pData;
26026 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
26027 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
26028 wdiEventData.pUserData = pUserData;
26029
26030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26031 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
26032
26033 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26034
26035}
26036#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026037
26038/**
26039 @brief WDI_TransportChannelDebug -
26040 Display DXE Channel debugging information
26041 User may request to display DXE channel snapshot
26042 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026043
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080026044 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026045 @param enableStallDetect : Enable stall detect feature
26046 This feature will take effect to data performance
26047 Not integrate till fully verification
26048 @see
26049 @return none
26050*/
26051void WDI_TransportChannelDebug
26052(
26053 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026054 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026055)
26056{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026057 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026058 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070026059}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026060/**
26061 @brief WDI_SsrTimerCB
26062 Callback function for SSR timer, if this is called then the graceful
26063 shutdown for Riva did not happen.
26064
26065 @param pUserData : user data to timer
26066
26067 @see
26068 @return none
26069*/
26070void
26071WDI_SsrTimerCB
26072(
26073 void *pUserData
26074)
26075{
26076 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
26077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26078
26079 if (NULL == pWDICtx )
26080 {
26081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026082 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026083 WDI_ASSERT(0);
26084 return;
26085 }
26086 wpalRivaSubystemRestart();
26087
26088 return;
26089
26090}/*WDI_SsrTimerCB*/