blob: f549a20704625b135560a6a1f2c160a229cb0597 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/*===========================================================================
43
44 W L A N _ Q C T _ W D I. C
45
46 OVERVIEW:
47
Jeff Johnsone7245742012-09-05 17:12:55 -070048 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070049 Layer Interface.
50
Jeff Johnsone7245742012-09-05 17:12:55 -070051 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070052 MAC implementation that wishes to use the WLAN Device.
53
54 DEPENDENCIES:
55
56 Are listed for each API below.
57
58
59 Copyright (c) 2008 QUALCOMM Incorporated.
60 All Rights Reserved.
61 Qualcomm Confidential and Proprietary
62===========================================================================*/
63
64/*===========================================================================
65
66 EDIT HISTORY FOR FILE
67
68
69 This section contains comments describing changes made to the module.
70 Notice that changes are listed in reverse chronological order.
71
72
73 $Header$$DateTime$$Author$
74
75
76 when who what, where, why
77---------- --- --------------------------------------------------------
7810/05/11 hap Adding support for Keep Alive
792010-08-09 lti Created module
80
81===========================================================================*/
82
83/*----------------------------------------------------------------------------
84 * Include Files
85 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070086#include "wlan_qct_wdi.h"
87#include "wlan_qct_wdi_i.h"
88#include "wlan_qct_wdi_sta.h"
89#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070090
Jeff Johnsone7245742012-09-05 17:12:55 -070091#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070092
93#include "wlan_qct_pal_api.h"
94#include "wlan_qct_pal_type.h"
95#include "wlan_qct_pal_status.h"
96#include "wlan_qct_pal_sync.h"
97#include "wlan_qct_pal_msg.h"
98#include "wlan_qct_pal_trace.h"
99#include "wlan_qct_pal_packet.h"
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700102
103#include "wlan_hal_msg.h"
104
Jeff Johnson295189b2012-06-20 16:38:30 -0700105#include "pttMsgApi.h"
Jeff Johnson295189b2012-06-20 16:38:30 -0700106
107/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -0700108 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -0700109 ===========================================================================*/
110#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
111
Jeff Johnsone7245742012-09-05 17:12:55 -0700112#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
113#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
114
Yathishd8713192012-12-10 14:21:35 -0800115#define FEATURE_NOT_SUPPORTED 128
Jeff Johnson295189b2012-06-20 16:38:30 -0700116
117#ifdef FEATURE_WLAN_SCAN_PNO
118#define WDI_PNO_VERSION_MASK 0x8000
119#endif
120
121/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700122static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700123/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700124static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700125/* array of features supported. Need to add a new feature
126 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
127 */
128static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khannac0b992f2012-12-04 15:08:18 -0800129 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathishd8713192012-12-10 14:21:35 -0800130#ifdef WLAN_SOFTAP_VSTA_FEATURE
131 ,SAP32STA
132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800135#ifdef FEATURE_WLAN_TDLS
Yathishd8713192012-12-10 14:21:35 -0800136 ,TDLS
137#else
138 ,FEATURE_NOT_SUPPORTED
Mohit Khannac0b992f2012-12-04 15:08:18 -0800139#endif
Viral Modi9dc288a2012-12-10 13:09:21 -0800140 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN
Yathishd8713192012-12-10 14:21:35 -0800141#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
142 ,WLANACTIVE_OFFLOAD
143#else
144 ,FEATURE_NOT_SUPPORTED
145#endif
Mohit Khannac0b992f2012-12-04 15:08:18 -0800146 };
Jeff Johnson295189b2012-06-20 16:38:30 -0700147
148/*--------------------------------------------------------------------------
149 WLAN DAL State Machine
150 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700151WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700152{
153 /*WDI_INIT_ST*/
154 {{
155 WDI_MainStart, /*WDI_START_EVENT*/
156 NULL, /*WDI_STOP_EVENT*/
157 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
158 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
159 WDI_MainClose, /*WDI_CLOSE_EVENT*/
160 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
161 }},
162
163 /*WDI_STARTED_ST*/
164 {{
165 WDI_MainStartStarted, /*WDI_START_EVENT*/
166 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
167 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
168 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
169 NULL, /*WDI_CLOSE_EVENT*/
170 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
171 }},
172
173 /*WDI_STOPPED_ST*/
174 {{
175 WDI_MainStart, /*WDI_START_EVENT*/
176 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
177 NULL, /*WDI_REQUEST_EVENT*/
178 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
179 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700180 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700181 }},
182
183 /*WDI_BUSY_ST*/
184 {{
185 WDI_MainStartBusy, /*WDI_START_EVENT*/
186 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
187 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
188 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
189 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
190 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
191 }}
192};
193
Jeff Johnsone7245742012-09-05 17:12:55 -0700194/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700195 DAL Request Processing Array - the functions in this table will only be
196 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700197 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700198 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700199WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700200{
201 /*INIT*/
202 WDI_ProcessStartReq, /* WDI_START_REQ */
203 WDI_ProcessStopReq, /* WDI_STOP_REQ */
204 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
205
206 /*SCAN*/
207 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
208 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
209 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
210 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
211
212 /*ASSOCIATION*/
213 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
214 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
215 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
216 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
217 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
218
219 /* Security */
220 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
221 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
222 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
223 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
224
225 /* QoS and BA APIs */
226 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
227 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
228 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
229 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
230 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
231
232 /* Miscellaneous Control APIs */
233 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
234 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
235 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
236 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
237 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
238
239 /*BA APIs*/
240 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
241 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
242
243 /*Beacon processing APIs*/
244 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
245 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
246
247 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
248 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
249 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
250 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700251 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700252 /* PowerSave APIs */
253 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
254 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
255 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
256 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
257 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
258 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
259 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
260 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
261 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
262 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
263 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
264 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
265 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
266 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
267 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
268 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
269 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
270 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
271 /*NV Download APIs*/
272 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
273 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
274 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
275#ifdef WLAN_FEATURE_VOWIFI_11R
276 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
277#else
278 NULL,
279#endif /* WLAN_FEATURE_VOWIFI_11R */
280 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
281 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700282 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700283
284#ifdef FEATURE_OEM_DATA_SUPPORT
285 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
286#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700287 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700288#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700289 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700290
291 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700292
293#ifdef FEATURE_WLAN_SCAN_PNO
294 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
295 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
296 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
297#else
298 NULL,
299 NULL,
300 NULL,
301#endif /* FEATURE_WLAN_SCAN_PNO */
302
303 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700304
Jeff Johnson295189b2012-06-20 16:38:30 -0700305#ifdef WLAN_FEATURE_PACKET_FILTERING
306 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700307 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700308 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700309 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700310 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700311 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700312 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700313 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700314#else
315 NULL,
316 NULL,
317 NULL,
318 NULL,
319#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700320 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700321 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
322 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
323
324 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
325#ifdef FEATURE_WLAN_CCX
326 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
327#else
328 NULL,
329#endif
330
331#ifdef WLAN_FEATURE_GTK_OFFLOAD
332 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
333 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
334#else
335 NULL,
336 NULL,
337#endif // WLAN_FEATURE_GTK_OFFLOAD
338
339 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
340 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700341#ifdef WLAN_FEATURE_11AC
342 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800343#else
344 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700345#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800346#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
347 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
348#else
schangd82195a2013-03-13 18:41:24 -0700349 NULL,
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800350#endif
schangd82195a2013-03-13 18:41:24 -0700351 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
352 /*-------------------------------------------------------------------------
353 Indications
354 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700355 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800356 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Chet Lanctota96bb432013-03-18 10:26:30 -0700357#ifdef WLAN_FEATURE_11W
358 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
359#else
360 NULL,
361#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700362};
363
364
Jeff Johnsone7245742012-09-05 17:12:55 -0700365/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700366 DAL Request Processing Array - the functions in this table will only be
367 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700368 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700369 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700370WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700371{
372 /*INIT*/
373 WDI_ProcessStartRsp, /* WDI_START_RESP */
374 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
375 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
376
377 /*SCAN*/
378 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
379 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
380 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
381 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
382
383 /* ASSOCIATION*/
384 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
385 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
386 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
387 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
388 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
389
390 /* Security */
391 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
392 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
393 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
394 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
395
396 /* QoS and BA APIs */
397 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
398 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
399 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
400 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
401 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
402
403 /* Miscellaneous Control APIs */
404 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
405 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
406 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
407 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
408 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
409
410 /* BA APIs*/
411 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
412 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700413
Jeff Johnson295189b2012-06-20 16:38:30 -0700414 /* IBSS APIs*/
415 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
416 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
417
418 /*Soft AP APIs*/
419 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
420 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
421 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
422 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
423
424 /* PowerSave APIs */
425 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
426 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
427 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
428 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
429 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
430 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
431 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
432 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
433 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
434 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
435 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
436 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
437 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
438 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
439 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
440 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
441 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
442 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700443
Jeff Johnson295189b2012-06-20 16:38:30 -0700444
445 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
446
447 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
448 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
449#ifdef WLAN_FEATURE_VOWIFI_11R
450 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
451#else
452 NULL,
453#endif /* WLAN_FEATURE_VOWIFI_11R */
454 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
455 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700456#ifdef FEATURE_OEM_DATA_SUPPORT
457 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
458#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700459 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700460#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700461 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
462
Jeff Johnson295189b2012-06-20 16:38:30 -0700463 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700464
Jeff Johnson295189b2012-06-20 16:38:30 -0700465 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700466
Jeff Johnsone7245742012-09-05 17:12:55 -0700467 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
468
Jeff Johnson295189b2012-06-20 16:38:30 -0700469#ifdef FEATURE_WLAN_SCAN_PNO
470 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
471 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
472 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
473#else
474 NULL,
475 NULL,
476 NULL,
477#endif // FEATURE_WLAN_SCAN_PNO
478
479 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
480
481 /*---------------------------------------------------------------------
482 Indications
483 ---------------------------------------------------------------------*/
484#ifdef WLAN_FEATURE_PACKET_FILTERING
485 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700486 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700487 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700488 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700489 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700490 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700491 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700492 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700493#else
494 NULL,
495 NULL,
496 NULL,
497 NULL,
498#endif // WLAN_FEATURE_PACKET_FILTERING
499
500 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
501 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
502
503 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
504#ifdef FEATURE_WLAN_CCX
505 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
506#else
507 NULL,
508#endif
509
510#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700511 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
512 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700513#else
514 NULL,
515 NULL,
516#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700517 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
518 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700519#ifdef WLAN_FEATURE_11AC
520 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schangd82195a2013-03-13 18:41:24 -0700521#else
522 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700523#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800524#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
525 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
526#else
527 NULL,
528#endif
schangd82195a2013-03-13 18:41:24 -0700529 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700530
531 /*---------------------------------------------------------------------
532 Indications
533 ---------------------------------------------------------------------*/
534 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
535 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
536 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
537 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
538 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
539 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
540
541 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
542
543 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
544
Jeff Johnson295189b2012-06-20 16:38:30 -0700545 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700546
547#ifdef FEATURE_WLAN_SCAN_PNO
548 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
549#else
550 NULL,
551#endif // FEATURE_WLAN_SCAN_PNO
552
553#ifdef WLAN_WAKEUP_EVENTS
554 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
555#else // WLAN_WAKEUP_EVENTS
556 NULL,
557#endif // WLAN_WAKEUP_EVENTS
558
559 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modi9dc288a2012-12-10 13:09:21 -0800560
Viral Modi9dc288a2012-12-10 13:09:21 -0800561 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700562};
563
564
Jeff Johnsone7245742012-09-05 17:12:55 -0700565/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700566 WLAN DAL Global Control Block
567 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700568WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700569static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
570
Jeff Johnsone7245742012-09-05 17:12:55 -0700571const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700572
573/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700574WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700575void* WDI_GET_PAL_CTX( void )
576{
Jeff Johnsone7245742012-09-05 17:12:55 -0700577 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700578}/*WDI_GET_PAL_CTX*/
579
Jeff Johnsone7245742012-09-05 17:12:55 -0700580/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700581 Helper inline converters
582 ============================================================================*/
583/*Convert WDI driver type into HAL driver type*/
584WPT_STATIC WPT_INLINE WDI_Status
585WDI_HAL_2_WDI_STATUS
586(
587 eHalStatus halStatus
588);
589
590/*Convert WDI request type into HAL request type*/
591WPT_STATIC WPT_INLINE tHalHostMsgType
592WDI_2_HAL_REQ_TYPE
593(
594 WDI_RequestEnumType wdiReqType
595);
596
597/*Convert WDI response type into HAL response type*/
598WPT_STATIC WPT_INLINE WDI_ResponseEnumType
599HAL_2_WDI_RSP_TYPE
600(
601 tHalHostMsgType halMsg
602);
603
604/*Convert WDI driver type into HAL driver type*/
605WPT_STATIC WPT_INLINE tDriverType
606WDI_2_HAL_DRV_TYPE
607(
608 WDI_DriverType wdiDriverType
609);
610
611/*Convert WDI stop reason into HAL stop reason*/
612WPT_STATIC WPT_INLINE tHalStopType
613WDI_2_HAL_STOP_REASON
614(
615 WDI_StopType wdiStopType
616);
617
618/*Convert WDI scan mode type into HAL scan mode type*/
619WPT_STATIC WPT_INLINE eHalSysMode
620WDI_2_HAL_SCAN_MODE
621(
622 WDI_ScanMode wdiScanMode
623);
624
625/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700626WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700627WDI_2_HAL_SEC_CH_OFFSET
628(
629 WDI_HTSecondaryChannelOffset wdiSecChOffset
630);
631
632/*Convert WDI BSS type into HAL BSS type*/
633WPT_STATIC WPT_INLINE tSirBssType
634WDI_2_HAL_BSS_TYPE
635(
636 WDI_BssType wdiBSSType
637);
638
639/*Convert WDI NW type into HAL NW type*/
640WPT_STATIC WPT_INLINE tSirNwType
641WDI_2_HAL_NW_TYPE
642(
643 WDI_NwType wdiNWType
644);
645
646/*Convert WDI chanel bonding type into HAL cb type*/
647WPT_STATIC WPT_INLINE ePhyChanBondState
648WDI_2_HAL_CB_STATE
649(
650 WDI_PhyChanBondState wdiCbState
651);
652
653/*Convert WDI chanel bonding type into HAL cb type*/
654WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
655WDI_2_HAL_HT_OPER_MODE
656(
657 WDI_HTOperatingMode wdiHTOperMode
658);
659
660/*Convert WDI mimo PS type into HAL mimo PS type*/
661WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
662WDI_2_HAL_MIMO_PS
663(
664 WDI_HTMIMOPowerSaveState wdiHTOperMode
665);
666
667/*Convert WDI ENC type into HAL ENC type*/
668WPT_STATIC WPT_INLINE tAniEdType
669WDI_2_HAL_ENC_TYPE
670(
671 WDI_EncryptType wdiEncType
672);
673
674/*Convert WDI WEP type into HAL WEP type*/
675WPT_STATIC WPT_INLINE tAniWepType
676WDI_2_HAL_WEP_TYPE
677(
678 WDI_WepType wdiWEPType
679);
680
681/*Convert WDI Link State into HAL Link State*/
682WPT_STATIC WPT_INLINE tSirLinkState
683WDI_2_HAL_LINK_STATE
684(
685 WDI_LinkStateType wdiLinkState
686);
687
Jeff Johnsone7245742012-09-05 17:12:55 -0700688/*Translate a STA Context from WDI into HAL*/
689WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700690void
691WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -0700692(
Jeff Johnson295189b2012-06-20 16:38:30 -0700693 tConfigStaParams* phalConfigSta,
694 WDI_ConfigStaReqInfoType* pwdiConfigSta
695);
Jeff Johnsone7245742012-09-05 17:12:55 -0700696
697/*Translate a Rate set info from WDI into HAL*/
698WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -0700699WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -0700700(
Jeff Johnson295189b2012-06-20 16:38:30 -0700701 tSirMacRateSet* pHalRateSet,
702 WDI_RateSet* pwdiRateSet
703);
704
705/*Translate an EDCA Parameter Record from WDI into HAL*/
706WPT_STATIC WPT_INLINE void
707WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -0700708(
Jeff Johnson295189b2012-06-20 16:38:30 -0700709 tSirMacEdcaParamRecord* phalEdcaParam,
710 WDI_EdcaParamRecord* pWDIEdcaParam
711);
712
713/*Copy a management frame header from WDI fmt into HAL fmt*/
714WPT_STATIC WPT_INLINE void
715WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
716(
717 tSirMacMgmtHdr* pmacMgmtHdr,
718 WDI_MacMgmtHdr* pwdiMacMgmtHdr
719);
720
721/*Copy config bss parameters from WDI fmt into HAL fmt*/
722WPT_STATIC WPT_INLINE void
723WDI_CopyWDIConfigBSSToHALConfigBSS
724(
725 tConfigBssParams* phalConfigBSS,
726 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
727);
728
Jeff Johnsone7245742012-09-05 17:12:55 -0700729/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -0700730 pointed to by user data */
731WPT_STATIC WPT_INLINE void
732WDI_ExtractRequestCBFromEvent
733(
734 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -0700735 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -0700736 void** ppUserData
737);
738
739wpt_uint8
740WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -0700741(
Jeff Johnson295189b2012-06-20 16:38:30 -0700742 WDI_ControlBlockType* pWDICtx,
743 WDI_BSSSessionType** ppSession
744);
745
746void
747WDI_AddBcastSTAtoSTATable
748(
749 WDI_ControlBlockType* pWDICtx,
750 WDI_AddStaParams * staParams,
751 wpt_uint16 usBcastStaIdx
752);
753
754WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -0700755(
Jeff Johnson295189b2012-06-20 16:38:30 -0700756 WDI_ControlBlockType* pWDICtx,
757 WDI_EventInfoType* pEventData
758);
759
760void
761WDI_SetPowerStateCb
762(
763 wpt_status status,
764 unsigned int dxePhyAddr,
765 void *pContext
766);
767
768#define CASE_RETURN_STRING( str ) \
769 case ( ( str ) ): return( #str ); break \
770
771/**
772 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700773
774 @param wdiReqMsgId: WDI Message request Id
775
776 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700777 @return Result of the function call
778*/
779static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
780{
781 switch (wdiReqMsgId)
782 {
783 CASE_RETURN_STRING( WDI_START_REQ );
784 CASE_RETURN_STRING( WDI_STOP_REQ );
785 CASE_RETURN_STRING( WDI_CLOSE_REQ );
786 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
787 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
788 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
789 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
790 CASE_RETURN_STRING( WDI_JOIN_REQ );
791 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
792 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
793 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
794 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
795 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
796 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
797 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
798 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
799 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
800 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
801 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
802 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
803 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
804 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
805 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
806 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
807 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
808 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
809 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
810 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
811 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
812 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
813 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
814 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
815 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
816 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
817 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
818 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
819 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
820 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
821 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
822 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
823 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
824 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
825 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
826 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
827 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
828 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
829 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
830 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
831 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
832 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
833 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
834 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
835 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
836 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
837 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
838 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
839 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
840 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
841 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
842 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -0700843 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -0700844 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
845 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
846 #ifdef FEATURE_WLAN_SCAN_PNO
847 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
848 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
849 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
850 #endif
851 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
852 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
853 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
854 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
855 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
856 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
857 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
858 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
859 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -0800860 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800861 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctota96bb432013-03-18 10:26:30 -0700862#ifdef WLAN_FEATURE_11W
863 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
864#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700865 default:
866 return "Unknown WDI MessageId";
867 }
868}
869
870
871
872/**
873 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700874
875 @param wdiRespMsgId: WDI Message response Id
876
877 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700878 @return Result of the function call
879*/
880static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
881{
882 switch (wdiRespMsgId)
883 {
884 CASE_RETURN_STRING( WDI_START_RESP );
885 CASE_RETURN_STRING( WDI_STOP_RESP );
886 CASE_RETURN_STRING( WDI_CLOSE_RESP );
887 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
888 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
889 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
890 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
891 CASE_RETURN_STRING( WDI_JOIN_RESP );
892 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
893 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
894 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
895 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
896 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
897 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
898 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
899 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
900 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
901 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
902 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
903 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
904 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
905 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
906 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
907 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
908 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
909 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
910 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
911 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
912 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
913 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
914 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
915 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
916 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
917 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
918 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
919 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
920 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
921 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
922 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
923 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
924 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
925 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
926 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
927 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
928 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
929 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
930 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
931 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
932 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
933 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
934 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
935 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
936 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
937 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
938 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
939 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
940 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
941 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
942 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
943 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -0700944 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700945 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
946 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
947 #ifdef FEATURE_WLAN_SCAN_PNO
948 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
949 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
950 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
951 #endif
952 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
953 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
954 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
955 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
956 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
957 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
958 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
959 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowda2471d832013-01-25 13:33:11 -0800960 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -0700961 default:
962 return "Unknown WDI MessageId";
963 }
964}
965
966/**
967 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -0700968
969 @param halStatusId: HAL status Id
970
971 @see
Jeff Johnson295189b2012-06-20 16:38:30 -0700972 @return Result of the function call
973*/
974static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
975{
976 switch (halStatusId)
977 {
978 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
979 CASE_RETURN_STRING( PAL_STATUS_INVAL );
980 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
981 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
982 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
983 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
984 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
985 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
986 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
987 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
988 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
989 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
990 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
991 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
992 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
993 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
994 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
995 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
996 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
997 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
998 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
999 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1000 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1001 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1002 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1003 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1004 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1005 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1006 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1007 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1008 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1009 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1010 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1011 default:
1012 return "Unknown HAL status";
1013 }
1014}
1015
Jeff Johnsone7245742012-09-05 17:12:55 -07001016/*========================================================================
1017
Jeff Johnson295189b2012-06-20 16:38:30 -07001018 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001019
Jeff Johnson295189b2012-06-20 16:38:30 -07001020==========================================================================*/
1021
1022/**
1023 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001024
Jeff Johnson295189b2012-06-20 16:38:30 -07001025 DAL will allocate all the resources it needs. It will open PAL, it will also
1026 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001027 DXE/SMD or any other drivers that they need.
1028
Jeff Johnson295189b2012-06-20 16:38:30 -07001029 @param pOSContext: pointer to the OS context provided by the UMAC
1030 will be passed on to PAL on Open
1031 ppWDIGlobalCtx: output pointer of Global Context
1032 pWdiDevCapability: output pointer of device capability
1033
1034 @return Result of the function call
1035*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001036WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001037WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001038(
Jeff Johnson295189b2012-06-20 16:38:30 -07001039 void* pOSContext,
1040 void** ppWDIGlobalCtx,
1041 WDI_DeviceCapabilityType* pWdiDevCapability,
1042 unsigned int driverType
1043)
1044{
1045 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001046 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001047 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001048 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1050
1051 /*---------------------------------------------------------------------
1052 Sanity check
1053 ---------------------------------------------------------------------*/
1054 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1055 {
1056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1057 "Invalid input parameters in WDI_Init");
1058
Jeff Johnsone7245742012-09-05 17:12:55 -07001059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001060 }
1061
1062 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001063 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001064 ---------------------------------------------------------------------*/
1065 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1066 {
1067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1068 "WDI module already initialized - return");
1069
Jeff Johnsone7245742012-09-05 17:12:55 -07001070 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001071 }
1072
1073 /*Module is now initialized - this flag is to ensure the fact that multiple
1074 init will not happen on WDI
1075 !! - potential race does exist because read and set are not atomic,
1076 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001077 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001078
1079 /*Setup the control block */
1080 WDI_CleanCB(&gWDICb);
Jeff Johnsone7245742012-09-05 17:12:55 -07001081 gWDICb.pOSContext = pOSContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001082
1083 /*Setup the STA Table*/
1084 wdiStatus = WDI_STATableInit(&gWDICb);
1085 if ( WDI_STATUS_SUCCESS != wdiStatus )
1086 {
1087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1088 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001089 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001090 goto fail_STATableInit;
1091 }
1092
1093 /*------------------------------------------------------------------------
1094 Open the PAL
1095 ------------------------------------------------------------------------*/
1096 wptStatus = wpalOpen(&gWDICb.pPALContext, pOSContext);
1097 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1098 {
1099 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1100 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001101 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001102 goto fail_wpalOpen;
1103 }
1104
1105 /*Initialize main synchro mutex - it will be used to ensure integrity of
1106 the main WDI Control Block*/
1107 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1108 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1109 {
1110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1111 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001112 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001113 goto fail_mutex;
1114 }
1115
1116 /*Initialize the response timer - it will be used to time all messages
1117 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001118 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1119 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001120 &gWDICb);
1121 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1122 {
1123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1124 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001125 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001126 goto fail_timer;
1127 }
1128
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001129 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1130 WDI_SsrTimerCB,
1131 &gWDICb);
1132 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1133 {
1134 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1135 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001136 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001137 goto fail_timer2;
1138 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001139 /* Initialize the WDI Pending Request Queue*/
1140 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1141 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1142 {
1143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1144 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001145 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001146 goto fail_pend_queue;
1147 }
1148
1149 /*Init WDI Pending Assoc Id Queue */
1150 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
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 assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001155 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001156 goto fail_assoc_queue;
1157 }
1158
1159 /*Initialize the BSS sessions pending Queue */
1160 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1161 {
1162 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1163 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1164 {
1165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1166 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001167 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001168 goto fail_bss_queue;
1169 }
1170 }
1171
1172 /*Indicate the control block is sufficiently initialized for callbacks*/
1173 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1174
1175 /*------------------------------------------------------------------------
1176 Initialize the Data Path Utility Module
1177 ------------------------------------------------------------------------*/
1178 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1179 if ( WDI_STATUS_SUCCESS != wdiStatus )
1180 {
1181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1182 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001183 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001184 goto fail_dp_util_init;
1185 }
1186
1187 /* Init Set power state event */
1188 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001189 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001190 {
1191 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1192 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001193 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001194 goto fail_power_event;
1195 }
1196
1197 /* Init WCTS action event */
1198 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001199 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001200 {
1201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1202 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001203 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001204 goto fail_wcts_event;
1205 }
1206
1207 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001208 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001209 ------------------------------------------------------------------------*/
1210 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1211 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001212 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001213 wctsCBs.wctsRxMsgCBData = &gWDICb;
1214
Jeff Johnsone7245742012-09-05 17:12:55 -07001215 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001216 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001217 WDI_CT_CHANNEL_SIZE,
1218 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001219
1220 if ( NULL == gWDICb.wctsHandle )
1221 {
1222 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001223 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001224 goto fail_wcts_open;
1225 }
1226
1227 gWDICb.driverMode = (tDriverType)driverType;
1228 /* FTM mode not need to open Transport Driver */
1229 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001230 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001231 /*------------------------------------------------------------------------
1232 Open the Data Transport
1233 ------------------------------------------------------------------------*/
1234 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1235 {
1236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001237 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001238 goto fail_wdts_open;
1239 }
1240 }
1241
1242 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001243 gWDICb.uGlobalState = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07001244
1245 /*Send the context as a ptr to the global WDI Control Block*/
1246 *ppWDIGlobalCtx = &gWDICb;
1247
1248 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001249 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001250 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1251 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
1252 return WDI_STATUS_SUCCESS;
1253
1254 /* ERROR handlers
1255 Undo everything that completed successfully */
1256
1257 fail_wdts_open:
1258 {
1259 wpt_status eventStatus;
1260
1261 /* Closing WCTS in this scenario is tricky since it has to close
1262 the SMD channel and then we get notified asynchronously when
1263 the channel has been closed. So we take some of the logic from
1264 the "normal" close procedure in WDI_Close()
1265 */
1266
1267 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001268 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001269 {
1270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001271 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001272 }
1273
1274 WCTS_CloseTransport(gWDICb.wctsHandle);
1275
1276 /* Wait for WCTS to close the control transport. If we were able
1277 to reset the event flag, then we'll wait for the event,
1278 otherwise we'll wait for a maximum amount of time required for
1279 the channel to be closed */
1280 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1281 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001282 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001283 WDI_WCTS_ACTION_TIMEOUT);
1284 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1285 {
1286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001287 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001288 }
1289 }
1290 else
1291 {
1292 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1293 }
1294 }
1295 fail_wcts_open:
1296 wpalEventDelete(&gWDICb.wctsActionEvent);
1297 fail_wcts_event:
1298 wpalEventDelete(&gWDICb.setPowerStateEvent);
1299 fail_power_event:
1300 WDI_DP_UtilsExit(&gWDICb);
1301 fail_dp_util_init:
1302 gWDICb.magic = 0;
1303 fail_bss_queue:
1304 /* entries 0 thru i-1 were successfully initialized */
1305 while (0 < i)
1306 {
1307 i--;
1308 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1309 }
1310 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1311 fail_assoc_queue:
1312 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1313 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001314 wpalTimerDelete(&gWDICb.ssrTimer);
1315 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001316 wpalTimerDelete(&gWDICb.wptResponseTimer);
1317 fail_timer:
1318 wpalMutexDelete(&gWDICb.wptMutex);
1319 fail_mutex:
1320 wpalClose(gWDICb.pPALContext);
1321 fail_wpalOpen:
1322 WDI_STATableClose(&gWDICb);
1323 fail_STATableInit:
1324 gWDIInitialized = eWLAN_PAL_FALSE;
1325
1326 return WDI_STATUS_E_FAILURE;
1327
1328}/*WDI_Init*/;
1329
1330/**
1331 @brief WDI_Start will be called when the upper MAC is ready to
1332 commence operation with the WLAN Device. Upon the call
1333 of this API the WLAN DAL will pack and send a HAL Start
1334 message to the lower RIVA sub-system if the SMD channel
1335 has been fully opened and the RIVA subsystem is up.
1336
1337 If the RIVA sub-system is not yet up and running DAL
1338 will queue the request for Open and will wait for the
1339 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001340 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001341
1342 WDI_Init must have been called.
1343
Jeff Johnsone7245742012-09-05 17:12:55 -07001344 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001345 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001346
Jeff Johnson295189b2012-06-20 16:38:30 -07001347 wdiStartRspCb: callback for passing back the response of
1348 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001349
Jeff Johnson295189b2012-06-20 16:38:30 -07001350 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001351 callback
1352
Jeff Johnson295189b2012-06-20 16:38:30 -07001353 @see WDI_Start
1354 @return Result of the function call
1355*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001356WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001357WDI_Start
1358(
1359 WDI_StartReqParamsType* pwdiStartParams,
1360 WDI_StartRspCb wdiStartRspCb,
1361 void* pUserData
1362)
1363{
1364 WDI_EventInfoType wdiEventData;
1365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1366
1367 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001368 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001369 ------------------------------------------------------------------------*/
1370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1371 {
1372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1373 "WDI API call before module is initialized - Fail request");
1374
Jeff Johnsone7245742012-09-05 17:12:55 -07001375 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001376 }
1377
1378 /*------------------------------------------------------------------------
1379 Fill in Event data and post to the Main FSM
1380 ------------------------------------------------------------------------*/
1381 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001382 wdiEventData.pEventData = pwdiStartParams;
1383 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
1384 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001385 wdiEventData.pUserData = pUserData;
1386
1387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1388
1389}/*WDI_Start*/
1390
1391/**
1392 @brief WDI_Stop will be called when the upper MAC is ready to
1393 stop any operation with the WLAN Device. Upon the call
1394 of this API the WLAN DAL will pack and send a HAL Stop
1395 message to the lower RIVA sub-system if the DAL Core is
1396 in started state.
1397
1398 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07001399
1400 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001401
1402 WDI_Start must have been called.
1403
Jeff Johnsone7245742012-09-05 17:12:55 -07001404 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001405 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001406
Jeff Johnson295189b2012-06-20 16:38:30 -07001407 wdiStopRspCb: callback for passing back the response of
1408 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001409
Jeff Johnson295189b2012-06-20 16:38:30 -07001410 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001411 callback
1412
Jeff Johnson295189b2012-06-20 16:38:30 -07001413 @see WDI_Start
1414 @return Result of the function call
1415*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001416WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001417WDI_Stop
1418(
1419 WDI_StopReqParamsType* pwdiStopParams,
1420 WDI_StopRspCb wdiStopRspCb,
1421 void* pUserData
1422)
1423{
1424 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07001425 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1427
1428 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001429 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001430 ------------------------------------------------------------------------*/
1431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1432 {
1433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1434 "WDI API call before module is initialized - Fail request");
1435
Jeff Johnsone7245742012-09-05 17:12:55 -07001436 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001437 }
1438
Jeff Johnson43971f52012-07-17 12:26:56 -07001439 /*Access to the global state must be locked before cleaning */
1440 wpalMutexAcquire(&pWDICtx->wptMutex);
1441
1442 /*Clear all pending request*/
1443 WDI_ClearPendingRequests(pWDICtx);
1444
1445 /*We have completed cleaning unlock now*/
1446 wpalMutexRelease(&pWDICtx->wptMutex);
1447
Jeff Johnson295189b2012-06-20 16:38:30 -07001448 /* Free the global variables */
1449 wpalMemoryFree(gpHostWlanFeatCaps);
1450 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001451 gpHostWlanFeatCaps = NULL;
1452 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001453
1454 /*------------------------------------------------------------------------
1455 Fill in Event data and post to the Main FSM
1456 ------------------------------------------------------------------------*/
1457 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001458 wdiEventData.pEventData = pwdiStopParams;
1459 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
1460 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001461 wdiEventData.pUserData = pUserData;
1462
1463 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
1464
1465}/*WDI_Stop*/
1466
1467
1468
1469/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001470 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07001471 needs to interact with DAL. DAL will free its control
1472 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07001473
1474 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07001475
1476 WDI_Stop must have been called.
1477
1478 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07001479
Jeff Johnson295189b2012-06-20 16:38:30 -07001480 @see WDI_Stop
1481 @return Result of the function call
1482*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001483WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001484WDI_Close
1485(
1486 void
1487)
1488{
1489 wpt_uint8 i;
1490 WDI_EventInfoType wdiEventData;
1491 wpt_status wptStatus;
1492 wpt_status eventStatus;
1493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1494
1495 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001496 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001497 ------------------------------------------------------------------------*/
1498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1499 {
1500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1501 "WDI API call before module is initialized - Fail request");
1502
Jeff Johnsone7245742012-09-05 17:12:55 -07001503 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001504 }
1505
1506 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
1507 (the control transport will be closed by the FSM and we'll want
1508 to wait until that completes)*/
1509 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001510 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001511 {
1512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001513 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001514 /* fall through and try to finish closing via the FSM */
1515 }
1516
1517 /*------------------------------------------------------------------------
1518 Fill in Event data and post to the Main FSM
1519 ------------------------------------------------------------------------*/
1520 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001521 wdiEventData.pEventData = NULL;
1522 wdiEventData.uEventDataSize = 0;
1523 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001524 wdiEventData.pUserData = NULL;
1525
1526 gWDIInitialized = eWLAN_PAL_FALSE;
1527
1528 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
1529
1530 /*Wait for WCTS to close the control transport
1531 (but only if we were able to reset the event flag*/
1532 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1533 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001534 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001535 WDI_WCTS_ACTION_TIMEOUT);
1536 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1537 {
1538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001539 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001540 }
1541 }
1542
1543 /* Destroy the WCTS action event */
1544 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
1545 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1546 {
1547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1548 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07001549 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001550 }
1551
1552 /* Destroy the Set Power State event */
1553 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1554 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1555 {
1556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1557 "WDI Close failed to destroy an event");
1558
Jeff Johnsone7245742012-09-05 17:12:55 -07001559 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001560 }
1561
1562 /*------------------------------------------------------------------------
1563 Closes the Data Path Utility Module
1564 ------------------------------------------------------------------------*/
1565 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1566 {
1567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1568 "WDI Init failed to close the DP Util Module");
1569
Jeff Johnsone7245742012-09-05 17:12:55 -07001570 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07001571 }
1572
1573 /*destroy the BSS sessions pending Queue */
1574 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1575 {
1576 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1577 }
1578
1579 /* destroy the WDI Pending Assoc Id Request Queue*/
1580 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1581
1582 /* destroy the WDI Pending Request Queue*/
1583 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07001584
Jeff Johnson295189b2012-06-20 16:38:30 -07001585 /*destroy the response timer */
1586 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
1587
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001588 /*destroy the SSR timer */
1589 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
1590
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 /*invalidate the main synchro mutex */
1592 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1593 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1594 {
1595 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1596 "Failed to delete mutex %d", wptStatus);
1597 WDI_ASSERT(0);
1598 }
1599
1600 /*Clear control block. note that this will clear the "magic"
1601 which will inhibit all asynchronous callbacks*/
1602 WDI_CleanCB(&gWDICb);
1603
1604 return wptStatus;
1605
1606}/*WDI_Close*/
1607
1608/**
1609 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
1610 This will do most of the WDI stop & close
1611 operations without doing any handshake with Riva
1612
1613 This will also make sure that the control transport
1614 will NOT be closed.
1615
1616 This request will not be queued.
1617
1618
1619 WDI_Start must have been called.
1620
1621 @param closeTransport: Close control channel if this is set
1622
1623 @return Result of the function call
1624*/
1625WDI_Status
1626WDI_Shutdown
1627(
1628 wpt_boolean closeTransport
1629)
1630{
1631 WDI_EventInfoType wdiEventData;
1632 wpt_status wptStatus;
1633 int i = 0;
1634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1635
1636 /*------------------------------------------------------------------------
1637 Sanity Check
1638 ------------------------------------------------------------------------*/
1639 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1640 {
1641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1642 "WDI API call before module is initialized - Fail request");
1643
1644 return WDI_STATUS_E_NOT_ALLOWED;
1645 }
1646
1647 /*------------------------------------------------------------------------
1648 Fill in Event data and post to the Main FSM
1649 ------------------------------------------------------------------------*/
1650 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
1651 wdiEventData.pEventData = NULL;
1652 wdiEventData.uEventDataSize = 0;
1653
1654 /* Shutdown will not be queued, if the state is busy timer will be
1655 * stopped & this message will be processed.*/
1656 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
1657 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1658 {
1659 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001660 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001661 }
1662 /* Destroy the Set Power State event */
1663 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
1664 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1665 {
1666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1667 "WDI Close failed to destroy an event");
1668
1669 WDI_ASSERT(0);
1670 }
1671 /*------------------------------------------------------------------------
1672 Closes the Data Path Utility Module
1673 ------------------------------------------------------------------------*/
1674 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
1675 {
1676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1677 "WDI Init failed to close the DP Util Module");
1678
1679 WDI_ASSERT(0);
1680 }
1681 if ( closeTransport )
1682 {
1683 /* Close control transport, called from module unload */
1684 WCTS_CloseTransport(gWDICb.wctsHandle);
1685 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001686 else
1687 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07001688 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07001689 the pending messages in the transport queue */
1690 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
1691 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001692 /*destroy the BSS sessions pending Queue */
1693 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1694 {
1695 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1696 }
1697
1698 /* destroy the WDI Pending Assoc Id Request Queue*/
1699 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1700 /* destroy the WDI Pending Request Queue*/
1701 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1702 /*destroy the response timer */
1703 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001704 /*destroy the SSR timer */
1705 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07001706
1707 /*invalidate the main synchro mutex */
1708 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
1709 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1710 {
1711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001712 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001713 WDI_ASSERT(0);
1714 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07001715 /* Free the global variables */
1716 wpalMemoryFree(gpHostWlanFeatCaps);
1717 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07001718 gpHostWlanFeatCaps = NULL;
1719 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07001720 /*Clear control block. note that this will clear the "magic"
1721 which will inhibit all asynchronous callbacks*/
1722 WDI_CleanCB(&gWDICb);
1723 return wptStatus;
1724
1725}/*WDI_Shutdown*/
1726
1727
Jeff Johnsone7245742012-09-05 17:12:55 -07001728/*========================================================================
1729
Jeff Johnson295189b2012-06-20 16:38:30 -07001730 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001731
Jeff Johnson295189b2012-06-20 16:38:30 -07001732==========================================================================*/
1733
1734/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001735 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07001736 the WLAN Device to get ready for a scan procedure. Upon
1737 the call of this API the WLAN DAL will pack and send a
1738 HAL Init Scan request message to the lower RIVA
1739 sub-system if DAL is in state STARTED.
1740
1741 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001742 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001743
1744 WDI_Start must have been called.
1745
1746 @param wdiInitScanParams: the init scan parameters as specified
1747 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001748
Jeff Johnson295189b2012-06-20 16:38:30 -07001749 wdiInitScanRspCb: callback for passing back the response
1750 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001751
Jeff Johnson295189b2012-06-20 16:38:30 -07001752 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001753 callback
1754
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 @see WDI_Start
1756 @return Result of the function call
1757*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001758WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001759WDI_InitScanReq
1760(
1761 WDI_InitScanReqParamsType* pwdiInitScanParams,
1762 WDI_InitScanRspCb wdiInitScanRspCb,
1763 void* pUserData
1764)
1765{
1766 WDI_EventInfoType wdiEventData;
1767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1768
1769 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001770 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001771 ------------------------------------------------------------------------*/
1772 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1773 {
1774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1775 "WDI API call before module is initialized - Fail request");
1776
Jeff Johnsone7245742012-09-05 17:12:55 -07001777 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001778 }
1779
1780 /*------------------------------------------------------------------------
1781 Fill in Event data and post to the Main FSM
1782 ------------------------------------------------------------------------*/
1783 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001784 wdiEventData.pEventData = pwdiInitScanParams;
1785 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
1786 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001787 wdiEventData.pUserData = pUserData;
1788
1789 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1790
1791}/*WDI_InitScanReq*/
1792
1793/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001794 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07001795 wishes to change the Scan channel on the WLAN Device.
1796 Upon the call of this API the WLAN DAL will pack and
1797 send a HAL Start Scan request message to the lower RIVA
1798 sub-system if DAL is in state STARTED.
1799
1800 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001801 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001802
1803 WDI_InitScanReq must have been called.
1804
Jeff Johnsone7245742012-09-05 17:12:55 -07001805 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001806 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001807
Jeff Johnson295189b2012-06-20 16:38:30 -07001808 wdiStartScanRspCb: callback for passing back the
1809 response of the start scan operation received from the
1810 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001811
Jeff Johnson295189b2012-06-20 16:38:30 -07001812 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001813 callback
1814
Jeff Johnson295189b2012-06-20 16:38:30 -07001815 @see WDI_InitScanReq
1816 @return Result of the function call
1817*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001818WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001819WDI_StartScanReq
1820(
1821 WDI_StartScanReqParamsType* pwdiStartScanParams,
1822 WDI_StartScanRspCb wdiStartScanRspCb,
1823 void* pUserData
1824)
1825{
1826 WDI_EventInfoType wdiEventData;
1827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1828
1829 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001830 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001831 ------------------------------------------------------------------------*/
1832 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1833 {
1834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1835 "WDI API call before module is initialized - Fail request");
1836
Jeff Johnsone7245742012-09-05 17:12:55 -07001837 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001838 }
1839
1840 /*------------------------------------------------------------------------
1841 Fill in Event data and post to the Main FSM
1842 ------------------------------------------------------------------------*/
1843 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001844 wdiEventData.pEventData = pwdiStartScanParams;
1845 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
1846 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001847 wdiEventData.pUserData = pUserData;
1848
1849 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1850
1851}/*WDI_StartScanReq*/
1852
1853
1854/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001855 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07001856 wants to end scanning for a particular channel that it
1857 had set before by calling Scan Start on the WLAN Device.
1858 Upon the call of this API the WLAN DAL will pack and
1859 send a HAL End Scan request message to the lower RIVA
1860 sub-system if DAL is in state STARTED.
1861
1862 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001863 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001864
1865 WDI_StartScanReq must have been called.
1866
Jeff Johnsone7245742012-09-05 17:12:55 -07001867 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07001868 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001869
Jeff Johnson295189b2012-06-20 16:38:30 -07001870 wdiEndScanRspCb: callback for passing back the response
1871 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001872
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001874 callback
1875
Jeff Johnson295189b2012-06-20 16:38:30 -07001876 @see WDI_StartScanReq
1877 @return Result of the function call
1878*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001879WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001880WDI_EndScanReq
1881(
1882 WDI_EndScanReqParamsType* pwdiEndScanParams,
1883 WDI_EndScanRspCb wdiEndScanRspCb,
1884 void* pUserData
1885)
1886{
1887 WDI_EventInfoType wdiEventData;
1888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1889
1890 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001891 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001892 ------------------------------------------------------------------------*/
1893 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1894 {
1895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1896 "WDI API call before module is initialized - Fail request");
1897
Jeff Johnsone7245742012-09-05 17:12:55 -07001898 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001899 }
1900
1901 /*------------------------------------------------------------------------
1902 Fill in Event data and post to the Main FSM
1903 ------------------------------------------------------------------------*/
1904 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001905 wdiEventData.pEventData = pwdiEndScanParams;
1906 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
1907 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001908 wdiEventData.pUserData = pUserData;
1909
1910 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1911
1912}/*WDI_EndScanReq*/
1913
1914
1915/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001916 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07001917 completed the scan process on the WLAN Device. Upon the
1918 call of this API the WLAN DAL will pack and send a HAL
1919 Finish Scan Request request message to the lower RIVA
1920 sub-system if DAL is in state STARTED.
1921
1922 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001923 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001924
1925 WDI_InitScanReq must have been called.
1926
Jeff Johnsone7245742012-09-05 17:12:55 -07001927 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07001928 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001929
Jeff Johnson295189b2012-06-20 16:38:30 -07001930 wdiFinishScanRspCb: callback for passing back the
1931 response of the finish scan operation received from the
1932 device
Jeff Johnsone7245742012-09-05 17:12:55 -07001933
Jeff Johnson295189b2012-06-20 16:38:30 -07001934 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001935 callback
1936
Jeff Johnson295189b2012-06-20 16:38:30 -07001937 @see WDI_InitScanReq
1938 @return Result of the function call
1939*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001940WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001941WDI_FinishScanReq
1942(
1943 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
1944 WDI_FinishScanRspCb wdiFinishScanRspCb,
1945 void* pUserData
1946)
1947{
1948 WDI_EventInfoType wdiEventData;
1949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
1950
1951 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001952 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07001953 ------------------------------------------------------------------------*/
1954 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1955 {
1956 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1957 "WDI API call before module is initialized - Fail request");
1958
Jeff Johnsone7245742012-09-05 17:12:55 -07001959 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07001960 }
1961
1962 /*------------------------------------------------------------------------
1963 Fill in Event data and post to the Main FSM
1964 ------------------------------------------------------------------------*/
1965 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07001966 wdiEventData.pEventData = pwdiFinishScanParams;
1967 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
1968 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001969 wdiEventData.pUserData = pUserData;
1970
1971 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
1972
1973}/*WDI_FinishScanReq*/
1974
Jeff Johnsone7245742012-09-05 17:12:55 -07001975/*========================================================================
1976
Jeff Johnson295189b2012-06-20 16:38:30 -07001977 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001978
Jeff Johnson295189b2012-06-20 16:38:30 -07001979==========================================================================*/
1980
1981/**
Jeff Johnsone7245742012-09-05 17:12:55 -07001982 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07001983 to start an association procedure to a BSS. Upon the
1984 call of this API the WLAN DAL will pack and send a HAL
1985 Join request message to the lower RIVA sub-system if
1986 DAL is in state STARTED.
1987
1988 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07001989 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07001990
1991 WDI_Start must have been called.
1992
Jeff Johnsone7245742012-09-05 17:12:55 -07001993 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001994 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001995
Jeff Johnson295189b2012-06-20 16:38:30 -07001996 wdiJoinRspCb: callback for passing back the response of
1997 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001998
Jeff Johnson295189b2012-06-20 16:38:30 -07001999 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002000 callback
2001
Jeff Johnson295189b2012-06-20 16:38:30 -07002002 @see WDI_Start
2003 @return Result of the function call
2004*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002005WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002006WDI_JoinReq
2007(
2008 WDI_JoinReqParamsType* pwdiJoinParams,
2009 WDI_JoinRspCb wdiJoinRspCb,
2010 void* pUserData
2011)
2012{
2013 WDI_EventInfoType wdiEventData;
2014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2015
2016 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002017 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002018 ------------------------------------------------------------------------*/
2019 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2020 {
2021 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2022 "WDI API call before module is initialized - Fail request");
2023
Jeff Johnsone7245742012-09-05 17:12:55 -07002024 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002025 }
2026
2027 /*------------------------------------------------------------------------
2028 Fill in Event data and post to the Main FSM
2029 ------------------------------------------------------------------------*/
2030 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002031 wdiEventData.pEventData = pwdiJoinParams;
2032 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2033 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002034 wdiEventData.pUserData = pUserData;
2035
2036 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2037
2038}/*WDI_JoinReq*/
2039
2040/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002041 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002042 wishes to configure the newly acquired or in process of
2043 being acquired BSS to the HW . Upon the call of this API
2044 the WLAN DAL will pack and send a HAL Config BSS request
2045 message to the lower RIVA sub-system if DAL is in state
2046 STARTED.
2047
2048 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002049 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002050
2051 WDI_JoinReq must have been called.
2052
Jeff Johnsone7245742012-09-05 17:12:55 -07002053 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002054 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002055
Jeff Johnson295189b2012-06-20 16:38:30 -07002056 wdiConfigBSSRspCb: callback for passing back the
2057 response of the config BSS operation received from the
2058 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002059
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002061 callback
2062
Jeff Johnson295189b2012-06-20 16:38:30 -07002063 @see WDI_JoinReq
2064 @return Result of the function call
2065*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002066WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002067WDI_ConfigBSSReq
2068(
2069 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2070 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2071 void* pUserData
2072)
2073{
2074 WDI_EventInfoType wdiEventData;
2075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2076
2077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002079 ------------------------------------------------------------------------*/
2080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2081 {
2082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2083 "WDI API call before module is initialized - Fail request");
2084
Jeff Johnsone7245742012-09-05 17:12:55 -07002085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002086 }
2087
2088 /*------------------------------------------------------------------------
2089 Fill in Event data and post to the Main FSM
2090 ------------------------------------------------------------------------*/
2091 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002092 wdiEventData.pEventData = pwdiConfigBSSParams;
2093 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2094 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002095 wdiEventData.pUserData = pUserData;
2096
2097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2098
2099}/*WDI_ConfigBSSReq*/
2100
2101/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002102 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002103 disassociating from the BSS and wishes to notify HW.
2104 Upon the call of this API the WLAN DAL will pack and
2105 send a HAL Del BSS request message to the lower RIVA
2106 sub-system if DAL is in state STARTED.
2107
2108 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002109 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002110
2111 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2112
Jeff Johnsone7245742012-09-05 17:12:55 -07002113 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002114 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002115
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 wdiDelBSSRspCb: callback for passing back the response
2117 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002118
Jeff Johnson295189b2012-06-20 16:38:30 -07002119 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002120 callback
2121
2122 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 @return Result of the function call
2124*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002125WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002126WDI_DelBSSReq
2127(
2128 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2129 WDI_DelBSSRspCb wdiDelBSSRspCb,
2130 void* pUserData
2131)
2132{
2133 WDI_EventInfoType wdiEventData;
2134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2135
2136 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002137 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002138 ------------------------------------------------------------------------*/
2139 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2140 {
2141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2142 "WDI API call before module is initialized - Fail request");
2143
Jeff Johnsone7245742012-09-05 17:12:55 -07002144 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002145 }
2146
2147 /*------------------------------------------------------------------------
2148 Fill in Event data and post to the Main FSM
2149 ------------------------------------------------------------------------*/
2150 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002151 wdiEventData.pEventData = pwdiDelBSSParams;
2152 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2153 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002154 wdiEventData.pUserData = pUserData;
2155
2156 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2157
2158}/*WDI_DelBSSReq*/
2159
2160/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002161 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002162 associated to a BSS and wishes to configure HW for
2163 associated state. Upon the call of this API the WLAN DAL
2164 will pack and send a HAL Post Assoc request message to
2165 the lower RIVA sub-system if DAL is in state STARTED.
2166
2167 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002168 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002169
2170 WDI_JoinReq must have been called.
2171
2172 @param wdiPostAssocReqParams: the assoc parameters as specified
2173 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002174
Jeff Johnson295189b2012-06-20 16:38:30 -07002175 wdiPostAssocRspCb: callback for passing back the
2176 response of the post assoc operation received from the
2177 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002178
Jeff Johnson295189b2012-06-20 16:38:30 -07002179 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002180 callback
2181
Jeff Johnson295189b2012-06-20 16:38:30 -07002182 @see WDI_JoinReq
2183 @return Result of the function call
2184*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002185WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002186WDI_PostAssocReq
2187(
2188 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2189 WDI_PostAssocRspCb wdiPostAssocRspCb,
2190 void* pUserData
2191)
2192{
2193 WDI_EventInfoType wdiEventData;
2194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2195
2196 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002197 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002198 ------------------------------------------------------------------------*/
2199 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2200 {
2201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2202 "WDI API call before module is initialized - Fail request");
2203
Jeff Johnsone7245742012-09-05 17:12:55 -07002204 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002205 }
2206
2207 /*------------------------------------------------------------------------
2208 Fill in Event data and post to the Main FSM
2209 ------------------------------------------------------------------------*/
2210 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002211 wdiEventData.pEventData = pwdiPostAssocReqParams;
2212 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2213 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002214 wdiEventData.pUserData = pUserData;
2215
2216 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2217
2218}/*WDI_PostAssocReq*/
2219
2220/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002221 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002222 association with another STA has ended and the station
2223 must be deleted from HW. Upon the call of this API the
2224 WLAN DAL will pack and send a HAL Del STA request
2225 message to the lower RIVA sub-system if DAL is in state
2226 STARTED.
2227
2228 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002229 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002230
2231 WDI_PostAssocReq must have been called.
2232
Jeff Johnsone7245742012-09-05 17:12:55 -07002233 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002235
Jeff Johnson295189b2012-06-20 16:38:30 -07002236 wdiDelSTARspCb: callback for passing back the response
2237 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002238
Jeff Johnson295189b2012-06-20 16:38:30 -07002239 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002240 callback
2241
Jeff Johnson295189b2012-06-20 16:38:30 -07002242 @see WDI_PostAssocReq
2243 @return Result of the function call
2244*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002245WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002246WDI_DelSTAReq
2247(
2248 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2249 WDI_DelSTARspCb wdiDelSTARspCb,
2250 void* pUserData
2251)
2252{
2253 WDI_EventInfoType wdiEventData;
2254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2255
2256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002257 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002258 ------------------------------------------------------------------------*/
2259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2260 {
2261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2262 "WDI API call before module is initialized - Fail request");
2263
Jeff Johnsone7245742012-09-05 17:12:55 -07002264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002265 }
2266
2267 /*------------------------------------------------------------------------
2268 Fill in Event data and post to the Main FSM
2269 ------------------------------------------------------------------------*/
2270 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002271 wdiEventData.pEventData = pwdiDelSTAParams;
2272 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2273 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002274 wdiEventData.pUserData = pUserData;
2275
2276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2277
2278}/*WDI_DelSTAReq*/
2279
Jeff Johnsone7245742012-09-05 17:12:55 -07002280/*========================================================================
2281
Jeff Johnson295189b2012-06-20 16:38:30 -07002282 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002283
Jeff Johnson295189b2012-06-20 16:38:30 -07002284==========================================================================*/
2285
2286/**
2287 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2288 install a BSS encryption key on the HW. Upon the call of this
2289 API the WLAN DAL will pack and send a Set BSS Key request
2290 message to the lower RIVA sub-system if DAL is in state
2291 STARTED.
2292
2293 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002294 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002295
2296 WDI_PostAssocReq must have been called.
2297
Jeff Johnsone7245742012-09-05 17:12:55 -07002298 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002299 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002300
Jeff Johnson295189b2012-06-20 16:38:30 -07002301 wdiSetBSSKeyRspCb: callback for passing back the
2302 response of the set BSS Key operation received from the
2303 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002304
Jeff Johnson295189b2012-06-20 16:38:30 -07002305 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002306 callback
2307
Jeff Johnson295189b2012-06-20 16:38:30 -07002308 @see WDI_PostAssocReq
2309 @return Result of the function call
2310*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002311WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002312WDI_SetBSSKeyReq
2313(
2314 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2315 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2316 void* pUserData
2317)
2318{
2319 WDI_EventInfoType wdiEventData;
2320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2321
2322 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002323 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002324 ------------------------------------------------------------------------*/
2325 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2326 {
2327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2328 "WDI API call before module is initialized - Fail request");
2329
Jeff Johnsone7245742012-09-05 17:12:55 -07002330 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002331 }
2332
2333 /*------------------------------------------------------------------------
2334 Fill in Event data and post to the Main FSM
2335 ------------------------------------------------------------------------*/
2336 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002337 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2338 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2339 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002340 wdiEventData.pUserData = pUserData;
2341
2342 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2343
2344}/*WDI_SetBSSKeyReq*/
2345
2346/**
2347 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2348 uninstall a BSS key from HW. Upon the call of this API the
2349 WLAN DAL will pack and send a HAL Remove BSS Key request
2350 message to the lower RIVA sub-system if DAL is in state
2351 STARTED.
2352
2353 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002354 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002355
2356 WDI_SetBSSKeyReq must have been called.
2357
Jeff Johnsone7245742012-09-05 17:12:55 -07002358 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002359 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002360
Jeff Johnson295189b2012-06-20 16:38:30 -07002361 wdiRemoveBSSKeyRspCb: callback for passing back the
2362 response of the remove BSS key operation received from
2363 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002364
Jeff Johnson295189b2012-06-20 16:38:30 -07002365 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002366 callback
2367
Jeff Johnson295189b2012-06-20 16:38:30 -07002368 @see WDI_SetBSSKeyReq
2369 @return Result of the function call
2370*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002371WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002372WDI_RemoveBSSKeyReq
2373(
2374 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
2375 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
2376 void* pUserData
2377)
2378{
2379 WDI_EventInfoType wdiEventData;
2380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2381
2382 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002383 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002384 ------------------------------------------------------------------------*/
2385 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2386 {
2387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2388 "WDI API call before module is initialized - Fail request");
2389
Jeff Johnsone7245742012-09-05 17:12:55 -07002390 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002391 }
2392
2393 /*------------------------------------------------------------------------
2394 Fill in Event data and post to the Main FSM
2395 ------------------------------------------------------------------------*/
2396 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002397 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
2398 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
2399 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002400 wdiEventData.pUserData = pUserData;
2401
2402 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2403
2404}/*WDI_RemoveBSSKeyReq*/
2405
2406
2407/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002408 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002409 ready to install a STA(ast) encryption key in HW. Upon
2410 the call of this API the WLAN DAL will pack and send a
2411 HAL Set STA Key request message to the lower RIVA
2412 sub-system if DAL is in state STARTED.
2413
2414 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002415 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002416
2417 WDI_PostAssocReq must have been called.
2418
Jeff Johnsone7245742012-09-05 17:12:55 -07002419 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002420 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002421
Jeff Johnson295189b2012-06-20 16:38:30 -07002422 wdiSetSTAKeyRspCb: callback for passing back the
2423 response of the set STA key operation received from the
2424 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002425
Jeff Johnson295189b2012-06-20 16:38:30 -07002426 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002427 callback
2428
Jeff Johnson295189b2012-06-20 16:38:30 -07002429 @see WDI_PostAssocReq
2430 @return Result of the function call
2431*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002432WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002433WDI_SetSTAKeyReq
2434(
2435 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
2436 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
2437 void* pUserData
2438)
2439{
2440 WDI_EventInfoType wdiEventData;
2441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2442
2443 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002444 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002445 ------------------------------------------------------------------------*/
2446 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2447 {
2448 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2449 "WDI API call before module is initialized - Fail request");
2450
Jeff Johnsone7245742012-09-05 17:12:55 -07002451 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002452 }
2453
2454 /*------------------------------------------------------------------------
2455 Fill in Event data and post to the Main FSM
2456 ------------------------------------------------------------------------*/
2457 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 wdiEventData.pEventData = pwdiSetSTAKeyParams;
2459 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
2460 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002461 wdiEventData.pUserData = pUserData;
2462
2463 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2464
2465}/*WDI_SetSTAKeyReq*/
2466
2467
2468/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002469 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002470 wants to uninstall a previously set STA key in HW. Upon
2471 the call of this API the WLAN DAL will pack and send a
2472 HAL Remove STA Key request message to the lower RIVA
2473 sub-system if DAL is in state STARTED.
2474
2475 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002476 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002477
2478 WDI_SetSTAKeyReq must have been called.
2479
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002482
Jeff Johnson295189b2012-06-20 16:38:30 -07002483 wdiRemoveSTAKeyRspCb: callback for passing back the
2484 response of the remove STA key operation received from
2485 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002486
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002488 callback
2489
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 @see WDI_SetSTAKeyReq
2491 @return Result of the function call
2492*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002493WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002494WDI_RemoveSTAKeyReq
2495(
2496 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
2497 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
2498 void* pUserData
2499)
2500{
2501 WDI_EventInfoType wdiEventData;
2502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2503
2504 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002506 ------------------------------------------------------------------------*/
2507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2508 {
2509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2510 "WDI API call before module is initialized - Fail request");
2511
Jeff Johnsone7245742012-09-05 17:12:55 -07002512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002513 }
2514
2515 /*------------------------------------------------------------------------
2516 Fill in Event data and post to the Main FSM
2517 ------------------------------------------------------------------------*/
2518 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002519 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
2520 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
2521 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 wdiEventData.pUserData = pUserData;
2523
2524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2525
2526}/*WDI_RemoveSTAKeyReq*/
2527
2528
2529/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002530 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002531 wants to install a STA Bcast encryption key on the HW.
2532 Upon the call of this API the WLAN DAL will pack and
2533 send a HAL Start request message to the lower RIVA
2534 sub-system if DAL is in state STARTED.
2535
2536 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002537 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002538
2539 WDI_PostAssocReq must have been called.
2540
Jeff Johnsone7245742012-09-05 17:12:55 -07002541 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002542 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002543
Jeff Johnson295189b2012-06-20 16:38:30 -07002544 wdiSetSTABcastKeyRspCb: callback for passing back the
2545 response of the set BSS Key operation received from the
2546 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002547
Jeff Johnson295189b2012-06-20 16:38:30 -07002548 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002549 callback
2550
Jeff Johnson295189b2012-06-20 16:38:30 -07002551 @see WDI_PostAssocReq
2552 @return Result of the function call
2553*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002554WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002555WDI_SetSTABcastKeyReq
2556(
2557 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
2558 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
2559 void* pUserData
2560)
2561
2562{
2563 WDI_EventInfoType wdiEventData;
2564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2565
2566 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002567 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002568 ------------------------------------------------------------------------*/
2569 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2570 {
2571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2572 "WDI API call before module is initialized - Fail request");
2573
Jeff Johnsone7245742012-09-05 17:12:55 -07002574 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002575 }
2576
2577 /*------------------------------------------------------------------------
2578 Fill in Event data and post to the Main FSM
2579 ------------------------------------------------------------------------*/
2580 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002581 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
2582 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
2583 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002584 wdiEventData.pUserData = pUserData;
2585
2586 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2587
2588}/*WDI_SetSTABcastKeyReq*/
2589
2590/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002591 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002592 MAC wants to uninstall a STA Bcast key from HW. Upon the
2593 call of this API the WLAN DAL will pack and send a HAL
2594 Remove STA Bcast Key request message to the lower RIVA
2595 sub-system if DAL is in state STARTED.
2596
2597 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002598 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002599
2600 WDI_SetSTABcastKeyReq must have been called.
2601
Jeff Johnsone7245742012-09-05 17:12:55 -07002602 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002603 parameters as specified by the Device
2604 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002605
Jeff Johnson295189b2012-06-20 16:38:30 -07002606 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2607 response of the remove STA Bcast key operation received
2608 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002609
Jeff Johnson295189b2012-06-20 16:38:30 -07002610 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002611 callback
2612
Jeff Johnson295189b2012-06-20 16:38:30 -07002613 @see WDI_SetSTABcastKeyReq
2614 @return Result of the function call
2615*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002616WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002617WDI_RemoveSTABcastKeyReq
2618(
2619 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
2620 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
2621 void* pUserData
2622)
2623{
2624 WDI_EventInfoType wdiEventData;
2625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2626
2627 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002628 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002629 ------------------------------------------------------------------------*/
2630 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2631 {
2632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2633 "WDI API call before module is initialized - Fail request");
2634
Jeff Johnsone7245742012-09-05 17:12:55 -07002635 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002636 }
2637
2638 /*------------------------------------------------------------------------
2639 Fill in Event data and post to the Main FSM
2640 ------------------------------------------------------------------------*/
2641 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002642 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
2643 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
2644 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 wdiEventData.pUserData = pUserData;
2646
2647 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2648
2649}/*WDI_RemoveSTABcastKeyReq*/
2650
2651/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002652 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07002653 MAC wants to set Max Tx Power to HW. Upon the
2654 call of this API the WLAN DAL will pack and send a HAL
2655 Remove STA Bcast Key request message to the lower RIVA
2656 sub-system if DAL is in state STARTED.
2657
2658 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002659 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002660
2661 WDI_SetSTABcastKeyReq must have been called.
2662
Jeff Johnsone7245742012-09-05 17:12:55 -07002663 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07002664 parameters as specified by the Device
2665 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002666
Jeff Johnson295189b2012-06-20 16:38:30 -07002667 wdiRemoveSTABcastKeyRspCb: callback for passing back the
2668 response of the remove STA Bcast key operation received
2669 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002670
Jeff Johnson295189b2012-06-20 16:38:30 -07002671 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002672 callback
2673
Jeff Johnson295189b2012-06-20 16:38:30 -07002674 @see WDI_SetMaxTxPowerReq
2675 @return Result of the function call
2676*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002677WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002678WDI_SetMaxTxPowerReq
2679(
2680 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
2681 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
2682 void* pUserData
2683)
2684{
2685 WDI_EventInfoType wdiEventData;
2686 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2687
2688 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002689 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002690 ------------------------------------------------------------------------*/
2691 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2692 {
2693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2694 "WDI API call before module is initialized - Fail request");
2695
Jeff Johnsone7245742012-09-05 17:12:55 -07002696 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 }
2698
2699 /*------------------------------------------------------------------------
2700 Fill in Event data and post to the Main FSM
2701 ------------------------------------------------------------------------*/
2702 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002703 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
2704 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
2705 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 wdiEventData.pUserData = pUserData;
2707
2708 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2709}
2710
schangd82195a2013-03-13 18:41:24 -07002711/**
2712 @brief WDI_SetTxPowerReq will be called when the upper
2713 MAC wants to set Tx Power to HW.
2714 In state BUSY this request will be queued. Request won't
2715 be allowed in any other state.
2716
2717
2718 @param pwdiSetTxPowerParams: set TS Power parameters
2719 BSSID and target TX Power with dbm included
2720
2721 wdiReqStatusCb: callback for passing back the response
2722
2723 pUserData: user data will be passed back with the
2724 callback
2725
2726 @return Result of the function call
2727*/
2728WDI_Status
2729WDI_SetTxPowerReq
2730(
2731 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
2732 WDA_SetTxPowerRspCb wdiReqStatusCb,
2733 void* pUserData
2734)
2735{
2736 WDI_EventInfoType wdiEventData;
2737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2738
2739 /*------------------------------------------------------------------------
2740 Sanity Check
2741 ------------------------------------------------------------------------*/
2742 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2743 {
2744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2745 "WDI API call before module is initialized - Fail request");
2746
2747 return WDI_STATUS_E_NOT_ALLOWED;
2748 }
2749
2750 /*------------------------------------------------------------------------
2751 Fill in Event data and post to the Main FSM
2752 ------------------------------------------------------------------------*/
2753 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
2754 wdiEventData.pEventData = pwdiSetTxPowerParams;
2755 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
2756 wdiEventData.pCBfnc = wdiReqStatusCb;
2757 wdiEventData.pUserData = pUserData;
2758
2759 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2760}
2761
Jeff Johnson295189b2012-06-20 16:38:30 -07002762#ifdef FEATURE_WLAN_CCX
2763WDI_Status
2764WDI_TSMStatsReq
2765(
2766 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
2767 WDI_TsmRspCb wdiReqStatusCb,
2768 void* pUserData
2769)
2770{
2771 WDI_EventInfoType wdiEventData;
2772 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07002773 /*------------------------------------------------------------------------
2774 Sanity Check
2775 ------------------------------------------------------------------------*/
2776 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2777 {
2778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2779 "WDI API call before module is initialized - Fail request");
2780
2781 return WDI_STATUS_E_NOT_ALLOWED;
2782 }
2783
2784 /*------------------------------------------------------------------------
2785 Fill in Event data and post to the Main FSM
2786 ------------------------------------------------------------------------*/
2787 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
2788 wdiEventData.pEventData = pwdiTsmReqParams;
2789 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
2790 wdiEventData.pCBfnc = wdiReqStatusCb;
2791 wdiEventData.pUserData = pUserData;
2792
2793 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2794
2795}
2796#endif
2797
2798/*========================================================================
2799
2800 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002801
Jeff Johnson295189b2012-06-20 16:38:30 -07002802==========================================================================*/
2803
2804/**
2805 @brief WDI_AddTSReq will be called when the upper MAC to inform
2806 the device of a successful add TSpec negotiation. HW
2807 needs to receive the TSpec Info from the UMAC in order
2808 to configure properly the QoS data traffic. Upon the
2809 call of this API the WLAN DAL will pack and send a HAL
2810 Add TS request message to the lower RIVA sub-system if
2811 DAL is in state STARTED.
2812
2813 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002814 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002815
2816 WDI_PostAssocReq must have been called.
2817
2818 @param wdiAddTsReqParams: the add TS parameters as specified by
2819 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002820
Jeff Johnson295189b2012-06-20 16:38:30 -07002821 wdiAddTsRspCb: callback for passing back the response of
2822 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002823
Jeff Johnson295189b2012-06-20 16:38:30 -07002824 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 callback
2826
Jeff Johnson295189b2012-06-20 16:38:30 -07002827 @see WDI_PostAssocReq
2828 @return Result of the function call
2829*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002830WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002831WDI_AddTSReq
2832(
2833 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
2834 WDI_AddTsRspCb wdiAddTsRspCb,
2835 void* pUserData
2836)
2837{
2838 WDI_EventInfoType wdiEventData;
2839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2840
2841 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 ------------------------------------------------------------------------*/
2844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2845 {
2846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2847 "WDI API call before module is initialized - Fail request");
2848
Jeff Johnsone7245742012-09-05 17:12:55 -07002849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002850 }
2851
2852 /*------------------------------------------------------------------------
2853 Fill in Event data and post to the Main FSM
2854 ------------------------------------------------------------------------*/
2855 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002856 wdiEventData.pEventData = pwdiAddTsReqParams;
2857 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
2858 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002859 wdiEventData.pUserData = pUserData;
2860
2861 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2862
2863}/*WDI_AddTSReq*/
2864
2865
2866
2867/**
2868 @brief WDI_DelTSReq will be called when the upper MAC has ended
2869 admission on a specific AC. This is to inform HW that
2870 QoS traffic parameters must be rest. Upon the call of
2871 this API the WLAN DAL will pack and send a HAL Del TS
2872 request message to the lower RIVA sub-system if DAL is
2873 in state STARTED.
2874
2875 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002876 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002877
2878 WDI_AddTSReq must have been called.
2879
2880 @param wdiDelTsReqParams: the del TS parameters as specified by
2881 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002882
Jeff Johnson295189b2012-06-20 16:38:30 -07002883 wdiDelTsRspCb: callback for passing back the response of
2884 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002885
Jeff Johnson295189b2012-06-20 16:38:30 -07002886 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002887 callback
2888
Jeff Johnson295189b2012-06-20 16:38:30 -07002889 @see WDI_AddTSReq
2890 @return Result of the function call
2891*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002892WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002893WDI_DelTSReq
2894(
2895 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
2896 WDI_DelTsRspCb wdiDelTsRspCb,
2897 void* pUserData
2898)
2899{
2900 WDI_EventInfoType wdiEventData;
2901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2902
2903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002904 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002905 ------------------------------------------------------------------------*/
2906 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2907 {
2908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2909 "WDI API call before module is initialized - Fail request");
2910
Jeff Johnsone7245742012-09-05 17:12:55 -07002911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002912 }
2913
2914 /*------------------------------------------------------------------------
2915 Fill in Event data and post to the Main FSM
2916 ------------------------------------------------------------------------*/
2917 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002918 wdiEventData.pEventData = pwdiDelTsReqParams;
2919 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
2920 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002921 wdiEventData.pUserData = pUserData;
2922
2923 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2924
2925}/*WDI_DelTSReq*/
2926
2927
2928
2929/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002930 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002931 wishes to update the EDCA parameters used by HW for QoS
2932 data traffic. Upon the call of this API the WLAN DAL
2933 will pack and send a HAL Update EDCA Params request
2934 message to the lower RIVA sub-system if DAL is in state
2935 STARTED.
2936
2937 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002938 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002939
2940 WDI_PostAssocReq must have been called.
2941
Jeff Johnsone7245742012-09-05 17:12:55 -07002942 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002943 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002944
Jeff Johnson295189b2012-06-20 16:38:30 -07002945 wdiUpdateEDCAParamsRspCb: callback for passing back the
2946 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002947
Jeff Johnson295189b2012-06-20 16:38:30 -07002948 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002949 callback
2950
Jeff Johnson295189b2012-06-20 16:38:30 -07002951 @see WDI_PostAssocReq
2952 @return Result of the function call
2953*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002954WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002955WDI_UpdateEDCAParams
2956(
2957 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
2958 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
2959 void* pUserData
2960)
2961{
2962 WDI_EventInfoType wdiEventData;
2963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2964
2965 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002966 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002967 ------------------------------------------------------------------------*/
2968 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2969 {
2970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2971 "WDI API call before module is initialized - Fail request");
2972
Jeff Johnsone7245742012-09-05 17:12:55 -07002973 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002974 }
2975
2976 /*------------------------------------------------------------------------
2977 Fill in Event data and post to the Main FSM
2978 ------------------------------------------------------------------------*/
2979 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002980 wdiEventData.pEventData = pwdiUpdateEDCAParams;
2981 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
2982 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002983 wdiEventData.pUserData = pUserData;
2984
2985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2986
2987}/*WDI_UpdateEDCAParams*/
2988
2989
2990/**
2991 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
2992 successfully a BA session and needs to notify the HW for
2993 the appropriate settings to take place. Upon the call of
2994 this API the WLAN DAL will pack and send a HAL Add BA
2995 request message to the lower RIVA sub-system if DAL is
2996 in state STARTED.
2997
2998 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002999 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003000
3001 WDI_PostAssocReq must have been called.
3002
3003 @param wdiAddBAReqParams: the add BA parameters as specified by
3004 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003005
Jeff Johnson295189b2012-06-20 16:38:30 -07003006 wdiAddBARspCb: callback for passing back the response of
3007 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003008
Jeff Johnson295189b2012-06-20 16:38:30 -07003009 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003010 callback
3011
Jeff Johnson295189b2012-06-20 16:38:30 -07003012 @see WDI_PostAssocReq
3013 @return Result of the function call
3014*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003015WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003016WDI_AddBASessionReq
3017(
3018 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3019 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3020 void* pUserData
3021)
3022{
3023 WDI_EventInfoType wdiEventData;
3024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3025
3026 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003027 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003028 ------------------------------------------------------------------------*/
3029 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3030 {
3031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3032 "WDI API call before module is initialized - Fail request");
3033
Jeff Johnsone7245742012-09-05 17:12:55 -07003034 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003035 }
3036
3037 /*------------------------------------------------------------------------
3038 Fill in Event data and post to the Main FSM
3039 ------------------------------------------------------------------------*/
3040 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003041 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3042 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3043 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 wdiEventData.pUserData = pUserData;
3045
3046 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3047
3048}/*WDI_AddBASessionReq*/
3049
3050/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003051 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003052 inform HW that it has deleted a previously created BA
3053 session. Upon the call of this API the WLAN DAL will
3054 pack and send a HAL Del BA request message to the lower
3055 RIVA sub-system if DAL is in state STARTED.
3056
3057 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003058 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003059
3060 WDI_AddBAReq must have been called.
3061
3062 @param wdiDelBAReqParams: the del BA parameters as specified by
3063 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003064
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 wdiDelBARspCb: callback for passing back the response of
3066 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003067
Jeff Johnson295189b2012-06-20 16:38:30 -07003068 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003069 callback
3070
Jeff Johnson295189b2012-06-20 16:38:30 -07003071 @see WDI_AddBAReq
3072 @return Result of the function call
3073*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003074WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003075WDI_DelBAReq
3076(
3077 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3078 WDI_DelBARspCb wdiDelBARspCb,
3079 void* pUserData
3080)
3081{
3082 WDI_EventInfoType wdiEventData;
3083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3084
3085 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003086 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003087 ------------------------------------------------------------------------*/
3088 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3089 {
3090 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3091 "WDI API call before module is initialized - Fail request");
3092
Jeff Johnsone7245742012-09-05 17:12:55 -07003093 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003094 }
3095
3096 /*------------------------------------------------------------------------
3097 Fill in Event data and post to the Main FSM
3098 ------------------------------------------------------------------------*/
3099 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003100 wdiEventData.pEventData = pwdiDelBAReqParams;
3101 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3102 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003103 wdiEventData.pUserData = pUserData;
3104
3105 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3106
3107}/*WDI_DelBAReq*/
3108
Jeff Johnsone7245742012-09-05 17:12:55 -07003109/*========================================================================
3110
Jeff Johnson295189b2012-06-20 16:38:30 -07003111 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003112
Jeff Johnson295189b2012-06-20 16:38:30 -07003113==========================================================================*/
3114
3115/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003116 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003117 wants to set the power save related configurations of
3118 the WLAN Device. Upon the call of this API the WLAN DAL
3119 will pack and send a HAL Update CFG request message to
3120 the lower RIVA sub-system if DAL is in state STARTED.
3121
3122 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003123 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003124
3125 WDI_Start must have been called.
3126
Jeff Johnsone7245742012-09-05 17:12:55 -07003127 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003128 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003129
Jeff Johnson295189b2012-06-20 16:38:30 -07003130 wdiSetPwrSaveCfgCb: callback for passing back the
3131 response of the set power save cfg operation received
3132 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003133
Jeff Johnson295189b2012-06-20 16:38:30 -07003134 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003135 callback
3136
Jeff Johnson295189b2012-06-20 16:38:30 -07003137 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003138 @return Result of the function call
3139*/
3140WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003141WDI_SetPwrSaveCfgReq
3142(
3143 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3144 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3145 void* pUserData
3146)
3147{
3148 WDI_EventInfoType wdiEventData;
3149 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3150
3151 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003152 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003153 ------------------------------------------------------------------------*/
3154 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3155 {
3156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3157 "WDI API call before module is initialized - Fail request");
3158
Jeff Johnsone7245742012-09-05 17:12:55 -07003159 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003160 }
3161
3162 /*------------------------------------------------------------------------
3163 Fill in Event data and post to the Main FSM
3164 ------------------------------------------------------------------------*/
3165 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003166 wdiEventData.pEventData = pwdiPowerSaveCfg;
3167 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3168 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003169 wdiEventData.pUserData = pUserData;
3170
3171 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3172
3173}/*WDI_SetPwrSaveCfgReq*/
3174
3175/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003176 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003177 request the device to get into IMPS power state. Upon
3178 the call of this API the WLAN DAL will send a HAL Enter
3179 IMPS request message to the lower RIVA sub-system if DAL
3180 is in state STARTED.
3181
3182 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003183 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003184
Jeff Johnsone7245742012-09-05 17:12:55 -07003185
3186 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 response of the Enter IMPS operation received from the
3188 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003189
Jeff Johnson295189b2012-06-20 16:38:30 -07003190 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003191 callback
3192
Jeff Johnson295189b2012-06-20 16:38:30 -07003193 @see WDI_Start
3194 @return Result of the function call
3195*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003196WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003197WDI_EnterImpsReq
3198(
3199 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3200 void* pUserData
3201)
3202{
3203 WDI_EventInfoType wdiEventData;
3204 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3205
3206 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003207 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003208 ------------------------------------------------------------------------*/
3209 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3210 {
3211 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3212 "WDI API call before module is initialized - Fail request");
3213
Jeff Johnsone7245742012-09-05 17:12:55 -07003214 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003215 }
3216
3217 /*------------------------------------------------------------------------
3218 Fill in Event data and post to the Main FSM
3219 ------------------------------------------------------------------------*/
3220 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003221 wdiEventData.pEventData = NULL;
3222 wdiEventData.uEventDataSize = 0;
3223 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003224 wdiEventData.pUserData = pUserData;
3225
3226 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3227
3228}/*WDI_EnterImpsReq*/
3229
3230/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003231 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003232 request the device to get out of IMPS power state. Upon
3233 the call of this API the WLAN DAL will send a HAL Exit
3234 IMPS request message to the lower RIVA sub-system if DAL
3235 is in state STARTED.
3236
3237 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003238 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003239
Jeff Johnson295189b2012-06-20 16:38:30 -07003240
Jeff Johnsone7245742012-09-05 17:12:55 -07003241
3242 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003243 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003244
Jeff Johnson295189b2012-06-20 16:38:30 -07003245 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003246 callback
3247
Jeff Johnson295189b2012-06-20 16:38:30 -07003248 @see WDI_Start
3249 @return Result of the function call
3250*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003251WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003252WDI_ExitImpsReq
3253(
3254 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3255 void* pUserData
3256)
3257{
3258 WDI_EventInfoType wdiEventData;
3259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3260
3261 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003262 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003263 ------------------------------------------------------------------------*/
3264 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3265 {
3266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3267 "WDI API call before module is initialized - Fail request");
3268
Jeff Johnsone7245742012-09-05 17:12:55 -07003269 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003270 }
3271
3272 /*------------------------------------------------------------------------
3273 Fill in Event data and post to the Main FSM
3274 ------------------------------------------------------------------------*/
3275 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003276 wdiEventData.pEventData = NULL;
3277 wdiEventData.uEventDataSize = 0;
3278 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003279 wdiEventData.pUserData = pUserData;
3280
3281 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3282
3283}/*WDI_ExitImpsReq*/
3284
3285/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003286 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003287 request the device to get into BMPS power state. Upon
3288 the call of this API the WLAN DAL will pack and send a
3289 HAL Enter BMPS request message to the lower RIVA
3290 sub-system if DAL is in state STARTED.
3291
3292 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003293 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003294
3295 WDI_PostAssocReq must have been called.
3296
Jeff Johnsone7245742012-09-05 17:12:55 -07003297 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003298 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003299
Jeff Johnson295189b2012-06-20 16:38:30 -07003300 wdiEnterBmpsRspCb: callback for passing back the
3301 response of the Enter BMPS operation received from the
3302 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003303
Jeff Johnson295189b2012-06-20 16:38:30 -07003304 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003305 callback
3306
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 @see WDI_PostAssocReq
3308 @return Result of the function call
3309*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003310WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003311WDI_EnterBmpsReq
3312(
3313 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
3314 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
3315 void* pUserData
3316)
3317{
3318 WDI_EventInfoType wdiEventData;
3319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3320
3321 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003322 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003323 ------------------------------------------------------------------------*/
3324 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3325 {
3326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3327 "WDI API call before module is initialized - Fail request");
3328
Jeff Johnsone7245742012-09-05 17:12:55 -07003329 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003330 }
3331
3332 /*------------------------------------------------------------------------
3333 Fill in Event data and post to the Main FSM
3334 ------------------------------------------------------------------------*/
3335 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003336 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
3337 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
3338 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003339 wdiEventData.pUserData = pUserData;
3340
3341 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3342
3343}/*WDI_EnterBmpsReq*/
3344
3345/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003346 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003347 request the device to get out of BMPS power state. Upon
3348 the call of this API the WLAN DAL will pack and send a
3349 HAL Exit BMPS request message to the lower RIVA
3350 sub-system if DAL is in state STARTED.
3351
3352 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003353 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003354
3355 WDI_PostAssocReq must have been called.
3356
Jeff Johnsone7245742012-09-05 17:12:55 -07003357 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003358 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003359
Jeff Johnson295189b2012-06-20 16:38:30 -07003360 wdiExitBmpsRspCb: callback for passing back the response
3361 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003362
Jeff Johnson295189b2012-06-20 16:38:30 -07003363 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003364 callback
3365
Jeff Johnson295189b2012-06-20 16:38:30 -07003366 @see WDI_PostAssocReq
3367 @return Result of the function call
3368*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003369WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003370WDI_ExitBmpsReq
3371(
3372 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
3373 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
3374 void* pUserData
3375)
3376{
3377 WDI_EventInfoType wdiEventData;
3378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3379
3380 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003381 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003382 ------------------------------------------------------------------------*/
3383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3384 {
3385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3386 "WDI API call before module is initialized - Fail request");
3387
Jeff Johnsone7245742012-09-05 17:12:55 -07003388 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003389 }
3390
3391 /*------------------------------------------------------------------------
3392 Fill in Event data and post to the Main FSM
3393 ------------------------------------------------------------------------*/
3394 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003395 wdiEventData.pEventData = pwdiExitBmpsReqParams;
3396 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
3397 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003398 wdiEventData.pUserData = pUserData;
3399
3400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3401
3402}/*WDI_ExitBmpsReq*/
3403
3404/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003405 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003406 request the device to get into UAPSD power state. Upon
3407 the call of this API the WLAN DAL will pack and send a
3408 HAL Enter UAPSD request message to the lower RIVA
3409 sub-system if DAL is in state STARTED.
3410
3411 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003412 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003413
3414 WDI_PostAssocReq must have been called.
3415 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07003416
3417 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003418 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003419
Jeff Johnson295189b2012-06-20 16:38:30 -07003420 wdiEnterUapsdRspCb: callback for passing back the
3421 response of the Enter UAPSD operation received from the
3422 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003423
Jeff Johnson295189b2012-06-20 16:38:30 -07003424 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003425 callback
3426
Jeff Johnson295189b2012-06-20 16:38:30 -07003427 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
3428 @return Result of the function call
3429*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003430WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003431WDI_EnterUapsdReq
3432(
3433 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
3434 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
3435 void* pUserData
3436)
3437{
3438 WDI_EventInfoType wdiEventData;
3439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3440
3441 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003442 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003443 ------------------------------------------------------------------------*/
3444 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3445 {
3446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3447 "WDI API call before module is initialized - Fail request");
3448
Jeff Johnsone7245742012-09-05 17:12:55 -07003449 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003450 }
3451
3452 /*------------------------------------------------------------------------
3453 Fill in Event data and post to the Main FSM
3454 ------------------------------------------------------------------------*/
3455 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003456 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
3457 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
3458 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003459 wdiEventData.pUserData = pUserData;
3460
3461 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3462
3463}/*WDI_EnterUapsdReq*/
3464
3465/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003466 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003467 request the device to get out of UAPSD power state. Upon
3468 the call of this API the WLAN DAL will send a HAL Exit
3469 UAPSD request message to the lower RIVA sub-system if
3470 DAL is in state STARTED.
3471
3472 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003473 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003474
3475 WDI_PostAssocReq must have been called.
3476
Jeff Johnsone7245742012-09-05 17:12:55 -07003477 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003478 response of the Exit UAPSD operation received from the
3479 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003480
Jeff Johnson295189b2012-06-20 16:38:30 -07003481 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003482 callback
3483
Jeff Johnson295189b2012-06-20 16:38:30 -07003484 @see WDI_PostAssocReq
3485 @return Result of the function call
3486*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003487WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003488WDI_ExitUapsdReq
3489(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003490 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003491 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
3492 void* pUserData
3493)
3494{
3495 WDI_EventInfoType wdiEventData;
3496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3497
3498 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003499 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003500 ------------------------------------------------------------------------*/
3501 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3502 {
3503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3504 "WDI API call before module is initialized - Fail request");
3505
Jeff Johnsone7245742012-09-05 17:12:55 -07003506 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003507 }
3508
3509 /*------------------------------------------------------------------------
3510 Fill in Event data and post to the Main FSM
3511 ------------------------------------------------------------------------*/
3512 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07003513 wdiEventData.pEventData = pwdiExitUapsdReqParams;
3514 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003515 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 wdiEventData.pUserData = pUserData;
3517
3518 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3519
3520}/*WDI_ExitUapsdReq*/
3521
3522/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003523 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003524 MAC wants to set the UAPSD related configurations
3525 of an associated STA (while acting as an AP) to the WLAN
3526 Device. Upon the call of this API the WLAN DAL will pack
3527 and send a HAL Update UAPSD params request message to
3528 the lower RIVA sub-system if DAL is in state STARTED.
3529
3530 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003531 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003532
3533 WDI_ConfigBSSReq must have been called.
3534
Jeff Johnsone7245742012-09-05 17:12:55 -07003535 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003537
Jeff Johnson295189b2012-06-20 16:38:30 -07003538 wdiUpdateUapsdParamsCb: callback for passing back the
3539 response of the update UAPSD params operation received
3540 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003541
Jeff Johnson295189b2012-06-20 16:38:30 -07003542 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003543 callback
3544
Jeff Johnson295189b2012-06-20 16:38:30 -07003545 @see WDI_ConfigBSSReq
3546 @return Result of the function call
3547*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003548WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003549WDI_UpdateUapsdParamsReq
3550(
3551 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
3552 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
3553 void* pUserData
3554)
3555{
3556 WDI_EventInfoType wdiEventData;
3557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3558
3559 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003560 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003561 ------------------------------------------------------------------------*/
3562 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3563 {
3564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3565 "WDI API call before module is initialized - Fail request");
3566
Jeff Johnsone7245742012-09-05 17:12:55 -07003567 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003568 }
3569
3570 /*------------------------------------------------------------------------
3571 Fill in Event data and post to the Main FSM
3572 ------------------------------------------------------------------------*/
3573 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003574 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003575 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003576 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003577 wdiEventData.pUserData = pUserData;
3578
3579 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3580
3581}/*WDI_UpdateUapsdParamsReq*/
3582
3583/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003584 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003585 MAC wants to set the UAPSD related configurations before
3586 requesting for enter UAPSD power state to the WLAN
3587 Device. Upon the call of this API the WLAN DAL will pack
3588 and send a HAL Set UAPSD params request message to
3589 the lower RIVA sub-system if DAL is in state STARTED.
3590
3591 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003592 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003593
3594 WDI_PostAssocReq must have been called.
3595
3596 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3597 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003598
Jeff Johnson295189b2012-06-20 16:38:30 -07003599 wdiSetUapsdAcParamsCb: callback for passing back the
3600 response of the set UAPSD params operation received from
3601 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003602
Jeff Johnson295189b2012-06-20 16:38:30 -07003603 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003604 callback
3605
Jeff Johnson295189b2012-06-20 16:38:30 -07003606 @see WDI_PostAssocReq
3607 @return Result of the function call
3608*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003609WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003610WDI_SetUapsdAcParamsReq
3611(
3612 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
3613 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
3614 void* pUserData
3615)
3616{
3617 WDI_EventInfoType wdiEventData;
3618 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3619
3620 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003621 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003622 ------------------------------------------------------------------------*/
3623 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3624 {
3625 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3626 "WDI API call before module is initialized - Fail request");
3627
Jeff Johnsone7245742012-09-05 17:12:55 -07003628 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003629 }
3630
3631 /*------------------------------------------------------------------------
3632 Fill in Event data and post to the Main FSM
3633 ------------------------------------------------------------------------*/
3634 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003635 wdiEventData.pEventData = pwdiUapsdInfo;
3636 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
3637 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003638 wdiEventData.pUserData = pUserData;
3639
3640 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3641
3642}/*WDI_SetUapsdAcParamsReq*/
3643
3644/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003645 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003646 MAC wants to set/reset the RXP filters for received pkts
3647 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
3648 and send a HAL configure RXP filter request message to
3649 the lower RIVA sub-system.
3650
3651 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003652 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003653
Jeff Johnsone7245742012-09-05 17:12:55 -07003654
3655 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07003656 filter as specified by the Device
3657 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003658
Jeff Johnson295189b2012-06-20 16:38:30 -07003659 wdiConfigureRxpFilterCb: callback for passing back the
3660 response of the configure RXP filter operation received
3661 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003662
Jeff Johnson295189b2012-06-20 16:38:30 -07003663 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003664 callback
3665
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 @return Result of the function call
3667*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003668WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003669WDI_ConfigureRxpFilterReq
3670(
3671 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
3672 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
3673 void* pUserData
3674)
3675{
3676 WDI_EventInfoType wdiEventData;
3677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3678
3679 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003680 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003681 ------------------------------------------------------------------------*/
3682 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3683 {
3684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3685 "WDI API call before module is initialized - Fail request");
3686
Jeff Johnsone7245742012-09-05 17:12:55 -07003687 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003688 }
3689
3690 /*------------------------------------------------------------------------
3691 Fill in Event data and post to the Main FSM
3692 ------------------------------------------------------------------------*/
3693 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003694 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
3695 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
3696 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003697 wdiEventData.pUserData = pUserData;
3698
3699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3700}/*WDI_ConfigureRxpFilterReq*/
3701
3702/**
3703 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
3704 wants to set the beacon filters while in power save.
3705 Upon the call of this API the WLAN DAL will pack and
3706 send a Beacon filter request message to the
3707 lower RIVA sub-system.
3708
3709 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003710 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003711
Jeff Johnsone7245742012-09-05 17:12:55 -07003712
3713 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003714 filter as specified by the Device
3715 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003716
Jeff Johnson295189b2012-06-20 16:38:30 -07003717 wdiBeaconFilterCb: callback for passing back the
3718 response of the set beacon filter operation received
3719 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003720
Jeff Johnson295189b2012-06-20 16:38:30 -07003721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003722 callback
3723
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 @return Result of the function call
3725*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003727WDI_SetBeaconFilterReq
3728(
3729 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3730 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
3731 void* pUserData
3732)
3733{
3734 WDI_EventInfoType wdiEventData;
3735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3736
3737 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003738 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003739 ------------------------------------------------------------------------*/
3740 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3741 {
3742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3743 "WDI API call before module is initialized - Fail request");
3744
Jeff Johnsone7245742012-09-05 17:12:55 -07003745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003746 }
3747
3748 /*------------------------------------------------------------------------
3749 Fill in Event data and post to the Main FSM
3750 ------------------------------------------------------------------------*/
3751 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003752 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003753 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003754 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003755 wdiEventData.pUserData = pUserData;
3756
3757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3758}/*WDI_SetBeaconFilterReq*/
3759
3760/**
3761 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
3762 wants to remove the beacon filter for particular IE
3763 while in power save. Upon the call of this API the WLAN
3764 DAL will pack and send a remove Beacon filter request
3765 message to the lower RIVA sub-system.
3766
3767 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003768 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003769
Jeff Johnsone7245742012-09-05 17:12:55 -07003770
3771 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07003772 filter as specified by the Device
3773 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003774
Jeff Johnson295189b2012-06-20 16:38:30 -07003775 wdiBeaconFilterCb: callback for passing back the
3776 response of the remove beacon filter operation received
3777 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003778
Jeff Johnson295189b2012-06-20 16:38:30 -07003779 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003780 callback
3781
Jeff Johnson295189b2012-06-20 16:38:30 -07003782 @return Result of the function call
3783*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003784WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003785WDI_RemBeaconFilterReq
3786(
3787 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
3788 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
3789 void* pUserData
3790)
3791{
3792 WDI_EventInfoType wdiEventData;
3793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3794
3795 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003796 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003797 ------------------------------------------------------------------------*/
3798 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3799 {
3800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3801 "WDI API call before module is initialized - Fail request");
3802
Jeff Johnsone7245742012-09-05 17:12:55 -07003803 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003804 }
3805
3806 /*------------------------------------------------------------------------
3807 Fill in Event data and post to the Main FSM
3808 ------------------------------------------------------------------------*/
3809 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003810 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003811 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003812 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003813 wdiEventData.pUserData = pUserData;
3814
3815 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3816}/*WDI_RemBeaconFilterReq*/
3817
3818/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003820 MAC wants to set the RSSI thresholds related
3821 configurations while in power save. Upon the call of
3822 this API the WLAN DAL will pack and send a HAL Set RSSI
3823 thresholds request message to the lower RIVA
3824 sub-system if DAL is in state STARTED.
3825
3826 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003827 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003828
3829 WDI_PostAssocReq must have been called.
3830
3831 @param pwdiUapsdInfo: the UAPSD parameters as specified by
3832 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003833
Jeff Johnson295189b2012-06-20 16:38:30 -07003834 wdiSetUapsdAcParamsCb: callback for passing back the
3835 response of the set UAPSD params operation received from
3836 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003837
Jeff Johnson295189b2012-06-20 16:38:30 -07003838 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003839 callback
3840
Jeff Johnson295189b2012-06-20 16:38:30 -07003841 @see WDI_PostAssocReq
3842 @return Result of the function call
3843*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003844WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003845WDI_SetRSSIThresholdsReq
3846(
3847 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
3848 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
3849 void* pUserData
3850)
3851{
3852 WDI_EventInfoType wdiEventData;
3853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3854
3855 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003856 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003857 ------------------------------------------------------------------------*/
3858 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3859 {
3860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3861 "WDI API call before module is initialized - Fail request");
3862
Jeff Johnsone7245742012-09-05 17:12:55 -07003863 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003864 }
3865
3866 /*------------------------------------------------------------------------
3867 Fill in Event data and post to the Main FSM
3868 ------------------------------------------------------------------------*/
3869 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003870 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003871 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003872 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003873 wdiEventData.pUserData = pUserData;
3874
3875 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3876}/* WDI_SetRSSIThresholdsReq*/
3877
3878/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003879 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003880 wants to set the filter to minimize unnecessary host
3881 wakeup due to broadcast traffic while in power save.
3882 Upon the call of this API the WLAN DAL will pack and
3883 send a HAL host offload request message to the
3884 lower RIVA sub-system if DAL is in state STARTED.
3885
3886 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003887 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003888
3889 WDI_PostAssocReq must have been called.
3890
Jeff Johnsone7245742012-09-05 17:12:55 -07003891 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003892 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003893
Jeff Johnson295189b2012-06-20 16:38:30 -07003894 wdiHostOffloadCb: callback for passing back the response
3895 of the host offload operation received from the
3896 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003897
Jeff Johnson295189b2012-06-20 16:38:30 -07003898 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003899 callback
3900
Jeff Johnson295189b2012-06-20 16:38:30 -07003901 @see WDI_PostAssocReq
3902 @return Result of the function call
3903*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003904WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003905WDI_HostOffloadReq
3906(
3907 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
3908 WDI_HostOffloadCb wdiHostOffloadCb,
3909 void* pUserData
3910)
3911{
3912 WDI_EventInfoType wdiEventData;
3913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3914
3915 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003916 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003917 ------------------------------------------------------------------------*/
3918 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3919 {
3920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3921 "WDI API call before module is initialized - Fail request");
3922
Jeff Johnsone7245742012-09-05 17:12:55 -07003923 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003924 }
3925
3926 /*------------------------------------------------------------------------
3927 Fill in Event data and post to the Main FSM
3928 ------------------------------------------------------------------------*/
3929 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003930 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07003931 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003932 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003933 wdiEventData.pUserData = pUserData;
3934
3935 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3936}/*WDI_HostOffloadReq*/
3937
3938/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 @brief WDI_KeepAliveReq will be called when the upper MAC
3940 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07003941 and minimize unnecessary host wakeups due to while in power save.
3942 Upon the call of this API the WLAN DAL will pack and
3943 send a HAL Keep Alive request message to the
3944 lower RIVA sub-system if DAL is in state STARTED.
3945
3946 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003947 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003948
3949 WDI_PostAssocReq must have been called.
3950
Jeff Johnsone7245742012-09-05 17:12:55 -07003951 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003952 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003953
Jeff Johnson295189b2012-06-20 16:38:30 -07003954 wdiKeepAliveCb: callback for passing back the response
3955 of the Keep Alive operation received from the
3956 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003957
Jeff Johnson295189b2012-06-20 16:38:30 -07003958 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003959 callback
3960
Jeff Johnson295189b2012-06-20 16:38:30 -07003961 @see WDI_PostAssocReq
3962 @return Result of the function call
3963*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003964WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003965WDI_KeepAliveReq
3966(
3967 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
3968 WDI_KeepAliveCb wdiKeepAliveCb,
3969 void* pUserData
3970)
3971{
3972 WDI_EventInfoType wdiEventData;
3973 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3974
3975 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003976 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003977 ------------------------------------------------------------------------*/
3978 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3979 {
3980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3981 "WDI_KeepAliveReq: WDI API call before module "
3982 "is initialized - Fail request");
3983
Jeff Johnsone7245742012-09-05 17:12:55 -07003984 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003985 }
3986
3987 /*------------------------------------------------------------------------
3988 Fill in Event data and post to the Main FSM
3989 ------------------------------------------------------------------------*/
3990 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 wdiEventData.pEventData = pwdiKeepAliveParams;
3992 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
3993 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 wdiEventData.pUserData = pUserData;
3995
3996 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3997}/*WDI_KeepAliveReq*/
3998
3999/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004000 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004001 wants to set the Wowl Bcast ptrn to minimize unnecessary
4002 host wakeup due to broadcast traffic while in power
4003 save. Upon the call of this API the WLAN DAL will pack
4004 and send a HAL Wowl Bcast ptrn request message to the
4005 lower RIVA sub-system if DAL is in state STARTED.
4006
4007 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004008 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004009
4010 WDI_PostAssocReq must have been called.
4011
Jeff Johnsone7245742012-09-05 17:12:55 -07004012 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004013 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004014
Jeff Johnson295189b2012-06-20 16:38:30 -07004015 wdiWowlAddBcPtrnCb: callback for passing back the
4016 response of the add Wowl bcast ptrn operation received
4017 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004018
Jeff Johnson295189b2012-06-20 16:38:30 -07004019 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 callback
4021
Jeff Johnson295189b2012-06-20 16:38:30 -07004022 @see WDI_PostAssocReq
4023 @return Result of the function call
4024*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004025WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004026WDI_WowlAddBcPtrnReq
4027(
4028 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
4029 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
4030 void* pUserData
4031)
4032{
4033 WDI_EventInfoType wdiEventData;
4034 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4035
4036 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004037 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004038 ------------------------------------------------------------------------*/
4039 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4040 {
4041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4042 "WDI API call before module is initialized - Fail request");
4043
Jeff Johnsone7245742012-09-05 17:12:55 -07004044 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 }
4046
4047 /*------------------------------------------------------------------------
4048 Fill in Event data and post to the Main FSM
4049 ------------------------------------------------------------------------*/
4050 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004052 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004053 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 wdiEventData.pUserData = pUserData;
4055
4056 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4057}/*WDI_WowlAddBcPtrnReq*/
4058
4059/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004060 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004061 wants to clear the Wowl Bcast ptrn. Upon the call of
4062 this API the WLAN DAL will pack and send a HAL delete
4063 Wowl Bcast ptrn request message to the lower RIVA
4064 sub-system if DAL is in state STARTED.
4065
4066 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004067 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004068
4069 WDI_WowlAddBcPtrnReq must have been called.
4070
Jeff Johnsone7245742012-09-05 17:12:55 -07004071 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07004072 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004073
Jeff Johnson295189b2012-06-20 16:38:30 -07004074 wdiWowlDelBcPtrnCb: callback for passing back the
4075 response of the del Wowl bcast ptrn operation received
4076 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004077
Jeff Johnson295189b2012-06-20 16:38:30 -07004078 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004079 callback
4080
Jeff Johnson295189b2012-06-20 16:38:30 -07004081 @see WDI_WowlAddBcPtrnReq
4082 @return Result of the function call
4083*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004084WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004085WDI_WowlDelBcPtrnReq
4086(
4087 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
4088 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
4089 void* pUserData
4090)
4091{
4092 WDI_EventInfoType wdiEventData;
4093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4094
4095 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004096 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004097 ------------------------------------------------------------------------*/
4098 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4099 {
4100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4101 "WDI API call before module is initialized - Fail request");
4102
Jeff Johnsone7245742012-09-05 17:12:55 -07004103 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004104 }
4105
4106 /*------------------------------------------------------------------------
4107 Fill in Event data and post to the Main FSM
4108 ------------------------------------------------------------------------*/
4109 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004110 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004111 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 wdiEventData.pUserData = pUserData;
4114
4115 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4116}/*WDI_WowlDelBcPtrnReq*/
4117
4118/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 wants to enter the Wowl state to minimize unnecessary
4121 host wakeup while in power save. Upon the call of this
4122 API the WLAN DAL will pack and send a HAL Wowl enter
4123 request message to the lower RIVA sub-system if DAL is
4124 in state STARTED.
4125
4126 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004127 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004128
4129 WDI_PostAssocReq must have been called.
4130
Jeff Johnsone7245742012-09-05 17:12:55 -07004131 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004132 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004133
Jeff Johnson295189b2012-06-20 16:38:30 -07004134 wdiWowlEnterReqCb: callback for passing back the
4135 response of the enter Wowl operation received from the
4136 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004137
Jeff Johnson295189b2012-06-20 16:38:30 -07004138 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004139 callback
4140
Jeff Johnson295189b2012-06-20 16:38:30 -07004141 @see WDI_PostAssocReq
4142 @return Result of the function call
4143*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004144WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004145WDI_WowlEnterReq
4146(
4147 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
4148 WDI_WowlEnterReqCb wdiWowlEnterCb,
4149 void* pUserData
4150)
4151{
4152 WDI_EventInfoType wdiEventData;
4153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4154
4155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004156 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004157 ------------------------------------------------------------------------*/
4158 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4159 {
4160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4161 "WDI API call before module is initialized - Fail request");
4162
Jeff Johnsone7245742012-09-05 17:12:55 -07004163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004164 }
4165
4166 /*------------------------------------------------------------------------
4167 Fill in Event data and post to the Main FSM
4168 ------------------------------------------------------------------------*/
4169 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004170 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004171 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004172 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004173 wdiEventData.pUserData = pUserData;
4174
4175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4176}/*WDI_WowlEnterReq*/
4177
4178/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004179 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 wants to exit the Wowl state. Upon the call of this API
4181 the WLAN DAL will pack and send a HAL Wowl exit request
4182 message to the lower RIVA sub-system if DAL is in state
4183 STARTED.
4184
4185 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004186 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004187
4188 WDI_WowlEnterReq must have been called.
4189
Jeff Johnsone7245742012-09-05 17:12:55 -07004190 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07004191 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004192
Jeff Johnson295189b2012-06-20 16:38:30 -07004193 wdiWowlExitReqCb: callback for passing back the response
4194 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004195
Jeff Johnson295189b2012-06-20 16:38:30 -07004196 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004197 callback
4198
Jeff Johnson295189b2012-06-20 16:38:30 -07004199 @see WDI_WowlEnterReq
4200 @return Result of the function call
4201*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004202WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004203WDI_WowlExitReq
4204(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004205 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004206 WDI_WowlExitReqCb wdiWowlExitCb,
4207 void* pUserData
4208)
4209{
4210 WDI_EventInfoType wdiEventData;
4211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4212
4213 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004214 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004215 ------------------------------------------------------------------------*/
4216 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4217 {
4218 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4219 "WDI API call before module is initialized - Fail request");
4220
Jeff Johnsone7245742012-09-05 17:12:55 -07004221 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004222 }
4223
4224 /*------------------------------------------------------------------------
4225 Fill in Event data and post to the Main FSM
4226 ------------------------------------------------------------------------*/
4227 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004228 wdiEventData.pEventData = pwdiWowlExitParams;
4229 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004230 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004231 wdiEventData.pUserData = pUserData;
4232
4233 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4234}/*WDI_WowlExitReq*/
4235
4236/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004237 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07004238 the upper MAC wants to dynamically adjusts the listen
4239 interval based on the WLAN/MSM activity. Upon the call
4240 of this API the WLAN DAL will pack and send a HAL
4241 configure Apps Cpu Wakeup State request message to the
4242 lower RIVA sub-system.
4243
4244 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004245 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004246
Jeff Johnsone7245742012-09-05 17:12:55 -07004247
4248 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07004249 Apps Cpu Wakeup State as specified by the
4250 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004251
Jeff Johnson295189b2012-06-20 16:38:30 -07004252 wdiConfigureAppsCpuWakeupStateCb: callback for passing
4253 back the response of the configure Apps Cpu Wakeup State
4254 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004255
Jeff Johnson295189b2012-06-20 16:38:30 -07004256 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004257 callback
4258
Jeff Johnson295189b2012-06-20 16:38:30 -07004259 @return Result of the function call
4260*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004261WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004262WDI_ConfigureAppsCpuWakeupStateReq
4263(
4264 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
4265 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
4266 void* pUserData
4267)
4268{
4269 WDI_EventInfoType wdiEventData;
4270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4271
4272 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004273 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004274 ------------------------------------------------------------------------*/
4275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4276 {
4277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4278 "WDI API call before module is initialized - Fail request");
4279
Jeff Johnsone7245742012-09-05 17:12:55 -07004280 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004281 }
4282
4283 /*------------------------------------------------------------------------
4284 Fill in Event data and post to the Main FSM
4285 ------------------------------------------------------------------------*/
4286 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004287 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
4288 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
4289 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004290 wdiEventData.pUserData = pUserData;
4291
4292 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4293}/*WDI_ConfigureAppsCpuWakeupStateReq*/
4294/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004295 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004296 to to perform a flush operation on a given AC. Upon the
4297 call of this API the WLAN DAL will pack and send a HAL
4298 Flush AC request message to the lower RIVA sub-system if
4299 DAL is in state STARTED.
4300
4301 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004302 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004303
4304 WDI_AddBAReq must have been called.
4305
Jeff Johnsone7245742012-09-05 17:12:55 -07004306 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004307 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004308
Jeff Johnson295189b2012-06-20 16:38:30 -07004309 wdiFlushAcRspCb: callback for passing back the response
4310 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004311
Jeff Johnson295189b2012-06-20 16:38:30 -07004312 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004313 callback
4314
Jeff Johnson295189b2012-06-20 16:38:30 -07004315 @see WDI_AddBAReq
4316 @return Result of the function call
4317*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004318WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004319WDI_FlushAcReq
4320(
4321 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
4322 WDI_FlushAcRspCb wdiFlushAcRspCb,
4323 void* pUserData
4324)
4325{
4326 WDI_EventInfoType wdiEventData;
4327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4328
4329 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004330 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004331 ------------------------------------------------------------------------*/
4332 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4333 {
4334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4335 "WDI API call before module is initialized - Fail request");
4336
Jeff Johnsone7245742012-09-05 17:12:55 -07004337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004338 }
4339
4340 /*------------------------------------------------------------------------
4341 Fill in Event data and post to the Main FSM
4342 ------------------------------------------------------------------------*/
4343 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004344 wdiEventData.pEventData = pwdiFlushAcReqParams;
4345 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
4346 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004347 wdiEventData.pUserData = pUserData;
4348
4349 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4350
4351}/*WDI_FlushAcReq*/
4352
4353/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004354 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004355 wants to notify the lower mac on a BT AMP event. This is
4356 to inform BTC-SLM that some BT AMP event occurred. Upon
4357 the call of this API the WLAN DAL will pack and send a
4358 HAL BT AMP event request message to the lower RIVA
4359 sub-system if DAL is in state STARTED.
4360
4361 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004362 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004363
Jeff Johnsone7245742012-09-05 17:12:55 -07004364
4365 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004366 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004367
Jeff Johnson295189b2012-06-20 16:38:30 -07004368 wdiBtAmpEventRspCb: callback for passing back the
4369 response of the BT AMP event operation received from the
4370 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004371
Jeff Johnson295189b2012-06-20 16:38:30 -07004372 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004373 callback
4374
Jeff Johnson295189b2012-06-20 16:38:30 -07004375 @return Result of the function call
4376*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004377WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004378WDI_BtAmpEventReq
4379(
4380 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
4381 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
4382 void* pUserData
4383)
4384{
4385 WDI_EventInfoType wdiEventData;
4386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4387
4388 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004389 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004390 ------------------------------------------------------------------------*/
4391 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4392 {
4393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4394 "WDI API call before module is initialized - Fail request");
4395
Jeff Johnsone7245742012-09-05 17:12:55 -07004396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004397 }
4398
4399 /*------------------------------------------------------------------------
4400 Fill in Event data and post to the Main FSM
4401 ------------------------------------------------------------------------*/
4402 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004403 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
4404 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
4405 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004406 wdiEventData.pUserData = pUserData;
4407
4408 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4409
4410}/*WDI_BtAmpEventReq*/
4411
Jeff Johnsone7245742012-09-05 17:12:55 -07004412#ifdef FEATURE_OEM_DATA_SUPPORT
4413/**
4414 @brief WDI_Start Oem Data Req will be called when the upper MAC
4415 wants to notify the lower mac on a oem data Req event.Upon
4416 the call of this API the WLAN DAL will pack and send a
4417 HAL OEM Data Req event request message to the lower RIVA
4418 sub-system if DAL is in state STARTED.
4419
4420 In state BUSY this request will be queued. Request won't
4421 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004422
4423
Jeff Johnsone7245742012-09-05 17:12:55 -07004424
4425 @param pwdiOemDataReqParams: the Oem Data Req as
4426 specified by the Device Interface
4427
4428 wdiStartOemDataRspCb: callback for passing back the
4429 response of the Oem Data Req received from the
4430 device
4431
4432 pUserData: user data will be passed back with the
4433 callback
4434
4435 @return Result of the function call
4436*/
4437WDI_Status
4438WDI_StartOemDataReq
4439(
4440 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
4441 WDI_oemDataRspCb wdiOemDataRspCb,
4442 void* pUserData
4443)
4444{
4445 WDI_EventInfoType wdiEventData;
4446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4447
4448 /*------------------------------------------------------------------------
4449 Sanity Check
4450 ------------------------------------------------------------------------*/
4451 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4452 {
4453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4454 "WDI API call before module is initialized - Fail request");
4455
4456 return WDI_STATUS_E_NOT_ALLOWED;
4457 }
4458
4459 /*------------------------------------------------------------------------
4460 Fill in Event data and post to the Main FSM
4461 ------------------------------------------------------------------------*/
4462 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
4463 wdiEventData.pEventData = pwdiOemDataReqParams;
4464 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
4465 wdiEventData.pCBfnc = wdiOemDataRspCb;
4466 wdiEventData.pUserData = pUserData;
4467
4468 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4469
4470
4471}
4472
4473#endif
4474
4475
4476/*========================================================================
4477
Jeff Johnson295189b2012-06-20 16:38:30 -07004478 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004479
Jeff Johnson295189b2012-06-20 16:38:30 -07004480==========================================================================*/
4481/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004482 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004483 the WLAN HW to change the current channel of operation.
4484 Upon the call of this API the WLAN DAL will pack and
4485 send a HAL Start request message to the lower RIVA
4486 sub-system if DAL is in state STARTED.
4487
4488 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004489 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004490
4491 WDI_Start must have been called.
4492
Jeff Johnsone7245742012-09-05 17:12:55 -07004493 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004494 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004495
Jeff Johnson295189b2012-06-20 16:38:30 -07004496 wdiSwitchChRspCb: callback for passing back the response
4497 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004498
Jeff Johnson295189b2012-06-20 16:38:30 -07004499 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004500 callback
4501
Jeff Johnson295189b2012-06-20 16:38:30 -07004502 @see WDI_Start
4503 @return Result of the function call
4504*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004505WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004506WDI_SwitchChReq
4507(
4508 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
4509 WDI_SwitchChRspCb wdiSwitchChRspCb,
4510 void* pUserData
4511)
4512{
4513 WDI_EventInfoType wdiEventData;
4514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4515
4516 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004517 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004518 ------------------------------------------------------------------------*/
4519 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4520 {
4521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4522 "WDI API call before module is initialized - Fail request");
4523
Jeff Johnsone7245742012-09-05 17:12:55 -07004524 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004525 }
4526
4527 /*------------------------------------------------------------------------
4528 Fill in Event data and post to the Main FSM
4529 ------------------------------------------------------------------------*/
4530 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004531 wdiEventData.pEventData = pwdiSwitchChReqParams;
4532 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
4533 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004534 wdiEventData.pUserData = pUserData;
4535
4536 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4537
4538}/*WDI_SwitchChReq*/
4539
4540
4541/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004542 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004543 wishes to add or update a STA in HW. Upon the call of
4544 this API the WLAN DAL will pack and send a HAL Start
4545 message request message to the lower RIVA sub-system if
4546 DAL is in state STARTED.
4547
4548 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004549 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004550
4551 WDI_Start must have been called.
4552
Jeff Johnsone7245742012-09-05 17:12:55 -07004553 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004554 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004555
Jeff Johnson295189b2012-06-20 16:38:30 -07004556 wdiConfigSTARspCb: callback for passing back the
4557 response of the config STA operation received from the
4558 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004559
Jeff Johnson295189b2012-06-20 16:38:30 -07004560 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004561 callback
4562
Jeff Johnson295189b2012-06-20 16:38:30 -07004563 @see WDI_Start
4564 @return Result of the function call
4565*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004566WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004567WDI_ConfigSTAReq
4568(
4569 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
4570 WDI_ConfigSTARspCb wdiConfigSTARspCb,
4571 void* pUserData
4572)
4573{
4574 WDI_EventInfoType wdiEventData;
4575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4576
4577 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004578 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004579 ------------------------------------------------------------------------*/
4580 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4581 {
4582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4583 "WDI API call before module is initialized - Fail request");
4584
Jeff Johnsone7245742012-09-05 17:12:55 -07004585 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004586 }
4587
4588 /*------------------------------------------------------------------------
4589 Fill in Event data and post to the Main FSM
4590 ------------------------------------------------------------------------*/
4591 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004592 wdiEventData.pEventData = pwdiConfigSTAReqParams;
4593 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
4594 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004595 wdiEventData.pUserData = pUserData;
4596
4597 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4598
4599}/*WDI_ConfigSTAReq*/
4600
4601/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004602 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004603 wants to change the state of an ongoing link. Upon the
4604 call of this API the WLAN DAL will pack and send a HAL
4605 Start message request message to the lower RIVA
4606 sub-system if DAL is in state STARTED.
4607
4608 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004609 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004610
4611 WDI_JoinStartReq must have been called.
4612
Jeff Johnsone7245742012-09-05 17:12:55 -07004613 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004614 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004615
Jeff Johnson295189b2012-06-20 16:38:30 -07004616 wdiSetLinkStateRspCb: callback for passing back the
4617 response of the set link state operation received from
4618 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004619
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004621 callback
4622
Jeff Johnson295189b2012-06-20 16:38:30 -07004623 @see WDI_JoinStartReq
4624 @return Result of the function call
4625*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004626WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004627WDI_SetLinkStateReq
4628(
4629 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
4630 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
4631 void* pUserData
4632)
4633{
4634 WDI_EventInfoType wdiEventData;
4635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4636
4637 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004638 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004639 ------------------------------------------------------------------------*/
4640 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4641 {
4642 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4643 "WDI API call before module is initialized - Fail request");
4644
Jeff Johnsone7245742012-09-05 17:12:55 -07004645 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004646 }
4647
4648 /*------------------------------------------------------------------------
4649 Fill in Event data and post to the Main FSM
4650 ------------------------------------------------------------------------*/
4651 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004652 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
4653 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
4654 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004655 wdiEventData.pUserData = pUserData;
4656
4657 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4658
4659}/*WDI_SetLinkStateReq*/
4660
4661
4662/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004663 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07004664 to get statistics (MIB counters) from the device. Upon
4665 the call of this API the WLAN DAL will pack and send a
4666 HAL Start request message to the lower RIVA sub-system
4667 if DAL is in state STARTED.
4668
4669 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004670 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004671
4672 WDI_Start must have been called.
4673
Jeff Johnsone7245742012-09-05 17:12:55 -07004674 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07004675 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004676
Jeff Johnson295189b2012-06-20 16:38:30 -07004677 wdiGetStatsRspCb: callback for passing back the response
4678 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004679
Jeff Johnson295189b2012-06-20 16:38:30 -07004680 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004681 callback
4682
Jeff Johnson295189b2012-06-20 16:38:30 -07004683 @see WDI_Start
4684 @return Result of the function call
4685*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004686WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004687WDI_GetStatsReq
4688(
4689 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
4690 WDI_GetStatsRspCb wdiGetStatsRspCb,
4691 void* pUserData
4692)
4693{
4694 WDI_EventInfoType wdiEventData;
4695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4696
4697 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004698 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004699 ------------------------------------------------------------------------*/
4700 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4701 {
4702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4703 "WDI API call before module is initialized - Fail request");
4704
Jeff Johnsone7245742012-09-05 17:12:55 -07004705 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 }
4707
4708 /*------------------------------------------------------------------------
4709 Fill in Event data and post to the Main FSM
4710 ------------------------------------------------------------------------*/
4711 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004712 wdiEventData.pEventData = pwdiGetStatsReqParams;
4713 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
4714 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004715 wdiEventData.pUserData = pUserData;
4716
4717 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4718
4719}/*WDI_GetStatsReq*/
4720
Srinivas Girigowda2471d832013-01-25 13:33:11 -08004721#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
4722/**
4723 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
4724 to get roam rssi from the device. Upon
4725 the call of this API the WLAN DAL will pack and send a
4726 HAL Start request message to the lower RIVA sub-system
4727 if DAL is in state STARTED.
4728
4729 In state BUSY this request will be queued. Request won't
4730 be allowed in any other state.
4731
4732 WDI_Start must have been called.
4733
4734 @param wdiGetRoamRssiReqParams: the stats parameters to get as
4735 specified by the Device Interface
4736
4737 wdiGetRoamRssiRspCb: callback for passing back the response
4738 of the get stats operation received from the device
4739
4740 pUserData: user data will be passed back with the
4741 callback
4742
4743 @see WDI_Start
4744 @return Result of the function call
4745*/
4746WDI_Status
4747WDI_GetRoamRssiReq
4748(
4749 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
4750 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
4751 void* pUserData
4752)
4753{
4754 WDI_EventInfoType wdiEventData;
4755 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4756
4757 /*------------------------------------------------------------------------
4758 Sanity Check
4759 ------------------------------------------------------------------------*/
4760 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4761 {
4762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4763 "WDI API call before module is initialized - Fail request");
4764
4765 return WDI_STATUS_E_NOT_ALLOWED;
4766 }
4767 /*------------------------------------------------------------------------
4768 Fill in Event data and post to the Main FSM
4769 ------------------------------------------------------------------------*/
4770 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
4771 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
4772 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
4773 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
4774 wdiEventData.pUserData = pUserData;
4775
4776 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4777
4778}/*WDI_GetRoamRssiReq*/
4779#endif
4780
Jeff Johnson295189b2012-06-20 16:38:30 -07004781
4782/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004783 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07004784 it wishes to change the configuration of the WLAN
4785 Device. Upon the call of this API the WLAN DAL will pack
4786 and send a HAL Update CFG request message to the lower
4787 RIVA sub-system if DAL is 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_Start must have been called.
4793
Jeff Johnsone7245742012-09-05 17:12:55 -07004794 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004795 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004796
Jeff Johnson295189b2012-06-20 16:38:30 -07004797 wdiUpdateCfgsRspCb: callback for passing back the
4798 response of the update cfg operation received from the
4799 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004800
Jeff Johnson295189b2012-06-20 16:38:30 -07004801 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004802 callback
4803
Jeff Johnson295189b2012-06-20 16:38:30 -07004804 @see WDI_Start
4805 @return Result of the function call
4806*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004807WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004808WDI_UpdateCfgReq
4809(
4810 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
4811 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
4812 void* pUserData
4813)
4814{
4815 WDI_EventInfoType wdiEventData;
4816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4817
4818 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004819 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004820 ------------------------------------------------------------------------*/
4821 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4822 {
4823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4824 "WDI API call before module is initialized - Fail request");
4825
Jeff Johnsone7245742012-09-05 17:12:55 -07004826 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004827 }
4828
4829 /*------------------------------------------------------------------------
4830 Fill in Event data and post to the Main FSM
4831 ------------------------------------------------------------------------*/
4832 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004833 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
4834 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
4835 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004836 wdiEventData.pUserData = pUserData;
4837
4838 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4839
4840}/*WDI_UpdateCfgReq*/
4841
4842
4843
4844/**
4845 @brief WDI_AddBAReq will be called when the upper MAC has setup
4846 successfully a BA session and needs to notify the HW for
4847 the appropriate settings to take place. Upon the call of
4848 this API the WLAN DAL will pack and send a HAL Add BA
4849 request message to the lower RIVA sub-system if DAL is
4850 in state STARTED.
4851
4852 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004853 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004854
4855 WDI_PostAssocReq must have been called.
4856
4857 @param wdiAddBAReqParams: the add BA parameters as specified by
4858 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004859
Jeff Johnson295189b2012-06-20 16:38:30 -07004860 wdiAddBARspCb: callback for passing back the response of
4861 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004862
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004864 callback
4865
Jeff Johnson295189b2012-06-20 16:38:30 -07004866 @see WDI_PostAssocReq
4867 @return Result of the function call
4868*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004869WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004870WDI_AddBAReq
4871(
4872 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
4873 WDI_AddBARspCb wdiAddBARspCb,
4874 void* pUserData
4875)
4876{
4877 WDI_EventInfoType wdiEventData;
4878 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4879
4880 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004881 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004882 ------------------------------------------------------------------------*/
4883 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4884 {
4885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4886 "WDI API call before module is initialized - Fail request");
4887
Jeff Johnsone7245742012-09-05 17:12:55 -07004888 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004889 }
4890
4891 /*------------------------------------------------------------------------
4892 Fill in Event data and post to the Main FSM
4893 ------------------------------------------------------------------------*/
4894 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004895 wdiEventData.pEventData = pwdiAddBAReqParams;
4896 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
4897 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004898 wdiEventData.pUserData = pUserData;
4899
4900 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4901
4902}/*WDI_AddBAReq*/
4903
4904
4905/**
4906 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
4907 successfully a BA session and needs to notify the HW for
4908 the appropriate settings to take place. Upon the call of
4909 this API the WLAN DAL will pack and send a HAL Add BA
4910 request message to the lower RIVA sub-system if DAL is
4911 in state STARTED.
4912
4913 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004914 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004915
4916 WDI_PostAssocReq must have been called.
4917
4918 @param wdiAddBAReqParams: the add BA parameters as specified by
4919 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004920
Jeff Johnson295189b2012-06-20 16:38:30 -07004921 wdiAddBARspCb: callback for passing back the response of
4922 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004923
Jeff Johnson295189b2012-06-20 16:38:30 -07004924 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004925 callback
4926
Jeff Johnson295189b2012-06-20 16:38:30 -07004927 @see WDI_PostAssocReq
4928 @return Result of the function call
4929*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004930WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004931WDI_TriggerBAReq
4932(
4933 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
4934 WDI_TriggerBARspCb wdiTriggerBARspCb,
4935 void* pUserData
4936)
4937{
4938 WDI_EventInfoType wdiEventData;
4939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4940
4941 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004942 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004943 ------------------------------------------------------------------------*/
4944 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4945 {
4946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4947 "WDI API call before module is initialized - Fail request");
4948
Jeff Johnsone7245742012-09-05 17:12:55 -07004949 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004950 }
4951
4952 /*------------------------------------------------------------------------
4953 Fill in Event data and post to the Main FSM
4954 ------------------------------------------------------------------------*/
4955 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004956 wdiEventData.pEventData = pwdiTriggerBAReqParams;
4957 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams);
4958 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004959 wdiEventData.pUserData = pUserData;
4960
4961 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4962
4963}/*WDI_AddBAReq*/
4964
4965/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004966 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004967 wishes to update any of the Beacon parameters used by HW.
4968 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
4969 message to the lower RIVA sub-system if DAL is in state
4970 STARTED.
4971
4972 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004973 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004974
4975 WDI_PostAssocReq must have been called.
4976
Jeff Johnsone7245742012-09-05 17:12:55 -07004977 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004979
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 wdiUpdateBeaconParamsRspCb: callback for passing back the
4981 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004982
Jeff Johnson295189b2012-06-20 16:38:30 -07004983 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004984 callback
4985
Jeff Johnson295189b2012-06-20 16:38:30 -07004986 @see WDI_PostAssocReq
4987 @return Result of the function call
4988*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004989WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004990WDI_UpdateBeaconParamsReq
4991(
4992 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
4993 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
4994 void* pUserData
4995)
4996{
4997 WDI_EventInfoType wdiEventData;
4998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4999
5000 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005001 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005002 ------------------------------------------------------------------------*/
5003 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5004 {
5005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5006 "WDI API call before module is initialized - Fail request");
5007
Jeff Johnsone7245742012-09-05 17:12:55 -07005008 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005009 }
5010
5011 /*------------------------------------------------------------------------
5012 Fill in Event data and post to the Main FSM
5013 ------------------------------------------------------------------------*/
5014 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005015 wdiEventData.pEventData = pwdiUpdateBeaconParams;
5016 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
5017 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005018 wdiEventData.pUserData = pUserData;
5019
5020 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5021
5022}/*WDI_UpdateBeaconParamsReq*/
5023
5024/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005025 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005026 wishes to update the Beacon template used by HW.
5027 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
5028 message to the lower RIVA sub-system if DAL is in state
5029 STARTED.
5030
5031 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005032 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005033
5034 WDI_PostAssocReq must have been called.
5035
Jeff Johnsone7245742012-09-05 17:12:55 -07005036 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005037 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005038
Jeff Johnson295189b2012-06-20 16:38:30 -07005039 wdiSendBeaconParamsRspCb: callback for passing back the
5040 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005041
Jeff Johnson295189b2012-06-20 16:38:30 -07005042 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005043 callback
5044
Jeff Johnson295189b2012-06-20 16:38:30 -07005045 @see WDI_PostAssocReq
5046 @return Result of the function call
5047*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005048WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005049WDI_SendBeaconParamsReq
5050(
5051 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
5052 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
5053 void* pUserData
5054)
5055{
5056 WDI_EventInfoType wdiEventData;
5057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5058
5059 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005060 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005061 ------------------------------------------------------------------------*/
5062 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5063 {
5064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5065 "WDI API call before module is initialized - Fail request");
5066
Jeff Johnsone7245742012-09-05 17:12:55 -07005067 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005068 }
5069
5070 /*------------------------------------------------------------------------
5071 Fill in Event data and post to the Main FSM
5072 ------------------------------------------------------------------------*/
5073 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005074 wdiEventData.pEventData = pwdiSendBeaconParams;
5075 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
5076 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005077 wdiEventData.pUserData = pUserData;
5078
5079 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5080
5081}/*WDI_SendBeaconParamsReq*/
5082
5083/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005084 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005085 upper MAC wants to update the probe response template to
5086 be transmitted as Soft AP
5087 Upon the call of this API the WLAN DAL will
5088 pack and send the probe rsp template message to the
5089 lower RIVA sub-system if DAL is in state STARTED.
5090
5091 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005092 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005093
5094
Jeff Johnsone7245742012-09-05 17:12:55 -07005095 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005096 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005097
Jeff Johnson295189b2012-06-20 16:38:30 -07005098 wdiSendBeaconParamsRspCb: callback for passing back the
5099 response of the Send Beacon Params operation received
5100 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005101
Jeff Johnson295189b2012-06-20 16:38:30 -07005102 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005103 callback
5104
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 @see WDI_AddBAReq
5106 @return Result of the function call
5107*/
5108
Jeff Johnsone7245742012-09-05 17:12:55 -07005109WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005110WDI_UpdateProbeRspTemplateReq
5111(
5112 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
5113 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
5114 void* pUserData
5115)
5116{
5117 WDI_EventInfoType wdiEventData;
5118 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5119
5120 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005121 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005122 ------------------------------------------------------------------------*/
5123 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5124 {
5125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5126 "WDI API call before module is initialized - Fail request");
5127
Jeff Johnsone7245742012-09-05 17:12:55 -07005128 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005129 }
5130
5131 /*------------------------------------------------------------------------
5132 Fill in Event data and post to the Main FSM
5133 ------------------------------------------------------------------------*/
5134 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005135 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
5136 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
5137 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005138 wdiEventData.pUserData = pUserData;
5139
5140 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5141
5142}/*WDI_UpdateProbeRspTemplateReq*/
5143
5144/**
5145 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
5146 to the NV memory.
5147
5148
5149 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
5150 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005151
Jeff Johnson295189b2012-06-20 16:38:30 -07005152 wdiNvDownloadRspCb: callback for passing back the response of
5153 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005154
Jeff Johnson295189b2012-06-20 16:38:30 -07005155 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005156 callback
5157
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 @see WDI_PostAssocReq
5159 @return Result of the function call
5160*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005161WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005162WDI_NvDownloadReq
5163(
5164 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
5165 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
5166 void* pUserData
5167)
5168{
5169 WDI_EventInfoType wdiEventData;
5170
5171 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005172 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005173 ------------------------------------------------------------------------*/
5174 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5175 {
5176 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5177 "WDI API call before module is initialized - Fail request");
5178
Jeff Johnsone7245742012-09-05 17:12:55 -07005179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005180 }
5181
5182 /*------------------------------------------------------------------------
5183 Fill in Event data and post to the Main FSM
5184 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005185 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
5186 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
5187 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
5188 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005189 wdiEventData.pUserData = pUserData;
5190
5191 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
5192
5193}/*WDI_NVDownloadReq*/
5194
Jeff Johnson295189b2012-06-20 16:38:30 -07005195/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005197 upper MAC wants to send Notice of Absence
5198 Upon the call of this API the WLAN DAL will
5199 pack and send the probe rsp template message to the
5200 lower RIVA sub-system if DAL is in state STARTED.
5201
5202 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005203 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005204
5205
Jeff Johnsone7245742012-09-05 17:12:55 -07005206 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005207 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005208
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 wdiSendBeaconParamsRspCb: callback for passing back the
5210 response of the Send Beacon Params operation received
5211 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005212
Jeff Johnson295189b2012-06-20 16:38:30 -07005213 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005214 callback
5215
Jeff Johnson295189b2012-06-20 16:38:30 -07005216 @see WDI_AddBAReq
5217 @return Result of the function call
5218*/
5219WDI_Status
5220WDI_SetP2PGONOAReq
5221(
5222 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
5223 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
5224 void* pUserData
5225)
5226{
5227 WDI_EventInfoType wdiEventData;
5228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5229
5230 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005231 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005232 ------------------------------------------------------------------------*/
5233 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5234 {
5235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5236 "WDI API call before module is initialized - Fail request");
5237
Jeff Johnsone7245742012-09-05 17:12:55 -07005238 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005239 }
5240
5241 /*------------------------------------------------------------------------
5242 Fill in Event data and post to the Main FSM
5243 ------------------------------------------------------------------------*/
5244 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005245 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
5246 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
5247 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005248 wdiEventData.pUserData = pUserData;
5249
5250 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5251
5252}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07005253
5254/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005255 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07005256 UMAC wanted to add STA self while opening any new session
5257 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005259
5260
Jeff Johnsone7245742012-09-05 17:12:55 -07005261 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005262 specified by the Device Interface
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
5267 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 @return Result of the function call
5269*/
5270WDI_Status
5271WDI_AddSTASelfReq
5272(
5273 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
5274 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
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_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005296 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
5297 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
5298 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005299 wdiEventData.pUserData = pUserData;
5300
5301 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5302
5303}/*WDI_AddSTASelfReq*/
5304
5305
Jeff Johnsone7245742012-09-05 17:12:55 -07005306#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07005307/**
5308 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
5309 the device of a successful add TSpec negotiation. HW
5310 needs to receive the TSpec Info from the UMAC in order
5311 to configure properly the QoS data traffic. Upon the
5312 call of this API the WLAN DAL will pack and send a HAL
5313 Add TS request message to the lower RIVA sub-system if
5314 DAL is in state STARTED.
5315
5316 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005317 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005318
5319 WDI_PostAssocReq must have been called.
5320
5321 @param wdiAddTsReqParams: the add TS parameters as specified by
5322 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005323
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 wdiAddTsRspCb: callback for passing back the response of
5325 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005326
Jeff Johnson295189b2012-06-20 16:38:30 -07005327 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005328 callback
5329
Jeff Johnson295189b2012-06-20 16:38:30 -07005330 @see WDI_PostAssocReq
5331 @return Result of the function call
5332*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005333WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005334WDI_AggrAddTSReq
5335(
5336 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
5337 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
5338 void* pUserData
5339)
5340{
5341 WDI_EventInfoType wdiEventData;
5342 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5343
5344 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005345 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005346 ------------------------------------------------------------------------*/
5347 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5348 {
5349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5350 "WDI API call before module is initialized - Fail request");
5351
Jeff Johnsone7245742012-09-05 17:12:55 -07005352 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005353 }
5354
5355 /*------------------------------------------------------------------------
5356 Fill in Event data and post to the Main FSM
5357 ------------------------------------------------------------------------*/
5358 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005359 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
5360 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
5361 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005362 wdiEventData.pUserData = pUserData;
5363
5364 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5365
5366}/*WDI_AggrAddTSReq*/
5367
5368#endif /* WLAN_FEATURE_VOWIFI_11R */
5369
Jeff Johnson295189b2012-06-20 16:38:30 -07005370/**
5371 @brief WDI_FTMCommandReq
5372 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005373
5374 @param ftmCommandReq: FTM Command Body
5375 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005376 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005377
Jeff Johnson295189b2012-06-20 16:38:30 -07005378 @see
5379 @return Result of the function call
5380*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005381WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005382WDI_FTMCommandReq
5383(
5384 WDI_FTMCommandReqType *ftmCommandReq,
5385 WDI_FTMCommandRspCb ftmCommandRspCb,
5386 void *pUserData
5387)
5388{
5389 WDI_EventInfoType wdiEventData;
5390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5391
5392 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005393 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005394 ------------------------------------------------------------------------*/
5395 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5396 {
5397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5398 "WDI API call before module is initialized - Fail request");
5399
Jeff Johnsone7245742012-09-05 17:12:55 -07005400 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005401 }
5402
5403 /*------------------------------------------------------------------------
5404 Fill in Event data and post to the Main FSM
5405 ------------------------------------------------------------------------*/
5406 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
5407 wdiEventData.pEventData = (void *)ftmCommandReq;
5408 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
5409 wdiEventData.pCBfnc = ftmCommandRspCb;
5410 wdiEventData.pUserData = pUserData;
5411
5412 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5413}
Jeff Johnson295189b2012-06-20 16:38:30 -07005414/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005415 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005416
5417 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005418 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005419
5420
5421 @param pwdiResumeReqParams: as specified by
5422 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005423
Jeff Johnson295189b2012-06-20 16:38:30 -07005424 wdiResumeReqRspCb: callback for passing back the response of
5425 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005426
Jeff Johnson295189b2012-06-20 16:38:30 -07005427 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005428 callback
5429
5430 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07005431 @return Result of the function call
5432*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005433WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005434WDI_HostResumeReq
5435(
5436 WDI_ResumeParamsType* pwdiResumeReqParams,
5437 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
5438 void* pUserData
5439)
5440{
5441 WDI_EventInfoType wdiEventData;
5442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5443
5444 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005445 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005446 ------------------------------------------------------------------------*/
5447 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5448 {
5449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5450 "WDI API call before module is initialized - Fail request");
5451
Jeff Johnsone7245742012-09-05 17:12:55 -07005452 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005453 }
5454
5455 /*------------------------------------------------------------------------
5456 Fill in Event data and post to the Main FSM
5457 ------------------------------------------------------------------------*/
5458 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005459 wdiEventData.pEventData = pwdiResumeReqParams;
5460 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
5461 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005462 wdiEventData.pUserData = pUserData;
5463
5464 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5465
5466}/*WDI_HostResumeReq*/
5467
5468/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005469 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07005470
5471 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005472 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005473
5474
5475 @param pwdiDelStaSelfReqParams: as specified by
5476 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005477
Jeff Johnson295189b2012-06-20 16:38:30 -07005478 wdiDelStaSelfRspCb: callback for passing back the response of
5479 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005480
Jeff Johnson295189b2012-06-20 16:38:30 -07005481 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005482 callback
5483
Jeff Johnson295189b2012-06-20 16:38:30 -07005484 @see WDI_PostAssocReq
5485 @return Result of the function call
5486*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005487WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005488WDI_DelSTASelfReq
5489(
5490 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
5491 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
5492 void* pUserData
5493)
5494{
5495 WDI_EventInfoType wdiEventData;
5496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5497
5498 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005499 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005500 ------------------------------------------------------------------------*/
5501 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5502 {
5503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5504 "WDI API call before module is initialized - Fail request");
5505
Jeff Johnsone7245742012-09-05 17:12:55 -07005506 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005507 }
5508
5509 /*------------------------------------------------------------------------
5510 Fill in Event data and post to the Main FSM
5511 ------------------------------------------------------------------------*/
5512 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005513 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
5514 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
5515 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005516 wdiEventData.pUserData = pUserData;
5517
5518 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5519
5520}/*WDI_AggrAddTSReq*/
5521
5522/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005523 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
5524 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07005525 Upon the call of this API the WLAN DAL will pack
5526 and send a HAL Set Tx Per Tracking request message to the
5527 lower RIVA sub-system if DAL is in state STARTED.
5528
5529 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005530 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005531
Jeff Johnsone7245742012-09-05 17:12:55 -07005532 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07005533 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005534
Jeff Johnson295189b2012-06-20 16:38:30 -07005535 pwdiSetTxPerTrackingRspCb: callback for passing back the
5536 response of the set Tx PER Tracking configurations operation received
5537 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005538
Jeff Johnson295189b2012-06-20 16:38:30 -07005539 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005540 callback
5541
Jeff Johnson295189b2012-06-20 16:38:30 -07005542 @return Result of the function call
5543*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005544WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005545WDI_SetTxPerTrackingReq
5546(
5547 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
5548 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
5549 void* pUserData
5550)
5551{
5552 WDI_EventInfoType wdiEventData;
5553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5554
5555 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005556 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005557 ------------------------------------------------------------------------*/
5558 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5559 {
5560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5561 "WDI API call before module is initialized - Fail request");
5562
Jeff Johnsone7245742012-09-05 17:12:55 -07005563 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005564 }
5565
5566 /*------------------------------------------------------------------------
5567 Fill in Event data and post to the Main FSM
5568 ------------------------------------------------------------------------*/
5569 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07005571 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005572 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005573 wdiEventData.pUserData = pUserData;
5574
5575 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5576
5577}/*WDI_SetTxPerTrackingReq*/
5578
5579/**
5580 @brief WDI_SetTmLevelReq
5581 If HW Thermal condition changed, driver should react based on new
5582 HW thermal condition.
5583
5584 @param pwdiSetTmLevelReq: New thermal condition information
5585
5586 pwdiSetTmLevelRspCb: callback
5587
5588 usrData: user data will be passed back with the
5589 callback
5590
5591 @return Result of the function call
5592*/
5593WDI_Status
5594WDI_SetTmLevelReq
5595(
5596 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
5597 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
5598 void *usrData
5599)
5600{
5601 WDI_EventInfoType wdiEventData;
5602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5603
5604 /*------------------------------------------------------------------------
5605 Sanity Check
5606 ------------------------------------------------------------------------*/
5607 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5608 {
5609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5610 "WDI API call before module is initialized - Fail request");
5611
5612 return WDI_STATUS_E_NOT_ALLOWED;
5613 }
5614
5615 /*------------------------------------------------------------------------
5616 Fill in Event data and post to the Main FSM
5617 ------------------------------------------------------------------------*/
5618 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
5619 wdiEventData.pEventData = pwdiSetTmLevelReq;
5620 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
5621 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
5622 wdiEventData.pUserData = usrData;
5623
5624 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5625}
5626
5627/**
5628 @brief WDI_HostSuspendInd
5629
5630 Suspend Indication from the upper layer will be sent
5631 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07005632
Jeff Johnson295189b2012-06-20 16:38:30 -07005633 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07005634
5635 @see
5636
Jeff Johnson295189b2012-06-20 16:38:30 -07005637 @return Status of the request
5638*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005639WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005640WDI_HostSuspendInd
5641(
5642 WDI_SuspendParamsType* pwdiSuspendIndParams
5643)
5644{
5645
5646 WDI_EventInfoType wdiEventData;
5647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5648
5649 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005650 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005651 ------------------------------------------------------------------------*/
5652 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5653 {
5654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5655 "WDI API call before module is initialized - Fail request");
5656
Jeff Johnsone7245742012-09-05 17:12:55 -07005657 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005658 }
5659
5660 /*------------------------------------------------------------------------
5661 Fill in Event data and post to the Main FSM
5662 ------------------------------------------------------------------------*/
5663 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07005664 wdiEventData.pEventData = pwdiSuspendIndParams;
5665 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
5666 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07005667 wdiEventData.pUserData = NULL;
5668
5669 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5670
5671}/*WDI_HostSuspendInd*/
5672
5673/**
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005674 @brief WDI_TrafficStatsInd
5675 Traffic Stats from the upper layer will be sent
5676 down to HAL
5677
5678 @param WDI_TrafficStatsIndType
5679
5680 @see
5681
5682 @return Status of the request
5683*/
5684WDI_Status
5685WDI_TrafficStatsInd
5686(
5687 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
5688)
5689{
5690
5691 WDI_EventInfoType wdiEventData;
5692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5693
5694 /*------------------------------------------------------------------------
5695 Sanity Check
5696 ------------------------------------------------------------------------*/
5697 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5698 {
5699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5700 "WDI API call before module is initialized - Fail request");
5701
5702 return WDI_STATUS_E_NOT_ALLOWED;
5703 }
5704
5705 /*------------------------------------------------------------------------
5706 Fill in Event data and post to the Main FSM
5707 ------------------------------------------------------------------------*/
5708 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
5709 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
5710 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
5711 wdiEventData.pCBfnc = NULL;
5712 wdiEventData.pUserData = NULL;
5713
5714 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5715
5716}/*WDI_TrafficStatsInd*/
5717
Chet Lanctota96bb432013-03-18 10:26:30 -07005718#ifdef WLAN_FEATURE_11W
5719/**
5720 @brief WDI_ExcludeUnencryptedInd
5721 Register with HAL to receive/drop unencrypted frames
5722
5723 @param WDI_ExcludeUnencryptIndType
5724
5725 @see
5726
5727 @return Status of the request
5728*/
5729WDI_Status
5730WDI_ExcludeUnencryptedInd
5731(
5732 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
5733)
5734{
5735
5736 WDI_EventInfoType wdiEventData;
5737 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5738
5739 /*------------------------------------------------------------------------
5740 Sanity Check
5741 ------------------------------------------------------------------------*/
5742 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5743 {
5744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5745 "WDI API call before module is initialized - Fail request");
5746
5747 return WDI_STATUS_E_NOT_ALLOWED;
5748 }
5749
5750 /*------------------------------------------------------------------------
5751 Fill in Event data and post to the Main FSM
5752 ------------------------------------------------------------------------*/
5753 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
5754 wdiEventData.pEventData = pWdiExcUnencParams;
5755 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
5756 wdiEventData.pCBfnc = NULL;
5757 wdiEventData.pUserData = NULL;
5758
5759 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5760
5761}/*WDI_TrafficStatsInd*/
5762#endif
5763
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -08005764/**
Jeff Johnson295189b2012-06-20 16:38:30 -07005765 @brief WDI_HALDumpCmdReq
5766 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07005767
5768 @param halDumpCmdReqParams: Hal Dump Command Body
5769 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07005770 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07005771
Jeff Johnson295189b2012-06-20 16:38:30 -07005772 @see
5773 @return Result of the function call
5774*/
5775WDI_Status WDI_HALDumpCmdReq
5776(
5777 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
5778 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
5779 void *pUserData
5780)
5781{
5782 WDI_EventInfoType wdiEventData;
5783 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5784
5785 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005786 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005787 ------------------------------------------------------------------------*/
5788 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5789 {
5790 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5791 "WDI API call before module is initialized - Fail request");
5792
Jeff Johnsone7245742012-09-05 17:12:55 -07005793 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005794 }
5795
5796 /*------------------------------------------------------------------------
5797 Fill in Event data and post to the Main FSM
5798 ------------------------------------------------------------------------*/
5799 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
5800 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
5801 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
5802 wdiEventData.pCBfnc = halDumpCmdRspCb;
5803 wdiEventData.pUserData = pUserData;
5804
5805 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5806}
5807
Jeff Johnsone7245742012-09-05 17:12:55 -07005808/*============================================================================
5809
Jeff Johnson295189b2012-06-20 16:38:30 -07005810 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07005811
Jeff Johnson295189b2012-06-20 16:38:30 -07005812 ============================================================================*/
5813
5814/**
5815 @brief Main FSM Start function for all states except BUSY
5816
Jeff Johnsone7245742012-09-05 17:12:55 -07005817
5818 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07005819 wdiEV: event posted to the main DAL FSM
5820 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07005821 structure
5822
Jeff Johnson295189b2012-06-20 16:38:30 -07005823 @see
5824 @return Result of the function call
5825*/
5826WDI_Status
5827WDI_PostMainEvent
5828(
Jeff Johnsone7245742012-09-05 17:12:55 -07005829 WDI_ControlBlockType* pWDICtx,
5830 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07005831 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -07005832
Jeff Johnson295189b2012-06-20 16:38:30 -07005833)
5834{
Jeff Johnsone7245742012-09-05 17:12:55 -07005835 WDI_Status wdiStatus;
5836 WDI_MainFuncType pfnWDIMainEvHdlr;
5837 WDI_MainStateType wdiOldState;
Jeff Johnson295189b2012-06-20 16:38:30 -07005838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5839
5840 /*-------------------------------------------------------------------------
5841 Sanity check
5842 -------------------------------------------------------------------------*/
5843 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
5844 ( wdiEV >= WDI_MAX_EVENT ))
5845 {
5846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5847 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
5848 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07005849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005850 }
5851
5852 /*Access to the global state must be locked */
5853 wpalMutexAcquire(&pWDICtx->wptMutex);
5854
5855 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005856 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07005857
5858 wdiOldState = pWDICtx->uGlobalState;
5859
5860 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07005861 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
5862 response comes from CCPU for the request sent by host:
5863 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 -07005864 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 -07005865 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07005866 CCPU:
5867 don't change the state */
5868 if ( WDI_RESPONSE_EVENT != wdiEV)
5869 {
5870 /*Transition to BUSY State - the request is now being processed by the FSM,
5871 if the request fails we shall transition back to the old state, if not
5872 the request will manage its own state transition*/
5873 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
5874 }
5875 /* If the state function associated with the EV is NULL it means that this
5876 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005877 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07005878 {
5879 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005880 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07005881 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005882 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005883 }
5884 else
5885 {
5886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07005887 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07005888 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07005889 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005890 }
5891
5892 /* If a request handles itself well it will end up in a success or in a
5893 pending
5894 Success - means that the request was processed and the proper state
5895 transition already occurred or will occur when the resp is received
5896 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07005897
Jeff Johnson295189b2012-06-20 16:38:30 -07005898 Pending - means the request could not be processed at this moment in time
5899 because the FSM was already busy so no state transition or dequeueing
5900 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07005901
Jeff Johnson295189b2012-06-20 16:38:30 -07005902 Success for synchronous case means that the transition may occur and
5903 processing of pending requests may continue - so it should go through
5904 and restores the state and continue processing queued requests*/
5905 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
5906 ( WDI_STATUS_PENDING != wdiStatus ))
5907 {
5908 if ( WDI_RESPONSE_EVENT != wdiEV)
5909 {
5910 /*The request has failed or could not be processed - transition back to
5911 the old state - check to see if anything was queued and try to execute
5912 The dequeue logic should post a message to a thread and return - no
5913 actual processing can occur */
5914 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
5915 }
5916 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07005917
Jeff Johnson295189b2012-06-20 16:38:30 -07005918 }
5919
5920 /* we have completed processing the event */
5921 wpalMutexRelease(&pWDICtx->wptMutex);
5922
Jeff Johnsone7245742012-09-05 17:12:55 -07005923 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07005924
5925}/*WDI_PostMainEvent*/
5926
5927
5928/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005929 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07005930--------------------------------------------------------------------------*/
5931/**
5932 @brief Main FSM Start function for all states except BUSY
5933
Jeff Johnsone7245742012-09-05 17:12:55 -07005934
5935 @param pWDICtx: pointer to the WLAN DAL context
5936 pEventData: pointer to the event information structure
5937
Jeff Johnson295189b2012-06-20 16:38:30 -07005938 @see
5939 @return Result of the function call
5940*/
5941WDI_Status
5942WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07005943(
Jeff Johnson295189b2012-06-20 16:38:30 -07005944 WDI_ControlBlockType* pWDICtx,
5945 WDI_EventInfoType* pEventData
5946)
5947{
5948
5949 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005950 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005951 ----------------------------------------------------------------------*/
5952 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
5953 {
5954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07005955 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07005956 pWDICtx, pEventData);
5957 return WDI_STATUS_E_FAILURE;
5958 }
5959
5960 wpalMutexAcquire(&pWDICtx->wptMutex);
5961
5962 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005963 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07005964 ----------------------------------------------------------------------*/
5965 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
5966 {
5967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
5968 "Control Transport not yet Open - queueing the request");
5969
5970 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07005971 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07005972
5973 wpalMutexRelease(&pWDICtx->wptMutex);
5974 return WDI_STATUS_PENDING;
5975 }
Jeff Johnsone7245742012-09-05 17:12:55 -07005976
Jeff Johnson295189b2012-06-20 16:38:30 -07005977 wpalMutexRelease(&pWDICtx->wptMutex);
5978
5979 /*Return Success*/
5980 return WDI_ProcessRequest( pWDICtx, pEventData );
5981
5982}/*WDI_MainStart*/
5983
5984/**
5985 @brief Main FSM Response function for state INIT
5986
Jeff Johnsone7245742012-09-05 17:12:55 -07005987
5988 @param pWDICtx: pointer to the WLAN DAL context
5989 pEventData: pointer to the event information structure
5990
Jeff Johnson295189b2012-06-20 16:38:30 -07005991 @see
5992 @return Result of the function call
5993*/
5994WDI_Status
5995WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07005996(
Jeff Johnson295189b2012-06-20 16:38:30 -07005997 WDI_ControlBlockType* pWDICtx,
5998 WDI_EventInfoType* pEventData
5999)
6000{
6001 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006002 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07006003 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006004 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07006005
6006 /*Return Success*/
6007 return WDI_STATUS_E_NOT_ALLOWED;
6008}/* WDI_MainRspInit */
6009
6010/**
6011 @brief Main FSM Close function for all states except BUSY
6012
Jeff Johnsone7245742012-09-05 17:12:55 -07006013
6014 @param pWDICtx: pointer to the WLAN DAL context
6015 pEventData: pointer to the event information structure
6016
Jeff Johnson295189b2012-06-20 16:38:30 -07006017 @see
6018 @return Result of the function call
6019*/
6020WDI_Status
6021WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07006022(
Jeff Johnson295189b2012-06-20 16:38:30 -07006023 WDI_ControlBlockType* pWDICtx,
6024 WDI_EventInfoType* pEventData
6025)
6026{
6027
6028 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006029 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006030 ----------------------------------------------------------------------*/
6031 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6032 {
6033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006034 "Invalid parameters on Main Close %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006035 pWDICtx, pEventData);
6036 return WDI_STATUS_E_FAILURE;
6037 }
6038
6039 /*Return Success*/
6040 return WDI_ProcessRequest( pWDICtx, pEventData );
6041
6042}/*WDI_MainClose*/
6043/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006044 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006045--------------------------------------------------------------------------*/
6046/**
6047 @brief Main FSM Start function for state STARTED
6048
Jeff Johnsone7245742012-09-05 17:12:55 -07006049
6050 @param pWDICtx: pointer to the WLAN DAL context
6051 pEventData: pointer to the event information structure
6052
Jeff Johnson295189b2012-06-20 16:38:30 -07006053 @see
6054 @return Result of the function call
6055*/
6056WDI_Status
6057WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006058(
Jeff Johnson295189b2012-06-20 16:38:30 -07006059 WDI_ControlBlockType* pWDICtx,
6060 WDI_EventInfoType* pEventData
6061)
6062{
6063 WDI_StartRspCb wdiStartRspCb = NULL;
6064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6065
6066 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006067 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006068 ----------------------------------------------------------------------*/
6069 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6070 {
6071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006072 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006073 pWDICtx, pEventData);
6074 return WDI_STATUS_E_FAILURE;
6075 }
6076
6077 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006078 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07006079 ----------------------------------------------------------------------*/
6080 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006081 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07006082
6083 wpalMutexAcquire(&pWDICtx->wptMutex);
6084
6085 /*Transition back to started because the post function transitioned us to
6086 busy*/
6087 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
6088
6089 /*Check to see if any request is pending*/
6090 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07006091
Jeff Johnson295189b2012-06-20 16:38:30 -07006092 wpalMutexRelease(&pWDICtx->wptMutex);
6093
6094 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006095 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
6096
Jeff Johnson295189b2012-06-20 16:38:30 -07006097 /*Notify UMAC*/
6098 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pWDICtx->pRspCBUserData);
6099
6100 /*Return Success*/
6101 return WDI_STATUS_SUCCESS;
6102
6103}/*WDI_MainStartStarted*/
6104
6105/**
6106 @brief Main FSM Stop function for state STARTED
6107
Jeff Johnsone7245742012-09-05 17:12:55 -07006108
6109 @param pWDICtx: pointer to the WLAN DAL context
6110 pEventData: pointer to the event information structure
6111
Jeff Johnson295189b2012-06-20 16:38:30 -07006112 @see
6113 @return Result of the function call
6114*/
6115WDI_Status
6116WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006117(
Jeff Johnson295189b2012-06-20 16:38:30 -07006118 WDI_ControlBlockType* pWDICtx,
6119 WDI_EventInfoType* pEventData
6120)
6121{
6122 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006123 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006124 ----------------------------------------------------------------------*/
6125 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6126 {
6127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006128 "Invalid parameters on Main Start %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006129 pWDICtx, pEventData);
6130 return WDI_STATUS_E_FAILURE;
6131 }
6132
6133 /*State at this point is BUSY - because we enter this state before posting
6134 an event to the FSM in order to prevent potential race conditions*/
6135
6136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6137 "Processing stop request in FSM");
6138
6139 /*Return Success*/
6140 return WDI_ProcessRequest( pWDICtx, pEventData );
6141
6142}/*WDI_MainStopStarted*/
6143/**
6144 @brief Main FSM Request function for state started
6145
Jeff Johnsone7245742012-09-05 17:12:55 -07006146
6147 @param pWDICtx: pointer to the WLAN DAL context
6148 pEventData: pointer to the event information structure
6149
Jeff Johnson295189b2012-06-20 16:38:30 -07006150 @see
6151 @return Result of the function call
6152*/
6153WDI_Status
6154WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07006155(
Jeff Johnson295189b2012-06-20 16:38:30 -07006156 WDI_ControlBlockType* pWDICtx,
6157 WDI_EventInfoType* pEventData
6158)
6159{
6160
6161 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006162 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006163 ----------------------------------------------------------------------*/
6164 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6165 {
6166 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006167 "Invalid parameters on Main Req Started %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006168 pWDICtx, pEventData);
6169 return WDI_STATUS_E_FAILURE;
6170 }
6171
6172 /*State at this point is BUSY - because we enter this state before posting
6173 an event to the FSM in order to prevent potential race conditions*/
6174
6175 /*Return Success*/
6176 return WDI_ProcessRequest( pWDICtx, pEventData );
6177
6178}/*WDI_MainReqStarted*/
6179
6180/**
6181 @brief Main FSM Response function for all states except INIT
6182
Jeff Johnsone7245742012-09-05 17:12:55 -07006183
6184 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07006185 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07006186
Jeff Johnson295189b2012-06-20 16:38:30 -07006187 @see
6188 @return Result of the function call
6189*/
6190WDI_Status
6191WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07006192(
Jeff Johnson295189b2012-06-20 16:38:30 -07006193 WDI_ControlBlockType* pWDICtx,
6194 WDI_EventInfoType* pEventData
6195)
6196{
Jeff Johnsone7245742012-09-05 17:12:55 -07006197 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006198 wpt_boolean expectedResponse;
6199
6200 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006201 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006202 ----------------------------------------------------------------------*/
6203 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6204 {
6205 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006206 "Invalid parameters on Main Response %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006207 pWDICtx, pEventData);
6208 return WDI_STATUS_E_FAILURE;
6209 }
6210
6211 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
6212 {
6213 /* we received an expected response */
6214 expectedResponse = eWLAN_PAL_TRUE;
6215
6216 /*We expect that we will transition to started after this processing*/
6217 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
6218
6219 /* we are no longer expecting a response */
6220 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
6221 }
6222 else
6223 {
6224 /* we received an indication or unexpected response */
6225 expectedResponse = eWLAN_PAL_FALSE;
6226 /* for indications no need to update state from what it is right
6227 now, unless it explicitly does it in the indication handler (say
6228 for device failure ind) */
6229 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
6230 }
6231
6232 /*Process the response and indication */
6233 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
6234
6235 /*Lock the CB as we are about to do a state transition*/
6236 wpalMutexAcquire(&pWDICtx->wptMutex);
6237
6238 /*Transition to the expected state after the response processing
6239 - this should always be started state with the following exceptions:
6240 1. processing of a failed start response
6241 2. device failure detected while processing response
6242 3. stop response received*/
6243 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07006244
Jeff Johnson295189b2012-06-20 16:38:30 -07006245 /*Dequeue request that may have been queued while we were waiting for the
6246 response */
6247 if ( expectedResponse )
6248 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006249 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07006250 }
6251
6252 wpalMutexRelease(&pWDICtx->wptMutex);
6253
6254 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07006255 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006256
6257}/*WDI_MainRsp*/
6258
6259/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006260 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006261--------------------------------------------------------------------------*/
6262/**
6263 @brief Main FSM Stop function for state STOPPED
6264
Jeff Johnsone7245742012-09-05 17:12:55 -07006265
6266 @param pWDICtx: pointer to the WLAN DAL context
6267 pEventData: pointer to the event information structure
6268
Jeff Johnson295189b2012-06-20 16:38:30 -07006269 @see
6270 @return Result of the function call
6271*/
6272WDI_Status
6273WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07006274(
Jeff Johnson295189b2012-06-20 16:38:30 -07006275 WDI_ControlBlockType* pWDICtx,
6276 WDI_EventInfoType* pEventData
6277)
6278{
6279 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006280 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006281 ----------------------------------------------------------------------*/
6282 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6283 {
6284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07006285 "Invalid parameters on Main Stop Stopped %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006286 pWDICtx, pEventData);
6287 return WDI_STATUS_E_FAILURE;
6288 }
6289
6290 /*We should normally not get a STOP request if we are already stopped
6291 since we should normally be stopped by the UMAC. However in some
6292 error situations we put ourselves in the stopped state without the
6293 UMAC knowing, so when we get a STOP request in this state we still
6294 process it since we need to clean up the underlying state */
6295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6296 "Processing stop request while stopped in FSM");
6297
6298 /*Return Success*/
6299 return WDI_ProcessRequest( pWDICtx, pEventData );
6300
6301}/*WDI_MainStopStopped*/
6302
6303/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006304 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07006305--------------------------------------------------------------------------*/
6306/**
6307 @brief Main FSM Start function for state BUSY
6308
Jeff Johnsone7245742012-09-05 17:12:55 -07006309
6310 @param pWDICtx: pointer to the WLAN DAL context
6311 pEventData: pointer to the event information structure
6312
Jeff Johnson295189b2012-06-20 16:38:30 -07006313 @see
6314 @return Result of the function call
6315*/
6316WDI_Status
6317WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006318(
Jeff Johnson295189b2012-06-20 16:38:30 -07006319 WDI_ControlBlockType* pWDICtx,
6320 WDI_EventInfoType* pEventData
6321)
6322{
6323 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006324 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006325 ----------------------------------------------------------------------*/
6326 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6327 {
6328 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006329 "Invalid parameters on Main Start in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006330 pWDICtx, pEventData);
6331 return WDI_STATUS_E_FAILURE;
6332 }
6333
6334 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006335 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006336 ----------------------------------------------------------------------*/
6337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6338 "WDI Busy state - queue start request");
6339
6340 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006341 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006342
6343 /*Return Success*/
6344 return WDI_STATUS_PENDING;
6345}/*WDI_MainStartBusy*/
6346
6347/**
6348 @brief Main FSM Stop function for state BUSY
6349
Jeff Johnsone7245742012-09-05 17:12:55 -07006350
6351 @param pWDICtx: pointer to the WLAN DAL context
6352 pEventData: pointer to the event information structure
6353
Jeff Johnson295189b2012-06-20 16:38:30 -07006354 @see
6355 @return Result of the function call
6356*/
6357WDI_Status
6358WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006359(
Jeff Johnson295189b2012-06-20 16:38:30 -07006360 WDI_ControlBlockType* pWDICtx,
6361 WDI_EventInfoType* pEventData
6362)
6363{
6364 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006365 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006366 ----------------------------------------------------------------------*/
6367 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6368 {
6369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006370 "Invalid parameters on Main Stop in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006371 pWDICtx, pEventData);
6372 return WDI_STATUS_E_FAILURE;
6373 }
6374
6375 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006376 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006377 ----------------------------------------------------------------------*/
6378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6379 "WDI Busy state - queue stop request");
6380
Jeff Johnsone7245742012-09-05 17:12:55 -07006381 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006382 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006383
Jeff Johnson295189b2012-06-20 16:38:30 -07006384}/*WDI_MainStopBusy*/
6385
6386/**
6387 @brief Main FSM Request function for state BUSY
6388
Jeff Johnsone7245742012-09-05 17:12:55 -07006389
6390 @param pWDICtx: pointer to the WLAN DAL context
6391 pEventData: pointer to the event information structure
6392
Jeff Johnson295189b2012-06-20 16:38:30 -07006393 @see
6394 @return Result of the function call
6395*/
6396WDI_Status
6397WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006398(
Jeff Johnson295189b2012-06-20 16:38:30 -07006399 WDI_ControlBlockType* pWDICtx,
6400 WDI_EventInfoType* pEventData
6401)
6402{
6403 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006404 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006405 ----------------------------------------------------------------------*/
6406 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6407 {
6408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006409 "Invalid parameters on Main Request in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006410 pWDICtx, pEventData);
6411 return WDI_STATUS_E_FAILURE;
6412 }
6413
6414 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006415 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006416 ----------------------------------------------------------------------*/
6417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6418 "WDI Busy state - queue request %d because waiting for response %d",
6419 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
6420
Jeff Johnsone7245742012-09-05 17:12:55 -07006421 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006422 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006423
Jeff Johnson295189b2012-06-20 16:38:30 -07006424}/*WDI_MainReqBusy*/
6425/**
6426 @brief Main FSM Close function for state BUSY
6427
Jeff Johnsone7245742012-09-05 17:12:55 -07006428
6429 @param pWDICtx: pointer to the WLAN DAL context
6430 pEventData: pointer to the event information structure
6431
Jeff Johnson295189b2012-06-20 16:38:30 -07006432 @see
6433 @return Result of the function call
6434*/
6435WDI_Status
6436WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07006437(
Jeff Johnson295189b2012-06-20 16:38:30 -07006438 WDI_ControlBlockType* pWDICtx,
6439 WDI_EventInfoType* pEventData
6440)
6441{
6442 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006443 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006444 ----------------------------------------------------------------------*/
6445 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6446 {
6447 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07006448 "Invalid parameters on Main Close in BUSY %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -07006449 pWDICtx, pEventData);
6450 return WDI_STATUS_E_FAILURE;
6451 }
6452
6453 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006454 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07006455 ----------------------------------------------------------------------*/
6456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6457 "WDI Busy state - queue close request");
6458
Jeff Johnsone7245742012-09-05 17:12:55 -07006459 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07006460 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07006461
Jeff Johnson295189b2012-06-20 16:38:30 -07006462}/*WDI_MainCloseBusy*/
6463
6464/**
6465 @brief Main FSM Shutdown function for INIT & STARTED states
6466
6467
6468 @param pWDICtx: pointer to the WLAN DAL context
6469 pEventData: pointer to the event information structure
6470
6471 @see
6472 @return Result of the function call
6473*/
6474WDI_Status
6475WDI_MainShutdown
6476(
6477 WDI_ControlBlockType* pWDICtx,
6478 WDI_EventInfoType* pEventData
6479)
6480{
6481 /*--------------------------------------------------------------------
6482 Sanity Check
6483 ----------------------------------------------------------------------*/
6484 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6485 {
6486 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6487 "Invalid parameters on Main Start %x %x",
6488 pWDICtx, pEventData);
6489 return WDI_STATUS_E_FAILURE;
6490 }
6491
6492 /*State at this point is BUSY - because we enter this state before posting
6493 an event to the FSM in order to prevent potential race conditions*/
6494
6495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6496 "Processing shutdown request in FSM");
6497
6498 /*Return Success*/
6499 return WDI_ProcessRequest( pWDICtx, pEventData );
6500
6501}/*WDI_MainShutdown*/
6502
6503/**
6504 @brief Main FSM Shutdown function for BUSY state
6505
6506
6507 @param pWDICtx: pointer to the WLAN DAL context
6508 pEventData: pointer to the event information structure
6509
6510 @see
6511 @return Result of the function call
6512*/
6513WDI_Status
6514WDI_MainShutdownBusy
6515(
6516 WDI_ControlBlockType* pWDICtx,
6517 WDI_EventInfoType* pEventData
6518)
6519{
6520 /*--------------------------------------------------------------------
6521 Sanity Check
6522 ----------------------------------------------------------------------*/
6523 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
6524 {
6525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6526 "Invalid parameters on Main Start %x %x",
6527 pWDICtx, pEventData);
6528 return WDI_STATUS_E_FAILURE;
6529 }
6530
6531 /* If you are waiting for a HAL response at this stage, you are not
6532 * going to get it. Riva is already shutdown/crashed.
6533 */
6534 wpalTimerStop(&gWDICb.wptResponseTimer);
6535
6536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6537 "Processing shutdown request in FSM: Busy state ");
6538
6539 return WDI_ProcessRequest( pWDICtx, pEventData );
6540
6541}/*WDI_MainShutdownBusy*/
6542
6543
Jeff Johnsone7245742012-09-05 17:12:55 -07006544/*=======================================================================
6545
Jeff Johnson295189b2012-06-20 16:38:30 -07006546 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07006547
Jeff Johnson295189b2012-06-20 16:38:30 -07006548*=======================================================================*/
6549
6550/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006551 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07006552========================================================================*/
6553/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006554 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006555 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006556
6557 @param pWDICtx: pointer to the WLAN DAL context
6558 pEventData: pointer to the event information structure
6559
Jeff Johnson295189b2012-06-20 16:38:30 -07006560 @see
6561 @return Result of the function call
6562*/
6563WDI_Status
6564WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006565(
Jeff Johnson295189b2012-06-20 16:38:30 -07006566 WDI_ControlBlockType* pWDICtx,
6567 WDI_EventInfoType* pEventData
6568)
6569{
6570 WDI_StartReqParamsType* pwdiStartParams = NULL;
6571 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006572 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006573 wpt_uint16 usDataOffset = 0;
6574 wpt_uint16 usSendSize = 0;
6575
Jeff Johnsone7245742012-09-05 17:12:55 -07006576 tHalMacStartReqMsg halStartReq;
6577 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07006578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6579
6580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006582 -------------------------------------------------------------------------*/
6583 if (( NULL == pEventData ) ||
6584 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
6585 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
6586 {
6587 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006588 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006591 }
6592
6593 /*-----------------------------------------------------------------------
6594 Get message buffer
6595 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006596 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07006597 pwdiStartParams->usConfigBufferLen;
6598
Jeff Johnsone7245742012-09-05 17:12:55 -07006599 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006600 usLen,
6601 &pSendBuffer, &usDataOffset, &usSendSize))||
6602 ( usSendSize < (usDataOffset + usLen )))
6603 {
6604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6605 "Unable to get send buffer in start req %x %x %x",
6606 pEventData, pwdiStartParams, wdiStartRspCb);
6607 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006609 }
6610
6611 /*-----------------------------------------------------------------------
6612 Fill in the message
6613 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006614 halStartReq.startReqParams.driverType =
6615 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07006616
Jeff Johnsone7245742012-09-05 17:12:55 -07006617 halStartReq.startReqParams.uConfigBufferLen =
6618 pwdiStartParams->usConfigBufferLen;
6619 wpalMemoryCopy( pSendBuffer+usDataOffset,
6620 &halStartReq.startReqParams,
6621 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006622
Jeff Johnsone7245742012-09-05 17:12:55 -07006623 usDataOffset += sizeof(halStartReq.startReqParams);
6624 wpalMemoryCopy( pSendBuffer+usDataOffset,
6625 pwdiStartParams->pConfigBuffer,
6626 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07006627
6628 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006629 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006630
6631 /*Save Low Level Ind CB and associated user data - it will be used further
6632 on when an indication is coming from the lower MAC*/
6633 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006634 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006635
Jeff Johnsone7245742012-09-05 17:12:55 -07006636 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07006637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006638 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006639 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006640 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006641 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
6642
Jeff Johnsone7245742012-09-05 17:12:55 -07006643
Jeff Johnson295189b2012-06-20 16:38:30 -07006644}/*WDI_ProcessStartReq*/
6645
6646/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006647 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006648 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006649
6650 @param pWDICtx: pointer to the WLAN DAL context
6651 pEventData: pointer to the event information structure
6652
Jeff Johnson295189b2012-06-20 16:38:30 -07006653 @see
6654 @return Result of the function call
6655*/
6656WDI_Status
6657WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006658(
Jeff Johnson295189b2012-06-20 16:38:30 -07006659 WDI_ControlBlockType* pWDICtx,
6660 WDI_EventInfoType* pEventData
6661)
6662{
6663 WDI_StopReqParamsType* pwdiStopParams = NULL;
6664 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006665 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006666 wpt_uint16 usDataOffset = 0;
6667 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07006668 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07006669 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07006670 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6671
6672 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006673 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006674 -------------------------------------------------------------------------*/
6675 if (( NULL == pEventData ) ||
6676 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
6677 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
6678 {
6679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006680 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006681 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006682 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006683 }
6684
6685 /*-----------------------------------------------------------------------
6686 Get message buffer
6687 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006688 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006689 sizeof(halStopReq.stopReqParams),
6690 &pSendBuffer, &usDataOffset, &usSendSize))||
6691 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
6692 {
6693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6694 "Unable to get send buffer in stop req %x %x %x",
6695 pEventData, pwdiStopParams, wdiStopRspCb);
6696 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006697 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07006698 }
6699
6700 /*-----------------------------------------------------------------------
6701 Fill in the message
6702 -----------------------------------------------------------------------*/
6703 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
6704 pwdiStopParams->wdiStopReason);
6705
Jeff Johnsone7245742012-09-05 17:12:55 -07006706 wpalMemoryCopy( pSendBuffer+usDataOffset,
6707 &halStopReq.stopReqParams,
6708 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006709
6710 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07006711 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07006712
6713 /*! TO DO: stop the data services */
6714 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6715 {
6716 /*Stop the STA Table !UT- check this logic again
6717 It is safer to do it here than on the response - because a stop is imminent*/
6718 WDI_STATableStop(pWDICtx);
6719
6720 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07006721 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
6722 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006723 {
6724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6725 "WDI Init failed to reset power state event");
6726
Jeff Johnsone7245742012-09-05 17:12:55 -07006727 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006728 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006729 }
6730 /* Stop Transport Driver, DXE */
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006731 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
6732 if( eWLAN_PAL_STATUS_SUCCESS != status )
6733 {
6734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
6735 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state\n", status);
6736 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006737 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08006738 }
Jeff Johnson295189b2012-06-20 16:38:30 -07006739 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07006740 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07006741 */
Jeff Johnson43971f52012-07-17 12:26:56 -07006742 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
6743 WDI_SET_POWER_STATE_TIMEOUT);
6744 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07006745 {
6746 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6747 "WDI Init failed to wait on an event");
6748
Jeff Johnsone7245742012-09-05 17:12:55 -07006749 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006750 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 }
6752 }
6753
6754 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006755 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07006756 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006757 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006758 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
6759
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08006760fail:
6761 // Release the message buffer so we don't leak
6762 wpalMemoryFree(pSendBuffer);
6763
6764failRequest:
6765 //WDA should have failure check to avoid the memory leak
6766 return WDI_STATUS_E_FAILURE;
6767
Jeff Johnson295189b2012-06-20 16:38:30 -07006768}/*WDI_ProcessStopReq*/
6769
6770/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006771 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07006772 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006773
6774 @param pWDICtx: pointer to the WLAN DAL context
6775 pEventData: pointer to the event information structure
6776
Jeff Johnson295189b2012-06-20 16:38:30 -07006777 @see
6778 @return Result of the function call
6779*/
6780WDI_Status
6781WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006782(
Jeff Johnson295189b2012-06-20 16:38:30 -07006783 WDI_ControlBlockType* pWDICtx,
6784 WDI_EventInfoType* pEventData
6785)
6786{
Jeff Johnsone7245742012-09-05 17:12:55 -07006787 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07006788 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6789
6790 /*Lock control block for cleanup*/
6791 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006792
Jeff Johnson295189b2012-06-20 16:38:30 -07006793 /*Clear all pending request*/
6794 WDI_ClearPendingRequests(pWDICtx);
6795
6796 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006797 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07006798
6799 /* Close Data transport*/
6800 /* FTM mode does not open Data Path */
6801 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
6802 {
6803 WDTS_Close(pWDICtx);
6804 }
6805
6806 /*Close the STA Table !UT- check this logic again*/
6807 WDI_STATableClose(pWDICtx);
6808
6809 /*close the PAL */
6810 wptStatus = wpalClose(pWDICtx->pPALContext);
6811 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
6812 {
6813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6814 "Failed to wpal Close %d", wptStatus);
6815 WDI_ASSERT(0);
6816 }
6817
6818 /*Transition back to init state*/
6819 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
6820
6821 wpalMutexRelease(&pWDICtx->wptMutex);
6822
6823 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006824 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006825
Jeff Johnsone7245742012-09-05 17:12:55 -07006826 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07006827}/*WDI_ProcessCloseReq*/
6828
6829
6830/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07006831 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07006832===========================================================================*/
6833
6834/**
6835 @brief Process Init Scan Request function (called when Main FSM
6836 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07006837
6838 @param pWDICtx: pointer to the WLAN DAL context
6839 pEventData: pointer to the event information structure
6840
Jeff Johnson295189b2012-06-20 16:38:30 -07006841 @see
6842 @return Result of the function call
6843*/
6844WDI_Status
6845WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07006846(
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 WDI_ControlBlockType* pWDICtx,
6848 WDI_EventInfoType* pEventData
6849)
6850{
6851 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
6852 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07006853 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006854 wpt_uint16 usDataOffset = 0;
6855 wpt_uint16 usSendSize = 0;
6856 wpt_uint8 i = 0;
6857
6858 tHalInitScanReqMsg halInitScanReqMsg;
6859
Jeff Johnsone7245742012-09-05 17:12:55 -07006860 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006861 * It shold be removed once host and riva changes are in sync*/
6862 tHalInitScanConReqMsg halInitScanConReqMsg;
6863
6864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6865
6866 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006867 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07006868 -------------------------------------------------------------------------*/
6869 if (( NULL == pEventData ) ||
6870 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
6871 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
6872 {
6873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07006874 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07006875 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006876 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006877 }
6878
6879#if 0
6880 wpalMutexAcquire(&pWDICtx->wptMutex);
6881 /*-----------------------------------------------------------------------
6882 Check to see if SCAN is already in progress - if so reject the req
6883 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07006884 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07006885 -----------------------------------------------------------------------*/
6886 if ( pWDICtx->bScanInProgress )
6887 {
6888 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6889 "Scan is already in progress - subsequent scan is not allowed"
6890 " until the first scan completes");
6891
6892 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07006893 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006894 }
6895
Jeff Johnsone7245742012-09-05 17:12:55 -07006896 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
6897 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07006898
6899 wpalMutexRelease(&pWDICtx->wptMutex);
6900#endif
Viral Modi9dc288a2012-12-10 13:09:21 -08006901 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07006902 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006903 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07006904 * It shold be removed once host and riva changes are in sync*/
6905 /*-----------------------------------------------------------------------
6906 Get message buffer
6907 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006908 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006909 sizeof(halInitScanConReqMsg.initScanParams),
6910 &pSendBuffer, &usDataOffset, &usSendSize))||
6911 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
6912 {
6913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6914 "Unable to get send buffer in init scan req %x %x %x",
6915 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6916 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006917 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006918 }
6919
6920
6921 /*-----------------------------------------------------------------------
6922 Fill in the message
6923 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006924 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006925 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6926
6927 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
6928 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6929
Jeff Johnsone7245742012-09-05 17:12:55 -07006930 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006931 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006932 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006933 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006934 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006935 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6936
6937 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
6938 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6939
Jeff Johnson295189b2012-06-20 16:38:30 -07006940 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
6941 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07006942
Jeff Johnsone7245742012-09-05 17:12:55 -07006943 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006944 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6945
6946 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6947 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006948 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006949 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
6950 }
6951
Jeff Johnsone7245742012-09-05 17:12:55 -07006952 wpalMemoryCopy( pSendBuffer+usDataOffset,
6953 &halInitScanConReqMsg.initScanParams,
6954 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07006955 }
6956 else
6957 {
6958 /*-----------------------------------------------------------------------
6959 Get message buffer
6960 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006961 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07006962 sizeof(halInitScanReqMsg.initScanParams),
6963 &pSendBuffer, &usDataOffset, &usSendSize))||
6964 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
6965 {
6966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
6967 "Unable to get send buffer in init scan req %x %x %x",
6968 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
6969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07006970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07006971 }
6972
6973
6974 /*-----------------------------------------------------------------------
6975 Fill in the message
6976 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006977 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07006978 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
6979
6980 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
6981 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
6982
Jeff Johnsone7245742012-09-05 17:12:55 -07006983 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07006984 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07006985 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07006986 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07006987 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07006988 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
6989
6990 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
6991 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
6992
Jeff Johnsone7245742012-09-05 17:12:55 -07006993 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07006994 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
6995
6996 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
6997 {
Jeff Johnsone7245742012-09-05 17:12:55 -07006998 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07006999 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
7000 }
7001
Jeff Johnsone7245742012-09-05 17:12:55 -07007002 wpalMemoryCopy( pSendBuffer+usDataOffset,
7003 &halInitScanReqMsg.initScanParams,
7004 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007005 }
7006
7007 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007008 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007009
7010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007011 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007012 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007013 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007014 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
7015
7016}/*WDI_ProcessInitScanReq*/
7017
7018/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007019 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007020 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007021
7022 @param pWDICtx: pointer to the WLAN DAL context
7023 pEventData: pointer to the event information structure
7024
Jeff Johnson295189b2012-06-20 16:38:30 -07007025 @see
7026 @return Result of the function call
7027*/
7028WDI_Status
7029WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007030(
Jeff Johnson295189b2012-06-20 16:38:30 -07007031 WDI_ControlBlockType* pWDICtx,
7032 WDI_EventInfoType* pEventData
7033)
7034{
7035 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
7036 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007037 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007038 wpt_uint16 usDataOffset = 0;
7039 wpt_uint16 usSendSize = 0;
7040
Jeff Johnsone7245742012-09-05 17:12:55 -07007041 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7043
7044 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007045 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007046 -------------------------------------------------------------------------*/
7047 if (( NULL == pEventData ) ||
7048 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
7049 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
7050 {
7051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007055 }
7056
7057#if 0
7058 wpalMutexAcquire(&pWDICtx->wptMutex);
7059 /*-----------------------------------------------------------------------
7060 Check to see if SCAN is already in progress - start scan is only
7061 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07007062 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07007063 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007064 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007065 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
7066 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
7067 {
7068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7069 "Scan start not allowed in this state %d %d",
7070 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007071
Jeff Johnson295189b2012-06-20 16:38:30 -07007072 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007073 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007074 }
7075
Jeff Johnsone7245742012-09-05 17:12:55 -07007076 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007077
7078 wpalMutexRelease(&pWDICtx->wptMutex);
7079#endif
7080
7081 /*-----------------------------------------------------------------------
7082 Get message buffer
7083 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007084 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 sizeof(halStartScanReqMsg.startScanParams),
7086 &pSendBuffer, &usDataOffset, &usSendSize))||
7087 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
7088 {
7089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7090 "Unable to get send buffer in start scan req %x %x %x",
7091 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
7092 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007093 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007094 }
7095
Jeff Johnsone7245742012-09-05 17:12:55 -07007096 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007097 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07007098 wpalMemoryCopy( pSendBuffer+usDataOffset,
7099 &halStartScanReqMsg.startScanParams,
7100 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007101
7102 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007103 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007104
7105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007106 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007107 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007108 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007109 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
7110}/*WDI_ProcessStartScanReq*/
7111
7112
7113/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007114 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007115 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007116
7117 @param pWDICtx: pointer to the WLAN DAL context
7118 pEventData: pointer to the event information structure
7119
Jeff Johnson295189b2012-06-20 16:38:30 -07007120 @see
7121 @return Result of the function call
7122*/
7123WDI_Status
7124WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007125(
Jeff Johnson295189b2012-06-20 16:38:30 -07007126 WDI_ControlBlockType* pWDICtx,
7127 WDI_EventInfoType* pEventData
7128)
7129{
7130 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
7131 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007132 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007133 wpt_uint16 usDataOffset = 0;
7134 wpt_uint16 usSendSize = 0;
7135
Jeff Johnsone7245742012-09-05 17:12:55 -07007136 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007137 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7138
7139 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007140 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007141 -------------------------------------------------------------------------*/
7142 if (( NULL == pEventData ) ||
7143 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
7144 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
7145 {
7146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007147 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007150 }
7151
Jeff Johnsone7245742012-09-05 17:12:55 -07007152 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7153 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007154 * forwarded to HAL and result in hang*/
7155#if 0
7156 wpalMutexAcquire(&pWDICtx->wptMutex);
7157 /*-----------------------------------------------------------------------
7158 Check to see if SCAN is already in progress - end scan is only
7159 allowed when a scan is ongoing and the state of the scan procedure
7160 is started
7161 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007162 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07007163 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
7164 {
7165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7166 "End start not allowed in this state %d %d",
7167 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007168
Jeff Johnson295189b2012-06-20 16:38:30 -07007169 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007170 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007171 }
7172
Jeff Johnsone7245742012-09-05 17:12:55 -07007173 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007174
7175 wpalMutexRelease(&pWDICtx->wptMutex);
7176#endif
7177
7178 /*-----------------------------------------------------------------------
7179 Get message buffer
7180 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007181 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007182 sizeof(halEndScanReqMsg.endScanParams),
7183 &pSendBuffer, &usDataOffset, &usSendSize))||
7184 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
7185 {
7186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7187 "Unable to get send buffer in start scan req %x %x %x",
7188 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
7189 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007190 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007191 }
7192
7193 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
7194
Jeff Johnsone7245742012-09-05 17:12:55 -07007195 wpalMemoryCopy( pSendBuffer+usDataOffset,
7196 &halEndScanReqMsg.endScanParams,
7197 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007198
7199 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007200 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007201
7202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007203 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007204 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007205 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007206 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
7207}/*WDI_ProcessEndScanReq*/
7208
7209
7210/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007211 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007212 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007213
7214 @param pWDICtx: pointer to the WLAN DAL context
7215 pEventData: pointer to the event information structure
7216
Jeff Johnson295189b2012-06-20 16:38:30 -07007217 @see
7218 @return Result of the function call
7219*/
7220WDI_Status
7221WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007222(
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 WDI_ControlBlockType* pWDICtx,
7224 WDI_EventInfoType* pEventData
7225)
7226{
7227 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
7228 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007229 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007230 wpt_uint16 usDataOffset = 0;
7231 wpt_uint16 usSendSize = 0;
7232 wpt_uint8 i = 0;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007233 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07007234 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007235 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7236
7237 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007238 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007239 -------------------------------------------------------------------------*/
7240 if (( NULL == pEventData ) ||
7241 ( NULL == pEventData->pEventData) ||
7242 ( NULL == pEventData->pCBfnc))
7243 {
7244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007245 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007248 }
7249
7250 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
7251 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07007252 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
7253 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07007254 * forwarded to HAL and result in hang*/
7255#if 0
7256 wpalMutexAcquire(&pWDICtx->wptMutex);
7257 /*-----------------------------------------------------------------------
7258 Check to see if SCAN is already in progress
7259 Finish scan gets invoked any scan states. ie. abort scan
7260 It should be allowed in any states.
7261 -----------------------------------------------------------------------*/
7262 if ( !pWDICtx->bScanInProgress )
7263 {
7264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7265 "Finish start not allowed in this state %d",
7266 pWDICtx->bScanInProgress );
7267
7268 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007269 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007270 }
7271
7272 /*-----------------------------------------------------------------------
7273 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07007274 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07007275 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007276 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
7277 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007278 wpalMutexRelease(&pWDICtx->wptMutex);
7279#endif
7280
7281 if ( pWDICtx->bInBmps )
7282 {
7283 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -08007284 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
7285 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
7286 {
7287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7288 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS\n", wptStatus);
7289 WDI_ASSERT(0);
7290 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007291 }
7292
7293 /*-----------------------------------------------------------------------
7294 Get message buffer
7295 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007296 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007297 sizeof(halFinishScanReqMsg.finishScanParams),
7298 &pSendBuffer, &usDataOffset, &usSendSize))||
7299 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
7300 {
7301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7302 "Unable to get send buffer in start scan req %x %x %x",
7303 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
7304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007306 }
7307
Jeff Johnsone7245742012-09-05 17:12:55 -07007308 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
7310
Jeff Johnsone7245742012-09-05 17:12:55 -07007311 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007312 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
7313
Jeff Johnsone7245742012-09-05 17:12:55 -07007314 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
7316
7317 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
7318 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
7319
Jeff Johnsone7245742012-09-05 17:12:55 -07007320 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07007321 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007322 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07007323 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007324 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07007325 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
7326
Jeff Johnsone7245742012-09-05 17:12:55 -07007327 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07007328 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
7329
7330 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
7331 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007332 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07007333 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
7334 }
7335
7336 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
7337 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
7338
Jeff Johnsone7245742012-09-05 17:12:55 -07007339 wpalMemoryCopy( pSendBuffer+usDataOffset,
7340 &halFinishScanReqMsg.finishScanParams,
7341 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007342
7343 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007344 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007345
7346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007349 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007350 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
7351}/*WDI_ProcessFinishScanReq*/
7352
7353
7354/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007355 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07007356==========================================================================*/
7357/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007358 @brief Process BSS Join for a given Session
7359
7360 @param pWDICtx: pointer to the WLAN DAL context
7361 pEventData: pointer to the event information structure
7362
Jeff Johnson295189b2012-06-20 16:38:30 -07007363 @see
7364 @return Result of the function call
7365*/
7366WDI_Status
7367WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007368(
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 WDI_ControlBlockType* pWDICtx,
7370 WDI_JoinReqParamsType* pwdiJoinParams,
7371 WDI_JoinRspCb wdiJoinRspCb,
7372 void* pUserData
7373)
7374{
7375 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 wpt_uint16 usDataOffset = 0;
7378 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007379 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007380
Jeff Johnsone7245742012-09-05 17:12:55 -07007381 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7383
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007384 wpalMutexAcquire(&pWDICtx->wptMutex);
7385
Jeff Johnson295189b2012-06-20 16:38:30 -07007386 /*------------------------------------------------------------------------
7387 Check to see if we have any session with this BSSID already stored, we
7388 should not
7389 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007390 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7391 pwdiJoinParams->wdiReqInfo.macBSSID,
7392 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007393
7394 if ( NULL != pBSSSes )
7395 {
7396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007397 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
7398 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007399
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007400 /*reset the bAssociationInProgress otherwise the next
7401 *join request will be queued*/
7402 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7403 wpalMutexRelease(&pWDICtx->wptMutex);
7404 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007405 }
7406
Jeff Johnson295189b2012-06-20 16:38:30 -07007407 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007408 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007409 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007410 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007411 if ( NULL == pBSSSes )
7412 {
7413
7414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7415 "DAL has no free sessions - cannot run another join");
7416
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07007417 /*reset the bAssociationInProgress otherwise the next
7418 *join request will be queued*/
7419 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007420 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007421 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007422 }
7423
7424 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007425 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7426 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007427 WDI_MAC_ADDR_LEN);
7428
7429 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007430 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007431 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07007432
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 wpalMutexRelease(&pWDICtx->wptMutex);
7434
7435 /*-----------------------------------------------------------------------
7436 Get message buffer
7437 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007438 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007439 sizeof(halJoinReqMsg.joinReqParams),
7440 &pSendBuffer, &usDataOffset, &usSendSize))||
7441 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
7442 {
7443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7444 "Unable to get send buffer in join req %x %x %x",
7445 pUserData, pwdiJoinParams, wdiJoinRspCb);
7446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 }
7449
7450 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07007451 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007452
7453 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07007454 pwdiJoinParams->wdiReqInfo.macSTASelf,
7455 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07007456
Jeff Johnsone7245742012-09-05 17:12:55 -07007457 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07007458 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
7459
7460 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
7461
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07007462#ifdef WLAN_FEATURE_VOWIFI
7463 halJoinReqMsg.joinReqParams.maxTxPower =
7464 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
7465#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007466 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07007467 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
7468#endif
7469
Jeff Johnsone7245742012-09-05 17:12:55 -07007470 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07007471 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
7472 wdiSecondaryChannelOffset);
7473
Jeff Johnsone7245742012-09-05 17:12:55 -07007474 wpalMemoryCopy( pSendBuffer+usDataOffset,
7475 &halJoinReqMsg.joinReqParams,
7476 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007477
7478 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007479 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007480
7481 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007482 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007483 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007484 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7485 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07007486
7487}/*WDI_ProcessBSSSessionJoinReq*/
7488
7489/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007490 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007492
7493 @param pWDICtx: pointer to the WLAN DAL context
7494 pEventData: pointer to the event information structure
7495
Jeff Johnson295189b2012-06-20 16:38:30 -07007496 @see
7497 @return Result of the function call
7498*/
7499WDI_Status
7500WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007501(
Jeff Johnson295189b2012-06-20 16:38:30 -07007502 WDI_ControlBlockType* pWDICtx,
7503 WDI_EventInfoType* pEventData
7504)
7505{
7506 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
7507 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
7508 WDI_JoinRspCb wdiJoinRspCb = NULL;
7509 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7510
7511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007512 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007513 -------------------------------------------------------------------------*/
7514 if (( NULL == pEventData ) ||
7515 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
7516 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
7517 {
7518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007519 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007520 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007522 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007523
Jeff Johnson295189b2012-06-20 16:38:30 -07007524 /*-------------------------------------------------------------------------
7525 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007526 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007527 -------------------------------------------------------------------------*/
7528 wpalMutexAcquire(&pWDICtx->wptMutex);
7529
7530 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
7531 {
7532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7533 "Association is currently in progress, queueing new join req");
7534
7535 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007536 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007537 pwdiJoinParams->wdiReqInfo.macBSSID);
7538
7539 wpalMutexRelease(&pWDICtx->wptMutex);
7540
Jeff Johnsone7245742012-09-05 17:12:55 -07007541 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 }
7543
7544 /*Starting a new association */
7545 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
7546 wpalMutexRelease(&pWDICtx->wptMutex);
7547
7548 /*Process the Join Request*/
7549 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
7550 wdiJoinRspCb,pEventData->pUserData);
7551
7552}/*WDI_ProcessJoinReq*/
7553
7554
7555/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007556 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007557 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007558
7559 @param pWDICtx: pointer to the WLAN DAL context
7560 pEventData: pointer to the event information structure
7561
Jeff Johnson295189b2012-06-20 16:38:30 -07007562 @see
7563 @return Result of the function call
7564*/
7565WDI_Status
7566WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007567(
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 WDI_ControlBlockType* pWDICtx,
7569 WDI_EventInfoType* pEventData
7570)
7571{
7572 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
7573 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07007574 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007575 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007576 wpt_uint16 uMsgSize = 0;
7577 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007578 wpt_uint16 usDataOffset = 0;
7579 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007580 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007581
Jeff Johnsone7245742012-09-05 17:12:55 -07007582 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7584
7585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007587 -------------------------------------------------------------------------*/
7588 if (( NULL == pEventData ) ||
7589 ( NULL == pEventData->pEventData ) ||
7590 ( NULL == pEventData->pCBfnc ))
7591 {
7592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 }
7597
7598 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
7599 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
7600 /*-------------------------------------------------------------------------
7601 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007602 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007603 -------------------------------------------------------------------------*/
7604 wpalMutexAcquire(&pWDICtx->wptMutex);
7605
7606 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007607 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007608 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007609 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7610 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
7611 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007612
Jeff Johnsone7245742012-09-05 17:12:55 -07007613 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007614 {
7615#ifdef WLAN_FEATURE_VOWIFI_11R
7616 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007617 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007618 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007619 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007620 if ( NULL == pBSSSes )
7621 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007622
Jeff Johnson295189b2012-06-20 16:38:30 -07007623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7624 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007625
Jeff Johnson295189b2012-06-20 16:38:30 -07007626 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007627 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007628 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007629
Jeff Johnson295189b2012-06-20 16:38:30 -07007630 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007631 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7632 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007633 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007634
Jeff Johnson295189b2012-06-20 16:38:30 -07007635 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007636 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007637 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7638#else
Jeff Johnsone7245742012-09-05 17:12:55 -07007639 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07007640 * Request in case of IBSS*/
7641 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
7642 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
7643 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
7644 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
7645 {
7646 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007647 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07007648 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007649 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 if ( NULL == pBSSSes )
7651 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007652
Jeff Johnson295189b2012-06-20 16:38:30 -07007653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7654 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07007655
Jeff Johnson295189b2012-06-20 16:38:30 -07007656 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007657 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007658 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007659
Jeff Johnson295189b2012-06-20 16:38:30 -07007660 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007661 pBSSSes->bInUse = eWLAN_PAL_TRUE;
7662 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07007663 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07007664
Jeff Johnson295189b2012-06-20 16:38:30 -07007665 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007666 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07007667 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
7668 }
7669 else
7670 {
7671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007672 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
7673 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7674 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
7675
Jeff Johnson295189b2012-06-20 16:38:30 -07007676 /* for IBSS testing */
7677 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007679 }
7680#endif
7681 }
7682
7683 /*------------------------------------------------------------------------
7684 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007685 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 ------------------------------------------------------------------------*/
7687 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7688 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7690 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
7691 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
7692 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007693
Jeff Johnsone7245742012-09-05 17:12:55 -07007694 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007695
7696 wpalMutexRelease(&pWDICtx->wptMutex);
7697
Jeff Johnsone7245742012-09-05 17:12:55 -07007698 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 }
7700
7701 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07007702 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
7703 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007704 sizeof(pWDICtx->wdiCachedConfigBssReq));
7705
7706 wpalMutexRelease(&pWDICtx->wptMutex);
7707
Jeff Johnsone7245742012-09-05 17:12:55 -07007708 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
7709#ifdef WLAN_FEATURE_11AC
7710 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007711 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07007712 else
7713#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07007714 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07007715
7716 /*-----------------------------------------------------------------------
7717 Get message buffer
7718 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007719 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007720 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
7721 ( usSendSize < (usDataOffset + uMsgSize )))
7722 {
7723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7724 "Unable to get send buffer in config bss req %x %x %x",
7725 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
7726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007728 }
7729
7730 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07007731#ifdef WLAN_FEATURE_11AC
7732 if (WDI_getFwWlanFeatCaps(DOT11AC))
7733 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
7734 &pwdiConfigBSSParams->wdiReqInfo);
7735 else
7736#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 &pwdiConfigBSSParams->wdiReqInfo);
7739
7740 /* Need to fill in the STA Index to invalid, since at this point we have not
7741 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07007742 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07007743
7744 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07007745 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
7746
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08007747#ifdef WLAN_FEATURE_11AC
7748 if (WDI_getFwWlanFeatCaps(DOT11AC)){
7749 wpalMemoryCopy( pSendBuffer+usDataOffset,
7750 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
7751 uMsgSize);
7752 }else
7753#endif
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007754 {
7755 if ( uMsgSize <= sizeof(tConfigBssParams) )
7756 {
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -07007757 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya95341d32013-03-20 20:15:03 -07007758 &halConfigBssReqMsg.uBssParams.configBssParams,
7759 uMsgSize);
7760 }
7761 else
7762 {
7763 return WDI_STATUS_E_FAILURE;
7764 }
7765 }
Jeff Johnson295189b2012-06-20 16:38:30 -07007766
7767 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007768 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007769
7770 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007771 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007772 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007773 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
7774 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 WDI_CONFIG_BSS_RESP);
7776
7777}/*WDI_ProcessConfigBSSReq*/
7778
7779
7780/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007781 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007782 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007783
7784 @param pWDICtx: pointer to the WLAN DAL context
7785 pEventData: pointer to the event information structure
7786
Jeff Johnson295189b2012-06-20 16:38:30 -07007787 @see
7788 @return Result of the function call
7789*/
7790WDI_Status
7791WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007792(
Jeff Johnson295189b2012-06-20 16:38:30 -07007793 WDI_ControlBlockType* pWDICtx,
7794 WDI_EventInfoType* pEventData
7795)
7796{
7797 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
7798 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007799 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007800 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007801 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007802 wpt_uint16 usDataOffset = 0;
7803 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007804 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007805
Jeff Johnsone7245742012-09-05 17:12:55 -07007806 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7808
7809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007811 -------------------------------------------------------------------------*/
7812 if (( NULL == pEventData ) ||
7813 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
7814 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
7815 {
7816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007820 }
7821
7822 /*-------------------------------------------------------------------------
7823 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007824 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007825 -------------------------------------------------------------------------*/
7826 wpalMutexAcquire(&pWDICtx->wptMutex);
7827
7828 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007829 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007831 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
7832 pwdiDelBSSParams->ucBssIdx,
7833 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007834
Jeff Johnsone7245742012-09-05 17:12:55 -07007835 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07007836 {
7837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007838 "%s: BSS does not yet exist. ucBssIdx %d",
7839 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007840
7841 wpalMutexRelease(&pWDICtx->wptMutex);
7842
7843 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007844 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007845
7846 /*------------------------------------------------------------------------
7847 Check if this BSS is being currently processed or queued,
7848 if queued - queue the new request as well
7849 ------------------------------------------------------------------------*/
7850 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07007851 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7853 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
7854 __func__, pwdiDelBSSParams->ucBssIdx);
7855
7856 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
7857
7858 wpalMutexRelease(&pWDICtx->wptMutex);
7859
7860 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007861 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007862
Jeff Johnson295189b2012-06-20 16:38:30 -07007863 /*-----------------------------------------------------------------------
7864 If we receive a Del BSS request for an association that is already in
7865 progress, it indicates that the assoc has failed => we no longer have
7866 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07007867 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 -----------------------------------------------------------------------*/
7869 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
7870 {
7871 /*We can switch to false here because even if a subsequent Join comes in
7872 it will only be processed when DAL transitions out of BUSY state which
7873 happens when the Del BSS request comes */
7874 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
7875
7876 /*Former association is complete - prepare next pending assoc for
7877 processing */
7878 WDI_DequeueAssocRequest(pWDICtx);
7879 }
7880
7881 wpalMutexRelease(&pWDICtx->wptMutex);
7882 /*-----------------------------------------------------------------------
7883 Get message buffer
7884 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007885 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07007886 sizeof(halBssReqMsg.deleteBssParams),
7887 &pSendBuffer, &usDataOffset, &usSendSize))||
7888 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
7889 {
7890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7891 "Unable to get send buffer in start req %x %x %x",
7892 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
7893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007895 }
7896
7897 /*Fill in the message request structure*/
7898
7899 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08007900 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07007901
Jeff Johnsone7245742012-09-05 17:12:55 -07007902 wpalMemoryCopy( pSendBuffer+usDataOffset,
7903 &halBssReqMsg.deleteBssParams,
7904 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07007905
7906 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07007908
Jeff Johnsone7245742012-09-05 17:12:55 -07007909
Jeff Johnson295189b2012-06-20 16:38:30 -07007910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007911 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07007912 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007913 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07007914 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
7915
Jeff Johnsone7245742012-09-05 17:12:55 -07007916
Jeff Johnson295189b2012-06-20 16:38:30 -07007917}/*WDI_ProcessDelBSSReq*/
7918
7919/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007920 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07007921 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007922
7923 @param pWDICtx: pointer to the WLAN DAL context
7924 pEventData: pointer to the event information structure
7925
Jeff Johnson295189b2012-06-20 16:38:30 -07007926 @see
7927 @return Result of the function call
7928*/
7929WDI_Status
7930WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007931(
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 WDI_ControlBlockType* pWDICtx,
7933 WDI_EventInfoType* pEventData
7934)
7935{
7936 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
7937 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007938 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007939 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007940 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007941 wpt_uint16 usDataOffset = 0;
7942 wpt_uint16 usSendSize = 0;
7943 wpt_uint16 uMsgSize = 0;
7944 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007946
Jeff Johnsone7245742012-09-05 17:12:55 -07007947 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07007948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7949
7950 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007951 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007952 -------------------------------------------------------------------------*/
7953 if (( NULL == pEventData ) ||
7954 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
7955 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
7956 {
7957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07007960 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07007961 }
7962
7963 /*-------------------------------------------------------------------------
7964 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 -------------------------------------------------------------------------*/
7967 wpalMutexAcquire(&pWDICtx->wptMutex);
7968
7969 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007970 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007972 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
7973 pwdiPostAssocParams->wdiBSSParams.macBSSID,
7974 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07007975
7976 if ( NULL == pBSSSes )
7977 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7979 "%s: Association sequence for this BSS does not yet exist - "
7980 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
7981 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007982
7983 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07007984 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007985 }
7986
7987 /*------------------------------------------------------------------------
7988 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07007989 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 ------------------------------------------------------------------------*/
7991 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
7992 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7994 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
7995 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07007996
Jeff Johnsone7245742012-09-05 17:12:55 -07007997 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007998
7999 wpalMutexRelease(&pWDICtx->wptMutex);
8000
Jeff Johnsone7245742012-09-05 17:12:55 -07008001 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 }
8003
8004 /*-----------------------------------------------------------------------
8005 If Post Assoc was not yet received - the current association must
8006 be in progress
8007 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008008 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008009 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
8010 {
8011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8012 "Association sequence for this BSS association no longer in "
8013 "progress - not allowed");
8014
8015 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008016 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 }
8018
8019 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008020 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07008021 -----------------------------------------------------------------------*/
8022 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
8023 {
8024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8025 "Post Assoc not allowed before JOIN - failing request");
8026
8027 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008029 }
8030
8031 wpalMutexRelease(&pWDICtx->wptMutex);
8032
8033 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
8034 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
8035 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07008037 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008038 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008039 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
8040 ( usSendSize < (usDataOffset + uMsgSize )))
8041 {
8042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8043 "Unable to get send buffer in start req %x %x %x",
8044 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
8045 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008046 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008047 }
8048
8049 /*Copy the STA parameters */
8050 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
8051 &pwdiPostAssocParams->wdiSTAParams );
8052
8053 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008054 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008055 WDI_STATableFindStaidByAddr(pWDICtx,
8056 pwdiPostAssocParams->wdiSTAParams.macSTA,
8057 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
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);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08008062 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 }
8065
8066 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008067 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008068 pBSSSes->ucBSSIdx;
8069
8070 /*Copy the BSS parameters */
8071 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8072 &pwdiPostAssocParams->wdiBSSParams);
8073
8074 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 WDI_STATableFindStaidByAddr(pWDICtx,
8077 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07008078 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 {
8080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8081 "This station does not exist in the WDI Station Table %d");
8082 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -08008083 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07008084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008085 }
8086
8087 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07008088 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 pBSSSes->ucBSSIdx;
8090
Jeff Johnsone7245742012-09-05 17:12:55 -07008091
8092 wpalMemoryCopy( pSendBuffer+usDataOffset,
8093 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
8094 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008095
8096 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
8097
Jeff Johnsone7245742012-09-05 17:12:55 -07008098 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
8099 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
8100 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008101
Jeff Johnsone7245742012-09-05 17:12:55 -07008102
Jeff Johnson295189b2012-06-20 16:38:30 -07008103 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008104 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008105
Jeff Johnsone7245742012-09-05 17:12:55 -07008106
8107 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07008109 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07008110
8111 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008112 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008113 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008114 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008115 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
8116
Jeff Johnsone7245742012-09-05 17:12:55 -07008117
Jeff Johnson295189b2012-06-20 16:38:30 -07008118}/*WDI_ProcessPostAssocReq*/
8119
8120/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008121 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008122 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008123
8124 @param pWDICtx: pointer to the WLAN DAL context
8125 pEventData: pointer to the event information structure
8126
Jeff Johnson295189b2012-06-20 16:38:30 -07008127 @see
8128 @return Result of the function call
8129*/
8130WDI_Status
8131WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008132(
Jeff Johnson295189b2012-06-20 16:38:30 -07008133 WDI_ControlBlockType* pWDICtx,
8134 WDI_EventInfoType* pEventData
8135)
8136{
8137 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
8138 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008139 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008141 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 wpt_uint16 usDataOffset = 0;
8143 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008144 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07008145 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8146
Jeff Johnsone7245742012-09-05 17:12:55 -07008147 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8149
8150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 -------------------------------------------------------------------------*/
8153 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8154 ( NULL == pEventData->pCBfnc ))
8155 {
8156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 }
8161
8162 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
8163 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
8164 /*-------------------------------------------------------------------------
8165 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 -------------------------------------------------------------------------*/
8168 wpalMutexAcquire(&pWDICtx->wptMutex);
8169
8170 /*------------------------------------------------------------------------
8171 Find the BSS for which the request is made and identify WDI session
8172 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008173 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8174 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008175 &macBSSID))
8176 {
8177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8178 "This station does not exist in the WDI Station Table %d");
8179 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 }
8182
Jeff Johnsone7245742012-09-05 17:12:55 -07008183 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8184 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008185 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8187 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8188 __func__, MAC_ADDR_ARRAY(macBSSID));
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. macBSSID " MAC_ADDRESS_STR,
8202 __func__, MAC_ADDR_ARRAY(macBSSID));
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 wpalMutexRelease(&pWDICtx->wptMutex);
8210 /*-----------------------------------------------------------------------
8211 Get message buffer
8212 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 sizeof(halDelStaReqMsg.delStaParams),
8215 &pSendBuffer, &usDataOffset, &usSendSize))||
8216 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
8217 {
8218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8219 "Unable to get send buffer in start req %x %x %x",
8220 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
8221 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008222 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 }
8224
Jeff Johnsone7245742012-09-05 17:12:55 -07008225 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
8226 wpalMemoryCopy( pSendBuffer+usDataOffset,
8227 &halDelStaReqMsg.delStaParams,
8228 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008229
8230 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008231 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008232
8233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008234 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008235 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008236 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008237 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
8238
8239}/*WDI_ProcessDelSTAReq*/
8240
8241
8242/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008244==========================================================================*/
8245/**
8246 @brief Process Set BSS Key Request function (called when Main FSM
8247 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008248
8249 @param pWDICtx: pointer to the WLAN DAL context
8250 pEventData: pointer to the event information structure
8251
Jeff Johnson295189b2012-06-20 16:38:30 -07008252 @see
8253 @return Result of the function call
8254*/
8255WDI_Status
8256WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008257(
Jeff Johnson295189b2012-06-20 16:38:30 -07008258 WDI_ControlBlockType* pWDICtx,
8259 WDI_EventInfoType* pEventData
8260)
8261{
8262 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
8263 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008264 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008265 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008266 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008267 wpt_uint16 usDataOffset = 0;
8268 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008269 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008270 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
8271 wpt_uint8 keyIndex = 0;
8272
8273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8274
8275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 -------------------------------------------------------------------------*/
8278 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8279 ( NULL == pEventData->pCBfnc ))
8280 {
8281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008285 }
8286
8287 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
8288 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
8289 /*-------------------------------------------------------------------------
8290 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008291 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008292 -------------------------------------------------------------------------*/
8293 wpalMutexAcquire(&pWDICtx->wptMutex);
8294
8295 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008296 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008297 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008298 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8299 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
8300 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008301
Jeff Johnsone7245742012-09-05 17:12:55 -07008302 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008303 {
8304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008305 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8306 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008307
8308 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 }
8311
8312 /*------------------------------------------------------------------------
8313 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008314 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 ------------------------------------------------------------------------*/
8316 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8317 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8319 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8320 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008321
Jeff Johnsone7245742012-09-05 17:12:55 -07008322 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008323 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008325 }
8326
8327
8328 wpalMutexRelease(&pWDICtx->wptMutex);
8329 /*-----------------------------------------------------------------------
8330 Get message buffer
8331 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008332 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
8334 &pSendBuffer, &usDataOffset, &usSendSize))||
8335 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
8336 {
8337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8338 "Unable to get send buffer in set bss key req %x %x %x",
8339 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
8340 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008341 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008342 }
8343
8344 /*-----------------------------------------------------------------------
8345 Copy the Key parameters into the HAL message
8346 -----------------------------------------------------------------------*/
8347
Jeff Johnsone7245742012-09-05 17:12:55 -07008348 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008349
Jeff Johnsone7245742012-09-05 17:12:55 -07008350 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008351 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
8352
Jeff Johnsone7245742012-09-05 17:12:55 -07008353 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07008354 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
8355
8356 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
8357 keyIndex++)
8358 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008359 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008360 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
8361 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
8362 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
8363 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
8364 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
8365 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008366 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008367 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008368 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008369 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008370 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008371 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
8372 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008373 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008374 WDI_MAX_KEY_LENGTH);
8375 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008376
8377 wpalMemoryCopy( pSendBuffer+usDataOffset,
8378 &halSetBssKeyReqMsg.setBssKeyParams,
8379 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008380
8381 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008382 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008383
8384 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008385 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008386 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008387 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8388 wdiSetBSSKeyRspCb, pEventData->pUserData,
8389 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008390
8391}/*WDI_ProcessSetBssKeyReq*/
8392
8393/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008396
8397 @param pWDICtx: pointer to the WLAN DAL context
8398 pEventData: pointer to the event information structure
8399
Jeff Johnson295189b2012-06-20 16:38:30 -07008400 @see
8401 @return Result of the function call
8402*/
8403WDI_Status
8404WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008405(
Jeff Johnson295189b2012-06-20 16:38:30 -07008406 WDI_ControlBlockType* pWDICtx,
8407 WDI_EventInfoType* pEventData
8408)
8409{
8410 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
8411 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008412 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008413 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008414 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 wpt_uint16 usDataOffset = 0;
8416 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
8419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8420
8421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 -------------------------------------------------------------------------*/
8424 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8425 ( NULL == pEventData->pCBfnc ))
8426 {
8427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008428 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008429 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 }
8432
8433 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
8434 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
8435 /*-------------------------------------------------------------------------
8436 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008437 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 -------------------------------------------------------------------------*/
8439 wpalMutexAcquire(&pWDICtx->wptMutex);
8440
8441 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008442 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07008443 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008444 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
8445 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
8446 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008447
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 {
8450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008451 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
8452 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008453
8454 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008455 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008456 }
8457
8458 /*------------------------------------------------------------------------
8459 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008460 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008461 ------------------------------------------------------------------------*/
8462 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8463 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8465 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
8466 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008467
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 }
8472
8473
8474 wpalMutexRelease(&pWDICtx->wptMutex);
8475
8476 /*-----------------------------------------------------------------------
8477 Get message buffer
8478 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008479 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008480 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
8481 &pSendBuffer, &usDataOffset, &usSendSize))||
8482 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
8483 {
8484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8485 "Unable to get send buffer in set bss key req %x %x %x",
8486 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
8487 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008488 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008489 }
8490 /*-----------------------------------------------------------------------
8491 Copy the Key parameters into the HAL message
8492 -----------------------------------------------------------------------*/
8493 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
8494
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
8497
8498 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
8499
Jeff Johnsone7245742012-09-05 17:12:55 -07008500 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008501 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
8502
Jeff Johnsone7245742012-09-05 17:12:55 -07008503 wpalMemoryCopy( pSendBuffer+usDataOffset,
8504 &halRemoveBssKeyReqMsg.removeBssKeyParams,
8505 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008506
8507 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008508 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008509
8510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008514 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008515 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008516}/*WDI_ProcessRemoveBssKeyReq*/
8517
8518/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008521
8522 @param pWDICtx: pointer to the WLAN DAL context
8523 pEventData: pointer to the event information structure
8524
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 @see
8526 @return Result of the function call
8527*/
8528WDI_Status
8529WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008530(
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 WDI_ControlBlockType* pWDICtx,
8532 WDI_EventInfoType* pEventData
8533)
8534{
8535 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8536 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8537 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008538 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 wpt_uint16 usDataOffset = 0;
8540 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008542 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008543 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8545 wpt_uint8 keyIndex = 0;
8546
8547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8548
8549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008551 -------------------------------------------------------------------------*/
8552 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8553 ( NULL == pEventData->pCBfnc ))
8554 {
8555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 }
8560
8561 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8562 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8563 /*-------------------------------------------------------------------------
8564 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008566 -------------------------------------------------------------------------*/
8567 wpalMutexAcquire(&pWDICtx->wptMutex);
8568
8569 /*------------------------------------------------------------------------
8570 Find the BSS for which the request is made and identify WDI session
8571 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008572 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8573 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 &macBSSID))
8575 {
8576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8577 "This station does not exist in the WDI Station Table %d");
8578 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008579 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 }
8581
Jeff Johnsone7245742012-09-05 17:12:55 -07008582 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8583 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8586 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8587 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008588
8589 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008590 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008591 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008592
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 /*------------------------------------------------------------------------
8594 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008595 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008596 ------------------------------------------------------------------------*/
8597 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8598 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8600 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8601 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008602
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008606 }
8607
8608
8609 wpalMutexRelease(&pWDICtx->wptMutex);
8610 /*-----------------------------------------------------------------------
8611 Get message buffer
8612 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008613 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008614 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8615 &pSendBuffer, &usDataOffset, &usSendSize))||
8616 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8617 {
8618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8619 "Unable to get send buffer in set bss key req %x %x %x",
8620 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8621 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008623 }
8624 /*-----------------------------------------------------------------------
8625 Copy the STA Key parameters into the HAL message
8626 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008627 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8629
Jeff Johnsone7245742012-09-05 17:12:55 -07008630 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008631 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8632
8633 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8634
8635 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8636
8637 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8638
Jeff Johnson295189b2012-06-20 16:38:30 -07008639 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8640 keyIndex++)
8641 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8644 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8645 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8646 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8647 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8648 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008649 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008651 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008653 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008654 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8655 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008656 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 WDI_MAX_KEY_LENGTH);
8658 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008659
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 wpalMemoryCopy( pSendBuffer+usDataOffset,
8661 &halSetStaKeyReqMsg.setStaKeyParams,
8662 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008663
8664 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008666
8667 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008668 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8671 wdiSetSTAKeyRspCb, pEventData->pUserData,
8672 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008673
8674}/*WDI_ProcessSetSTAKeyReq*/
8675
8676/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008677 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008678 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008679
8680 @param pWDICtx: pointer to the WLAN DAL context
8681 pEventData: pointer to the event information structure
8682
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 @see
8684 @return Result of the function call
8685*/
8686WDI_Status
8687WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008688(
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 WDI_ControlBlockType* pWDICtx,
8690 WDI_EventInfoType* pEventData
8691)
8692{
8693 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
8694 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8695 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008696 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008697 wpt_uint16 usDataOffset = 0;
8698 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008699 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008700 wpt_macAddr macBSSID;
8701 wpt_uint8 ucCurrentBSSSesIdx;
8702 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
8703 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8704
8705 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008706 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008707 -------------------------------------------------------------------------*/
8708 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8709 ( NULL == pEventData->pCBfnc ))
8710 {
8711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008712 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008713 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008715 }
8716
8717 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
8718 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
8719 /*-------------------------------------------------------------------------
8720 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 -------------------------------------------------------------------------*/
8723 wpalMutexAcquire(&pWDICtx->wptMutex);
8724
8725 /*------------------------------------------------------------------------
8726 Find the BSS for which the request is made and identify WDI session
8727 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008728 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8729 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 &macBSSID))
8731 {
8732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8733 "This station does not exist in the WDI Station Table %d");
8734 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008736 }
8737
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8739 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008740 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8742 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8743 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008744
8745 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008746 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008747 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008748
Jeff Johnson295189b2012-06-20 16:38:30 -07008749 /*------------------------------------------------------------------------
8750 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008751 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008752 ------------------------------------------------------------------------*/
8753 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8754 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8756 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8757 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008758
Jeff Johnsone7245742012-09-05 17:12:55 -07008759 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008761 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008762 }
8763
8764
8765
8766 wpalMutexRelease(&pWDICtx->wptMutex);
8767 /*-----------------------------------------------------------------------
8768 Get message buffer
8769 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008770 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008771 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
8772 &pSendBuffer, &usDataOffset, &usSendSize))||
8773 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
8774 {
8775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8776 "Unable to get send buffer in set bss key req %x %x %x",
8777 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
8778 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 }
8781
8782 /*-----------------------------------------------------------------------
8783 Copy the Key parameters into the HAL message
8784 -----------------------------------------------------------------------*/
8785
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8788
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
8791
Jeff Johnsone7245742012-09-05 17:12:55 -07008792 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
8794
Jeff Johnsone7245742012-09-05 17:12:55 -07008795 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07008796 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
8797
Jeff Johnsone7245742012-09-05 17:12:55 -07008798 wpalMemoryCopy( pSendBuffer+usDataOffset,
8799 &halRemoveStaKeyReqMsg.removeStaKeyParams,
8800 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008801
8802 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008803 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008804
8805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008806 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008807 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008809 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07008810 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008811
8812}/*WDI_ProcessRemoveSTAKeyReq*/
8813
8814/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008817
8818 @param pWDICtx: pointer to the WLAN DAL context
8819 pEventData: pointer to the event information structure
8820
Jeff Johnson295189b2012-06-20 16:38:30 -07008821 @see
8822 @return Result of the function call
8823*/
8824WDI_Status
8825WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008826(
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 WDI_ControlBlockType* pWDICtx,
8828 WDI_EventInfoType* pEventData
8829)
8830{
8831 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
8832 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
8833 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 wpt_uint16 usDataOffset = 0;
8836 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008837 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07008839 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07008840 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
8841 wpt_uint8 keyIndex = 0;
8842
8843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8844
8845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008846 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008847 -------------------------------------------------------------------------*/
8848 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
8849 ( NULL == pEventData->pCBfnc ))
8850 {
8851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008855 }
8856
8857 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
8858 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
8859 /*-------------------------------------------------------------------------
8860 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008861 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008862 -------------------------------------------------------------------------*/
8863 wpalMutexAcquire(&pWDICtx->wptMutex);
8864
8865 /*------------------------------------------------------------------------
8866 Find the BSS for which the request is made and identify WDI session
8867 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
8869 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07008870 &macBSSID))
8871 {
8872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8873 "This station does not exist in the WDI Station Table %d");
8874 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008875 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008876 }
8877
Jeff Johnsone7245742012-09-05 17:12:55 -07008878 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
8879 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07008880 {
8881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07008882 "Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
8883 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008884
8885 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008886 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008887 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008888
Jeff Johnson295189b2012-06-20 16:38:30 -07008889 /*------------------------------------------------------------------------
8890 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07008892 ------------------------------------------------------------------------*/
8893 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
8894 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8896 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
8897 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008898
Jeff Johnsone7245742012-09-05 17:12:55 -07008899 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008900 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 }
8903
8904
8905 wpalMutexRelease(&pWDICtx->wptMutex);
8906 /*-----------------------------------------------------------------------
8907 Get message buffer
8908 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008909 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008910 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
8911 &pSendBuffer, &usDataOffset, &usSendSize))||
8912 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
8913 {
8914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8915 "Unable to get send buffer in set bss key req %x %x %x",
8916 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
8917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008919 }
8920 /*-----------------------------------------------------------------------
8921 Copy the STA Key parameters into the HAL message
8922 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008923 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
8925
Jeff Johnsone7245742012-09-05 17:12:55 -07008926 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
8928
8929 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
8930
8931 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
8932
8933 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
8934
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
8936 keyIndex++)
8937 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008938 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
8940 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
8941 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
8942 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
8943 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
8944 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07008945 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07008946 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
8951 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -07008952 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -07008953 WDI_MAX_KEY_LENGTH);
8954 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008955
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 wpalMemoryCopy( pSendBuffer+usDataOffset,
8957 &halSetStaKeyReqMsg.setStaKeyParams,
8958 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008959
8960 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008961 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008962
8963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008964 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8967 wdiSetSTAKeyRspCb, pEventData->pUserData,
8968 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008969
8970}/*WDI_ProcessSetSTABcastKeyReq*/
8971
8972/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008973 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008975
8976 @param pWDICtx: pointer to the WLAN DAL context
8977 pEventData: pointer to the event information structure
8978
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 @see
8980 @return Result of the function call
8981*/
8982WDI_Status
8983WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008984(
Jeff Johnson295189b2012-06-20 16:38:30 -07008985 WDI_ControlBlockType* pWDICtx,
8986 WDI_EventInfoType* pEventData
8987)
8988{
8989 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
8990 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
8991 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008992 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008993 wpt_uint16 usDataOffset = 0;
8994 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008995 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 wpt_macAddr macBSSID;
8997 wpt_uint8 ucCurrentBSSSesIdx;
8998 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
8999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9000
9001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009002 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009003 -------------------------------------------------------------------------*/
9004 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9005 ( NULL == pEventData->pCBfnc ))
9006 {
9007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009008 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009011 }
9012
9013 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
9014 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
9015 /*-------------------------------------------------------------------------
9016 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009017 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009018 -------------------------------------------------------------------------*/
9019 wpalMutexAcquire(&pWDICtx->wptMutex);
9020
9021 /*------------------------------------------------------------------------
9022 Find the BSS for which the request is made and identify WDI session
9023 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009024 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9025 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 &macBSSID))
9027 {
9028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9029 "This station does not exist in the WDI Station Table %d");
9030 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 }
9033
Jeff Johnsone7245742012-09-05 17:12:55 -07009034 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9035 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009036 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9038 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9039 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009040
9041 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009042 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009043 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009044
Jeff Johnson295189b2012-06-20 16:38:30 -07009045 /*------------------------------------------------------------------------
9046 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009047 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009048 ------------------------------------------------------------------------*/
9049 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9050 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9052 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9053 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009054
Jeff Johnsone7245742012-09-05 17:12:55 -07009055 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009056 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009057 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009058 }
9059
9060
9061
9062 wpalMutexRelease(&pWDICtx->wptMutex);
9063 /*-----------------------------------------------------------------------
9064 Get message buffer
9065 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009066 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
9068 &pSendBuffer, &usDataOffset, &usSendSize))||
9069 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
9070 {
9071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9072 "Unable to get send buffer in set bss key req %x %x %x",
9073 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
9074 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009076 }
9077
9078 /*-----------------------------------------------------------------------
9079 Copy the Key parameters into the HAL message
9080 -----------------------------------------------------------------------*/
9081
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
9084
Jeff Johnsone7245742012-09-05 17:12:55 -07009085 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009086 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
9087
Jeff Johnsone7245742012-09-05 17:12:55 -07009088 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009089 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
9090
Jeff Johnsone7245742012-09-05 17:12:55 -07009091 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -07009092 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
9093
Jeff Johnsone7245742012-09-05 17:12:55 -07009094 wpalMemoryCopy( pSendBuffer+usDataOffset,
9095 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
9096 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009097
9098 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009100
9101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009102 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009103 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009104 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009105 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009107
9108}/*WDI_ProcessRemoveSTABcastKeyReq*/
9109
9110/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009111 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009112==========================================================================*/
9113/**
9114 @brief Process Add TSpec Request function (called when Main FSM
9115 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009116
9117 @param pWDICtx: pointer to the WLAN DAL context
9118 pEventData: pointer to the event information structure
9119
Jeff Johnson295189b2012-06-20 16:38:30 -07009120 @see
9121 @return Result of the function call
9122*/
9123WDI_Status
9124WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009125(
Jeff Johnson295189b2012-06-20 16:38:30 -07009126 WDI_ControlBlockType* pWDICtx,
9127 WDI_EventInfoType* pEventData
9128)
9129{
9130 WDI_AddTSReqParamsType* pwdiAddTSParams;
9131 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009133 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009134 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009135 wpt_uint16 usDataOffset = 0;
9136 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 wpt_macAddr macBSSID;
9139 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -07009140
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9142
9143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009145 -------------------------------------------------------------------------*/
9146 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9147 ( NULL == pEventData->pCBfnc ))
9148 {
9149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009153 }
9154
9155 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
9156 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
9157 /*-------------------------------------------------------------------------
9158 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009160 -------------------------------------------------------------------------*/
9161 wpalMutexAcquire(&pWDICtx->wptMutex);
9162
9163 /*------------------------------------------------------------------------
9164 Find the BSS for which the request is made and identify WDI session
9165 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009166 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9167 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 &macBSSID))
9169 {
9170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9171 "This station does not exist in the WDI Station Table %d");
9172 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009174 }
9175
Jeff Johnsone7245742012-09-05 17:12:55 -07009176 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9177 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009178 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9180 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9181 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009182
9183 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009184 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009185 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009186
Jeff Johnson295189b2012-06-20 16:38:30 -07009187 /*------------------------------------------------------------------------
9188 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009189 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009190 ------------------------------------------------------------------------*/
9191 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9192 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9194 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9195 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009196
Jeff Johnsone7245742012-09-05 17:12:55 -07009197 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 }
9201
9202 wpalMutexRelease(&pWDICtx->wptMutex);
9203 /*-----------------------------------------------------------------------
9204 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009205 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009206 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009207 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
9208 sizeof(halAddTsParams),
9209 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -07009210 &usSendSize))||
9211 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
9212 {
9213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9214 "Unable to get send buffer in set bss key req %x %x %x",
9215 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
9216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 }
9219
9220 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
9221 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
9222
9223 //TSPEC IE
9224 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
9225 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -07009226 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009227 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009230 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009231 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009232 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009233 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009234 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009235 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009236 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -07009237 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -07009240 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009241 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009242 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009243 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009244 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009245 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -07009251 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -07009253 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -07009254 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
9256
9257 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -07009258 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -07009259 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -07009260 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -07009261 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -07009262 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009264 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -07009266 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -07009267 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -07009268 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -07009269 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -07009270 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
9272
9273 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -07009276 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
9278
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 wpalMemoryCopy( pSendBuffer+usDataOffset,
9280 &halAddTsParams,
9281 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009282
9283 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009284 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009285
9286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009287 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009289 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009290 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009291 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009292}/*WDI_ProcessAddTSpecReq*/
9293
9294
9295/**
9296 @brief Process Del TSpec Request function (called when Main FSM
9297 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009298
9299 @param pWDICtx: pointer to the WLAN DAL context
9300 pEventData: pointer to the event information structure
9301
Jeff Johnson295189b2012-06-20 16:38:30 -07009302 @see
9303 @return Result of the function call
9304*/
9305WDI_Status
9306WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009307(
Jeff Johnson295189b2012-06-20 16:38:30 -07009308 WDI_ControlBlockType* pWDICtx,
9309 WDI_EventInfoType* pEventData
9310)
9311{
9312 WDI_DelTSReqParamsType* pwdiDelTSParams;
9313 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009315 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009317 wpt_uint16 usDataOffset = 0;
9318 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009320 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9321
9322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 -------------------------------------------------------------------------*/
9325 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9326 ( NULL == pEventData->pCBfnc ))
9327 {
9328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009329 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009330 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009331 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009332 }
9333
9334 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
9335 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
9336
9337 /*-------------------------------------------------------------------------
9338 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 -------------------------------------------------------------------------*/
9341 wpalMutexAcquire(&pWDICtx->wptMutex);
9342
9343 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009344 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009345 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009346 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9347 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
9348 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009349
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9353 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9354 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
9355
Jeff Johnson295189b2012-06-20 16:38:30 -07009356 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009358 }
9359
9360 /*------------------------------------------------------------------------
9361 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009362 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009363 ------------------------------------------------------------------------*/
9364 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9365 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9367 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9368 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009369
Jeff Johnsone7245742012-09-05 17:12:55 -07009370 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 }
9374
9375
9376 wpalMutexRelease(&pWDICtx->wptMutex);
9377 /*-----------------------------------------------------------------------
9378 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009381 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009382 sizeof(pwdiDelTSParams->wdiDelTSInfo),
9383 &pSendBuffer, &usDataOffset, &usSendSize))||
9384 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
9385 {
9386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9387 "Unable to get send buffer in set bss key req %x %x %x",
9388 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
9389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009391 }
9392
Jeff Johnsone7245742012-09-05 17:12:55 -07009393 wpalMemoryCopy( pSendBuffer+usDataOffset,
9394 &pwdiDelTSParams->wdiDelTSInfo,
9395 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009396
9397 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009399
9400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009403 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9404 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009405}/*WDI_ProcessDelTSpecReq*/
9406
9407/**
9408 @brief Process Update EDCA Params Request function (called when
9409 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009410
9411 @param pWDICtx: pointer to the WLAN DAL context
9412 pEventData: pointer to the event information structure
9413
Jeff Johnson295189b2012-06-20 16:38:30 -07009414 @see
9415 @return Result of the function call
9416*/
9417WDI_Status
9418WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009419(
Jeff Johnson295189b2012-06-20 16:38:30 -07009420 WDI_ControlBlockType* pWDICtx,
9421 WDI_EventInfoType* pEventData
9422)
9423{
9424 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
9425 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009429 wpt_uint16 usDataOffset = 0;
9430 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9433
9434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009436 -------------------------------------------------------------------------*/
9437 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9438 ( NULL == pEventData->pCBfnc ))
9439 {
9440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009444 }
9445
9446 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
9447 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
9448 /*-------------------------------------------------------------------------
9449 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 -------------------------------------------------------------------------*/
9452 wpalMutexAcquire(&pWDICtx->wptMutex);
9453
9454 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009457 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9458 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
9459 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009460
Jeff Johnsone7245742012-09-05 17:12:55 -07009461 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 {
9463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009464 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9465 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009466
9467 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009468 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 }
9470
9471 /*------------------------------------------------------------------------
9472 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009474 ------------------------------------------------------------------------*/
9475 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9476 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9478 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9479 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009480
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009482 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 }
9485
9486
9487 wpalMutexRelease(&pWDICtx->wptMutex);
9488 /*-----------------------------------------------------------------------
9489 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009492 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
9494 &pSendBuffer, &usDataOffset, &usSendSize))||
9495 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
9496 {
9497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9498 "Unable to get send buffer in set bss key req %x %x %x",
9499 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
9500 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009501 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009502 }
9503
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 wpalMemoryCopy( pSendBuffer+usDataOffset,
9505 &pwdiUpdateEDCAParams->wdiEDCAInfo,
9506 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009507
9508 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009509 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009510
9511 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009512 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009513 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009514 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9515 wdiUpdateEDCARspCb, pEventData->pUserData,
9516 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009517}/*WDI_ProcessUpdateEDCAParamsReq*/
9518
9519/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009521 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009522
9523 @param pWDICtx: pointer to the WLAN DAL context
9524 pEventData: pointer to the event information structure
9525
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 @see
9527 @return Result of the function call
9528*/
9529WDI_Status
9530WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009531(
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 WDI_ControlBlockType* pWDICtx,
9533 WDI_EventInfoType* pEventData
9534)
9535{
9536 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
9537 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009538 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009539 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 wpt_uint16 usDataOffset = 0;
9542 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009543 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009544 wpt_macAddr macBSSID;
9545
9546 tAddBASessionReqMsg halAddBASessionReq;
9547 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9548
9549 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009550 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009551 -------------------------------------------------------------------------*/
9552 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9553 ( NULL == pEventData->pCBfnc ))
9554 {
9555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009556 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 }
9560
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
9565 /*-------------------------------------------------------------------------
9566 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009567 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009568 -------------------------------------------------------------------------*/
9569 wpalMutexAcquire(&pWDICtx->wptMutex);
9570
9571 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009572 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009573 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009574 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9575 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009576 &macBSSID))
9577 {
9578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9579 "This station does not exist in the WDI Station Table %d");
9580 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 }
9583
9584
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009586
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9590 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9591 __func__, MAC_ADDR_ARRAY(macBSSID));
9592
Jeff Johnson295189b2012-06-20 16:38:30 -07009593 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009594 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 }
9596
9597 /*------------------------------------------------------------------------
9598 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009599 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 ------------------------------------------------------------------------*/
9601 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9602 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9604 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9605 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009606
Jeff Johnsone7245742012-09-05 17:12:55 -07009607 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 }
9611
9612
9613 wpalMutexRelease(&pWDICtx->wptMutex);
9614 /*-----------------------------------------------------------------------
9615 Get message buffer
9616 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009617 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9618 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 sizeof(halAddBASessionReq.addBASessionParams),
9620 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -07009621 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -07009622 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
9623 {
9624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9625 "Unable to get send buffer in Add BA session req %x %x %x",
9626 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
9627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009629 }
9630
9631 halAddBASessionReq.addBASessionParams.staIdx =
9632 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
9633 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
9634 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
9635 WDI_MAC_ADDR_LEN);
9636 halAddBASessionReq.addBASessionParams.baTID =
9637 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
9638 halAddBASessionReq.addBASessionParams.baPolicy =
9639 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
9640 halAddBASessionReq.addBASessionParams.baBufferSize =
9641 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
9642 halAddBASessionReq.addBASessionParams.baTimeout =
9643 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
9644 halAddBASessionReq.addBASessionParams.baSSN =
9645 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
9646 halAddBASessionReq.addBASessionParams.baDirection =
9647 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
9648
Jeff Johnsone7245742012-09-05 17:12:55 -07009649 wpalMemoryCopy( pSendBuffer+usDataOffset,
9650 &halAddBASessionReq.addBASessionParams,
9651 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009652
9653 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009654 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009655
9656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009657 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9660 wdiAddBASessionRspCb, pEventData->pUserData,
9661 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009662}/*WDI_ProcessAddBASessionReq*/
9663
9664/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009666 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009667
9668 @param pWDICtx: pointer to the WLAN DAL context
9669 pEventData: pointer to the event information structure
9670
Jeff Johnson295189b2012-06-20 16:38:30 -07009671 @see
9672 @return Result of the function call
9673*/
9674WDI_Status
9675WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009676(
Jeff Johnson295189b2012-06-20 16:38:30 -07009677 WDI_ControlBlockType* pWDICtx,
9678 WDI_EventInfoType* pEventData
9679)
9680{
9681 WDI_DelBAReqParamsType* pwdiDelBAParams;
9682 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009683 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009684 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009685 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 wpt_uint16 usDataOffset = 0;
9687 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009688 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009689 wpt_macAddr macBSSID;
9690 tDelBAParams halDelBAparam;
9691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9692
9693 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009694 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009695 -------------------------------------------------------------------------*/
9696 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9697 ( NULL == pEventData->pCBfnc ))
9698 {
9699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009700 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009702 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009703 }
9704
9705 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
9706 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
9707 /*-------------------------------------------------------------------------
9708 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009709 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009710 -------------------------------------------------------------------------*/
9711 wpalMutexAcquire(&pWDICtx->wptMutex);
9712
9713 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009715 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009716 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9717 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 &macBSSID))
9719 {
9720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9721 "This station does not exist in the WDI Station Table %d");
9722 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 }
9725
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009727
Jeff Johnsone7245742012-09-05 17:12:55 -07009728 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009729 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9731 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9732 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009733
9734 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009735 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 }
9737
9738 /*------------------------------------------------------------------------
9739 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009740 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009741 ------------------------------------------------------------------------*/
9742 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9743 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9745 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9746 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009747
Jeff Johnsone7245742012-09-05 17:12:55 -07009748 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009749 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009750 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009751 }
9752
9753 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009755 sizeof(halDelBAparam),
9756 &pSendBuffer, &usDataOffset, &usSendSize))||
9757 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
9758 {
9759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9760 "Unable to get send buffer for DEL BA req %x %x %x",
9761 pEventData, pwdiDelBAParams, wdiDelBARspCb);
9762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009764 }
9765
9766 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
9767 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
9768 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
9769
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 wpalMemoryCopy( pSendBuffer+usDataOffset,
9771 &halDelBAparam,
9772 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -07009773
9774 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009776
9777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009780 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9781 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009782}/*WDI_ProcessDelBAReq*/
9783
9784#ifdef FEATURE_WLAN_CCX
9785
9786WDI_Status
9787WDI_ProcessTSMStatsReq
9788(
9789 WDI_ControlBlockType* pWDICtx,
9790 WDI_EventInfoType* pEventData
9791)
9792{
9793 WDI_TSMStatsReqParamsType* pwdiTSMParams;
9794 WDI_TsmRspCb wdiTSMRspCb;
9795 wpt_uint8 ucCurrentBSSSesIdx = 0;
9796 WDI_BSSSessionType* pBSSSes = NULL;
9797 wpt_uint8* pSendBuffer = NULL;
9798 wpt_uint16 usDataOffset = 0;
9799 wpt_uint16 usSendSize = 0;
9800 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9801 tTsmStatsParams halTsmStatsReqParams = {0};
9802
9803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9804
9805 /*-------------------------------------------------------------------------
9806 Sanity check
9807 -------------------------------------------------------------------------*/
9808 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9809 ( NULL == pEventData->pCBfnc ))
9810 {
9811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009812 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 WDI_ASSERT(0);
9814 return WDI_STATUS_E_FAILURE;
9815 }
9816
9817 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
9818 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
9819 /*-------------------------------------------------------------------------
9820 Check to see if we are in the middle of an association, if so queue, if
9821 not it means it is free to process request
9822 -------------------------------------------------------------------------*/
9823 wpalMutexAcquire(&pWDICtx->wptMutex);
9824
9825 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
9826 if ( NULL == pBSSSes )
9827 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9829 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9830 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009831
9832 wpalMutexRelease(&pWDICtx->wptMutex);
9833 return WDI_STATUS_E_NOT_ALLOWED;
9834 }
9835
9836 /*------------------------------------------------------------------------
9837 Check if this BSS is being currently processed or queued,
9838 if queued - queue the new request as well
9839 ------------------------------------------------------------------------*/
9840 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9841 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9843 "s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9844 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -07009845
9846 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9847 wpalMutexRelease(&pWDICtx->wptMutex);
9848 return wdiStatus;
9849 }
9850
9851 wpalMutexRelease(&pWDICtx->wptMutex);
9852 /*-----------------------------------------------------------------------
9853 Get message buffer
9854 ! TO DO : proper conversion into the HAL Message Request Format
9855 -----------------------------------------------------------------------*/
9856 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
9857 sizeof(halTsmStatsReqParams),
9858 &pSendBuffer, &usDataOffset, &usSendSize))||
9859 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
9860 {
9861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9862 "Unable to get send buffer in set bss key req %x %x %x",
9863 pEventData, pwdiTSMParams, wdiTSMRspCb);
9864 WDI_ASSERT(0);
9865 return WDI_STATUS_E_FAILURE;
9866 }
9867
9868 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
9869 wpalMemoryCopy(halTsmStatsReqParams.bssId,
9870 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
9871 WDI_MAC_ADDR_LEN);
9872 wpalMemoryCopy( pSendBuffer+usDataOffset,
9873 &halTsmStatsReqParams,
9874 sizeof(halTsmStatsReqParams));
9875
9876 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
9877 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
9878
9879 /*-------------------------------------------------------------------------
9880 Send TSM Stats Request to HAL
9881 -------------------------------------------------------------------------*/
9882 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9883 wdiTSMRspCb, pEventData->pUserData,
9884 WDI_TSM_STATS_RESP);
9885}/*WDI_ProcessTSMStatsReq*/
9886
9887#endif
9888
9889
9890/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009891 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009892 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009893
9894 @param pWDICtx: pointer to the WLAN DAL context
9895 pEventData: pointer to the event information structure
9896
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 @see
9898 @return Result of the function call
9899*/
9900WDI_Status
9901WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009902(
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 WDI_ControlBlockType* pWDICtx,
9904 WDI_EventInfoType* pEventData
9905)
9906{
9907 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
9908 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009909 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009910 wpt_uint16 usDataOffset = 0;
9911 wpt_uint16 usSendSize = 0;
9912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9913
9914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 -------------------------------------------------------------------------*/
9917 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9918 ( NULL == pEventData->pCBfnc ))
9919 {
9920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009924 }
9925
9926 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
9927 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
9928 /*-----------------------------------------------------------------------
9929 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -07009930 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -07009931 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009932 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
9934 &pSendBuffer, &usDataOffset, &usSendSize))||
9935 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
9936 {
9937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9938 "Unable to get send buffer in set bss key req %x %x %x",
9939 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
9940 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009941 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009942 }
9943
Jeff Johnsone7245742012-09-05 17:12:55 -07009944 wpalMemoryCopy( pSendBuffer+usDataOffset,
9945 &pwdiFlushAcParams->wdiFlushAcInfo,
9946 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -07009947
9948 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009949 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009950
9951 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009952 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009953 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009954 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9955 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009956}/*WDI_ProcessFlushAcReq*/
9957
9958/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009959 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009961
9962 @param pWDICtx: pointer to the WLAN DAL context
9963 pEventData: pointer to the event information structure
9964
Jeff Johnson295189b2012-06-20 16:38:30 -07009965 @see
9966 @return Result of the function call
9967*/
9968WDI_Status
9969WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009970(
Jeff Johnson295189b2012-06-20 16:38:30 -07009971 WDI_ControlBlockType* pWDICtx,
9972 WDI_EventInfoType* pEventData
9973)
9974{
9975 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
9976 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009977 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009978 wpt_uint16 usDataOffset = 0;
9979 wpt_uint16 usSendSize = 0;
9980
9981 tBtAmpEventMsg haltBtAmpEventMsg;
9982 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9983
9984 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 -------------------------------------------------------------------------*/
9987 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9988 ( NULL == pEventData->pCBfnc ))
9989 {
9990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009991 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009993 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009994 }
9995
9996 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
9997 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
9998 /*-----------------------------------------------------------------------
9999 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010000 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010001 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010002 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010003 sizeof(haltBtAmpEventMsg.btAmpEventParams),
10004 &pSendBuffer, &usDataOffset, &usSendSize))||
10005 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
10006 {
10007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10008 "Unable to get send buffer in BT AMP event req %x %x %x",
10009 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
10010 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010012 }
10013
Jeff Johnsone7245742012-09-05 17:12:55 -070010014 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010015 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070010016 wpalMemoryCopy( pSendBuffer+usDataOffset,
10017 &haltBtAmpEventMsg.btAmpEventParams,
10018 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010019
10020 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010021 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010022
10023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010024 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010025 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10027 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010028}/*WDI_ProcessBtAmpEventReq*/
10029
10030/**
10031 @brief Process Add STA self Request function (called when Main FSM
10032 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010033
10034 @param pWDICtx: pointer to the WLAN DAL context
10035 pEventData: pointer to the event information structure
10036
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 @see
10038 @return Result of the function call
10039*/
10040WDI_Status
10041WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010042(
Jeff Johnson295189b2012-06-20 16:38:30 -070010043 WDI_ControlBlockType* pWDICtx,
10044 WDI_EventInfoType* pEventData
10045)
10046{
10047 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
10048 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010049 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010050 wpt_uint16 usDataOffset = 0;
10051 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010052 tAddStaSelfParams halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070010053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10054
10055 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010056 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 -------------------------------------------------------------------------*/
10058 if (( NULL == pEventData ) ||
10059 ( NULL == pEventData->pEventData) ||
10060 ( NULL == pEventData->pCBfnc))
10061 {
10062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010066 }
10067
Jeff Johnsone7245742012-09-05 17:12:55 -070010068 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010069 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070010070 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010071 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
10072 /*-----------------------------------------------------------------------
10073 Get message buffer
10074 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010075 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10076 WDI_ADD_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 sizeof(tAddStaSelfParams),
10078 &pSendBuffer, &usDataOffset, &usSendSize))||
10079 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams) )))
10080 {
10081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10082 "Unable to get send buffer in ADD STA SELF REQ %x %x %x",
10083 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
10084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010086 }
10087
10088 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010089 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010090 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
10091
Jeff Johnsone7245742012-09-05 17:12:55 -070010092 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010093 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6) ;
10094
Jeff Johnsone7245742012-09-05 17:12:55 -070010095 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
10096 sizeof(tAddStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010097
10098 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010099 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010100
10101 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010102 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010103 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010104 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10105 wdiAddSTASelfReqRspCb, pEventData->pUserData,
10106 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010107}/*WDI_ProcessAddSTASelfReq*/
10108
10109
10110
10111/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010114
10115 @param pWDICtx: pointer to the WLAN DAL context
10116 pEventData: pointer to the event information structure
10117
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 @see
10119 @return Result of the function call
10120*/
10121WDI_Status
10122WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010123(
Jeff Johnson295189b2012-06-20 16:38:30 -070010124 WDI_ControlBlockType* pWDICtx,
10125 WDI_EventInfoType* pEventData
10126)
10127{
10128 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
10129 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010130 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010131 wpt_uint16 usDataOffset = 0;
10132 wpt_uint16 usSendSize = 0;
10133 tDelStaSelfParams halSetDelSelfSTAParams;
10134 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10135
10136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 -------------------------------------------------------------------------*/
10139 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10140 ( NULL == pEventData->pCBfnc ))
10141 {
10142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010143 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010144 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010145 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010146 }
10147
Jeff Johnsone7245742012-09-05 17:12:55 -070010148 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
10150 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
10151
10152 /*-----------------------------------------------------------------------
10153 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010154 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010156 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010157 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
10158 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010159 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070010160 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
10161 {
10162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10163 "Unable to get send buffer in Del Sta Self req %x %x %x",
10164 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
10165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 }
10168
Jeff Johnsone7245742012-09-05 17:12:55 -070010169 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070010170 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
10171
Jeff Johnsone7245742012-09-05 17:12:55 -070010172 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
10173 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010174
10175 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010176 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010177
10178 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010179 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10182 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070010183 WDI_DEL_STA_SELF_RESP);
10184
10185}
10186
Jeff Johnsone7245742012-09-05 17:12:55 -070010187#ifdef FEATURE_OEM_DATA_SUPPORT
10188/**
10189 @brief Process Start Oem Data Request function (called when Main
10190 FSM allows it)
10191
10192 @param pWDICtx: pointer to the WLAN DAL context
10193 pEventData: pointer to the event information structure
10194
10195 @see
10196 @return Result of the function call
10197*/
10198WDI_Status
10199WDI_ProcessStartOemDataReq
10200(
10201 WDI_ControlBlockType* pWDICtx,
10202 WDI_EventInfoType* pEventData
10203)
10204{
10205 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
10206 WDI_oemDataRspCb wdiOemDataRspCb;
10207 wpt_uint8* pSendBuffer = NULL;
10208 wpt_uint16 usDataOffset = 0;
10209 wpt_uint16 usSendSize = 0;
10210 wpt_uint16 reqLen;
10211 tStartOemDataReqParams* halStartOemDataReqParams;
10212
10213 /*-------------------------------------------------------------------------
10214 Sanity check
10215 -------------------------------------------------------------------------*/
10216 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10217 ( NULL == pEventData->pCBfnc ))
10218 {
10219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010220 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070010221 WDI_ASSERT(0);
10222 return WDI_STATUS_E_FAILURE;
10223 }
10224
10225 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
10226 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
10227
10228 /*-----------------------------------------------------------------------
10229 Get message buffer
10230 -----------------------------------------------------------------------*/
10231
10232 reqLen = sizeof(tStartOemDataReqParams);
10233
10234 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10235 WDI_START_OEM_DATA_REQ, reqLen,
10236 &pSendBuffer, &usDataOffset, &usSendSize))||
10237 (usSendSize < (usDataOffset + reqLen)))
10238 {
10239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10240 "Unable to get send buffer in Start Oem Data req %x %x %x",
10241 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
10242 WDI_ASSERT(0);
10243 return WDI_STATUS_E_FAILURE;
10244 }
10245
10246 //copying WDI OEM DATA REQ PARAMS to shared memory
10247 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
10248
10249 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
10250 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
10251
10252 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
10253 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
10254
10255 /*-------------------------------------------------------------------------
10256 Send Start Request to HAL
10257 -------------------------------------------------------------------------*/
10258 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10259 wdiOemDataRspCb, pEventData->pUserData,
10260 WDI_START_OEM_DATA_RESP);
10261}/*WDI_ProcessStartOemDataReq*/
10262#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070010263
10264/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010265 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010267
10268 @param pWDICtx: pointer to the WLAN DAL context
10269 pEventData: pointer to the event information structure
10270
Jeff Johnson295189b2012-06-20 16:38:30 -070010271 @see
10272 @return Result of the function call
10273*/
10274WDI_Status
10275WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010276(
Jeff Johnson295189b2012-06-20 16:38:30 -070010277 WDI_ControlBlockType* pWDICtx,
10278 WDI_EventInfoType* pEventData
10279)
10280{
10281 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
10282 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010283 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010284 wpt_uint16 usDataOffset = 0;
10285 wpt_uint16 usSendSize = 0;
10286 tHalWlanHostResumeReqParam halResumeReqParams;
10287
10288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10289
10290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 -------------------------------------------------------------------------*/
10293 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10294 ( NULL == pEventData->pCBfnc ))
10295 {
10296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010297 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010300 }
10301
10302 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
10303 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
10304
10305 /*-----------------------------------------------------------------------
10306 Get message buffer
10307 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010309 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
10310 &pSendBuffer, &usDataOffset, &usSendSize))||
10311 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
10312 {
10313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 "Unable to get send buffer in Start Oem Data req %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070010315 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
10316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010317 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010318 }
10319
Jeff Johnsone7245742012-09-05 17:12:55 -070010320 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070010321 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070010322
10323 wpalMemoryCopy( pSendBuffer+usDataOffset,
10324 &halResumeReqParams,
10325 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010326
10327 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010328 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010329
10330 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010331 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010332 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010333 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10334 wdiHostResumeRspCb, pEventData->pUserData,
10335 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010336}/*WDI_ProcessHostResumeReq*/
10337
10338/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010339 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070010340 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010341
10342 @param pWDICtx: pointer to the WLAN DAL context
10343 pEventData: pointer to the event information structure
10344
Jeff Johnson295189b2012-06-20 16:38:30 -070010345 @see
10346 @return Result of the function call
10347*/
10348WDI_Status
10349WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010350(
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 WDI_ControlBlockType* pWDICtx,
10352 WDI_EventInfoType* pEventData
10353)
10354{
10355 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
10356 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010358 wpt_uint16 usDataOffset = 0;
10359 wpt_uint16 usSendSize = 0;
10360 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
10361 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10362
10363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010365 -------------------------------------------------------------------------*/
10366 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10367 ( NULL == pEventData->pCBfnc ))
10368 {
10369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010370 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010371 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010372 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010373 }
10374
10375 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
10376 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070010377
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 /*-----------------------------------------------------------------------
10379 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010380 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010381 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010382 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010383 sizeof(halTxPerTrackingReqParam),
10384 &pSendBuffer, &usDataOffset, &usSendSize))||
10385 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
10386 {
10387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10388 "Unable to get send buffer in set tx per tracking req %x %x %x",
10389 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
10390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010393
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
10395 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
10396 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
10397 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070010398
10399 wpalMemoryCopy( pSendBuffer+usDataOffset,
10400 &halTxPerTrackingReqParam,
10401 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010402
10403 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010404 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010405
10406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010407 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010408 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010409 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10410 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010411}/*WDI_ProcessSetTxPerTrackingReq*/
10412
10413/*=========================================================================
10414 Indications
10415=========================================================================*/
10416
10417/**
10418 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010419
10420 @param pWDICtx: pointer to the WLAN DAL context
10421 pEventData: pointer to the event information structure
10422
Jeff Johnson295189b2012-06-20 16:38:30 -070010423 @see
10424 @return Result of the function call
10425*/
10426WDI_Status
10427WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070010428(
Jeff Johnson295189b2012-06-20 16:38:30 -070010429 WDI_ControlBlockType* pWDICtx,
10430 WDI_EventInfoType* pEventData
10431)
10432{
10433 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010435 wpt_uint16 usDataOffset = 0;
10436 wpt_uint16 usSendSize = 0;
10437 WDI_Status wdiStatus;
10438 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
10439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10440
10441 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010443 -------------------------------------------------------------------------*/
10444 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10445 {
10446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010447 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010450 }
10451
10452 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
10453
10454 /*-----------------------------------------------------------------------
10455 Get message buffer
10456 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010457 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10458 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 sizeof(halWlanSuspendIndparams),
10460 &pSendBuffer, &usDataOffset, &usSendSize))||
10461 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
10462 {
10463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10464 "Unable to get send buffer in Suspend Ind ");
10465 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010466 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010467 }
10468
10469 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
10470 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
10471
Jeff Johnsone7245742012-09-05 17:12:55 -070010472 halWlanSuspendIndparams.activeSessionCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 WDI_GetActiveSessionsCount(pWDICtx);
10474
Jeff Johnsone7245742012-09-05 17:12:55 -070010475 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
10476 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070010477
10478 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010479 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010480 -------------------------------------------------------------------------*/
10481 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010482 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010483
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10486}/*WDI_ProcessHostSuspendInd*/
10487
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080010488
10489
10490/**
10491 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
10492
10493 @param pWDICtx: pointer to the WLAN DAL context
10494 pEventData: pointer to the event information structure
10495
10496 @see
10497 @return Result of the function call
10498*/
10499WDI_Status
10500WDI_ProcessTrafficStatsInd
10501(
10502 WDI_ControlBlockType* pWDICtx,
10503 WDI_EventInfoType* pEventData
10504)
10505{
10506 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
10507 wpt_uint8* pSendBuffer = NULL;
10508 wpt_uint16 usDataOffset = 0;
10509 wpt_uint16 usSendSize = 0;
10510 WDI_Status wdiStatus;
10511 tStatsClassBIndParams* pStatsClassBIndParams;
10512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10513
10514 /*-------------------------------------------------------------------------
10515 Sanity check
10516 -------------------------------------------------------------------------*/
10517 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10518 {
10519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10520 "%s: Invalid parameters in Traffic Stats ind",__func__);
10521 WDI_ASSERT(0);
10522 return WDI_STATUS_E_FAILURE;
10523 }
10524
10525 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
10526
10527 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
10528 {
10529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10530 "%s: Invalid parameters in Traffic Stats ind",__func__);
10531 WDI_ASSERT(0);
10532 return WDI_STATUS_E_FAILURE;
10533 }
10534
10535 /*-----------------------------------------------------------------------
10536 Get message buffer
10537 -----------------------------------------------------------------------*/
10538 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10539 WDI_TRAFFIC_STATS_IND,
10540 sizeof(tStatsClassBIndParams),
10541 &pSendBuffer, &usDataOffset, &usSendSize))||
10542 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
10543 {
10544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10545 "Unable to get send buffer in Traffic Stats Ind ");
10546 WDI_ASSERT(0);
10547 return WDI_STATUS_E_FAILURE;
10548 }
10549
10550 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
10551
10552 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
10553
10554 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
10555 pTrafficStatsIndParams->pTrafficStats,
10556 pTrafficStatsIndParams->length);
10557
10558 /*-------------------------------------------------------------------------
10559 Send Suspend Request to HAL
10560 -------------------------------------------------------------------------*/
10561 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
10562 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
10563
10564 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10565 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10566}/*WDI_ProcessTrafficStatsInd*/
10567
Chet Lanctota96bb432013-03-18 10:26:30 -070010568#ifdef WLAN_FEATURE_11W
10569/**
10570 @brief Process Exclude Unencrypted Indications function (called
10571 when Main FSM allows it)
10572
10573 @param pWDICtx: pointer to the WLAN DAL context
10574 pEventData: pointer to the event information structure
10575
10576 @see
10577 @return Result of the function call
10578*/
10579WDI_Status
10580WDI_ProcessExcludeUnencryptInd
10581(
10582 WDI_ControlBlockType* pWDICtx,
10583 WDI_EventInfoType* pEventData
10584)
10585{
10586 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
10587 wpt_uint8* pSendBuffer = NULL;
10588 wpt_uint16 usDataOffset = 0;
10589 wpt_uint16 usSendSize = 0;
10590 WDI_Status wdiStatus;
10591 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
10592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10593
10594 /*-------------------------------------------------------------------------
10595 Sanity check
10596 -------------------------------------------------------------------------*/
10597 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
10598 {
10599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10600 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
10601 WDI_ASSERT(0);
10602 return WDI_STATUS_E_FAILURE;
10603 }
10604
10605 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
10606
10607 /*-----------------------------------------------------------------------
10608 Get message buffer
10609 -----------------------------------------------------------------------*/
10610 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
10611 WDI_EXCLUDE_UNENCRYPTED_IND,
10612 sizeof(tHalWlanExcludeUnEncryptedIndParam),
10613 &pSendBuffer, &usDataOffset, &usSendSize))||
10614 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
10615 {
10616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
10617 "Unable to get send buffer in Exclude Unencrypted Ind ");
10618 WDI_ASSERT(0);
10619 return WDI_STATUS_E_FAILURE;
10620 }
10621
10622 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
10623
10624 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
10625
10626 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
10627 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
10628
10629 /*-------------------------------------------------------------------------
10630 Send Suspend Request to HAL
10631 -------------------------------------------------------------------------*/
10632 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
10633 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
10634
10635 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
10636 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
10637}/*WDI_ProcessExcludeUnencryptInd*/
10638#endif
10639
Jeff Johnson295189b2012-06-20 16:38:30 -070010640/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010641 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010642==========================================================================*/
10643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010644 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010645 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010646
10647 @param pWDICtx: pointer to the WLAN DAL context
10648 pEventData: pointer to the event information structure
10649
Jeff Johnson295189b2012-06-20 16:38:30 -070010650 @see
10651 @return Result of the function call
10652*/
10653WDI_Status
10654WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010655(
Jeff Johnson295189b2012-06-20 16:38:30 -070010656 WDI_ControlBlockType* pWDICtx,
10657 WDI_EventInfoType* pEventData
10658)
10659{
10660 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
10661 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010662 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 wpt_uint16 usDataOffset = 0;
10664 wpt_uint16 usSendSize = 0;
10665 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
10666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10667
10668 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 -------------------------------------------------------------------------*/
10671 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10672 ( NULL == pEventData->pCBfnc ))
10673 {
10674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010675 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010676 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010677 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010678 }
10679
10680 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
10681 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
10682 /*-----------------------------------------------------------------------
10683 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010685 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010687 sizeof(halSwitchChannelReq.switchChannelParams),
10688 &pSendBuffer, &usDataOffset, &usSendSize))||
10689 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
10690 {
10691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10692 "Unable to get send buffer in channel switch req %x %x %x",
10693 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
10694 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 }
10697
Jeff Johnsone7245742012-09-05 17:12:55 -070010698 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070010699 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070010700#ifndef WLAN_FEATURE_VOWIFI
10701 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
10703#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010704 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070010705 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
10706
10707#ifdef WLAN_FEATURE_VOWIFI
10708 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070010709 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070010710 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
10711 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
10712 WDI_MAC_ADDR_LEN);
10713 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
10714 pwdiSwitchChParams->wdiChInfo.macBSSId,
10715 WDI_MAC_ADDR_LEN);
10716#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 wpalMemoryCopy( pSendBuffer+usDataOffset,
10718 &halSwitchChannelReq.switchChannelParams,
10719 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010720
10721 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010723
10724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010725 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010727 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10728 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010729}/*WDI_ProcessChannelSwitchReq*/
10730
10731/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010734
10735 @param pWDICtx: pointer to the WLAN DAL context
10736 pEventData: pointer to the event information structure
10737
Jeff Johnson295189b2012-06-20 16:38:30 -070010738 @see
10739 @return Result of the function call
10740*/
10741WDI_Status
10742WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010743(
Jeff Johnson295189b2012-06-20 16:38:30 -070010744 WDI_ControlBlockType* pWDICtx,
10745 WDI_EventInfoType* pEventData
10746)
10747{
10748 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
10749 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010750 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010751 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 wpt_uint16 usDataOffset = 0;
10754 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010755 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010756
Jeff Johnsone7245742012-09-05 17:12:55 -070010757 tConfigStaReqMsg halConfigStaReqMsg;
10758 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10760
10761 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010762 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010763 -------------------------------------------------------------------------*/
10764 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10765 ( NULL == pEventData->pCBfnc ))
10766 {
10767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010768 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010769 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 }
10772
10773 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
10774 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
10775 /*-------------------------------------------------------------------------
10776 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010777 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010778 -------------------------------------------------------------------------*/
10779 wpalMutexAcquire(&pWDICtx->wptMutex);
10780
10781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010784 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10785 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
10786 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010787
Jeff Johnsone7245742012-09-05 17:12:55 -070010788 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10791 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10792 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010793
10794 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010795 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010796 }
10797
10798 /*------------------------------------------------------------------------
10799 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 ------------------------------------------------------------------------*/
10802 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10803 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10805 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10806 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010807
Jeff Johnsone7245742012-09-05 17:12:55 -070010808 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010809 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 }
10812
10813 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010814
10815 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
10816#ifdef WLAN_FEATURE_11AC
10817 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010818 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 else
10820#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070010821 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070010822
Jeff Johnson295189b2012-06-20 16:38:30 -070010823 /*-----------------------------------------------------------------------
10824 Get message buffer
10825 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010826 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
10827 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010828 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 {
10831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10832 "Unable to get send buffer in config sta req %x %x %x",
10833 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
10834 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010835 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 }
10837
10838 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010839 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010840 &pwdiConfigSTAParams->wdiReqInfo);
10841
10842 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
10843 {
10844 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010845 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010846 WDI_STATableFindStaidByAddr(pWDICtx,
10847 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010848 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070010849 {
10850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10851 "This station does not exist in the WDI Station Table %d");
10852 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010853 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010855 }
10856 }
10857 else
10858 {
10859 /* Need to fill in the STA Index to invalid, since at this point we have not
10860 yet received it from HAL */
Gopichand Nakkala79aacf02013-03-27 21:09:23 -070010861 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010862 }
10863
10864 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010865 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010866
Jeff Johnsone7245742012-09-05 17:12:55 -070010867 wpalMemoryCopy( pSendBuffer+usDataOffset,
10868 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070010869 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070010870
10871 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010873
Jeff Johnsone7245742012-09-05 17:12:55 -070010874 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
10875 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 sizeof(pWDICtx->wdiCachedConfigStaReq));
10877
10878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010879 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010880 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010881 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10882 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010883}/*WDI_ProcessConfigStaReq*/
10884
10885
10886/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010888 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010889
10890 @param pWDICtx: pointer to the WLAN DAL context
10891 pEventData: pointer to the event information structure
10892
Jeff Johnson295189b2012-06-20 16:38:30 -070010893 @see
10894 @return Result of the function call
10895*/
10896WDI_Status
10897WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010898(
Jeff Johnson295189b2012-06-20 16:38:30 -070010899 WDI_ControlBlockType* pWDICtx,
10900 WDI_EventInfoType* pEventData
10901)
10902{
10903 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
10904 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010905 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010907 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 wpt_uint16 usDataOffset = 0;
10909 wpt_uint16 usSendSize = 0;
10910 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070010911 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10913
10914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010915 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010916 -------------------------------------------------------------------------*/
10917 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10918 ( NULL == pEventData->pCBfnc ))
10919 {
10920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010921 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010922 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010923 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010924 }
10925
10926 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
10927 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
10928 /*-------------------------------------------------------------------------
10929 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010930 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010931 -------------------------------------------------------------------------*/
10932 wpalMutexAcquire(&pWDICtx->wptMutex);
10933
10934 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10938 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
10939 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010940
Jeff Johnsone7245742012-09-05 17:12:55 -070010941 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010942 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070010943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070010944 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
10945 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010946 }
10947 else
10948 {
10949 /*------------------------------------------------------------------------
10950 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010952 ------------------------------------------------------------------------*/
10953 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10954 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10956 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10957 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
10958
10959 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 }
10963 }
10964 /* If the link is set to enter IDLE - the Session allocated for this BSS
10965 will be deleted on the Set Link State response coming from HAL
10966 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070010967 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070010968 sizeof(pWDICtx->wdiCacheSetLinkStReq));
10969
10970 wpalMutexRelease(&pWDICtx->wptMutex);
10971 /*-----------------------------------------------------------------------
10972 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010973 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010974 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010975
10976 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010977 sizeof(halLinkStateReqMsg),
10978 &pSendBuffer, &usDataOffset, &usSendSize))||
10979 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
10980 {
10981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10982 "Unable to get send buffer in set bss key req %x %x %x",
10983 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
10984 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010985 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010986 }
10987
10988 wpalMemoryCopy(halLinkStateReqMsg.bssid,
10989 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
10990
10991 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
10992 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
10993
Jeff Johnsone7245742012-09-05 17:12:55 -070010994 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070010995 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
10996
Jeff Johnsone7245742012-09-05 17:12:55 -070010997 wpalMemoryCopy( pSendBuffer+usDataOffset,
10998 &halLinkStateReqMsg,
10999 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070011000
11001 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011002 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011003
11004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011006 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011007 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11008 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011009}/*WDI_ProcessSetLinkStateReq*/
11010
11011
11012/**
11013 @brief Process Get Stats Request function (called when Main FSM
11014 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011015
11016 @param pWDICtx: pointer to the WLAN DAL context
11017 pEventData: pointer to the event information structure
11018
Jeff Johnson295189b2012-06-20 16:38:30 -070011019 @see
11020 @return Result of the function call
11021*/
11022WDI_Status
11023WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011024(
Jeff Johnson295189b2012-06-20 16:38:30 -070011025 WDI_ControlBlockType* pWDICtx,
11026 WDI_EventInfoType* pEventData
11027)
11028{
11029 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
11030 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011031 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011032 wpt_uint16 usDataOffset = 0;
11033 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011034 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011035 WDI_BSSSessionType* pBSSSes = NULL;
11036 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011037 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011038 tHalStatsReqMsg halStatsReqMsg;
11039 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11040
11041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011042 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011043 -------------------------------------------------------------------------*/
11044 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11045 ( NULL == pEventData->pCBfnc ) )
11046 {
11047 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011048 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011049 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011050 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011051 }
11052
11053 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
11054 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11055
11056 /*-------------------------------------------------------------------------
11057 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011058 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011059 -------------------------------------------------------------------------*/
11060 wpalMutexAcquire(&pWDICtx->wptMutex);
11061
11062 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011063 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011064 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011065 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11066 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011067 &macBSSID))
11068 {
11069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11070 "This station does not exist in the WDI Station Table %d");
11071 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011073 }
11074
Jeff Johnsone7245742012-09-05 17:12:55 -070011075 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11076 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011077 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11079 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11080 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011081
11082 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011083 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011084 }
11085
11086 /*------------------------------------------------------------------------
11087 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011088 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011089 ------------------------------------------------------------------------*/
11090 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11091 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11093 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11094 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011095
Jeff Johnsone7245742012-09-05 17:12:55 -070011096 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011097 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011098 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011099 }
11100
11101
11102 wpalMutexRelease(&pWDICtx->wptMutex);
11103
11104 /*-----------------------------------------------------------------------
11105 Get message buffer
11106 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011107 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 sizeof(halStatsReqMsg.statsReqParams),
11109 &pSendBuffer, &usDataOffset, &usSendSize))||
11110 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
11111 {
11112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11113 "Unable to get send buffer in set bss key req %x %x %x",
11114 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
11115 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011116 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011117 }
11118
Jeff Johnsone7245742012-09-05 17:12:55 -070011119 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011120 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070011121 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070011122 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 wpalMemoryCopy( pSendBuffer+usDataOffset,
11124 &halStatsReqMsg.statsReqParams,
11125 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011126
11127 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011128 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011129
11130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011131 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011132 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011133 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11134 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011135}/*WDI_ProcessGetStatsReq*/
11136
Srinivas Girigowda2471d832013-01-25 13:33:11 -080011137#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
11138/**
11139 @brief Process Get Roam Rssi Request function (called when Main FSM
11140 allows it)
11141
11142 @param pWDICtx: pointer to the WLAN DAL context
11143 pEventData: pointer to the event information structure
11144
11145 @see
11146 @return Result of the function call
11147*/
11148WDI_Status
11149WDI_ProcessGetRoamRssiReq
11150(
11151 WDI_ControlBlockType* pWDICtx,
11152 WDI_EventInfoType* pEventData
11153)
11154{
11155 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
11156 WDI_GetStatsRspCb wdiGetStatsRspCb;
11157 wpt_uint8* pSendBuffer = NULL;
11158 wpt_uint16 usDataOffset = 0;
11159 wpt_uint16 usSendSize = 0;
11160 wpt_uint8 ucCurrentBSSSesIdx = 0;
11161 WDI_BSSSessionType* pBSSSes = NULL;
11162 wpt_macAddr macBSSID;
11163 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11164 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
11165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11166 /*-------------------------------------------------------------------------
11167 Sanity check
11168 -------------------------------------------------------------------------*/
11169 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
11170 ( NULL == pEventData->pCBfnc ) )
11171 {
11172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11173 "%s: Invalid parameters", __func__);
11174 WDI_ASSERT(0);
11175 return WDI_STATUS_E_FAILURE;
11176 }
11177
11178 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
11179 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
11180
11181 /*-------------------------------------------------------------------------
11182 Check to see if we are in the middle of an association, if so queue, if
11183 not it means it is free to process request
11184 -------------------------------------------------------------------------*/
11185 wpalMutexAcquire(&pWDICtx->wptMutex);
11186
11187 /*------------------------------------------------------------------------
11188 Find the BSS for which the request is made
11189 ------------------------------------------------------------------------*/
11190 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11191 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
11192 &macBSSID))
11193 {
11194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11195 "This station does not exist in the WDI Station Table %d");
11196 wpalMutexRelease(&pWDICtx->wptMutex);
11197 return WDI_STATUS_E_FAILURE;
11198 }
11199
11200 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11201 if ( NULL == pBSSSes )
11202 {
11203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11204 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11205 __func__, MAC_ADDR_ARRAY(macBSSID));
11206
11207 wpalMutexRelease(&pWDICtx->wptMutex);
11208 return WDI_STATUS_E_NOT_ALLOWED;
11209 }
11210
11211 /*------------------------------------------------------------------------
11212 Check if this BSS is being currently processed or queued,
11213 if queued - queue the new request as well
11214 ------------------------------------------------------------------------*/
11215 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11216 {
11217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11218 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11219 __func__, MAC_ADDR_ARRAY(macBSSID));
11220
11221 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11222 wpalMutexRelease(&pWDICtx->wptMutex);
11223 return wdiStatus;
11224 }
11225
11226 wpalMutexRelease(&pWDICtx->wptMutex);
11227
11228 /*-----------------------------------------------------------------------
11229 Get message buffer
11230 -----------------------------------------------------------------------*/
11231 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
11232 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
11233 &pSendBuffer, &usDataOffset, &usSendSize))||
11234 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
11235 {
11236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11237 "Unable to get send buffer in set bss key req %x %x %x",
11238 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
11239 WDI_ASSERT(0);
11240 return WDI_STATUS_E_FAILURE;
11241 }
11242
11243 halRssiRoamReqMsg.roamRssiReqParams.staId =
11244 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
11245 wpalMemoryCopy( pSendBuffer+usDataOffset,
11246 &halRssiRoamReqMsg.roamRssiReqParams,
11247 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
11248
11249 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
11250 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
11251
11252 /*-------------------------------------------------------------------------
11253 Send Get STA Request to HAL
11254 -------------------------------------------------------------------------*/
11255 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11256 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
11257}/*WDI_ProcessGetRoamRssiReq*/
11258#endif
11259
Jeff Johnson295189b2012-06-20 16:38:30 -070011260/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011262 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011263
11264 @param pWDICtx: pointer to the WLAN DAL context
11265 pEventData: pointer to the event information structure
11266
Jeff Johnson295189b2012-06-20 16:38:30 -070011267 @see
11268 @return Result of the function call
11269*/
11270WDI_Status
11271WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011272(
Jeff Johnson295189b2012-06-20 16:38:30 -070011273 WDI_ControlBlockType* pWDICtx,
11274 WDI_EventInfoType* pEventData
11275)
11276{
11277 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
11278 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
11279
Jeff Johnsone7245742012-09-05 17:12:55 -070011280 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011281 wpt_uint16 usDataOffset = 0;
11282 wpt_uint16 usSendSize = 0;
11283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11284
11285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011286 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011287 -------------------------------------------------------------------------*/
11288 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11289 ( NULL == pEventData->pCBfnc))
11290 {
11291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011295 }
11296
11297 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
11298 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
11299
11300 /*-----------------------------------------------------------------------
11301 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011302 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011303 -----------------------------------------------------------------------*/
11304
Jeff Johnsone7245742012-09-05 17:12:55 -070011305 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011306 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
11307 &pSendBuffer, &usDataOffset, &usSendSize))||
11308 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
11309 {
11310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11311 "Unable to get send buffer in set bss key req %x %x %x",
11312 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
11313 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 }
11316
Jeff Johnsone7245742012-09-05 17:12:55 -070011317 wpalMemoryCopy( pSendBuffer+usDataOffset,
11318 &pwdiUpdateCfgParams->uConfigBufferLen,
11319 sizeof(wpt_uint32));
11320 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
11321 pwdiUpdateCfgParams->pConfigBuffer,
11322 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070011323
11324 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011326
11327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 -------------------------------------------------------------------------*/
11330
Jeff Johnsone7245742012-09-05 17:12:55 -070011331 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11332 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011333
11334}/*WDI_ProcessUpdateCfgReq*/
11335
11336
11337/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011338 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011339 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011340
11341 @param pWDICtx: pointer to the WLAN DAL context
11342 pEventData: pointer to the event information structure
11343
Jeff Johnson295189b2012-06-20 16:38:30 -070011344 @see
11345 @return Result of the function call
11346*/
11347WDI_Status
11348WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011349(
Jeff Johnson295189b2012-06-20 16:38:30 -070011350 WDI_ControlBlockType* pWDICtx,
11351 WDI_EventInfoType* pEventData
11352)
11353{
11354 WDI_AddBAReqParamsType* pwdiAddBAParams;
11355 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011356 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011357 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 wpt_uint16 usDataOffset = 0;
11360 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011361 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011362 wpt_macAddr macBSSID;
11363
11364 tAddBAReqMsg halAddBAReq;
11365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11366
11367 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011368 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011369 -------------------------------------------------------------------------*/
11370 if (( NULL == pEventData ) ||
11371 ( NULL == pEventData->pEventData) ||
11372 ( NULL == pEventData->pCBfnc ))
11373 {
11374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011376 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011377 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011378 }
11379
11380 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
11381 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
11382
11383 /*-------------------------------------------------------------------------
11384 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011385 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011386 -------------------------------------------------------------------------*/
11387 wpalMutexAcquire(&pWDICtx->wptMutex);
11388
11389 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011390 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011391 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011392 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11393 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011394 &macBSSID))
11395 {
11396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11397 "This station does not exist in the WDI Station Table %d");
11398 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011400 }
11401
Jeff Johnsone7245742012-09-05 17:12:55 -070011402 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11403 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011404 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11406 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11407 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011408
11409 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011410 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011411 }
11412
11413 /*------------------------------------------------------------------------
11414 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011415 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011416 ------------------------------------------------------------------------*/
11417 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11418 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11420 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11421 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011422
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011424 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011425 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011426 }
11427
11428
11429 wpalMutexRelease(&pWDICtx->wptMutex);
11430 /*-----------------------------------------------------------------------
11431 Get message buffer
11432 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011433 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011434 sizeof(halAddBAReq.addBAParams),
11435 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011436 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011437 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
11438 {
11439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11440 "Unable to get send buffer in Add BA req %x %x %x",
11441 pEventData, pwdiAddBAParams, wdiAddBARspCb);
11442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011444 }
11445
Jeff Johnsone7245742012-09-05 17:12:55 -070011446 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
11448 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
11449#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070011450 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070011451 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
11452#endif
11453
Jeff Johnsone7245742012-09-05 17:12:55 -070011454 wpalMemoryCopy( pSendBuffer+usDataOffset,
11455 &halAddBAReq.addBAParams,
11456 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011457
11458 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011459 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011460
11461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011462 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011463 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011464 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11465 wdiAddBARspCb, pEventData->pUserData,
11466 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011467}/*WDI_ProcessAddBAReq*/
11468
11469
11470
11471/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011472 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011473 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011474
11475 @param pWDICtx: pointer to the WLAN DAL context
11476 pEventData: pointer to the event information structure
11477
Jeff Johnson295189b2012-06-20 16:38:30 -070011478 @see
11479 @return Result of the function call
11480*/
11481WDI_Status
11482WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011483(
Jeff Johnson295189b2012-06-20 16:38:30 -070011484 WDI_ControlBlockType* pWDICtx,
11485 WDI_EventInfoType* pEventData
11486)
11487{
11488 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
11489 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011490 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011491 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011492 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011493 wpt_uint16 usDataOffset = 0;
11494 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011495 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011496 wpt_uint16 index;
11497 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011498
Jeff Johnson295189b2012-06-20 16:38:30 -070011499 tTriggerBAReqMsg halTriggerBAReq;
11500 tTriggerBaReqCandidate* halTriggerBACandidate;
11501 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
11502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11503
11504 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011505 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011506 -------------------------------------------------------------------------*/
11507 if (( NULL == pEventData ) ||
11508 ( NULL == pEventData->pEventData ) ||
11509 ( NULL == pEventData->pCBfnc ))
11510 {
11511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011512 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011513 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011515 }
11516
11517 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
11518 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
11519 /*-------------------------------------------------------------------------
11520 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011521 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011522 -------------------------------------------------------------------------*/
11523 wpalMutexAcquire(&pWDICtx->wptMutex);
11524
11525 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011526 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011527 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011528 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11529 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011530 &macBSSID))
11531 {
11532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11533 "This station does not exist in the WDI Station Table %d");
11534 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011536 }
11537
Jeff Johnsone7245742012-09-05 17:12:55 -070011538 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11539 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11542 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11543 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011544
11545 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011546 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011547 }
11548
11549 /*------------------------------------------------------------------------
11550 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011551 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011552 ------------------------------------------------------------------------*/
11553 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11554 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011555 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11556 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11557 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011558
Jeff Johnsone7245742012-09-05 17:12:55 -070011559 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011560 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 }
11563
11564
11565 wpalMutexRelease(&pWDICtx->wptMutex);
11566 /*-----------------------------------------------------------------------
11567 Get message buffer
11568 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011569 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11570 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011571 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070011572 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011573 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
11574 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011575 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070011577 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070011578 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
11579 {
11580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11581 "Unable to get send buffer in Trigger BA req %x %x %x",
11582 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
11583 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011584 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011585 }
11586
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070011589 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070011590 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
11591
Jeff Johnsone7245742012-09-05 17:12:55 -070011592 wpalMemoryCopy( pSendBuffer+usDataOffset,
11593 &halTriggerBAReq.triggerBAParams,
11594 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011595
Jeff Johnsone7245742012-09-05 17:12:55 -070011596 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011597 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
11598 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
11599 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070011600
11601 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070011602 index++)
11603 {
11604 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
11605 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
11606 halTriggerBACandidate++;
11607 wdiTriggerBACandidate++;
11608 }
11609
11610 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011612
11613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011614 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11617 wdiTriggerBARspCb, pEventData->pUserData,
11618 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011619}/*WDI_ProcessTriggerBAReq*/
11620
11621
11622
11623/**
11624 @brief Process Update Beacon Params Request function (called when Main FSM
11625 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011626
11627 @param pWDICtx: pointer to the WLAN DAL context
11628 pEventData: pointer to the event information structure
11629
Jeff Johnson295189b2012-06-20 16:38:30 -070011630 @see
11631 @return Result of the function call
11632*/
11633WDI_Status
11634WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011635(
Jeff Johnson295189b2012-06-20 16:38:30 -070011636 WDI_ControlBlockType* pWDICtx,
11637 WDI_EventInfoType* pEventData
11638)
11639{
11640 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
11641 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011642 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011643 wpt_uint16 usDataOffset = 0;
11644 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011645 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11647
11648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011650 -------------------------------------------------------------------------*/
11651 if (( NULL == pEventData ) ||
11652 ( NULL == pEventData->pEventData) ||
11653 ( NULL == pEventData->pCBfnc))
11654 {
11655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011659 }
11660
11661 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
11662 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
11663 /*-----------------------------------------------------------------------
11664 Get message buffer
11665 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011666 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011667 sizeof(halUpdateBeaconParams),
11668 &pSendBuffer, &usDataOffset, &usSendSize))||
11669 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
11670 {
11671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11672 "Unable to get send buffer in set bss key req %x %x %x",
11673 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
11674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 }
11677
11678 /*BSS Index of the BSS*/
11679 halUpdateBeaconParams.bssIdx =
11680 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
11681 /*shortPreamble mode. HAL should update all the STA rates when it
11682 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011683 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070011684 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
11685 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011686 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011687 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
11688 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
11691
11692 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070011693 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011694 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011695 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011696 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011697 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011698 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011699 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011700 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011701 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070011702 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070011703 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070011704 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
11705 halUpdateBeaconParams.fRIFSMode =
11706 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070011707 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070011708 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
11709
Jeff Johnsone7245742012-09-05 17:12:55 -070011710 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
11711 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011712
11713 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011714 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011715
11716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011717 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011718 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11720 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011721}/*WDI_ProcessUpdateBeaconParamsReq*/
11722
11723
11724
11725/**
11726 @brief Process Send Beacon template Request function (called when Main FSM
11727 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011728
11729 @param pWDICtx: pointer to the WLAN DAL context
11730 pEventData: pointer to the event information structure
11731
Jeff Johnson295189b2012-06-20 16:38:30 -070011732 @see
11733 @return Result of the function call
11734*/
11735WDI_Status
11736WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011737(
Jeff Johnson295189b2012-06-20 16:38:30 -070011738 WDI_ControlBlockType* pWDICtx,
11739 WDI_EventInfoType* pEventData
11740)
11741{
11742 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
11743 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011744 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011745 wpt_uint16 usDataOffset = 0;
11746 wpt_uint16 usSendSize = 0;
11747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11748
11749 tSendBeaconReqMsg halSendBeaconReq;
11750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011751 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011752 -------------------------------------------------------------------------*/
11753 if (( NULL == pEventData ) ||
11754 ( NULL == pEventData->pEventData ) ||
11755 ( NULL == pEventData->pCBfnc ))
11756 {
11757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011761 }
11762
11763 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
11764 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
11765 /*-----------------------------------------------------------------------
11766 Get message buffer
11767 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011768 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011769 sizeof(halSendBeaconReq.sendBeaconParam),
11770 &pSendBuffer, &usDataOffset, &usSendSize))||
11771 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
11772 {
11773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11774 "Unable to get send buffer in send beacon req %x %x %x",
11775 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
11776 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011777 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011778 }
11779
11780 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
11781 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
11782 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070011783 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011784 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
11785 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
11786 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
11787 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070011788 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011789 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala1ec80b62013-03-22 11:15:19 +053011790 /* usP2PIeOffset should be atleast greater than timIeOffset */
11791 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
11792 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
11793 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
11794 {
11795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11796 "Invalid usP2PIeOffset %hu",
11797 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
11798 WDI_ASSERT(0);
11799 return WDI_STATUS_E_FAILURE;
11800 }
11801
Jeff Johnsone7245742012-09-05 17:12:55 -070011802 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070011804
Jeff Johnsone7245742012-09-05 17:12:55 -070011805 wpalMemoryCopy( pSendBuffer+usDataOffset,
11806 &halSendBeaconReq.sendBeaconParam,
11807 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011808
11809 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011810 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011811
11812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011813 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011814 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011815 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11816 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011817}/*WDI_ProcessSendBeaconParamsReq*/
11818
11819/**
11820 @brief Process Update Beacon Params Request function (called when Main FSM
11821 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011822
11823 @param pWDICtx: pointer to the WLAN DAL context
11824 pEventData: pointer to the event information structure
11825
Jeff Johnson295189b2012-06-20 16:38:30 -070011826 @see
11827 @return Result of the function call
11828*/
11829WDI_Status
11830WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011831(
Jeff Johnson295189b2012-06-20 16:38:30 -070011832 WDI_ControlBlockType* pWDICtx,
11833 WDI_EventInfoType* pEventData
11834)
11835{
11836 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
11837 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011838 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011839 wpt_uint16 usDataOffset = 0;
11840 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011841 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11843
11844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011845 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011846 -------------------------------------------------------------------------*/
11847 if (( NULL == pEventData ) ||
11848 ( NULL == pEventData->pEventData) ||
11849 ( NULL == pEventData->pCBfnc))
11850 {
11851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011855 }
11856
Jeff Johnsone7245742012-09-05 17:12:55 -070011857 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011858 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011859 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011860 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
11861 /*-----------------------------------------------------------------------
11862 Get message buffer
11863 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011864 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011865 sizeof(halUpdateProbeRspTmplParams),
11866 &pSendBuffer, &usDataOffset, &usSendSize))||
11867 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
11868 {
11869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11870 "Unable to get send buffer in set bss key req %x %x %x",
11871 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
11872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011874 }
11875
11876 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070011877 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 WDI_MAC_ADDR_LEN);
11879
Jeff Johnsone7245742012-09-05 17:12:55 -070011880 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070011881 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
11882
11883 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
11884 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070011885 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011886
11887
11888 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
11889 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
11890 WDI_PROBE_REQ_BITMAP_IE_LEN);
11891
Jeff Johnsone7245742012-09-05 17:12:55 -070011892 wpalMemoryCopy( pSendBuffer+usDataOffset,
11893 &halUpdateProbeRspTmplParams,
11894 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011895
11896 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011897 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011898
11899 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011900 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011902 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11903 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
11904 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011905}/*WDI_ProcessUpdateProbeRspTemplateReq*/
11906
11907/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011909 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011910
11911 @param pWDICtx: pointer to the WLAN DAL context
11912 pEventData: pointer to the event information structure
11913
Jeff Johnson295189b2012-06-20 16:38:30 -070011914 @see
11915 @return Result of the function call
11916*/
11917WDI_Status
11918WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011919(
Jeff Johnson295189b2012-06-20 16:38:30 -070011920 WDI_ControlBlockType* pWDICtx,
11921 WDI_EventInfoType* pEventData
11922)
11923{
11924
11925 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
11926 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
11927
11928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 -------------------------------------------------------------------------*/
11931 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011932 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011933 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070011934 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011935 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
11936 {
11937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011941 }
11942
11943 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070011944 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070011945 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
11946
11947 /*cache the wdi nv request message here if the the first fragment
11948 * To issue the request to HAL for the next fragment */
11949 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
11950 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011951 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
11952 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011953 sizeof(pWDICtx->wdiCachedNvDownloadReq));
11954
11955 pWDICtx->pfncRspCB = pEventData->pCBfnc;
11956 pWDICtx->pRspCBUserData = pEventData->pUserData;
11957 }
11958
11959 return WDI_SendNvBlobReq(pWDICtx,pEventData);
11960}
11961
11962/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011963 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011964 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011965
11966 @param pWDICtx: pointer to the WLAN DAL context
11967 pEventData: pointer to the event information structure
11968
Jeff Johnson295189b2012-06-20 16:38:30 -070011969 @see
11970 @return Result of the function call
11971*/
11972WDI_Status WDI_ProcessSetMaxTxPowerReq
11973(
11974 WDI_ControlBlockType* pWDICtx,
11975 WDI_EventInfoType* pEventData
11976)
11977{
11978 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
11979 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011980 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011981 wpt_uint16 usDataOffset = 0;
11982 wpt_uint16 usSendSize = 0;
11983 tSetMaxTxPwrReq halSetMaxTxPower;
11984 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11985
11986 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011987 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011988 -------------------------------------------------------------------------*/
11989 if (( NULL == pEventData ) ||
11990 ( NULL == pEventData->pEventData ) ||
11991 ( NULL == pEventData->pCBfnc ))
11992 {
11993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011997 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011998 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011999 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012000 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012001 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
12002
12003 /*-----------------------------------------------------------------------
12004 Get message buffer
12005 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012006if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012007 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
12008 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012009 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070012010)))
12011 {
12012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12013 "Unable to get Set Max Tx Power req %x %x %x",
12014 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
12015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012017 }
12018
12019 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
12020 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
12021 WDI_MAC_ADDR_LEN);
12022
12023 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
12024 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
12025 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070012026 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070012027 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070012028
12029 wpalMemoryCopy( pSendBuffer+usDataOffset,
12030 &halSetMaxTxPower.setMaxTxPwrParams,
12031 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012032
12033 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012034 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012035
12036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012037 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012038 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012039 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12040 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
12041 WDI_SET_MAX_TX_POWER_RESP);
12042
Jeff Johnson295189b2012-06-20 16:38:30 -070012043}
12044
schangd82195a2013-03-13 18:41:24 -070012045/**
12046 @brief Process Set Tx Power Request function (called when Main
12047 FSM allows it)
12048
12049 @param pWDICtx: pointer to the WLAN DAL context
12050 pEventData: pointer to the event information structure
12051
12052 @see
12053 @return Result of the function call
12054*/
12055WDI_Status WDI_ProcessSetTxPowerReq
12056(
12057 WDI_ControlBlockType* pWDICtx,
12058 WDI_EventInfoType* pEventData
12059)
12060{
12061 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
12062 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
12063 wpt_uint8* pSendBuffer = NULL;
12064 wpt_uint16 usDataOffset = 0;
12065 wpt_uint16 usSendSize = 0;
12066 tSetTxPwrReqMsg *halSetTxPower = NULL;;
12067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12068
12069 /*-------------------------------------------------------------------------
12070 Sanity check
12071 -------------------------------------------------------------------------*/
12072 if (( NULL == pEventData ) ||
12073 ( NULL == pEventData->pEventData ) ||
12074 ( NULL == pEventData->pCBfnc ))
12075 {
12076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12077 "%s: Invalid parameters", __func__);
12078 WDI_ASSERT(0);
12079 return WDI_STATUS_E_FAILURE;
12080 }
12081
12082 pwdiSetTxPowerParams =
12083 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
12084 wdiSetTxPowerRspCb =
12085 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
12086
12087 /*-----------------------------------------------------------------------
12088 Get message buffer
12089 -----------------------------------------------------------------------*/
12090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
12091 sizeof(tSetTxPwrReqParams),
12092 &pSendBuffer, &usDataOffset, &usSendSize))||
12093 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
12094 )))
12095 {
12096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12097 "Unable to get Set Max Tx Power req %x %x %x",
12098 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
12099 WDI_ASSERT(0);
12100 return WDI_STATUS_E_FAILURE;
12101 }
12102
12103 halSetTxPower = (tSetTxPwrReqMsg *)(pSendBuffer+usDataOffset);
12104 halSetTxPower->setTxPwrReqParams.txPower =
12105 pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
12106 halSetTxPower->setTxPwrReqParams.bssIdx =
12107 pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
12108
12109 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
12110 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
12111
12112 /*-------------------------------------------------------------------------
12113 Send Set Tx Power Request to HAL
12114 -------------------------------------------------------------------------*/
12115 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12116 wdiSetTxPowerRspCb, pEventData->pUserData,
12117 WDI_SET_TX_POWER_RESP);
12118}
Jeff Johnson295189b2012-06-20 16:38:30 -070012119
12120/**
12121 @brief Process P2P Notice Of Absence Request function (called when Main FSM
12122 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012123
12124 @param pWDICtx: pointer to the WLAN DAL context
12125 pEventData: pointer to the event information structure
12126
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 @see
12128 @return Result of the function call
12129*/
12130WDI_Status
12131WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012132(
Jeff Johnson295189b2012-06-20 16:38:30 -070012133 WDI_ControlBlockType* pWDICtx,
12134 WDI_EventInfoType* pEventData
12135)
12136{
12137 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
12138 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012139 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012140 wpt_uint16 usDataOffset = 0;
12141 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012142 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12144
12145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012147 -------------------------------------------------------------------------*/
12148 if (( NULL == pEventData ) ||
12149 ( NULL == pEventData->pEventData) ||
12150 ( NULL == pEventData->pCBfnc))
12151 {
12152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012153 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012156 }
12157
Jeff Johnsone7245742012-09-05 17:12:55 -070012158 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012159 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012160 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012161 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
12162 /*-----------------------------------------------------------------------
12163 Get message buffer
12164 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012165 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12166 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012167 sizeof(halSetP2PGONOAParams),
12168 &pSendBuffer, &usDataOffset, &usSendSize))||
12169 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
12170 {
12171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12172 "Unable to get send buffer in set P2P GO NOA REQ %x %x %x",
12173 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
12174 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012175 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012176 }
12177
Jeff Johnsone7245742012-09-05 17:12:55 -070012178 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070012179 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070012180 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070012181 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
12182 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070012183 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012184 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012185 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070012186 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070012187 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070012188 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070012189 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070012190 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
12191
Jeff Johnsone7245742012-09-05 17:12:55 -070012192 wpalMemoryCopy( pSendBuffer+usDataOffset,
12193 &halSetP2PGONOAParams,
12194 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012195
12196 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012197 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012198
12199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012200 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012201 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012202 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12203 wdiP2PGONOAReqRspCb, pEventData->pUserData,
12204 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012205}/*WDI_ProcessP2PGONOAReq*/
12206
Jeff Johnson295189b2012-06-20 16:38:30 -070012207
12208
12209/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012210 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070012212 @param None
12213
12214 @see
12215 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070012216*/
12217void
12218WDI_SetPowerStateCb
12219(
12220 wpt_status status,
12221 unsigned int dxePhyAddr,
12222 void *pContext
12223)
12224{
12225 wpt_status wptStatus;
12226 WDI_ControlBlockType *pCB = NULL;
12227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
12228 if(eWLAN_PAL_STATUS_E_FAILURE == status )
12229 {
12230 //it shouldn't happen, put an error msg
12231 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012232 /*
12233 * Trigger the event to bring the Enter BMPS req function to come
12234 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070012235*/
12236 if( NULL != pContext )
12237 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012238 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070012239 }
12240 else
12241 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012242 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070012243 pCB = &gWDICb;
12244 }
12245 pCB->dxePhyAddr = dxePhyAddr;
12246 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
12247 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12248 {
12249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12250 "Failed to set an event");
12251
Jeff Johnsone7245742012-09-05 17:12:55 -070012252 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070012253 }
12254 return;
12255}
12256
12257
12258/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012259 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012260 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012261
12262 @param pWDICtx: pointer to the WLAN DAL context
12263 pEventData: pointer to the event information structure
12264
Jeff Johnson295189b2012-06-20 16:38:30 -070012265 @see
12266 @return Result of the function call
12267*/
12268WDI_Status
12269WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012270(
Jeff Johnson295189b2012-06-20 16:38:30 -070012271 WDI_ControlBlockType* pWDICtx,
12272 WDI_EventInfoType* pEventData
12273)
12274{
Jeff Johnson43971f52012-07-17 12:26:56 -070012275 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012276 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012277 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012278 wpt_uint16 usDataOffset = 0;
12279 wpt_uint16 usSendSize = 0;
12280 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12281
12282 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012283 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012284 -------------------------------------------------------------------------*/
12285 if (( NULL == pEventData ) ||
12286 ( NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)))
12287 {
12288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012289 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012290 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012291 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012292 }
12293
12294 /*-----------------------------------------------------------------------
12295 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012296 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012297 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012299 0,
12300 &pSendBuffer, &usDataOffset, &usSendSize))||
12301 ( usSendSize < (usDataOffset )))
12302 {
12303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12304 "Unable to get send buffer in Enter IMPS req %x %x",
12305 pEventData, wdiEnterImpsRspCb);
12306 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012307 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 }
12309
12310 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012311 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12312 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012313 {
12314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12315 "WDI Init failed to reset an event");
12316
Jeff Johnsone7245742012-09-05 17:12:55 -070012317 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012318 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012319 }
12320
12321 // notify DTS that we are entering IMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012322 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
12323 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
12324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12325 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS\n", wptStatus);
12326 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012327 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012328 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012329
12330 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070012331 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012333 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12334 WDI_SET_POWER_STATE_TIMEOUT);
12335 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012336 {
12337 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12338 "WDI Init failed to wait on an event");
12339
Jeff Johnsone7245742012-09-05 17:12:55 -070012340 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012341 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012342 }
12343
12344 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012345 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012346 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12348 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012349
12350fail:
12351 // Release the message buffer so we don't leak
12352 wpalMemoryFree(pSendBuffer);
12353
12354failRequest:
12355 //WDA should have failure check to avoid the memory leak
12356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012357}/*WDI_ProcessEnterImpsReq*/
12358
12359/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012360 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012361 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012362
12363 @param pWDICtx: pointer to the WLAN DAL context
12364 pEventData: pointer to the event information structure
12365
Jeff Johnson295189b2012-06-20 16:38:30 -070012366 @see
12367 @return Result of the function call
12368*/
12369WDI_Status
12370WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012371(
Jeff Johnson295189b2012-06-20 16:38:30 -070012372 WDI_ControlBlockType* pWDICtx,
12373 WDI_EventInfoType* pEventData
12374)
12375{
12376 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012377 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012378 wpt_uint16 usDataOffset = 0;
12379 wpt_uint16 usSendSize = 0;
12380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12381
12382 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 -------------------------------------------------------------------------*/
12385 if (( NULL == pEventData ) ||
12386 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)))
12387 {
12388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012389 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 }
12393
12394 /*-----------------------------------------------------------------------
12395 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012396 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012397 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012398 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012399 0,
12400 &pSendBuffer, &usDataOffset, &usSendSize))||
12401 ( usSendSize < (usDataOffset )))
12402 {
12403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12404 "Unable to get send buffer in Exit IMPS req %x %x",
12405 pEventData, wdiExitImpsRspCb);
12406 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012408 }
12409
12410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012411 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012412 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012413 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12414 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012415}/*WDI_ProcessExitImpsReq*/
12416
12417/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012418 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012419 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012420
12421 @param pWDICtx: pointer to the WLAN DAL context
12422 pEventData: pointer to the event information structure
12423
Jeff Johnson295189b2012-06-20 16:38:30 -070012424 @see
12425 @return Result of the function call
12426*/
12427WDI_Status
12428WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012429(
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 WDI_ControlBlockType* pWDICtx,
12431 WDI_EventInfoType* pEventData
12432)
12433{
12434 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
12435 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012436 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012437 wpt_uint16 usDataOffset = 0;
12438 wpt_uint16 usSendSize = 0;
12439 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070012440 wpt_status wptStatus;
12441
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12443
12444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012445 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012446 -------------------------------------------------------------------------*/
12447 if (( NULL == pEventData ) ||
12448 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
12449 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
12450 {
12451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012452 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012453 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012454 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012455 }
12456
12457 /*-----------------------------------------------------------------------
12458 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012459 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012460 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012461 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 sizeof(enterBmpsReq),
12463 &pSendBuffer, &usDataOffset, &usSendSize))||
12464 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
12465 {
12466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12467 "Unable to get send buffer in Enter BMPS req %x %x %x",
12468 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
12469 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012470 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070012471 }
12472
12473 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070012474 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
12475 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012476 {
12477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12478 "WDI Init failed to reset an event");
12479
Jeff Johnsone7245742012-09-05 17:12:55 -070012480 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012481 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012482 }
12483
12484 // notify DTS that we are entering BMPS
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012485 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
12486 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
12487 {
12488 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12489 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS\n", wptStatus);
12490 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012491 goto fail;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080012492 }
Jeff Johnson295189b2012-06-20 16:38:30 -070012493
12494/*
Jeff Johnsone7245742012-09-05 17:12:55 -070012495 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070012496 */
Jeff Johnson43971f52012-07-17 12:26:56 -070012497 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
12498 WDI_SET_POWER_STATE_TIMEOUT);
12499 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070012500 {
12501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12502 "WDI Init failed to wait on an event");
12503
Jeff Johnsone7245742012-09-05 17:12:55 -070012504 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012505 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070012506 }
12507
12508 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
12509
12510 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
12511 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
12512 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
12513 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
12514
12515 // For CCX and 11R Roaming
12516 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
12517 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
12518 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
12519
12520 wpalMemoryCopy( pSendBuffer+usDataOffset,
12521 &enterBmpsReq,
12522 sizeof(enterBmpsReq));
12523
12524 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012525 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012526
12527 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012528 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012529 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12531 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080012532
12533fail:
12534 // Release the message buffer so we don't leak
12535 wpalMemoryFree(pSendBuffer);
12536
12537failRequest:
12538 //WDA should have failure check to avoid the memory leak
12539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012540}/*WDI_ProcessEnterBmpsReq*/
12541
12542/**
12543 @brief Process Exit BMPS Request function (called when Main FSM
12544 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012545
12546 @param pWDICtx: pointer to the WLAN DAL context
12547 pEventData: pointer to the event information structure
12548
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 @see
12550 @return Result of the function call
12551*/
12552WDI_Status
12553WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012554(
Jeff Johnson295189b2012-06-20 16:38:30 -070012555 WDI_ControlBlockType* pWDICtx,
12556 WDI_EventInfoType* pEventData
12557)
12558{
12559 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
12560 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012562 wpt_uint16 usDataOffset = 0;
12563 wpt_uint16 usSendSize = 0;
12564 tHalExitBmpsReqParams exitBmpsReq;
12565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12566
12567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012569 -------------------------------------------------------------------------*/
12570 if (( NULL == pEventData ) ||
12571 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
12572 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
12573 {
12574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012575 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012576 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012577 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012578 }
12579
12580 /*-----------------------------------------------------------------------
12581 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012582 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012583 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012584 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012585 sizeof(exitBmpsReq),
12586 &pSendBuffer, &usDataOffset, &usSendSize))||
12587 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
12588 {
12589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12590 "Unable to get send buffer in Exit BMPS req %x %x %x",
12591 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
12592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 }
12595 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
12596
Jeff Johnsone7245742012-09-05 17:12:55 -070012597 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
12598
Jeff Johnson295189b2012-06-20 16:38:30 -070012599 wpalMemoryCopy( pSendBuffer+usDataOffset,
12600 &exitBmpsReq,
12601 sizeof(exitBmpsReq));
12602
12603 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012604 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012605
12606 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012607 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012608 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012609 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12610 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012611}/*WDI_ProcessExitBmpsReq*/
12612
12613/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012614 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012615 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012616
12617 @param pWDICtx: pointer to the WLAN DAL context
12618 pEventData: pointer to the event information structure
12619
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 @see
12621 @return Result of the function call
12622*/
12623WDI_Status
12624WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012625(
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 WDI_ControlBlockType* pWDICtx,
12627 WDI_EventInfoType* pEventData
12628)
12629{
12630 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
12631 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012632 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012633 wpt_uint16 usDataOffset = 0;
12634 wpt_uint16 usSendSize = 0;
12635 tUapsdReqParams enterUapsdReq;
12636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12637
12638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012639 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012640 -------------------------------------------------------------------------*/
12641 if (( NULL == pEventData ) ||
12642 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
12643 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
12644 {
12645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012647 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012648 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012649 }
12650
12651 /*-----------------------------------------------------------------------
12652 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012653 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012654 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012655 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012656 sizeof(enterUapsdReq),
12657 &pSendBuffer, &usDataOffset, &usSendSize))||
12658 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
12659 {
12660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12661 "Unable to get send buffer in Enter UAPSD req %x %x %x",
12662 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
12663 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 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
12668 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
12669 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
12670 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
12671 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
12672 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
12673 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
12674 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070012675 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012676
Jeff Johnsone7245742012-09-05 17:12:55 -070012677 wpalMemoryCopy( pSendBuffer+usDataOffset,
12678 &enterUapsdReq,
12679 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012680
12681 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012682 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012683
12684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012685 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012686 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12688 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012689}/*WDI_ProcessEnterUapsdReq*/
12690
12691/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012694
12695 @param pWDICtx: pointer to the WLAN DAL context
12696 pEventData: pointer to the event information structure
12697
Jeff Johnson295189b2012-06-20 16:38:30 -070012698 @see
12699 @return Result of the function call
12700*/
12701WDI_Status
12702WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012703(
Jeff Johnson295189b2012-06-20 16:38:30 -070012704 WDI_ControlBlockType* pWDICtx,
12705 WDI_EventInfoType* pEventData
12706)
12707{
12708 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012709 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012710 wpt_uint16 usDataOffset = 0;
12711 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012712 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
12713 wpt_uint8 bssIdx = 0;
12714
Jeff Johnson295189b2012-06-20 16:38:30 -070012715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12716
12717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012719 -------------------------------------------------------------------------*/
12720 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012721 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070012722 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
12723 {
12724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012728 }
12729
12730 /*-----------------------------------------------------------------------
12731 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012732 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012733 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012734 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012735 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070012736 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012737 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070012738 {
12739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12740 "Unable to get send buffer in Exit UAPSD req %x %x",
12741 pEventData, wdiExitUapsdRspCb);
12742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012744 }
12745
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070012746 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
12747
12748 wpalMemoryCopy( pSendBuffer+usDataOffset,
12749 &bssIdx,
12750 sizeof(wpt_uint8));
12751
12752 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
12753 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
12754
Jeff Johnson295189b2012-06-20 16:38:30 -070012755 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012756 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012757 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012758 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12759 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012760}/*WDI_ProcessExitUapsdReq*/
12761
12762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012763 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012765
12766 @param pWDICtx: pointer to the WLAN DAL context
12767 pEventData: pointer to the event information structure
12768
Jeff Johnson295189b2012-06-20 16:38:30 -070012769 @see
12770 @return Result of the function call
12771*/
12772WDI_Status
12773WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012774(
Jeff Johnson295189b2012-06-20 16:38:30 -070012775 WDI_ControlBlockType* pWDICtx,
12776 WDI_EventInfoType* pEventData
12777)
12778{
12779 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
12780 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 wpt_uint16 usDataOffset = 0;
12783 wpt_uint16 usSendSize = 0;
12784 tUapsdInfo uapsdAcParamsReq;
12785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12786
12787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012788 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012789 -------------------------------------------------------------------------*/
12790 if (( NULL == pEventData ) ||
12791 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
12792 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
12793 {
12794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012795 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012796 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012797 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012798 }
12799
12800 /*-----------------------------------------------------------------------
12801 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012802 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012803 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012804 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012805 sizeof(uapsdAcParamsReq),
12806 &pSendBuffer, &usDataOffset, &usSendSize))||
12807 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
12808 {
12809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12810 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12811 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
12812 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012813 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012814 }
12815
12816 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
12817 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
12818 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
12819 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
12820 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
12821 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
12822
Jeff Johnsone7245742012-09-05 17:12:55 -070012823 wpalMemoryCopy( pSendBuffer+usDataOffset,
12824 &uapsdAcParamsReq,
12825 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070012826
12827 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012828 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012829
12830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012833 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12834 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012835}/*WDI_ProcessSetUapsdAcParamsReq*/
12836
12837/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012838 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012839 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012840
12841 @param pWDICtx: pointer to the WLAN DAL context
12842 pEventData: pointer to the event information structure
12843
Jeff Johnson295189b2012-06-20 16:38:30 -070012844 @see
12845 @return Result of the function call
12846*/
12847WDI_Status
12848WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012849(
Jeff Johnson295189b2012-06-20 16:38:30 -070012850 WDI_ControlBlockType* pWDICtx,
12851 WDI_EventInfoType* pEventData
12852)
12853{
12854 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
12855 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 wpt_uint16 usDataOffset = 0;
12858 wpt_uint16 usSendSize = 0;
12859 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12860
12861 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012863 -------------------------------------------------------------------------*/
12864 if (( NULL == pEventData ) ||
12865 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
12866 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
12867 {
12868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012869 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012872 }
12873
12874 /*-----------------------------------------------------------------------
12875 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012876 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012877 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
12880 &pSendBuffer, &usDataOffset, &usSendSize))||
12881 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
12882 {
12883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12884 "Unable to get send buffer in Update UAPSD params req %x %x %x",
12885 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
12886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012888 }
12889
Jeff Johnsone7245742012-09-05 17:12:55 -070012890 wpalMemoryCopy( pSendBuffer+usDataOffset,
12891 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
12892 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012893
12894 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012895 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012896
12897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12901 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012902}/*WDI_ProcessUpdateUapsdParamsReq*/
12903
12904/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012907
12908 @param pWDICtx: pointer to the WLAN DAL context
12909 pEventData: pointer to the event information structure
12910
Jeff Johnson295189b2012-06-20 16:38:30 -070012911 @see
12912 @return Result of the function call
12913*/
12914WDI_Status
12915WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012916(
Jeff Johnson295189b2012-06-20 16:38:30 -070012917 WDI_ControlBlockType* pWDICtx,
12918 WDI_EventInfoType* pEventData
12919)
12920{
12921 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
12922 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012923 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012924 wpt_uint16 usDataOffset = 0;
12925 wpt_uint16 usSendSize = 0;
12926 tHalConfigureRxpFilterReqParams halRxpFilterParams;
12927
12928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12929
12930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012932 -------------------------------------------------------------------------*/
12933 if (( NULL == pEventData ) ||
12934 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
12935 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
12936 {
12937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012941 }
12942
12943 /*-----------------------------------------------------------------------
12944 Get message buffer
12945 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012946 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012947 sizeof(halRxpFilterParams),
12948 &pSendBuffer, &usDataOffset, &usSendSize))||
12949 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
12950 {
12951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12952 "Unable to get send buffer in Set UAPSD params req %x %x %x",
12953 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
12954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012956 }
12957
Jeff Johnsone7245742012-09-05 17:12:55 -070012958 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012959 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012960 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070012961 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
12962
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 wpalMemoryCopy( pSendBuffer+usDataOffset,
12964 &halRxpFilterParams,
12965 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012966
12967 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012968 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012969
12970 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012971 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012972 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012973 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12974 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012975}/*WDI_ProcessConfigureRxpFilterReq*/
12976
12977/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012978 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012979 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012980
12981 @param pWDICtx: pointer to the WLAN DAL context
12982 pEventData: pointer to the event information structure
12983
Jeff Johnson295189b2012-06-20 16:38:30 -070012984 @see
12985 @return Result of the function call
12986*/
12987WDI_Status
12988WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012989(
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 WDI_ControlBlockType* pWDICtx,
12991 WDI_EventInfoType* pEventData
12992)
12993{
12994 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
12995 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012996 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012997 wpt_uint16 usDataOffset = 0;
12998 wpt_uint16 usSendSize = 0;
12999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13000
13001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013002 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013003 -------------------------------------------------------------------------*/
13004 if (( NULL == pEventData ) ||
13005 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
13006 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
13007 {
13008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013009 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013010 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013011 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013012 }
13013
13014 /*-----------------------------------------------------------------------
13015 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013016 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013017 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013018 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013019 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
13020 &pSendBuffer, &usDataOffset, &usSendSize))||
13021 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13022 {
13023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13024 "Unable to get send buffer in Set beacon filter req %x %x %x",
13025 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013028 }
13029
Jeff Johnsone7245742012-09-05 17:12:55 -070013030 wpalMemoryCopy( pSendBuffer+usDataOffset,
13031 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13032 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
13033 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13034 &pwdiBeaconFilterParams->aFilters[0],
13035 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070013036
13037 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013038 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013039
13040 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013042 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013043 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13044 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013045}/*WDI_ProcessSetBeaconFilterReq*/
13046
13047/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013048 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013049 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013050
13051 @param pWDICtx: pointer to the WLAN DAL context
13052 pEventData: pointer to the event information structure
13053
Jeff Johnson295189b2012-06-20 16:38:30 -070013054 @see
13055 @return Result of the function call
13056*/
13057WDI_Status
13058WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013059(
Jeff Johnson295189b2012-06-20 16:38:30 -070013060 WDI_ControlBlockType* pWDICtx,
13061 WDI_EventInfoType* pEventData
13062)
13063{
13064 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
13065 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013066 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013067 wpt_uint16 usDataOffset = 0;
13068 wpt_uint16 usSendSize = 0;
13069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13070
13071 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013072 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013073 -------------------------------------------------------------------------*/
13074 if (( NULL == pEventData ) ||
13075 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
13076 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
13077 {
13078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013079 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013081 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013082 }
13083
13084 /*-----------------------------------------------------------------------
13085 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013086 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013087 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013088 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013089 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
13090 &pSendBuffer, &usDataOffset, &usSendSize))||
13091 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
13092 {
13093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13094 "Unable to get send buffer in remove beacon filter req %x %x %x",
13095 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
13096 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013097 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013098 }
13099
Jeff Johnsone7245742012-09-05 17:12:55 -070013100 wpalMemoryCopy( pSendBuffer+usDataOffset,
13101 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
13102 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070013103
13104 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013105 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013106
13107 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013108 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013109 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013110 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13111 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013112}
13113
13114/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013115 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013116 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013117
13118 @param pWDICtx: pointer to the WLAN DAL context
13119 pEventData: pointer to the event information structure
13120
Jeff Johnson295189b2012-06-20 16:38:30 -070013121 @see
13122 @return Result of the function call
13123*/
13124WDI_Status
13125WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013126(
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 WDI_ControlBlockType* pWDICtx,
13128 WDI_EventInfoType* pEventData
13129)
13130{
13131 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
13132 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013134 wpt_uint16 usDataOffset = 0;
13135 wpt_uint16 usSendSize = 0;
13136 tHalRSSIThresholds rssiThresholdsReq;
13137 WDI_Status ret_status = 0;
13138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13139
13140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013141 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013142 -------------------------------------------------------------------------*/
13143 if (( NULL == pEventData ) ||
13144 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
13145 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
13146 {
13147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013148 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013149 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013151 }
13152
13153 /*-----------------------------------------------------------------------
13154 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013155 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013156 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013157 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013158 sizeof(rssiThresholdsReq),
13159 &pSendBuffer, &usDataOffset, &usSendSize))||
13160 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
13161 {
13162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13163 "Unable to get send buffer in remove beacon filter req %x %x %x",
13164 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
13165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 }
13168
Jeff Johnsone7245742012-09-05 17:12:55 -070013169 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013170 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070013171 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013172 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013175 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013176 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013178 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013179 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013180 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013181 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070013182 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070013187 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
13189
Jeff Johnsone7245742012-09-05 17:12:55 -070013190 wpalMemoryCopy( pSendBuffer+usDataOffset,
13191 &rssiThresholdsReq,
13192 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013193
13194 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013196
13197 /*-------------------------------------------------------------------------
13198 Send Set threshold req to HAL
13199 -------------------------------------------------------------------------*/
13200 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13201 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
13202 {
13203 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
13204 // req. Then as a result of processing the threshold cross ind, we trigger
13205 // a Set threshold req, then we need to indicate to WDI that it needs to
13206 // go to busy state as a result of the indication as we sent a req in the
13207 // same WDI context.
13208 // Hence expected state transition is to busy.
13209 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
13210 }
13211
13212 return ret_status;
13213}
13214
13215/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013216 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013218
13219 @param pWDICtx: pointer to the WLAN DAL context
13220 pEventData: pointer to the event information structure
13221
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 @see
13223 @return Result of the function call
13224*/
13225WDI_Status
13226WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013227(
Jeff Johnson295189b2012-06-20 16:38:30 -070013228 WDI_ControlBlockType* pWDICtx,
13229 WDI_EventInfoType* pEventData
13230)
13231{
13232 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
13233 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013234 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 wpt_uint16 usDataOffset = 0;
13236 wpt_uint16 usSendSize = 0;
13237 tHalHostOffloadReq hostOffloadParams;
13238 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013239 wpt_uint8 ucCurrentBSSSesIdx = 0;
13240 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013241
13242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13243
13244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 -------------------------------------------------------------------------*/
13247 if (( NULL == pEventData ) ||
13248 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
13249 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
13250 {
13251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013252 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013253 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013254 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013255 }
13256
13257 /*-----------------------------------------------------------------------
13258 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013259 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013261 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
13263 &pSendBuffer, &usDataOffset, &usSendSize))||
13264 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
13265 {
13266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13267 "Unable to get send buffer in host offload req %x %x %x",
13268 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
13269 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013270 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013271 }
13272
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013273 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13274 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
13275 &pBSSSes);
13276 if ( NULL == pBSSSes )
13277 {
13278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013279 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013280 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013281 }
13282
Jeff Johnson295189b2012-06-20 16:38:30 -070013283 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
13284 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013285
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
13287 {
13288 // ARP Offload
13289 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
13290 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
13291 4);
13292 }
13293 else
13294 {
13295 // NS Offload
13296 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
13297 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
13298 16);
13299
13300#ifdef WLAN_NS_OFFLOAD
13301 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
13302 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
13303 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
13304 16);
13305 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
13306 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
13307 16);
13308 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
13309 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
13310 16);
13311 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
13312 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
13313 16);
13314 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
13315 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
13316 6);
13317 nsOffloadParams.srcIPv6AddrValid = pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
13318 nsOffloadParams.targetIPv6Addr1Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
13319 nsOffloadParams.targetIPv6Addr2Valid = pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
Jeff Johnsone7245742012-09-05 17:12:55 -070013320
Jeff Johnson295189b2012-06-20 16:38:30 -070013321#endif // WLAN_NS_OFFLOAD
13322 }
13323
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013324 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
13325
Jeff Johnson295189b2012-06-20 16:38:30 -070013326 // copy hostOffloadParams into pSendBuffer
13327 wpalMemoryCopy( pSendBuffer+usDataOffset,
13328 &hostOffloadParams,
13329 sizeof(hostOffloadParams));
13330
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013331 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013333 // copy nsOffloadParams into pSendBuffer
13334 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013335 &nsOffloadParams,
13336 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013337 }
13338 else
13339 {
13340#ifdef WLAN_NS_OFFLOAD
13341 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
13342 {
13343 // copy nsOffloadParams into pSendBuffer
13344 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
13345 &nsOffloadParams,
13346 sizeof(nsOffloadParams));
13347 }
13348#endif
13349 }
Jeff Johnson295189b2012-06-20 16:38:30 -070013350
13351 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013352 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013353
13354 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013355 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013356 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013357 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13358 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013359
13360fail:
13361 // Release the message buffer so we don't leak
13362 wpalMemoryFree(pSendBuffer);
13363
13364failRequest:
13365 //WDA should have failure check to avoid the memory leak
13366 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013367}/*WDI_ProcessHostOffloadReq*/
13368
13369/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013370 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013371 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013372
13373 @param pWDICtx: pointer to the WLAN DAL context
13374 pEventData: pointer to the event information structure
13375
Jeff Johnson295189b2012-06-20 16:38:30 -070013376 @see
13377 @return Result of the function call
13378*/
13379WDI_Status
13380WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013381(
Jeff Johnson295189b2012-06-20 16:38:30 -070013382 WDI_ControlBlockType* pWDICtx,
13383 WDI_EventInfoType* pEventData
13384)
13385{
13386 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
13387 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013388 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 wpt_uint16 usDataOffset = 0;
13390 wpt_uint16 usSendSize = 0;
13391 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013392 wpt_uint8 ucCurrentBSSSesIdx = 0;
13393 WDI_BSSSessionType* pBSSSes = NULL;
13394
Jeff Johnson295189b2012-06-20 16:38:30 -070013395 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13396
13397 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013398 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013399 -------------------------------------------------------------------------*/
13400 if (( NULL == pEventData ) ||
13401 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
13402 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
13403 {
13404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13405 "Invalid parameters in Keep Alive req");
13406 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013407 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 }
13409
13410 /*-----------------------------------------------------------------------
13411 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013412 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013413 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013414 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013415 sizeof(keepAliveReq),
13416 &pSendBuffer, &usDataOffset, &usSendSize))||
13417 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
13418 {
13419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13420 "Unable to get send buffer in keep alive req %x %x %x",
13421 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
13422 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013423 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013424 }
13425
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013426 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13427 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
13428 &pBSSSes);
13429 if ( NULL == pBSSSes )
13430 {
13431 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013432 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013433 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013434 }
13435
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
13437 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
13438
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013439 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013440
Jeff Johnson295189b2012-06-20 16:38:30 -070013441 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
13442 {
13443 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
13444 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
13445 HAL_IPV4_ADDR_LEN);
13446 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
13447 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070013448 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070013449 wpalMemoryCopy(keepAliveReq.destMacAddr,
13450 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
13451 HAL_MAC_ADDR_LEN);
13452 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013453
13454 wpalMemoryCopy( pSendBuffer+usDataOffset,
13455 &keepAliveReq,
13456 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013457
13458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13459 "Process keep alive req %d",sizeof(keepAliveReq));
13460
13461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13462 "Process keep alive req time period %d",keepAliveReq.timePeriod);
13463
13464 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013465 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013466
13467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
13468 "Sending keep alive req to HAL");
13469
13470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13474 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013475
13476fail:
13477 // Release the message buffer so we don't leak
13478 wpalMemoryFree(pSendBuffer);
13479
13480failRequest:
13481 //WDA should have failure check to avoid the memory leak
13482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013483}/*WDI_ProcessKeepAliveReq*/
13484
13485
13486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013487 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013489
13490 @param pWDICtx: pointer to the WLAN DAL context
13491 pEventData: pointer to the event information structure
13492
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 @see
13494 @return Result of the function call
13495*/
13496WDI_Status
13497WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013498(
Jeff Johnson295189b2012-06-20 16:38:30 -070013499 WDI_ControlBlockType* pWDICtx,
13500 WDI_EventInfoType* pEventData
13501)
13502{
13503 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
13504 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013506 wpt_uint16 usDataOffset = 0;
13507 wpt_uint16 usSendSize = 0;
13508 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013509 wpt_uint8 ucCurrentBSSSesIdx = 0;
13510 WDI_BSSSessionType* pBSSSes = NULL;
13511
Jeff Johnson295189b2012-06-20 16:38:30 -070013512 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13513
13514 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013515 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013516 -------------------------------------------------------------------------*/
13517 if (( NULL == pEventData ) ||
13518 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
13519 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
13520 {
13521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013522 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013524 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013525 }
13526
13527 /*-----------------------------------------------------------------------
13528 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013531 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013532 sizeof(wowlAddBcPtrnReq),
13533 &pSendBuffer, &usDataOffset, &usSendSize))||
13534 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
13535 {
13536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13537 "Unable to get send buffer in Wowl add bc ptrn req %x %x %x",
13538 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
13539 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013540 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 }
13542
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013543 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13544 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
13545 &pBSSSes);
13546 if ( NULL == pBSSSes )
13547 {
13548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013549 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013550 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013551 }
13552
Jeff Johnsone7245742012-09-05 17:12:55 -070013553 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013554 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070013555 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013556 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070013557 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070013559 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070013560 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
13561
13562 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
13563 {
13564 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13565 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13566 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
13567 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13568 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13569 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
13570 }
13571 else
13572 {
13573 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13574 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13575 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13576 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13577 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13578 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13579
13580 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
13581 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
13582 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13583 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
13584 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
13585 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
13586 }
13587
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013588 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13589
Jeff Johnson295189b2012-06-20 16:38:30 -070013590 wpalMemoryCopy( pSendBuffer+usDataOffset,
13591 &wowlAddBcPtrnReq,
13592 sizeof(wowlAddBcPtrnReq));
13593
13594 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013595 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013596
13597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013599 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013600 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13601 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013602fail:
13603 // Release the message buffer so we don't leak
13604 wpalMemoryFree(pSendBuffer);
13605
13606failRequest:
13607 //WDA should have failure check to avoid the memory leak
13608 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013609}/*WDI_ProcessWowlAddBcPtrnReq*/
13610
13611/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013612 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013614
13615 @param pWDICtx: pointer to the WLAN DAL context
13616 pEventData: pointer to the event information structure
13617
Jeff Johnson295189b2012-06-20 16:38:30 -070013618 @see
13619 @return Result of the function call
13620*/
13621WDI_Status
13622WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013623(
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 WDI_ControlBlockType* pWDICtx,
13625 WDI_EventInfoType* pEventData
13626)
13627{
13628 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
13629 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013631 wpt_uint16 usDataOffset = 0;
13632 wpt_uint16 usSendSize = 0;
13633 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013634 wpt_uint8 ucCurrentBSSSesIdx = 0;
13635 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13637
13638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 -------------------------------------------------------------------------*/
13641 if (( NULL == pEventData ) ||
13642 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
13643 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
13644 {
13645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013646 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013648 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 }
13650
13651 /*-----------------------------------------------------------------------
13652 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013653 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013654 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013655 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 sizeof(wowlDelBcPtrnReq),
13657 &pSendBuffer, &usDataOffset, &usSendSize))||
13658 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
13659 {
13660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13661 "Unable to get send buffer in Wowl del bc ptrn req %x %x %x",
13662 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
13663 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013664 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 }
13666
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013667 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13668 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
13669 &pBSSSes);
13670 if ( NULL == pBSSSes )
13671 {
13672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013673 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013674 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013675 }
13676
Jeff Johnsone7245742012-09-05 17:12:55 -070013677 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013678 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013679
13680 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
13681
Jeff Johnsone7245742012-09-05 17:12:55 -070013682 wpalMemoryCopy( pSendBuffer+usDataOffset,
13683 &wowlDelBcPtrnReq,
13684 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013685
13686 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013687 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013688
13689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013690 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013691 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013692 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13693 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080013694
13695fail:
13696 // Release the message buffer so we don't leak
13697 wpalMemoryFree(pSendBuffer);
13698
13699failRequest:
13700 //WDA should have failure check to avoid the memory leak
13701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013702}/*WDI_ProcessWowlDelBcPtrnReq*/
13703
13704/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013705 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013707
13708 @param pWDICtx: pointer to the WLAN DAL context
13709 pEventData: pointer to the event information structure
13710
Jeff Johnson295189b2012-06-20 16:38:30 -070013711 @see
13712 @return Result of the function call
13713*/
13714WDI_Status
13715WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013716(
Jeff Johnson295189b2012-06-20 16:38:30 -070013717 WDI_ControlBlockType* pWDICtx,
13718 WDI_EventInfoType* pEventData
13719)
13720{
13721 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
13722 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013723 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013724 wpt_uint16 usDataOffset = 0;
13725 wpt_uint16 usSendSize = 0;
13726 tHalWowlEnterParams wowlEnterReq;
13727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13728
13729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013731 -------------------------------------------------------------------------*/
13732 if (( NULL == pEventData ) ||
13733 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
13734 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
13735 {
13736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 }
13741
13742 /*-----------------------------------------------------------------------
13743 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013744 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013745 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 sizeof(wowlEnterReq),
13748 &pSendBuffer, &usDataOffset, &usSendSize))||
13749 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
13750 {
13751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13752 "Unable to get send buffer in Wowl enter req %x %x %x",
13753 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
13754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 }
13757
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013759 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013760 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013761 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013762 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070013763 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070013764 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013765 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013768 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070013769 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070013770 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070013771 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070013773 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
13774
13775#ifdef WLAN_WAKEUP_EVENTS
13776 wowlEnterReq.ucWoWEAPIDRequestEnable =
13777 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
13778
13779 wowlEnterReq.ucWoWEAPOL4WayEnable =
13780 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
13781
13782 wowlEnterReq.ucWowNetScanOffloadMatch =
13783 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
13784
13785 wowlEnterReq.ucWowGTKRekeyError =
13786 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
13787
13788 wowlEnterReq.ucWoWBSSConnLoss =
13789 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
13790#endif // WLAN_WAKEUP_EVENTS
13791
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013792 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
13793
Jeff Johnson295189b2012-06-20 16:38:30 -070013794 wpalMemoryCopy(wowlEnterReq.magicPtrn,
13795 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
13796 sizeof(tSirMacAddr));
13797
Jeff Johnsone7245742012-09-05 17:12:55 -070013798 wpalMemoryCopy( pSendBuffer+usDataOffset,
13799 &wowlEnterReq,
13800 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070013801
13802 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013804
13805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013806 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013808 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13809 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013810}/*WDI_ProcessWowlEnterReq*/
13811
13812/**
13813 @brief Process Wowl exit Request function (called when Main FSM
13814 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013815
13816 @param pWDICtx: pointer to the WLAN DAL context
13817 pEventData: pointer to the event information structure
13818
Jeff Johnson295189b2012-06-20 16:38:30 -070013819 @see
13820 @return Result of the function call
13821*/
13822WDI_Status
13823WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013824(
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 WDI_ControlBlockType* pWDICtx,
13826 WDI_EventInfoType* pEventData
13827)
13828{
13829 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013830 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013831 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 wpt_uint16 usDataOffset = 0;
13833 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013834 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13836
13837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013839 -------------------------------------------------------------------------*/
13840 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013841 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070013842 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
13843 {
13844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013845 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013846 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013847 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013848 }
13849
13850 /*-----------------------------------------------------------------------
13851 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013852 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013853 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013854 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013855 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070013856 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013857 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070013858 {
13859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13860 "Unable to get send buffer in Wowl Exit req %x %x",
13861 pEventData, wdiWowlExitCb);
13862 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013863 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013864 }
13865
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070013866 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
13867
13868 wpalMemoryCopy( pSendBuffer+usDataOffset,
13869 &wowlExitparams,
13870 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013872 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013873 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013874 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13875 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013876}/*WDI_ProcessWowlExitReq*/
13877
13878/**
13879 @brief Process Configure Apps Cpu Wakeup State Request function
13880 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013881
13882 @param pWDICtx: pointer to the WLAN DAL context
13883 pEventData: pointer to the event information structure
13884
Jeff Johnson295189b2012-06-20 16:38:30 -070013885 @see
13886 @return Result of the function call
13887*/
13888WDI_Status
13889WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013890(
Jeff Johnson295189b2012-06-20 16:38:30 -070013891 WDI_ControlBlockType* pWDICtx,
13892 WDI_EventInfoType* pEventData
13893)
13894{
13895 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
13896 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013897 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013898 wpt_uint16 usDataOffset = 0;
13899 wpt_uint16 usSendSize = 0;
13900 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
13901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13902
13903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013905 -------------------------------------------------------------------------*/
13906 if (( NULL == pEventData ) ||
13907 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
13908 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
13909 {
13910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013914 }
13915
13916 /*-----------------------------------------------------------------------
13917 Get message buffer
13918 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013919 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013920 sizeof(halCfgAppsCpuWakeupStateReqParams),
13921 &pSendBuffer, &usDataOffset, &usSendSize))||
13922 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
13923 {
13924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13925 "Unable to get send buffer in Apps CPU Wakeup State req %x %x %x",
13926 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
13927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013929 }
13930
Jeff Johnsone7245742012-09-05 17:12:55 -070013931 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
13933
Jeff Johnsone7245742012-09-05 17:12:55 -070013934 wpalMemoryCopy( pSendBuffer+usDataOffset,
13935 &halCfgAppsCpuWakeupStateReqParams,
13936 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013937
13938 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013939 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013940
13941 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013942 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013943 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13945 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
13946 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013947}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
13948
13949#ifdef WLAN_FEATURE_VOWIFI_11R
13950/**
13951 @brief Process Aggregated Add TSpec Request function (called when Main FSM
13952 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013953
13954 @param pWDICtx: pointer to the WLAN DAL context
13955 pEventData: pointer to the event information structure
13956
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 @see
13958 @return Result of the function call
13959*/
13960WDI_Status
13961WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013962(
Jeff Johnson295189b2012-06-20 16:38:30 -070013963 WDI_ControlBlockType* pWDICtx,
13964 WDI_EventInfoType* pEventData
13965)
13966{
13967 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
13968 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013969 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013970 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013971 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 wpt_uint16 usDataOffset = 0;
13973 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013974 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013975 wpt_macAddr macBSSID;
13976 tAggrAddTsReq halAggrAddTsReq;
13977 int i;
13978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13979
13980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013982 -------------------------------------------------------------------------*/
13983 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13984 ( NULL == pEventData->pCBfnc ))
13985 {
13986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 }
13991 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
13992 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
13993 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
13994 /*-------------------------------------------------------------------------
13995 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013996 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013997 -------------------------------------------------------------------------*/
13998 wpalMutexAcquire(&pWDICtx->wptMutex);
13999
14000 /*------------------------------------------------------------------------
14001 Find the BSS for which the request is made and identify WDI session
14002 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014003 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
14004 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 &macBSSID))
14006 {
14007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14008 "This station does not exist in the WDI Station Table %d");
14009 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014010 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014011 }
14012
Jeff Johnsone7245742012-09-05 17:12:55 -070014013 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
14014 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070014015 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14017 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
14018 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014019
14020 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014021 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014022 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014023
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 /*------------------------------------------------------------------------
14025 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070014026 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070014027 ------------------------------------------------------------------------*/
14028 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
14029 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14031 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14032 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014033
Jeff Johnsone7245742012-09-05 17:12:55 -070014034 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014035 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014036 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 }
14038
14039 wpalMutexRelease(&pWDICtx->wptMutex);
14040 /*-----------------------------------------------------------------------
14041 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 sizeof(tAggrAddTsParams),
14046 &pSendBuffer, &usDataOffset, &usSendSize))||
14047 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
14048 {
14049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14050 "Unable to get send buffer in set bss key req %x %x %x",
14051 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
14052 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014053 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014054 }
14055
Jeff Johnsone7245742012-09-05 17:12:55 -070014056 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014057 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014058 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070014059 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
14060
14061 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
14062 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014063 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070014064 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014065 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070014066 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070014067 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14069 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014070 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070014071 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14072 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070014073 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070014074 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14075 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070014076 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014077 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14078 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014079 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070014080 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14081 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070014082 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070014083 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14084 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070014085 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014086 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14087 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014088 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070014089 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
14090 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070014091 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070014092 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070014093 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070014094 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070014095
14096
14097 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014098 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014099 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014101 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014103 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014104 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014105 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014106 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014107 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014108 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014109 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014110 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070014111 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014112 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014113 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014114 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014115 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014117 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070014118 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070014120 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070014121 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014122 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070014125 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014126 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
14127 }
14128
Jeff Johnsone7245742012-09-05 17:12:55 -070014129 wpalMemoryCopy( pSendBuffer+usDataOffset,
14130 &halAggrAddTsReq,
14131 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014132
14133 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014134 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014135
14136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014137 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014142}/*WDI_ProcessAggrAddTSpecReq*/
14143#endif /* WLAN_FEATURE_VOWIFI_11R */
14144
14145/**
14146 @brief Process Shutdown Request function (called when Main FSM
14147 allows it)
14148
14149 @param pWDICtx: pointer to the WLAN DAL context
14150 pEventData: pointer to the event information structure
14151
14152 @see
14153 @return Result of the function call
14154*/
14155WDI_Status
14156WDI_ProcessShutdownReq
14157(
14158 WDI_ControlBlockType* pWDICtx,
14159 WDI_EventInfoType* pEventData
14160 )
14161{
14162 wpt_status wptStatus;
14163
14164
14165 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14166
14167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014168 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014169 -------------------------------------------------------------------------*/
14170 if ( NULL == pEventData )
14171 {
14172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014173 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014174 WDI_ASSERT(0);
14175 return WDI_STATUS_E_FAILURE;
14176 }
14177
14178 wpalMutexAcquire(&pWDICtx->wptMutex);
14179
14180
14181 gWDIInitialized = eWLAN_PAL_FALSE;
14182 /*! TO DO: stop the data services */
14183 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14184 {
14185 /*Stop the STA Table !UT- check this logic again
14186 It is safer to do it here than on the response - because a stop is imminent*/
14187 WDI_STATableStop(pWDICtx);
14188
14189 /* Stop Transport Driver, DXE */
14190 WDTS_Stop(pWDICtx);
14191 }
14192
14193 /*Clear all pending request*/
14194 WDI_ClearPendingRequests(pWDICtx);
14195 /* Close Data transport*/
14196 /* FTM mode does not open Data Path */
14197 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
14198 {
14199 WDTS_Close(pWDICtx);
14200 }
14201 /*Close the STA Table !UT- check this logic again*/
14202 WDI_STATableClose(pWDICtx);
14203 /*close the PAL */
14204 wptStatus = wpalClose(pWDICtx->pPALContext);
14205 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14206 {
14207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14208 "Failed to wpal Close %d", wptStatus);
14209 WDI_ASSERT(0);
14210 }
14211
14212 /*Transition back to init state*/
14213 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
14214
14215 wpalMutexRelease(&pWDICtx->wptMutex);
14216
14217 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014218 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014219
14220
Jeff Johnsone7245742012-09-05 17:12:55 -070014221 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014222}/*WDI_ProcessShutdownReq*/
14223
14224/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014225 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070014226========================================================================*/
14227
14228/**
14229 @brief Process Start Response function (called when a response
14230 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014231
14232 @param pWDICtx: pointer to the WLAN DAL context
14233 pEventData: pointer to the event information structure
14234
Jeff Johnson295189b2012-06-20 16:38:30 -070014235 @see
14236 @return Result of the function call
14237*/
14238WDI_Status
14239WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014240(
Jeff Johnson295189b2012-06-20 16:38:30 -070014241 WDI_ControlBlockType* pWDICtx,
14242 WDI_EventInfoType* pEventData
14243)
14244{
14245 WDI_StartRspParamsType wdiRspParams;
14246 WDI_StartRspCb wdiStartRspCb = NULL;
14247
14248 tHalMacStartRspParams* startRspParams;
14249
14250#ifndef HAL_SELF_STA_PER_BSS
14251 WDI_AddStaParams wdiAddSTAParam = {0};
14252#endif
14253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14254
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014257 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014258 -------------------------------------------------------------------------*/
14259 if (( NULL == pEventData ) ||
14260 ( NULL == pEventData->pEventData) ||
14261 ( NULL == wdiStartRspCb ))
14262 {
14263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014264 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014265 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014266 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014267 }
14268
14269 /*-------------------------------------------------------------------------
14270 Extract response and send it to UMAC
14271 -------------------------------------------------------------------------*/
14272 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
14273 {
14274 // not enough data was received
14275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14276 "Invalid response length in Start Resp Expect %x Rcvd %x",
14277 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
14278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014280 }
14281
14282 /*-------------------------------------------------------------------------
14283 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014284 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014285 -------------------------------------------------------------------------*/
14286 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
14287
14288 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
14289 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
14290 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
14291 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
14292 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
14293 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
14294 wdiRspParams.wlanReportedVersion.major =
14295 startRspParams->wcnssWlanVersion.major;
14296 wdiRspParams.wlanReportedVersion.minor =
14297 startRspParams->wcnssWlanVersion.minor;
14298 wdiRspParams.wlanReportedVersion.version =
14299 startRspParams->wcnssWlanVersion.version;
14300 wdiRspParams.wlanReportedVersion.revision =
14301 startRspParams->wcnssWlanVersion.revision;
14302 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
14303 startRspParams->wcnssCrmVersionString,
14304 sizeof(wdiRspParams.wcnssSoftwareVersion));
14305 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
14306 startRspParams->wcnssWlanVersionString,
14307 sizeof(wdiRspParams.wcnssHardwareVersion));
14308 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
14309
Pratik Bhalgatd4404592012-11-22 17:49:14 +053014310 /*Save the HAL Version*/
14311 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
14312
Jeff Johnson295189b2012-06-20 16:38:30 -070014313 wpalMutexAcquire(&pWDICtx->wptMutex);
14314 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
14315 {
14316 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
14317
14318 /*Cache the start response for further use*/
14319 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070014320 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014321 sizeof(pWDICtx->wdiCachedStartRspParams));
14322
14323 }
14324 else
14325 {
14326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14327 "Failed to start device with status %s(%d)",
14328 WDI_getHALStatusMsgString(startRspParams->status),
14329 startRspParams->status);
14330
14331 /*Set the expected state transition to stopped - because the start has
14332 failed*/
14333 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14334
14335 wpalMutexRelease(&pWDICtx->wptMutex);
14336
14337 /*Notify UMAC*/
14338 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070014339
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
14341
14342 /*Although the response is an error - it was processed by our function
14343 so as far as the caller is concerned this is a succesful reponse processing*/
14344 return WDI_STATUS_SUCCESS;
14345 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014346
Jeff Johnson295189b2012-06-20 16:38:30 -070014347 wpalMutexRelease(&pWDICtx->wptMutex);
14348
14349 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
14350 {
14351 /* FTM mode does not need to execute below */
14352 /* Notify UMAC */
14353 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14354 return WDI_STATUS_SUCCESS;
14355 }
14356
14357 /* START the Data transport */
14358 WDTS_startTransport(pWDICtx);
14359
14360 /*Start the STA Table !- check this logic again*/
14361 WDI_STATableStart(pWDICtx);
14362
14363#ifndef HAL_SELF_STA_PER_BSS
14364 /* Store the Self STA Index */
14365 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
14366
14367 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
14368 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
14369 WDI_MAC_ADDR_LEN);
14370
14371 /* At this point add the self-STA */
14372
14373 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
14374 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
14375 /*! TO DO: wdiAddSTAParam.dpuSig */
14376 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
14377 /*! TO DO: wdiAddSTAParam.ucHTCapable */
14378 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
14379
14380 //all DPU indices are the same for self STA
14381 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
14382 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070014383 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
14385 WDI_MAC_ADDR_LEN);
14386 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
14387 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
14388
14389 /* Note: Since we don't get an explicit config STA request for self STA, we
14390 add the self STA upon receiving the Start response message. But the
14391 self STA entry in the table is deleted when WDI gets an explicit delete STA
14392 request */
14393 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
14394#endif
14395
14396 /*Notify UMAC*/
14397 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
14398
Jeff Johnsone7245742012-09-05 17:12:55 -070014399 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014400}/*WDI_ProcessStartRsp*/
14401
14402
14403/**
14404 @brief Process Stop Response function (called when a response
14405 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014406
14407 @param pWDICtx: pointer to the WLAN DAL context
14408 pEventData: pointer to the event information structure
14409
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 @see
14411 @return Result of the function call
14412*/
14413WDI_Status
14414WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014415(
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 WDI_ControlBlockType* pWDICtx,
14417 WDI_EventInfoType* pEventData
14418)
14419{
14420 WDI_Status wdiStatus;
14421 WDI_StopRspCb wdiStopRspCb = NULL;
14422
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14425
Jeff Johnsone7245742012-09-05 17:12:55 -070014426 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070014427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 -------------------------------------------------------------------------*/
14430 if (( NULL == pEventData ) ||
14431 ( NULL == pEventData->pEventData) ||
14432 ( NULL == wdiStopRspCb ))
14433 {
14434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014438 }
14439
14440 /*-------------------------------------------------------------------------
14441 Extract response and send it to UMAC
14442 -------------------------------------------------------------------------*/
14443 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
14444 {
14445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14446 "Invalid response length in Stop Resp %x %x",
14447 pEventData->uEventDataSize);
14448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014450 }
14451
14452 /*-------------------------------------------------------------------------
14453 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014454 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014455 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014456 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
14457 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014458 sizeof(halMacStopRspMsg.stopRspParams));
14459
Jeff Johnsone7245742012-09-05 17:12:55 -070014460 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014461
14462 wpalMutexAcquire(&pWDICtx->wptMutex);
14463
14464 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014465 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 --------------------------------------------------------------------------*/
14467 if ( WDI_STATUS_SUCCESS != wdiStatus )
14468 {
14469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14470 "Failed to stop the device with status %s (%d)",
14471 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
14472 halMacStopRspMsg.stopRspParams.status);
14473
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14475
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014479
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
14481
14482 /*Transition now as WDI may get preempted imediately after it sends
14483 up the Stop Response and it will not get to process the state transition
14484 from Main Rsp function*/
14485 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
14486 wpalMutexRelease(&pWDICtx->wptMutex);
14487
14488 /*! TO DO: - STOP the Data transport */
14489
14490 /*Notify UMAC*/
14491 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14492
Jeff Johnsone7245742012-09-05 17:12:55 -070014493 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014494}/*WDI_ProcessStopRsp*/
14495
14496/**
14497 @brief Process Close Rsp function (called when a response
14498 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014499
14500 @param pWDICtx: pointer to the WLAN DAL context
14501 pEventData: pointer to the event information structure
14502
Jeff Johnson295189b2012-06-20 16:38:30 -070014503 @see
14504 @return Result of the function call
14505*/
14506WDI_Status
14507WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014508(
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 WDI_ControlBlockType* pWDICtx,
14510 WDI_EventInfoType* pEventData
14511)
14512{
14513 /*There is no close response comming from HAL - function just kept for
14514 simmetry */
14515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014516 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014517}/*WDI_ProcessCloseRsp*/
14518
14519
14520/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070014521 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070014522============================================================================*/
14523
14524/**
14525 @brief Process Init Scan Rsp function (called when a response
14526 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014527
14528 @param pWDICtx: pointer to the WLAN DAL context
14529 pEventData: pointer to the event information structure
14530
Jeff Johnson295189b2012-06-20 16:38:30 -070014531 @see
14532 @return Result of the function call
14533*/
14534WDI_Status
14535WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014536(
Jeff Johnson295189b2012-06-20 16:38:30 -070014537 WDI_ControlBlockType* pWDICtx,
14538 WDI_EventInfoType* pEventData
14539)
14540{
14541 WDI_Status wdiStatus;
14542 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014543 tHalInitScanRspMsg halInitScanRspMsg;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014544 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14546
14547 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014548 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014549 -------------------------------------------------------------------------*/
14550 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14551 ( NULL == pEventData->pEventData))
14552 {
14553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014554 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014557 }
14558
14559 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
14560 if( NULL == wdiInitScanRspCb)
14561 {
14562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014563 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014565 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014566 }
14567
14568 /*-------------------------------------------------------------------------
14569 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070014570 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070014571 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014572 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
14573 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014574 sizeof(halInitScanRspMsg.initScanRspParams));
14575
Jeff Johnsone7245742012-09-05 17:12:55 -070014576 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014577
14578 if ( pWDICtx->bInBmps )
14579 {
14580 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080014581 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
14582 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14584 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
14585 WDI_ASSERT(0);
14586 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 }
14588
14589 /*Notify UMAC*/
14590 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14591
Jeff Johnsone7245742012-09-05 17:12:55 -070014592 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014593}/*WDI_ProcessInitScanRsp*/
14594
14595
14596/**
14597 @brief Process Start Scan Rsp function (called when a response
14598 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014599
14600 @param pWDICtx: pointer to the WLAN DAL context
14601 pEventData: pointer to the event information structure
14602
Jeff Johnson295189b2012-06-20 16:38:30 -070014603 @see
14604 @return Result of the function call
14605*/
14606WDI_Status
14607WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014608(
Jeff Johnson295189b2012-06-20 16:38:30 -070014609 WDI_ControlBlockType* pWDICtx,
14610 WDI_EventInfoType* pEventData
14611)
14612{
14613 WDI_StartScanRspParamsType wdiStartScanParams;
14614 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014615
14616 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014617 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14618
14619 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014620 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014621 -------------------------------------------------------------------------*/
14622 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14623 ( NULL == pEventData->pEventData))
14624 {
14625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014626 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014627 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 }
14630
14631 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
14632 if( NULL == wdiStartScanRspCb)
14633 {
14634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014635 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 }
14639
14640 /*-------------------------------------------------------------------------
14641 Extract response and send it to UMAC
14642 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014643 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
14644 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 sizeof(halStartScanRspMsg.startScanRspParams));
14646
14647 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14648 halStartScanRspMsg.startScanRspParams.status);
14649#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014650 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014652 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070014653 halStartScanRspMsg.startScanRspParams.startTSF,
14654 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070014655#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070014656
14657 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
14658 {
14659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14660 "Start scan failed with status %s (%d)",
14661 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
14662 halStartScanRspMsg.startScanRspParams.status);
14663 /* send the status to UMAC, don't return from here*/
14664 }
14665
14666 /*Notify UMAC*/
14667 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
14668
Jeff Johnsone7245742012-09-05 17:12:55 -070014669 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014670
14671}/*WDI_ProcessStartScanRsp*/
14672
14673
14674/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014675 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014677
14678 @param pWDICtx: pointer to the WLAN DAL context
14679 pEventData: pointer to the event information structure
14680
Jeff Johnson295189b2012-06-20 16:38:30 -070014681 @see
14682 @return Result of the function call
14683*/
14684WDI_Status
14685WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014686(
Jeff Johnson295189b2012-06-20 16:38:30 -070014687 WDI_ControlBlockType* pWDICtx,
14688 WDI_EventInfoType* pEventData
14689)
14690{
14691 WDI_Status wdiStatus;
14692 tHalEndScanRspMsg halEndScanRspMsg;
14693 WDI_EndScanRspCb wdiEndScanRspCb;
14694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14695
14696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 -------------------------------------------------------------------------*/
14699 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14700 ( NULL == pEventData->pEventData))
14701 {
14702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014706 }
14707
14708 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
14709
14710 /*-------------------------------------------------------------------------
14711 Extract response and send it to UMAC
14712 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014713 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
14714 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014715 sizeof(halEndScanRspMsg.endScanRspParams));
14716
Jeff Johnsone7245742012-09-05 17:12:55 -070014717 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014718
14719 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
14720 {
14721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14722 "End Scan failed with status %s (%d )",
14723 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
14724 halEndScanRspMsg.endScanRspParams.status);
14725 /* send the status to UMAC, don't return from here*/
14726 }
14727
14728 /*Notify UMAC*/
14729 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14730
Jeff Johnsone7245742012-09-05 17:12:55 -070014731 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014732}/*WDI_ProcessEndScanRsp*/
14733
14734
14735/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014738
14739 @param pWDICtx: pointer to the WLAN DAL context
14740 pEventData: pointer to the event information structure
14741
Jeff Johnson295189b2012-06-20 16:38:30 -070014742 @see
14743 @return Result of the function call
14744*/
14745WDI_Status
14746WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014747(
Jeff Johnson295189b2012-06-20 16:38:30 -070014748 WDI_ControlBlockType* pWDICtx,
14749 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070014750)
Jeff Johnson295189b2012-06-20 16:38:30 -070014751{
14752 WDI_Status wdiStatus;
14753 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014754
14755 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14757
14758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014760 -------------------------------------------------------------------------*/
14761 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
14762 ( NULL == pEventData->pEventData))
14763 {
14764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 }
14769
14770 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
14771
14772 /*-------------------------------------------------------------------------
14773 Extract response and send it to UMAC
14774 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014775 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
14776 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014777 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
14778
Jeff Johnsone7245742012-09-05 17:12:55 -070014779 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014780
14781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070014782 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070014783 halFinishScanRspMsg.finishScanRspParams.status);
14784
14785 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
14786 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
14787 {
14788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14789 "Finish Scan failed with status %s (%d)",
14790 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
14791 halFinishScanRspMsg.finishScanRspParams.status);
14792 /* send the status to UMAC, don't return from here*/
14793 }
14794
14795 /*Notify UMAC*/
14796 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14797
Jeff Johnsone7245742012-09-05 17:12:55 -070014798 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014799}/*WDI_ProcessFinishScanRsp*/
14800
14801/**
14802 @brief Process Join Response function (called when a response
14803 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014804
14805 @param pWDICtx: pointer to the WLAN DAL context
14806 pEventData: pointer to the event information structure
14807
Jeff Johnson295189b2012-06-20 16:38:30 -070014808 @see
14809 @return Result of the function call
14810*/
14811WDI_Status
14812WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014813(
Jeff Johnson295189b2012-06-20 16:38:30 -070014814 WDI_ControlBlockType* pWDICtx,
14815 WDI_EventInfoType* pEventData
14816)
14817{
14818 WDI_Status wdiStatus;
14819 WDI_JoinRspCb wdiJoinRspCb;
14820 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014821
14822 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14824
14825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014826 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 -------------------------------------------------------------------------*/
14828 if (( NULL == pWDICtx ) ||
14829 ( NULL == pWDICtx->pfncRspCB ) ||
14830 ( NULL == pEventData ) ||
14831 ( NULL == pEventData->pEventData))
14832 {
14833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014834 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014836 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014837 }
14838
14839 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
14840
14841 /*-------------------------------------------------------------------------
14842 Extract response and send it to UMAC
14843 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014844 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
14845 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014846 sizeof(halJoinRspMsg.joinRspParams));
14847
Jeff Johnsone7245742012-09-05 17:12:55 -070014848 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070014849
14850 wpalMutexAcquire(&pWDICtx->wptMutex);
14851
14852 /*-----------------------------------------------------------------------
14853 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070014854 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070014855 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014856 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014857 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
14858 {
14859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070014860 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
14861 "association no longer in progress %d - mysterious HAL response",
14862 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070014863
Jeff Johnsone7245742012-09-05 17:12:55 -070014864 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070014865 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014866 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014867 }
14868
14869 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
14870
14871 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014872 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070014873 -----------------------------------------------------------------------*/
14874 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
14875 {
14876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14877 "Join only allowed in Joining state - failure state is %d "
14878 "strange HAL response", pBSSSes->wdiAssocState);
14879
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
14881
Jeff Johnson295189b2012-06-20 16:38:30 -070014882 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014883 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070014884 }
14885
14886
14887 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 -----------------------------------------------------------------------*/
14890 if ( WDI_STATUS_SUCCESS != wdiStatus )
14891 {
14892 /*Association was failed by HAL - remove session*/
14893 WDI_DeleteSession(pWDICtx, pBSSSes);
14894
14895 /*Association no longer in progress */
14896 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
14897
14898 /*Association no longer in progress - prepare pending assoc for processing*/
14899 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070014900
Jeff Johnson295189b2012-06-20 16:38:30 -070014901 }
14902 else
14903 {
14904 /*Transition to state Joining - this may be redundant as we are supposed
14905 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070014907 }
14908
14909 wpalMutexRelease(&pWDICtx->wptMutex);
14910
14911 /*Notify UMAC*/
14912 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
14913
Jeff Johnsone7245742012-09-05 17:12:55 -070014914 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070014915}/*WDI_ProcessJoinRsp*/
14916
14917
14918/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014919 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070014921
14922 @param pWDICtx: pointer to the WLAN DAL context
14923 pEventData: pointer to the event information structure
14924
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 @see
14926 @return Result of the function call
14927*/
14928WDI_Status
14929WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070014930(
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 WDI_ControlBlockType* pWDICtx,
14932 WDI_EventInfoType* pEventData
14933)
14934{
14935 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
14936 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014937 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 WDI_BSSSessionType* pBSSSes = NULL;
14939
Jeff Johnsone7245742012-09-05 17:12:55 -070014940 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070014941 WDI_AddStaParams wdiBcastAddSTAParam = {0};
14942 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070014943
Jeff Johnson295189b2012-06-20 16:38:30 -070014944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14945
14946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014948 -------------------------------------------------------------------------*/
14949 if (( NULL == pEventData ) ||
14950 ( NULL == pEventData->pEventData))
14951 {
14952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014953 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014954 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014955 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014956 }
14957
14958 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
14959
14960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014961 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070014962 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014963 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
14964 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070014965 sizeof(halConfigBssRspMsg.configBssRspParams));
14966
14967 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
14968 halConfigBssRspMsg.configBssRspParams.status);
14969 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
14970 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070014972 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
14973 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014974
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014976
14977 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014978 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014979
14980 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070014981 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070014982
Jeff Johnson295189b2012-06-20 16:38:30 -070014983 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070014984
Jeff Johnson295189b2012-06-20 16:38:30 -070014985 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070014986 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070014987 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
14988 #endif
14989 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
14990 halConfigBssRspMsg.configBssRspParams.staMac,
14991 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070014992
Jeff Johnson295189b2012-06-20 16:38:30 -070014993 wpalMutexAcquire(&pWDICtx->wptMutex);
14994 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014995 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070014996 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014997 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
14998 wdiConfigBSSParams.macBSSID,
14999 &pBSSSes);
15000
Jeff Johnson295189b2012-06-20 16:38:30 -070015001 /*-----------------------------------------------------------------------
15002 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015003 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015004 -----------------------------------------------------------------------*/
15005 if ( NULL == pBSSSes )
15006 {
15007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15008 "Association sequence for this BSS does not yet exist "
15009 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070015010
15011 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15012
Jeff Johnson295189b2012-06-20 16:38:30 -070015013 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015014 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015015 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015016
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 /*Save data for this BSS*/
15018 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
15019 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015020 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015021 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015022 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015023 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015024 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015025 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015028 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
15030 pBSSSes->bcastStaIdx =
15031 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015032
Jeff Johnson295189b2012-06-20 16:38:30 -070015033 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070015034
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 /*-------------------------------------------------------------------------
15036 Add Peer STA
15037 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015038 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015039 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
15040 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015041
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015043 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015044 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015045 wdiAddSTAParam.ucHTCapable =
15046 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
15047 wdiAddSTAParam.ucStaType =
15048 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
15049
Jeff Johnson295189b2012-06-20 16:38:30 -070015050 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070015051 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
15052 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070015053 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070015054
15055 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
15056 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
15057 WDI_MAC_ADDR_LEN);
15058
Jeff Johnson295189b2012-06-20 16:38:30 -070015059 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015060 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015061 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015062 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015064 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015066 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015070 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015072
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15074 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015075
Jeff Johnson295189b2012-06-20 16:38:30 -070015076 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
15077 /*-------------------------------------------------------------------------
15078 Add Broadcast STA only in AP mode
15079 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015080 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 WDI_BSS_OPERATIONAL_MODE_AP )
15082 {
15083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15084 "Add BCAST STA to table for index: %d",
15085 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070015086
15087 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070015088 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070015089
Jeff Johnson295189b2012-06-20 16:38:30 -070015090 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
15091 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
15092 }
15093 wpalMutexRelease(&pWDICtx->wptMutex);
15094 }
15095 else
15096 {
15097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15098 "Config BSS RSP failed with status : %s(%d)",
15099 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070015100 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070015101 halConfigBssRspMsg.configBssRspParams.status);
15102
Jeff Johnsone7245742012-09-05 17:12:55 -070015103
Jeff Johnson295189b2012-06-20 16:38:30 -070015104 /*Association was failed by HAL - remove session*/
15105 WDI_DeleteSession(pWDICtx, pBSSSes);
15106
15107 /*Association no longer in progress */
15108 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15109
15110 /*Association no longer in progress - prepare pending assoc for processing*/
15111 WDI_DequeueAssocRequest(pWDICtx);
15112
15113 }
15114
15115 /*Notify UMAC*/
15116 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
15117
Jeff Johnsone7245742012-09-05 17:12:55 -070015118 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015119}/*WDI_ProcessConfigBSSRsp*/
15120
15121
15122/**
15123 @brief Process Del BSS Response function (called when a response
15124 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015125
15126 @param pWDICtx: pointer to the WLAN DAL context
15127 pEventData: pointer to the event information structure
15128
Jeff Johnson295189b2012-06-20 16:38:30 -070015129 @see
15130 @return Result of the function call
15131*/
15132WDI_Status
15133WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015134(
Jeff Johnson295189b2012-06-20 16:38:30 -070015135 WDI_ControlBlockType* pWDICtx,
15136 WDI_EventInfoType* pEventData
15137)
15138{
15139 WDI_DelBSSRspParamsType wdiDelBSSParams;
15140 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015141 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015142 WDI_BSSSessionType* pBSSSes = NULL;
15143
Jeff Johnsone7245742012-09-05 17:12:55 -070015144 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15146
15147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015149 -------------------------------------------------------------------------*/
15150 if (( NULL == pEventData ) ||
15151 ( NULL == pEventData->pEventData))
15152 {
15153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015154 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015157 }
15158
15159 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
15160
15161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015162 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015164 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
15165 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015166 sizeof(halDelBssRspMsg.deleteBssRspParams));
15167
15168
15169 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070015170 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015171
15172 wpalMutexAcquire(&pWDICtx->wptMutex);
15173
15174 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015175 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015177 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
15178 halDelBssRspMsg.deleteBssRspParams.bssIdx,
15179 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015180
15181 /*-----------------------------------------------------------------------
15182 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015183 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015184 -----------------------------------------------------------------------*/
15185 if ( NULL == pBSSSes )
15186 {
15187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15188 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015189 "association no longer in progress - mysterious HAL response");
15190
15191 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15192
15193 wpalMutexRelease(&pWDICtx->wptMutex);
15194 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015196
15197 /*Extract BSSID for the response to UMAC*/
15198 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
15199 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
15200
15201 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
15202
15203 /*-----------------------------------------------------------------------
15204 The current session will be deleted
15205 -----------------------------------------------------------------------*/
15206 WDI_DeleteSession(pWDICtx, pBSSSes);
15207
15208
15209 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
15210 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType)
Jeff Johnson295189b2012-06-20 16:38:30 -070015211 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015212 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070015213 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080015214
15215 /* Delete the STA's in this BSS */
15216 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
15217
Jeff Johnson295189b2012-06-20 16:38:30 -070015218 wpalMutexRelease(&pWDICtx->wptMutex);
15219
15220 /*Notify UMAC*/
15221 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
15222
Jeff Johnsone7245742012-09-05 17:12:55 -070015223 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015224}/*WDI_ProcessDelBSSRsp*/
15225
15226/**
15227 @brief Process Post Assoc Rsp function (called when a response
15228 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015229
15230 @param pWDICtx: pointer to the WLAN DAL context
15231 pEventData: pointer to the event information structure
15232
Jeff Johnson295189b2012-06-20 16:38:30 -070015233 @see
15234 @return Result of the function call
15235*/
15236WDI_Status
15237WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015238(
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 WDI_ControlBlockType* pWDICtx,
15240 WDI_EventInfoType* pEventData
15241)
15242{
15243 WDI_PostAssocRspParamsType wdiPostAssocParams;
15244 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070015245 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070015246 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015247 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015248 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15249
15250 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 -------------------------------------------------------------------------*/
15253 if (( NULL == pEventData ) ||
15254 ( NULL == pEventData->pEventData))
15255 {
15256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015257 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015260 }
15261
15262 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
15263
15264 /*-------------------------------------------------------------------------
15265 Extract response and send it to UMAC
15266 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015267 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
15268 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 sizeof(halPostAssocRspMsg.postAssocRspParams));
15270
15271 /*Extract the Post Assoc STA Params */
15272
Jeff Johnsone7245742012-09-05 17:12:55 -070015273 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015274 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015275 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015276 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15279
Jeff Johnsone7245742012-09-05 17:12:55 -070015280 wdiPostAssocParams.wdiStatus =
15281 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015282
15283 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15284 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
15286 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015287 WDI_MAC_ADDR_LEN);
15288
15289 /* Extract Post Assoc BSS Params */
15290
Jeff Johnsone7245742012-09-05 17:12:55 -070015291 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
15292 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
15293 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015294
15295 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
15296 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070015297 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
15299 .macSTA, WDI_MAC_ADDR_LEN);
15300
Jeff Johnsone7245742012-09-05 17:12:55 -070015301 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015302 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
15303
Jeff Johnsone7245742012-09-05 17:12:55 -070015304 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070015305 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
15306
15307 wdiPostAssocParams.bssParams.ucBSSIdx =
15308 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15309
Jeff Johnsone7245742012-09-05 17:12:55 -070015310 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015311 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
15312
15313 wpalMutexAcquire(&pWDICtx->wptMutex);
15314
15315 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015316 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070015317 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015318 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070015320 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070015321
15322 /*-----------------------------------------------------------------------
15323 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070015324 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070015325 -----------------------------------------------------------------------*/
15326 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070015327 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015328 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
15329 {
15330 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15331 "Association sequence for this BSS does not yet exist or "
15332 "association no longer in progress - mysterious HAL response");
15333
Jeff Johnsone7245742012-09-05 17:12:55 -070015334 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15335
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015338 }
15339
15340 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015341 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070015342 -----------------------------------------------------------------------*/
15343 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
15344 {
15345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15346 "Post Assoc not allowed before JOIN - failing request "
15347 "strange HAL response");
15348
Jeff Johnsone7245742012-09-05 17:12:55 -070015349 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
15350
Jeff Johnson295189b2012-06-20 16:38:30 -070015351 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070015352 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070015353 }
15354
15355 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015356 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070015357 -----------------------------------------------------------------------*/
15358 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
15359 {
15360 /*Association was failed by HAL - remove session*/
15361 WDI_DeleteSession(pWDICtx, pBSSSes);
15362 }
15363 else
15364 {
15365 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015366 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070015367
15368 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015369 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015371 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015372 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015375 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070015376 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
15377
Jeff Johnsone7245742012-09-05 17:12:55 -070015378 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070015379 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
15380 }
15381
15382 /*Association no longer in progress */
15383 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
15384
15385 /*Association no longer in progress - prepare pending assoc for processing*/
15386 WDI_DequeueAssocRequest(pWDICtx);
15387
15388 wpalMutexRelease(&pWDICtx->wptMutex);
15389
15390 /*Notify UMAC*/
15391 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
15392
Jeff Johnsone7245742012-09-05 17:12:55 -070015393 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015394}/*WDI_ProcessPostAssocRsp*/
15395
15396/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015397 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070015398 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015399
15400 @param pWDICtx: pointer to the WLAN DAL context
15401 pEventData: pointer to the event information structure
15402
Jeff Johnson295189b2012-06-20 16:38:30 -070015403 @see
15404 @return Result of the function call
15405*/
15406WDI_Status
15407WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015408(
Jeff Johnson295189b2012-06-20 16:38:30 -070015409 WDI_ControlBlockType* pWDICtx,
15410 WDI_EventInfoType* pEventData
15411)
15412{
15413 WDI_DelSTARspParamsType wdiDelSTARsp;
15414 WDI_DelSTARspCb wdiDelSTARspCb;
15415 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070015416 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070015417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15418
15419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015421 -------------------------------------------------------------------------*/
15422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15423 ( NULL == pEventData->pEventData))
15424 {
15425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015429 }
15430
15431 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
15432
15433 /*-------------------------------------------------------------------------
15434 Extract response and send it to UMAC
15435 -------------------------------------------------------------------------*/
15436 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070015437 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015438 sizeof(halDelStaRspMsg.delStaRspParams));
15439
15440 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015441 wdiDelSTARsp.wdiStatus =
15442 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070015443
15444 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
15445
15446 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
15447 if(staType == WDI_STA_ENTRY_SELF)
15448 {
15449 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
15450
15451 /* At this point add the self-STA */
15452
15453 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
15454 /*! TO DO: wdiAddSTAParam.ucHTCapable */
15455 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
15456
15457#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
15458#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
15459
15460 //all DPU indices are the same for self STA
15461 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15462 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15463 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
15464 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15465 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
15466 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070015467
15468 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070015469 }
15470 else
15471 {
15472 //Delete the station in the table
15473 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
15474 }
15475
15476 /*Notify UMAC*/
15477 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
15478
Jeff Johnsone7245742012-09-05 17:12:55 -070015479 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015480}/*WDI_ProcessDelSTARsp*/
15481
15482
15483/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015484 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015485==========================================================================*/
15486
15487/**
15488 @brief Process Set BSS Key Rsp function (called when a response
15489 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015490
15491 @param pWDICtx: pointer to the WLAN DAL context
15492 pEventData: pointer to the event information structure
15493
Jeff Johnson295189b2012-06-20 16:38:30 -070015494 @see
15495 @return Result of the function call
15496*/
15497WDI_Status
15498WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015499(
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 WDI_ControlBlockType* pWDICtx,
15501 WDI_EventInfoType* pEventData
15502)
15503{
15504 WDI_Status wdiStatus;
15505 eHalStatus halStatus;
15506 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
15507 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15508
15509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 -------------------------------------------------------------------------*/
15512 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15513 ( NULL == pEventData->pEventData))
15514 {
15515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015516 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015517 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015518 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 }
15520
15521 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
15522
15523 /*-------------------------------------------------------------------------
15524 Extract response and send it to UMAC
15525 -------------------------------------------------------------------------*/
15526 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015527 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015528
15529 if ( eHAL_STATUS_SUCCESS != halStatus )
15530 {
15531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15532 "Set BSS Key failed with status %s (%d)",
15533 WDI_getHALStatusMsgString(halStatus),
15534 halStatus);
15535 /* send the status to UMAC, don't return from here*/
15536 }
15537
15538 /*Notify UMAC*/
15539 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15540
Jeff Johnsone7245742012-09-05 17:12:55 -070015541 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015542}/*WDI_ProcessSetBssKeyRsp*/
15543
15544/**
15545 @brief Process Remove BSS Key Rsp function (called when a response
15546 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015547
15548 @param pWDICtx: pointer to the WLAN DAL context
15549 pEventData: pointer to the event information structure
15550
Jeff Johnson295189b2012-06-20 16:38:30 -070015551 @see
15552 @return Result of the function call
15553*/
15554WDI_Status
15555WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015556(
Jeff Johnson295189b2012-06-20 16:38:30 -070015557 WDI_ControlBlockType* pWDICtx,
15558 WDI_EventInfoType* pEventData
15559)
15560{
15561 WDI_Status wdiStatus;
15562 eHalStatus halStatus;
15563 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
15564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15565
15566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015567 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015568 -------------------------------------------------------------------------*/
15569 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15570 ( NULL == pEventData->pEventData))
15571 {
15572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015576 }
15577
15578 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
15579
15580 /*-------------------------------------------------------------------------
15581 Extract response and send it to UMAC
15582 -------------------------------------------------------------------------*/
15583 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015584 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015585
15586 if ( eHAL_STATUS_SUCCESS != halStatus )
15587 {
15588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15589 "Remove BSS Key failed with status %s (%d )",
15590 WDI_getHALStatusMsgString(halStatus),
15591 halStatus);
15592 /* send the status to UMAC, don't return from here*/
15593 }
15594
15595 /*Notify UMAC*/
15596 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15597
Jeff Johnsone7245742012-09-05 17:12:55 -070015598 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015599}/*WDI_ProcessSetBssKeyRsp*/
15600
15601
15602/**
15603 @brief Process Set STA Key Rsp function (called when a response
15604 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015605
15606 @param pWDICtx: pointer to the WLAN DAL context
15607 pEventData: pointer to the event information structure
15608
Jeff Johnson295189b2012-06-20 16:38:30 -070015609 @see
15610 @return Result of the function call
15611*/
15612WDI_Status
15613WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015614(
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 WDI_ControlBlockType* pWDICtx,
15616 WDI_EventInfoType* pEventData
15617)
15618{
15619 WDI_Status wdiStatus;
15620 eHalStatus halStatus;
15621 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
15622 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15623
15624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015626 -------------------------------------------------------------------------*/
15627 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15628 ( NULL == pEventData->pEventData))
15629 {
15630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015631 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015632 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015633 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 }
15635
15636 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15637
15638 /*-------------------------------------------------------------------------
15639 Extract response and send it to UMAC
15640 -------------------------------------------------------------------------*/
15641 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015643
15644 if ( eHAL_STATUS_SUCCESS != halStatus )
15645 {
15646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15647 "Set STA Key failed with status %s (%d)",
15648 WDI_getHALStatusMsgString(halStatus),
15649 halStatus);
15650 /* send the status to UMAC, don't return from here*/
15651 }
15652
15653 /*Notify UMAC*/
15654 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15655
Jeff Johnsone7245742012-09-05 17:12:55 -070015656 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015657}/*WDI_ProcessSetSTAKeyRsp*/
15658
15659/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015660 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015661 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015662
15663 @param pWDICtx: pointer to the WLAN DAL context
15664 pEventData: pointer to the event information structure
15665
Jeff Johnson295189b2012-06-20 16:38:30 -070015666 @see
15667 @return Result of the function call
15668*/
15669WDI_Status
15670WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015671(
Jeff Johnson295189b2012-06-20 16:38:30 -070015672 WDI_ControlBlockType* pWDICtx,
15673 WDI_EventInfoType* pEventData
15674)
15675{
15676 WDI_Status wdiStatus;
15677 eHalStatus halStatus;
15678 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
15679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15680
15681 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015682 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015683 -------------------------------------------------------------------------*/
15684 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15685 ( NULL == pEventData->pEventData))
15686 {
15687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015688 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015690 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015691 }
15692
15693 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15694
15695 /*-------------------------------------------------------------------------
15696 Extract response and send it to UMAC
15697 -------------------------------------------------------------------------*/
15698 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015699 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015700
15701 if ( eHAL_STATUS_SUCCESS != halStatus )
15702 {
15703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15704 "Remove STA Key failed with status %s (%d)",
15705 WDI_getHALStatusMsgString(halStatus),
15706 halStatus);
15707 /* send the status to UMAC, don't return from here*/
15708 }
15709
15710 /*Notify UMAC*/
15711 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15712
Jeff Johnsone7245742012-09-05 17:12:55 -070015713 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015714}/*WDI_ProcessRemoveStaKeyRsp*/
15715
15716/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015717 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015719
15720 @param pWDICtx: pointer to the WLAN DAL context
15721 pEventData: pointer to the event information structure
15722
Jeff Johnson295189b2012-06-20 16:38:30 -070015723 @see
15724 @return Result of the function call
15725*/
15726WDI_Status
15727WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015728(
Jeff Johnson295189b2012-06-20 16:38:30 -070015729 WDI_ControlBlockType* pWDICtx,
15730 WDI_EventInfoType* pEventData
15731)
15732{
15733 WDI_Status wdiStatus;
15734 eHalStatus halStatus;
15735 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
15736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15737
15738 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 -------------------------------------------------------------------------*/
15741 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15742 ( NULL == pEventData->pEventData))
15743 {
15744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015745 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015748 }
15749
15750 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
15751
15752 /*-------------------------------------------------------------------------
15753 Extract response and send it to UMAC
15754 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015755 wpalMemoryCopy( &halStatus,
15756 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015757 sizeof(halStatus));
15758
Jeff Johnsone7245742012-09-05 17:12:55 -070015759 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015760
15761 if ( eHAL_STATUS_SUCCESS != halStatus )
15762 {
15763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15764 "Set STA Key failed with status %s (%d)",
15765 WDI_getHALStatusMsgString(halStatus),
15766 halStatus);
15767 /* send the status to UMAC, don't return from here*/
15768 }
15769
15770 /*Notify UMAC*/
15771 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15772
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015774}/*WDI_ProcessSetSTABcastKeyRsp*/
15775
15776/**
15777 @brief Process Remove STA Bcast Key Rsp function (called when a
15778 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015779
15780 @param pWDICtx: pointer to the WLAN DAL context
15781 pEventData: pointer to the event information structure
15782
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 @see
15784 @return Result of the function call
15785*/
15786WDI_Status
15787WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015788(
Jeff Johnson295189b2012-06-20 16:38:30 -070015789 WDI_ControlBlockType* pWDICtx,
15790 WDI_EventInfoType* pEventData
15791)
15792{
15793 WDI_Status wdiStatus;
15794 eHalStatus halStatus;
15795 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
15796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15797
15798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 -------------------------------------------------------------------------*/
15801 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15802 ( NULL == pEventData->pEventData))
15803 {
15804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015805 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 }
15809
15810 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
15811
15812 /*-------------------------------------------------------------------------
15813 Extract response and send it to UMAC
15814 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015815 wpalMemoryCopy( &halStatus,
15816 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 sizeof(halStatus));
15818
Jeff Johnsone7245742012-09-05 17:12:55 -070015819 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015820
15821 if ( eHAL_STATUS_SUCCESS != halStatus )
15822 {
15823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15824 "Remove STA Key failed with status %s (%d)",
15825 WDI_getHALStatusMsgString(halStatus),
15826 halStatus);
15827 /* send the status to UMAC, don't return from here*/
15828 }
15829
15830 /*Notify UMAC*/
15831 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15832
Jeff Johnsone7245742012-09-05 17:12:55 -070015833 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015834}/*WDI_ProcessRemoveStaBcastKeyRsp*/
15835
15836
15837/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070015838 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070015839==========================================================================*/
15840
15841/**
15842 @brief Process Add TSpec Rsp function (called when a response
15843 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015844
15845 @param pWDICtx: pointer to the WLAN DAL context
15846 pEventData: pointer to the event information structure
15847
Jeff Johnson295189b2012-06-20 16:38:30 -070015848 @see
15849 @return Result of the function call
15850*/
15851WDI_Status
15852WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015853(
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 WDI_ControlBlockType* pWDICtx,
15855 WDI_EventInfoType* pEventData
15856)
15857{
15858 WDI_Status wdiStatus;
15859 eHalStatus halStatus;
15860 WDI_AddTsRspCb wdiAddTsRspCb;
15861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15862
15863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 -------------------------------------------------------------------------*/
15866 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15867 ( NULL == pEventData->pEventData))
15868 {
15869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015873 }
15874
15875 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
15876
15877 /*-------------------------------------------------------------------------
15878 Extract response and send it to UMAC
15879 -------------------------------------------------------------------------*/
15880 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015881 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015882
15883 /*Notify UMAC*/
15884 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15885
Jeff Johnsone7245742012-09-05 17:12:55 -070015886 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015887}/*WDI_ProcessAddTSpecRsp*/
15888
15889
15890/**
15891 @brief Process Del TSpec Rsp function (called when a response
15892 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015893
15894 @param pWDICtx: pointer to the WLAN DAL context
15895 pEventData: pointer to the event information structure
15896
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 @see
15898 @return Result of the function call
15899*/
15900WDI_Status
15901WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015902(
Jeff Johnson295189b2012-06-20 16:38:30 -070015903 WDI_ControlBlockType* pWDICtx,
15904 WDI_EventInfoType* pEventData
15905)
15906{
15907 WDI_Status wdiStatus;
15908 eHalStatus halStatus;
15909 WDI_DelTsRspCb wdiDelTsRspCb;
15910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15911
15912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015913 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015914 -------------------------------------------------------------------------*/
15915 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15916 ( NULL == pEventData->pEventData))
15917 {
15918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015919 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 }
15923
15924 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
15925
15926 /*-------------------------------------------------------------------------
15927 Extract response and send it to UMAC
15928 -------------------------------------------------------------------------*/
15929 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015930 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015931
15932 /*Notify UMAC*/
15933 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15934
Jeff Johnsone7245742012-09-05 17:12:55 -070015935 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015936}/*WDI_ProcessDelTSpecRsp*/
15937
15938/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015939 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070015940 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015941
15942 @param pWDICtx: pointer to the WLAN DAL context
15943 pEventData: pointer to the event information structure
15944
Jeff Johnson295189b2012-06-20 16:38:30 -070015945 @see
15946 @return Result of the function call
15947*/
15948WDI_Status
15949WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015950(
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 WDI_ControlBlockType* pWDICtx,
15952 WDI_EventInfoType* pEventData
15953)
15954{
15955 WDI_Status wdiStatus;
15956 eHalStatus halStatus;
15957 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
15958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15959
15960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015962 -------------------------------------------------------------------------*/
15963 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
15964 ( NULL == pEventData->pEventData))
15965 {
15966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015967 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015968 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015969 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015970 }
15971
15972 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
15973
15974 /*-------------------------------------------------------------------------
15975 Extract response and send it to UMAC
15976 -------------------------------------------------------------------------*/
15977 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070015978 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070015979
15980 /*Notify UMAC*/
15981 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
15982
Jeff Johnsone7245742012-09-05 17:12:55 -070015983 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070015984}/*WDI_ProcessUpdateEDCAParamsRsp*/
15985
15986
15987/**
15988 @brief Process Add BA Rsp function (called when a response
15989 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070015990
15991 @param pWDICtx: pointer to the WLAN DAL context
15992 pEventData: pointer to the event information structure
15993
Jeff Johnson295189b2012-06-20 16:38:30 -070015994 @see
15995 @return Result of the function call
15996*/
15997WDI_Status
15998WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070015999(
Jeff Johnson295189b2012-06-20 16:38:30 -070016000 WDI_ControlBlockType* pWDICtx,
16001 WDI_EventInfoType* pEventData
16002)
16003{
16004 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
16005
16006 tAddBASessionRspParams halBASessionRsp;
16007 WDI_AddBASessionRspParamsType wdiBASessionRsp;
16008
Jeff Johnsone7245742012-09-05 17:12:55 -070016009
Jeff Johnson295189b2012-06-20 16:38:30 -070016010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16011
16012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 -------------------------------------------------------------------------*/
16015 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16016 ( NULL == pEventData->pEventData))
16017 {
16018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016022 }
16023
16024 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
16025
16026 /*-------------------------------------------------------------------------
16027 Extract response and send it to UMAC
16028 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 wpalMemoryCopy( &halBASessionRsp,
16030 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016031 sizeof(halBASessionRsp));
16032
16033 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
16034
Jeff Johnson43971f52012-07-17 12:26:56 -070016035 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070016036 {
16037 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
16038 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
16039 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
16040 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
16041 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
16042 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
16043 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
16044 }
16045
16046 /*Notify UMAC*/
16047 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
16048
Jeff Johnsone7245742012-09-05 17:12:55 -070016049 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016050}/*WDI_ProcessAddSessionBARsp*/
16051
16052
16053/**
16054 @brief Process Del BA Rsp function (called when a response
16055 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016056
16057 @param pWDICtx: pointer to the WLAN DAL context
16058 pEventData: pointer to the event information structure
16059
Jeff Johnson295189b2012-06-20 16:38:30 -070016060 @see
16061 @return Result of the function call
16062*/
16063WDI_Status
16064WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016065(
Jeff Johnson295189b2012-06-20 16:38:30 -070016066 WDI_ControlBlockType* pWDICtx,
16067 WDI_EventInfoType* pEventData
16068)
16069{
16070 WDI_Status wdiStatus;
16071 eHalStatus halStatus;
16072 WDI_DelBARspCb wdiDelBARspCb;
16073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16074
16075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 -------------------------------------------------------------------------*/
16078 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16079 ( NULL == pEventData->pEventData))
16080 {
16081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016085 }
16086
16087 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
16088
16089 /*-------------------------------------------------------------------------
16090 Extract response and send it to UMAC
16091 -------------------------------------------------------------------------*/
16092 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016093 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016094
16095 if ( eHAL_STATUS_SUCCESS == halStatus )
16096 {
16097 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
16098 }
16099
16100 /*Notify UMAC*/
16101 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
16102
Jeff Johnsone7245742012-09-05 17:12:55 -070016103 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016104}/*WDI_ProcessDelBARsp*/
16105
16106#ifdef FEATURE_WLAN_CCX
16107/**
16108 @brief Process TSM Stats Rsp function (called when a response
16109 is being received over the bus from HAL)
16110
16111 @param pWDICtx: pointer to the WLAN DAL context
16112 pEventData: pointer to the event information structure
16113
16114 @see
16115 @return Result of the function call
16116*/
16117WDI_Status
16118WDI_ProcessTsmStatsRsp
16119(
16120 WDI_ControlBlockType* pWDICtx,
16121 WDI_EventInfoType* pEventData
16122)
16123{
16124 WDI_TsmRspCb wdiTsmStatsRspCb;
16125 tTsmStatsRspMsg halTsmStatsRspMsg;
16126 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
16127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16128
16129 /*-------------------------------------------------------------------------
16130 Sanity check
16131 -------------------------------------------------------------------------*/
16132 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16133 ( NULL == pEventData->pEventData))
16134 {
16135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016136 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016137 WDI_ASSERT(0);
16138 return WDI_STATUS_E_FAILURE;
16139 }
16140
16141 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
16142
16143 /*-------------------------------------------------------------------------
16144 Unpack HAL Response Message - the header was already extracted by the
16145 main Response Handling procedure
16146 -------------------------------------------------------------------------*/
16147 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
16148 pEventData->pEventData,
16149 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
16150
16151 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
16152 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
16153 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
16154 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
16155 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
16156 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
16157 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
16158 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
16159 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
16160 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
16161 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16162 halTsmStatsRspMsg.tsmStatsRspParams.status);
16163
16164 /*Notify UMAC*/
16165 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
16166
16167 return WDI_STATUS_SUCCESS;
16168}/*WDI_ProcessTsmStatsRsp*/
16169
16170#endif
16171
16172
16173
16174/**
16175 @brief Process Flush AC Rsp function (called when a response
16176 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016177
16178 @param pWDICtx: pointer to the WLAN DAL context
16179 pEventData: pointer to the event information structure
16180
Jeff Johnson295189b2012-06-20 16:38:30 -070016181 @see
16182 @return Result of the function call
16183*/
16184WDI_Status
16185WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016186(
Jeff Johnson295189b2012-06-20 16:38:30 -070016187 WDI_ControlBlockType* pWDICtx,
16188 WDI_EventInfoType* pEventData
16189)
16190{
16191 WDI_Status wdiStatus;
16192 eHalStatus halStatus;
16193 WDI_FlushAcRspCb wdiFlushAcRspCb;
16194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16195
16196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 -------------------------------------------------------------------------*/
16199 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16200 ( NULL == pEventData->pEventData))
16201 {
16202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016203 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016206 }
16207
16208 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
16209
16210 /*-------------------------------------------------------------------------
16211 Extract response and send it to UMAC
16212 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016213 wpalMemoryCopy( &halStatus,
16214 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016215 sizeof(halStatus));
16216
Jeff Johnsone7245742012-09-05 17:12:55 -070016217 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016218
16219 /*Notify UMAC*/
16220 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16221
Jeff Johnsone7245742012-09-05 17:12:55 -070016222 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016223}/*WDI_ProcessFlushAcRsp*/
16224
16225/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016226 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016227 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016228
16229 @param pWDICtx: pointer to the WLAN DAL context
16230 pEventData: pointer to the event information structure
16231
Jeff Johnson295189b2012-06-20 16:38:30 -070016232 @see
16233 @return Result of the function call
16234*/
16235WDI_Status
16236WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016237(
Jeff Johnson295189b2012-06-20 16:38:30 -070016238 WDI_ControlBlockType* pWDICtx,
16239 WDI_EventInfoType* pEventData
16240)
16241{
16242 WDI_Status wdiStatus;
16243 eHalStatus halStatus;
16244 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
16245 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16246
16247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016248 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 -------------------------------------------------------------------------*/
16250 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16251 ( NULL == pEventData->pEventData))
16252 {
16253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016254 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016255 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 }
16258
16259 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
16260
16261 /*-------------------------------------------------------------------------
16262 Extract response and send it to UMAC
16263 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 wpalMemoryCopy( &halStatus,
16265 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 sizeof(halStatus));
16267
Jeff Johnsone7245742012-09-05 17:12:55 -070016268 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016269
16270 /*Notify UMAC*/
16271 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16272
Jeff Johnsone7245742012-09-05 17:12:55 -070016273 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016274}/*WDI_ProcessBtAmpEventRsp*/
16275
16276
16277/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016278 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016279 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016280
16281 @param pWDICtx: pointer to the WLAN DAL context
16282 pEventData: pointer to the event information structure
16283
Jeff Johnson295189b2012-06-20 16:38:30 -070016284 @see
16285 @return Result of the function call
16286*/
16287WDI_Status
16288WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016289(
Jeff Johnson295189b2012-06-20 16:38:30 -070016290 WDI_ControlBlockType* pWDICtx,
16291 WDI_EventInfoType* pEventData
16292)
16293{
16294 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
16295 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
16296 tAddStaSelfRspMsg halAddStaSelfRsp;
16297 WDI_AddStaParams wdiAddSTAParam = {0};
16298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16299
16300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 -------------------------------------------------------------------------*/
16303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16304 ( NULL == pEventData->pEventData))
16305 {
16306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016310 }
16311
Jeff Johnsone7245742012-09-05 17:12:55 -070016312 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016313 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
16314
16315 /*-------------------------------------------------------------------------
16316 Extract response and send it to UMAC
16317 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016318 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
16319 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016320 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
16321
16322
Jeff Johnsone7245742012-09-05 17:12:55 -070016323 wdiAddSTASelfParams.wdiStatus =
16324 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016325
Jeff Johnsone7245742012-09-05 17:12:55 -070016326 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016327 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016328 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016329 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016330 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016331 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
16332
16333 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
16334 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
16335 WDI_MAC_ADDR_LEN);
16336
16337
16338#ifdef HAL_SELF_STA_PER_BSS
16339
16340 /* At this point add the self-STA */
16341
16342 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16343 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16344 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16345
16346 //all DPU indices are the same for self STA
16347
16348 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016349 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016350 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
16351 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
16352 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
16353 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
16354 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
16355
16356 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
16357 WDI_MAC_ADDR_LEN);
16358
16359 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16360 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
16361
Jeff Johnsone7245742012-09-05 17:12:55 -070016362 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070016363 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
16364 {
16365 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16366 }
16367#endif
16368
16369 /*Notify UMAC*/
16370 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
16371
Jeff Johnsone7245742012-09-05 17:12:55 -070016372 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016373}/*WDI_ProcessAddSTASelfRsp*/
16374
16375
16376
16377/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016378 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016379 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016380
16381 @param pWDICtx: pointer to the WLAN DAL context
16382 pEventData: pointer to the event information structure
16383
Jeff Johnson295189b2012-06-20 16:38:30 -070016384 @see
16385 @return Result of the function call
16386*/
16387WDI_Status
16388WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016389(
Jeff Johnson295189b2012-06-20 16:38:30 -070016390 WDI_ControlBlockType* pWDICtx,
16391 WDI_EventInfoType* pEventData
16392)
16393{
16394 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
16395 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
16396 tDelStaSelfRspParams delStaSelfRspParams;
16397 wpt_uint8 ucStaIdx;
16398
16399 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16400
16401 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016402 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 -------------------------------------------------------------------------*/
16404 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16405 ( NULL == pEventData->pEventData))
16406 {
16407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016408 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016410 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016411 }
16412
16413 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
16414
16415 /*-------------------------------------------------------------------------
16416 Extract response and send it to UMAC
16417 -------------------------------------------------------------------------*/
16418
Jeff Johnsone7245742012-09-05 17:12:55 -070016419 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016420 (wpt_uint8*)pEventData->pEventData,
16421 sizeof(tDelStaSelfRspParams));
16422
Jeff Johnsone7245742012-09-05 17:12:55 -070016423 wdiDelStaSelfRspParams.wdiStatus =
16424 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016425
Jeff Johnsone7245742012-09-05 17:12:55 -070016426 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070016427 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
16428 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
16429 {
16430 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070016431 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016432 delStaSelfRspParams.selfMacAddr,
16433 &ucStaIdx);
16434 if(WDI_STATUS_E_FAILURE == wdiStatus)
16435 {
16436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016437 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016440 }
16441 WDI_STATableDelSta(pWDICtx, ucStaIdx);
16442 }
16443
16444 /*Notify UMAC*/
16445 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
16446
16447 return WDI_STATUS_SUCCESS;
16448}
16449
Jeff Johnsone7245742012-09-05 17:12:55 -070016450#ifdef FEATURE_OEM_DATA_SUPPORT
16451/**
16452 @brief Start Oem Data Rsp function (called when a
16453 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070016454
Jeff Johnsone7245742012-09-05 17:12:55 -070016455 @param pWDICtx: pointer to the WLAN DAL context
16456 pEventData: pointer to the event information structure
16457
16458 @see
16459 @return Result of the function call
16460*/
16461#define OFFSET_OF(structType,fldName) (&((structType*)0)->fldName)
16462
16463WDI_Status
16464WDI_ProcessStartOemDataRsp
16465(
16466 WDI_ControlBlockType* pWDICtx,
16467 WDI_EventInfoType* pEventData
16468)
16469{
16470 WDI_oemDataRspCb wdiOemDataRspCb;
16471 WDI_oemDataRspParamsType* wdiOemDataRspParams;
16472 tStartOemDataRspParams* halStartOemDataRspParams;
16473
16474 /*-------------------------------------------------------------------------
16475 Sanity check
16476 -------------------------------------------------------------------------*/
16477 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16478 ( NULL == pEventData->pEventData))
16479 {
16480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016481 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 WDI_ASSERT(0);
16483 return WDI_STATUS_E_FAILURE;
16484 }
16485
16486 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
16487
16488 /*-------------------------------------------------------------------------
16489 Extract response and send it to UMAC
16490 -------------------------------------------------------------------------*/
16491 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
16492
16493
16494 //It is the responsibility of the application code to check for failure
16495 //conditions!
16496
16497 //Allocate memory for WDI OEM DATA RSP structure
16498 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
16499
16500 if(NULL == wdiOemDataRspParams)
16501 {
16502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16503 "Failed to allocate memory in OEM DATA Response %x %x %x ",
16504 pWDICtx, pEventData, pEventData->pEventData);
16505 WDI_ASSERT(0);
16506 return WDI_STATUS_E_FAILURE;
16507 }
16508
16509 /* Populate WDI structure members */
16510 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
16511
16512 /*Notify UMAC*/
16513 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
16514
16515 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
16516 wpalMemoryFree(wdiOemDataRspParams);
16517
16518 return WDI_STATUS_SUCCESS;
16519}/*WDI_PrcoessStartOemDataRsp*/
16520#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016521
16522/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016523 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016524===========================================================================*/
16525
16526/**
16527 @brief Process Channel Switch Rsp function (called when a response
16528 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016529
16530 @param pWDICtx: pointer to the WLAN DAL context
16531 pEventData: pointer to the event information structure
16532
Jeff Johnson295189b2012-06-20 16:38:30 -070016533 @see
16534 @return Result of the function call
16535*/
16536WDI_Status
16537WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016538(
Jeff Johnson295189b2012-06-20 16:38:30 -070016539 WDI_ControlBlockType* pWDICtx,
16540 WDI_EventInfoType* pEventData
16541)
16542{
16543 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
16544 WDI_SwitchChRspCb wdiChSwitchRspCb;
16545 tSwitchChannelRspParams halSwitchChannelRsp;
16546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16547
16548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016550 -------------------------------------------------------------------------*/
16551 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16552 ( NULL == pEventData->pEventData))
16553 {
16554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016555 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016556 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016557 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016558 }
16559
16560 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
16561
16562 /*-------------------------------------------------------------------------
16563 Extract response and send it to UMAC
16564 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016565 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070016566 (wpt_uint8*)pEventData->pEventData,
16567 sizeof(halSwitchChannelRsp));
16568
Jeff Johnsone7245742012-09-05 17:12:55 -070016569 wdiSwitchChRsp.wdiStatus =
16570 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016571 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
16572
16573#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016574 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070016575#endif
16576
16577 /*Notify UMAC*/
16578 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
16579
Jeff Johnsone7245742012-09-05 17:12:55 -070016580 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016581}/*WDI_ProcessChannelSwitchRsp*/
16582
16583
16584/**
16585 @brief Process Config STA Rsp function (called when a response
16586 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016587
16588 @param pWDICtx: pointer to the WLAN DAL context
16589 pEventData: pointer to the event information structure
16590
Jeff Johnson295189b2012-06-20 16:38:30 -070016591 @see
16592 @return Result of the function call
16593*/
16594WDI_Status
16595WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016596(
Jeff Johnson295189b2012-06-20 16:38:30 -070016597 WDI_ControlBlockType* pWDICtx,
16598 WDI_EventInfoType* pEventData
16599)
16600{
16601 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
16602 WDI_ConfigSTARspCb wdiConfigSTARspCb;
16603 WDI_AddStaParams wdiAddSTAParam;
16604
16605 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016606 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016607
Jeff Johnsone7245742012-09-05 17:12:55 -070016608 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070016609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16610
16611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016613 -------------------------------------------------------------------------*/
16614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16615 ( NULL == pEventData->pEventData))
16616 {
16617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016621 }
16622
16623 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
16624
16625 /*-------------------------------------------------------------------------
16626 Extract response and send it to UMAC
16627 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016628 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
16629 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 sizeof(halConfigStaRsp.configStaRspParams));
16631
16632
16633 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
16634 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
16635 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16636 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
16637 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
16638
16639 /* MAC Address of STA - take from cache as it does not come back in the
16640 response*/
16641 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070016642 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016643 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016644
16645 wdiCfgSTAParams.wdiStatus =
16646 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016647
16648 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
16649 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
16650 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
16651
16652 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
16653 {
16654 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16655 {
16656 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070016657 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070016658 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
16659 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016660
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016662 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070016664 wdiAddSTAParam.ucHTCapable =
16665 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
16666 wdiAddSTAParam.ucStaType =
16667 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
16668
Jeff Johnson295189b2012-06-20 16:38:30 -070016669 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070016670 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
16671 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070016672 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070016673
16674 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
16675 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
16676 WDI_MAC_ADDR_LEN);
16677
16678 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16679 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
16680 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070016681
16682 if ( NULL == pBSSSes )
16683 {
16684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16685 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070016686
Jeff Johnson295189b2012-06-20 16:38:30 -070016687 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016688 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016689 }
16690
16691 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016695 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016696 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016697 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016698 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016699 halConfigStaRsp.configStaRspParams.ucBcastSig;
16700 wdiAddSTAParam.ucRmfEnabled = pBSSSes->ucRmfEnabled;
16701 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016702
Jeff Johnson295189b2012-06-20 16:38:30 -070016703 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16704 }
16705 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
16706 {
16707 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
16708
Jeff Johnsone7245742012-09-05 17:12:55 -070016709 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016710 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016711 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016712 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016713 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016714 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016715 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070016717 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016718 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016719 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070016720 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070016721 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070016722 halConfigStaRsp.configStaRspParams.ucUcastSig;
16723 }
16724 }
16725
16726 /*Notify UMAC*/
16727 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
16728
Jeff Johnsone7245742012-09-05 17:12:55 -070016729 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016730}/*WDI_ProcessConfigStaRsp*/
16731
16732
16733/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016734 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016735 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016736
16737 @param pWDICtx: pointer to the WLAN DAL context
16738 pEventData: pointer to the event information structure
16739
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 @see
16741 @return Result of the function call
16742*/
16743WDI_Status
16744WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016745(
Jeff Johnson295189b2012-06-20 16:38:30 -070016746 WDI_ControlBlockType* pWDICtx,
16747 WDI_EventInfoType* pEventData
16748)
16749{
16750 WDI_Status wdiStatus;
16751 eHalStatus halStatus;
16752 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
16753
16754 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016755 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16757
16758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016760 -------------------------------------------------------------------------*/
16761 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16762 ( NULL == pEventData->pEventData))
16763 {
16764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016768 }
16769
16770 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
16771
16772 wpalMutexAcquire(&pWDICtx->wptMutex);
16773
16774 /*If the link is being transitioned to idle - the BSS is to be deleted
16775 - this type of ending a session is possible when UMAC has failed an
16776 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016777 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16779 {
16780 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016781 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070016782 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16784 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
16785 &pBSSSes);
16786
Jeff Johnson295189b2012-06-20 16:38:30 -070016787 /*-----------------------------------------------------------------------
16788 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016789 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016790 -----------------------------------------------------------------------*/
16791 if ( NULL == pBSSSes )
16792 {
16793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16794 "Set link response received outside association session");
16795 }
16796 else
16797 {
16798 /* For BT AMP roles no need to delete the sessions if assoc fails. There
16799 will be del BSS coming after this to stop the beaconing & cleaning up the
16800 sessions*/
16801 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
16802 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
16803 {
16804 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016805 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016806 -----------------------------------------------------------------------*/
16807 WDI_DeleteSession(pWDICtx, pBSSSes);
16808
16809 /*-----------------------------------------------------------------------
16810 Check to see if this association is in progress - if so disable the
16811 flag as this has ended
16812 -----------------------------------------------------------------------*/
16813 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070016814 {
Jeff Johnson295189b2012-06-20 16:38:30 -070016815 /*Association no longer in progress */
16816 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16817 /*Association no longer in progress - prepare pending assoc for processing*/
16818 WDI_DequeueAssocRequest(pWDICtx);
16819 }
16820 }
16821 }
16822 }
16823 /* If the link state has been set to POST ASSOC, reset the "association in
16824 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070016825 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070016826 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
16827 {
16828 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16829 WDI_DequeueAssocRequest(pWDICtx);
16830 }
16831
16832 wpalMutexRelease(&pWDICtx->wptMutex);
16833
16834 /*-------------------------------------------------------------------------
16835 Extract response and send it to UMAC
16836 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016837 wpalMemoryCopy( &halStatus,
16838 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016839 sizeof(halStatus));
16840
Jeff Johnsone7245742012-09-05 17:12:55 -070016841 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070016842
16843 /*Notify UMAC*/
16844 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16845
Jeff Johnsone7245742012-09-05 17:12:55 -070016846 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016847}/*WDI_ProcessSetLinkStateRsp*/
16848
16849/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016850 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016851 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016852
16853 @param pWDICtx: pointer to the WLAN DAL context
16854 pEventData: pointer to the event information structure
16855
Jeff Johnson295189b2012-06-20 16:38:30 -070016856 @see
16857 @return Result of the function call
16858*/
16859WDI_Status
16860WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016861(
Jeff Johnson295189b2012-06-20 16:38:30 -070016862 WDI_ControlBlockType* pWDICtx,
16863 WDI_EventInfoType* pEventData
16864)
16865{
16866 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
16867 WDI_GetStatsRspCb wdiGetStatsRspCb;
16868 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070016869
Jeff Johnson295189b2012-06-20 16:38:30 -070016870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16871
16872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016874 -------------------------------------------------------------------------*/
16875 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16876 ( NULL == pEventData->pEventData))
16877 {
16878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016879 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 }
16883
16884 /*-------------------------------------------------------------------------
16885 Extract response and send it to UMAC
16886 -------------------------------------------------------------------------*/
16887 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
16888
16889 /*allocate the stats response buffer */
16890 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
16891 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
16892 + sizeof(WDI_GetStatsRspParamsType));
16893
16894 if(NULL == wdiGetStatsRsp)
16895 {
16896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16897 "Failed to allocate memory in Get Stats Response %x %x %x ",
16898 pWDICtx, pEventData, pEventData->pEventData);
16899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 }
16902
16903 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
16904
16905 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
16906 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
16907 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
16908 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
16909 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
16910 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
16911
16912 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
16913 wpalMemoryCopy(wdiGetStatsRsp + 1,
16914 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
16915 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
16916
16917 /*Notify UMAC*/
16918 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
16919
16920 wpalMemoryFree(wdiGetStatsRsp);
16921
Jeff Johnsone7245742012-09-05 17:12:55 -070016922 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016923}/*WDI_ProcessGetStatsRsp*/
16924
Srinivas Girigowda2471d832013-01-25 13:33:11 -080016925#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
16926/**
16927 @brief Process Get Roam Rssi Rsp function (called when a response is
16928 being received over the bus from HAL)
16929
16930 @param pWDICtx: pointer to the WLAN DAL context
16931 pEventData: pointer to the event information structure
16932
16933 @see
16934 @return Result of the function call
16935*/
16936WDI_Status
16937WDI_ProcessGetRoamRssiRsp
16938(
16939 WDI_ControlBlockType* pWDICtx,
16940 WDI_EventInfoType* pEventData
16941)
16942{
16943 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
16944 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
16945 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
16946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16947
16948 /*-------------------------------------------------------------------------
16949 Sanity check
16950 -------------------------------------------------------------------------*/
16951 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16952 ( NULL == pEventData->pEventData))
16953 {
16954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16955 "%s: Invalid parameters", __func__);
16956 WDI_ASSERT(0);
16957 return WDI_STATUS_E_FAILURE;
16958 }
16959
16960 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
16961 if(NULL == wdiGetRoamRssiRspCb)
16962 {
16963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
16964 "%s: call back function is NULL", __func__);
16965 WDI_ASSERT(0);
16966 return WDI_STATUS_E_FAILURE;
16967 }
16968
16969 /*-------------------------------------------------------------------------
16970 Extract response and send it to UMAC
16971 -------------------------------------------------------------------------*/
16972 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
16973 pEventData->pEventData,
16974 sizeof(halRoamRssiRspParams.roamRssiRspParams));
16975
16976 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
16977 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
16978 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
16979
16980 /*Notify UMAC*/
16981 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
16982
16983 return WDI_STATUS_SUCCESS;
16984}/*WDI_ProcessGetRoamRssiRsp*/
16985#endif
16986
Jeff Johnson295189b2012-06-20 16:38:30 -070016987
16988/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016989 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070016990 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016991
16992 @param pWDICtx: pointer to the WLAN DAL context
16993 pEventData: pointer to the event information structure
16994
Jeff Johnson295189b2012-06-20 16:38:30 -070016995 @see
16996 @return Result of the function call
16997*/
16998WDI_Status
16999WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017000(
Jeff Johnson295189b2012-06-20 16:38:30 -070017001 WDI_ControlBlockType* pWDICtx,
17002 WDI_EventInfoType* pEventData
17003)
17004{
17005 WDI_Status wdiStatus;
17006 eHalStatus halStatus;
17007 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
17008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17009
17010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017012 -------------------------------------------------------------------------*/
17013 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17014 ( NULL == pEventData->pEventData))
17015 {
17016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017020 }
17021
17022 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
17023
17024 /*-------------------------------------------------------------------------
17025 Extract response and send it to UMAC
17026 -------------------------------------------------------------------------*/
17027 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017028 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017029
17030 /*Notify UMAC*/
17031 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17032
Jeff Johnsone7245742012-09-05 17:12:55 -070017033 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017034}/*WDI_ProcessUpdateCfgRsp*/
17035
17036
17037
17038/**
17039 @brief Process Add BA Rsp function (called when a response
17040 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017041
17042 @param pWDICtx: pointer to the WLAN DAL context
17043 pEventData: pointer to the event information structure
17044
Jeff Johnson295189b2012-06-20 16:38:30 -070017045 @see
17046 @return Result of the function call
17047*/
17048WDI_Status
17049WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017050(
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 WDI_ControlBlockType* pWDICtx,
17052 WDI_EventInfoType* pEventData
17053)
17054{
17055 WDI_AddBARspCb wdiAddBARspCb;
17056
17057 tAddBARspParams halAddBARsp;
17058 WDI_AddBARspinfoType wdiAddBARsp;
17059
17060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17061
17062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 -------------------------------------------------------------------------*/
17065 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17066 ( NULL == pEventData->pEventData))
17067 {
17068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017069 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017072 }
17073
17074 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
17075
17076 /*-------------------------------------------------------------------------
17077 Extract response and send it to UMAC
17078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017079 wpalMemoryCopy( &halAddBARsp,
17080 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017081 sizeof(halAddBARsp));
17082
17083 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
17084
Jeff Johnson43971f52012-07-17 12:26:56 -070017085 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070017086 {
17087 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
17088 }
17089
17090 /*Notify UMAC*/
17091 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
17092
Jeff Johnsone7245742012-09-05 17:12:55 -070017093 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017094}/*WDI_ProcessAddSessionBARsp*/
17095
17096/**
17097 @brief Process Add BA Rsp function (called when a response
17098 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017099
17100 @param pWDICtx: pointer to the WLAN DAL context
17101 pEventData: pointer to the event information structure
17102
Jeff Johnson295189b2012-06-20 16:38:30 -070017103 @see
17104 @return Result of the function call
17105*/
17106WDI_Status
17107WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017108(
Jeff Johnson295189b2012-06-20 16:38:30 -070017109 WDI_ControlBlockType* pWDICtx,
17110 WDI_EventInfoType* pEventData
17111)
17112{
17113 WDI_TriggerBARspCb wdiTriggerBARspCb;
17114
17115 tTriggerBARspParams* halTriggerBARsp;
17116 tTriggerBaRspCandidate* halBaCandidate;
17117 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
17118 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
17119 wpt_uint16 index;
17120 wpt_uint16 TidIndex;
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017121 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17123
17124 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017125 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017126 -------------------------------------------------------------------------*/
17127 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17128 ( NULL == pEventData->pEventData))
17129 {
17130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017131 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017133 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017134 }
17135
17136 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
17137
17138 /*-------------------------------------------------------------------------
17139 Extract response and send it to UMAC
17140 -------------------------------------------------------------------------*/
17141 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
17142
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017143 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
17144
17145 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
17146 {
17147 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070017148 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070017149 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070017150
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017151 if(NULL == wdiTriggerBARsp)
17152 {
17153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17154 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17155 pWDICtx, pEventData, pEventData->pEventData);
17156 WDI_ASSERT(0);
17157 return WDI_STATUS_E_FAILURE;
17158 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017159
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017160 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17161
Jeff Johnson295189b2012-06-20 16:38:30 -070017162 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070017163 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017164 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
17165
17166 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
17167 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
17168
17169 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
17170 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017171 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
17173 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
17174 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017175 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070017176 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070017177 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 halBaCandidate->baInfo[TidIndex].startingSeqNum;
17179 }
17180 wdiTriggerBARspCandidate++;
17181 halBaCandidate++;
17182 }
17183 }
Tushnim Bhattacharyya3c2c3152013-03-21 15:11:31 -070017184 else
17185 {
17186 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
17187
17188 if(NULL == wdiTriggerBARsp)
17189 {
17190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17191 "Failed to allocate memory in Trigger BA Response %x %x %x ",
17192 pWDICtx, pEventData, pEventData->pEventData);
17193 WDI_ASSERT(0);
17194 return WDI_STATUS_E_FAILURE;
17195 }
17196
17197 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
17198
17199 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017200
17201 /*Notify UMAC*/
17202 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
17203
17204 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070017205 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017206}/*WDI_ProcessAddSessionBARsp*/
17207
17208/**
17209 @brief Process Update Beacon Params Rsp function (called when a response
17210 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017211
17212 @param pWDICtx: pointer to the WLAN DAL context
17213 pEventData: pointer to the event information structure
17214
Jeff Johnson295189b2012-06-20 16:38:30 -070017215 @see
17216 @return Result of the function call
17217*/
17218WDI_Status
17219WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017220(
Jeff Johnson295189b2012-06-20 16:38:30 -070017221 WDI_ControlBlockType* pWDICtx,
17222 WDI_EventInfoType* pEventData
17223)
17224{
17225 WDI_Status wdiStatus;
17226 eHalStatus halStatus;
17227 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
17228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17229
17230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017232 -------------------------------------------------------------------------*/
17233 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17234 ( NULL == pEventData->pEventData))
17235 {
17236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017240 }
17241
17242 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
17243
17244 /*-------------------------------------------------------------------------
17245 Extract response and send it to UMAC
17246 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017247 wpalMemoryCopy( &halStatus,
17248 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017249 sizeof(halStatus));
17250
Jeff Johnsone7245742012-09-05 17:12:55 -070017251 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017252
17253 /*Notify UMAC*/
17254 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17255
Jeff Johnsone7245742012-09-05 17:12:55 -070017256 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017257}/*WDI_ProcessUpdateBeaconParamsRsp*/
17258
17259/**
17260 @brief Process Send Beacon template Rsp function (called when a response
17261 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017262
17263 @param pWDICtx: pointer to the WLAN DAL context
17264 pEventData: pointer to the event information structure
17265
Jeff Johnson295189b2012-06-20 16:38:30 -070017266 @see
17267 @return Result of the function call
17268*/
17269WDI_Status
17270WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017271(
Jeff Johnson295189b2012-06-20 16:38:30 -070017272 WDI_ControlBlockType* pWDICtx,
17273 WDI_EventInfoType* pEventData
17274)
17275{
17276 WDI_Status wdiStatus;
17277 eHalStatus halStatus;
17278 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
17279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17280
17281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017283 -------------------------------------------------------------------------*/
17284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17285 ( NULL == pEventData->pEventData))
17286 {
17287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017288 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017289 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017291 }
17292
17293 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
17294
17295 /*-------------------------------------------------------------------------
17296 Extract response and send it to UMAC
17297 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017298 wpalMemoryCopy( &halStatus,
17299 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017300 sizeof(halStatus));
17301
Jeff Johnsone7245742012-09-05 17:12:55 -070017302 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017303
17304 /*Notify UMAC*/
17305 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17306
Jeff Johnsone7245742012-09-05 17:12:55 -070017307 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017308}/*WDI_ProcessSendBeaconParamsRsp*/
17309
Jeff Johnsone7245742012-09-05 17:12:55 -070017310
Jeff Johnson295189b2012-06-20 16:38:30 -070017311/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017312 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017313 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017314
17315 @param pWDICtx: pointer to the WLAN DAL context
17316 pEventData: pointer to the event information structure
17317
Jeff Johnson295189b2012-06-20 16:38:30 -070017318 @see
17319 @return Result of the function call
17320*/
17321WDI_Status
17322WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017323(
Jeff Johnson295189b2012-06-20 16:38:30 -070017324 WDI_ControlBlockType* pWDICtx,
17325 WDI_EventInfoType* pEventData
17326)
17327{
17328 WDI_Status wdiStatus;
17329 eHalStatus halStatus;
17330 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
17331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17332
17333 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017334 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017335 -------------------------------------------------------------------------*/
17336 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17337 ( NULL == pEventData->pEventData))
17338 {
17339 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017340 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017341 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017342 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017343 }
17344
17345 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
17346
17347 /*-------------------------------------------------------------------------
17348 Extract response and send it to UMAC
17349 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017350 wpalMemoryCopy( &halStatus,
17351 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017352 sizeof(halStatus));
17353
Jeff Johnsone7245742012-09-05 17:12:55 -070017354 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017355
17356 /*Notify UMAC*/
17357 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17358
Jeff Johnsone7245742012-09-05 17:12:55 -070017359 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017360}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
17361
17362 /**
17363 @brief Process Set Max Tx Power Rsp function (called when a response
17364 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017365
17366 @param pWDICtx: pointer to the WLAN DAL context
17367 pEventData: pointer to the event information structure
17368
Jeff Johnson295189b2012-06-20 16:38:30 -070017369 @see
17370 @return Result of the function call
17371*/
17372WDI_Status
17373WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017374(
Jeff Johnson295189b2012-06-20 16:38:30 -070017375 WDI_ControlBlockType* pWDICtx,
17376 WDI_EventInfoType* pEventData
17377)
17378{
17379 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070017380
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070017382
Jeff Johnson295189b2012-06-20 16:38:30 -070017383 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
17384 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17385
17386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017387 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017388 -------------------------------------------------------------------------*/
17389 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17390 ( NULL == pEventData->pEventData))
17391 {
17392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017393 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017396 }
17397
17398 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
17399
17400 /*-------------------------------------------------------------------------
17401 Extract response and send it to UMAC
17402 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017403 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
17404 pEventData->pEventData,
17405 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070017406
17407 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
17408 {
17409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17410 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070017411 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017413 }
17414
Jeff Johnsone7245742012-09-05 17:12:55 -070017415 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070017416 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070017417 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070017418
17419 /*Notify UMAC*/
17420 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
17421
Jeff Johnsone7245742012-09-05 17:12:55 -070017422 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017423}
17424
schangd82195a2013-03-13 18:41:24 -070017425 /**
17426 @brief Process Set Tx Power Rsp function (called when a response
17427 is being received over the bus from HAL)
17428
17429 @param pWDICtx: pointer to the WLAN DAL context
17430 pEventData: pointer to the event information structure
17431
17432 @see
17433 @return Result of the function call
17434*/
17435WDI_Status
17436WDI_ProcessSetTxPowerRsp
17437(
17438 WDI_ControlBlockType* pWDICtx,
17439 WDI_EventInfoType* pEventData
17440)
17441{
17442 tSetTxPwrRspMsg halTxpowerrsp;
17443 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
17444 WDA_SetTxPowerRspCb wdiReqStatusCb;
17445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17446
17447 /*-------------------------------------------------------------------------
17448 Sanity check
17449 -------------------------------------------------------------------------*/
17450 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17451 ( NULL == pEventData->pEventData))
17452 {
17453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
17454 "%s: Invalid parameters", __func__);
17455 WDI_ASSERT(0);
17456 return WDI_STATUS_E_FAILURE;
17457 }
17458
17459 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
17460
17461 /*-------------------------------------------------------------------------
17462 Extract response and send it to UMAC
17463 -------------------------------------------------------------------------*/
17464 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
17465 pEventData->pEventData,
17466 sizeof(halTxpowerrsp.setTxPwrRspParams));
17467
17468 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
17469 {
17470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17471 "Error status returned in Set Tx Power Response ");
17472 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17473 return WDI_STATUS_E_FAILURE;
17474 }
17475
17476 wdiSetTxPowerRspMsg.wdiStatus =
17477 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
17478
17479 /*Notify UMAC*/
17480 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
17481
17482 return WDI_STATUS_SUCCESS;
17483}
17484
Jeff Johnson295189b2012-06-20 16:38:30 -070017485/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017486 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070017487 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017488
17489 @param pWDICtx: pointer to the WLAN DAL context
17490 pEventData: pointer to the event information structure
17491
Jeff Johnson295189b2012-06-20 16:38:30 -070017492 @see
17493 @return Result of the function call
17494*/
17495WDI_Status
17496WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017497(
Jeff Johnson295189b2012-06-20 16:38:30 -070017498 WDI_ControlBlockType* pWDICtx,
17499 WDI_EventInfoType* pEventData
17500)
17501{
17502 WDI_Status wdiStatus;
17503 eHalStatus halStatus;
17504 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
17505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17506
17507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017509 -------------------------------------------------------------------------*/
17510 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17511 ( NULL == pEventData->pEventData))
17512 {
17513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 }
17518
17519 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
17520
17521 /*-------------------------------------------------------------------------
17522 Extract response and send it to UMAC
17523 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017524 wpalMemoryCopy( &halStatus,
17525 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 sizeof(halStatus));
17527
Jeff Johnsone7245742012-09-05 17:12:55 -070017528 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017529
17530 /*Notify UMAC*/
17531 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17532
Jeff Johnsone7245742012-09-05 17:12:55 -070017533 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017534}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070017535/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017536 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017537 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017538
17539 @param pWDICtx: pointer to the WLAN DAL context
17540 pEventData: pointer to the event information structure
17541
Jeff Johnson295189b2012-06-20 16:38:30 -070017542 @see
17543 @return Result of the function call
17544*/
17545WDI_Status
17546WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017547(
Jeff Johnson295189b2012-06-20 16:38:30 -070017548 WDI_ControlBlockType* pWDICtx,
17549 WDI_EventInfoType* pEventData
17550)
17551{
17552 WDI_Status wdiStatus;
17553 eHalStatus halStatus;
17554 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017555 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017556 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17557
17558 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017559 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017560 -------------------------------------------------------------------------*/
17561 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17562 ( NULL == pEventData->pEventData))
17563 {
17564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017565 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017566 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017567 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017568 }
17569
17570 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
17571
17572 /*-------------------------------------------------------------------------
17573 Extract response and send it to UMAC
17574 -------------------------------------------------------------------------*/
17575 halStatus = *((eHalStatus*)pEventData->pEventData);
17576
Jeff Johnsone7245742012-09-05 17:12:55 -070017577 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017578
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017579 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
17580 * Other module states are taken care by PMC.
17581 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
17582 */
17583 if (wdiStatus != WDI_STATUS_SUCCESS) {
17584
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17586 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
17587 halStatus);
17588 /* Call Back is not required as we are putting the DXE in FULL
17589 * and riva is already in full (IMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017590 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17591
17592 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17593 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17594 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17595 WDI_ASSERT(0);
17596 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017597 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017598 /*Notify UMAC*/
17599 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17600
Jeff Johnsone7245742012-09-05 17:12:55 -070017601 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017602}/*WDI_ProcessEnterImpsRsp*/
17603
17604/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017605 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017606 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017607
17608 @param pWDICtx: pointer to the WLAN DAL context
17609 pEventData: pointer to the event information structure
17610
Jeff Johnson295189b2012-06-20 16:38:30 -070017611 @see
17612 @return Result of the function call
17613*/
17614WDI_Status
17615WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017616(
Jeff Johnson295189b2012-06-20 16:38:30 -070017617 WDI_ControlBlockType* pWDICtx,
17618 WDI_EventInfoType* pEventData
17619)
17620{
17621 WDI_Status wdiStatus;
17622 eHalStatus halStatus;
17623 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017624 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17626
17627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017628 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017629 -------------------------------------------------------------------------*/
17630 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17631 ( NULL == pEventData->pEventData))
17632 {
17633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017637 }
17638
17639 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
17640
17641 /*-------------------------------------------------------------------------
17642 Extract response and send it to UMAC
17643 -------------------------------------------------------------------------*/
17644 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017645 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017646
17647 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017648 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17649 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17650 {
17651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17652 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17653 WDI_ASSERT(0);
17654 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017655 /*Notify UMAC*/
17656 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17657
Jeff Johnsone7245742012-09-05 17:12:55 -070017658 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017659}/*WDI_ProcessExitImpsRsp*/
17660
17661/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017662 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017663 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017664
17665 @param pWDICtx: pointer to the WLAN DAL context
17666 pEventData: pointer to the event information structure
17667
Jeff Johnson295189b2012-06-20 16:38:30 -070017668 @see
17669 @return Result of the function call
17670*/
17671WDI_Status
17672WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017673(
Jeff Johnson295189b2012-06-20 16:38:30 -070017674 WDI_ControlBlockType* pWDICtx,
17675 WDI_EventInfoType* pEventData
17676)
17677{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017678 eHalStatus halStatus = eHAL_STATUS_FAILURE;
17679 tHalEnterBmpsRspParams halEnterBmpsRsp;
17680 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
17681 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017682 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17684
17685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017687 -------------------------------------------------------------------------*/
17688 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17689 ( NULL == pEventData->pEventData))
17690 {
17691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017695 }
17696
Jeff Johnson295189b2012-06-20 16:38:30 -070017697 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017698 Extract response and send it to UMAC
17699 -------------------------------------------------------------------------*/
17700 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17701 {
17702 wpalMemoryCopy( &halEnterBmpsRsp,
17703 pEventData->pEventData,
17704 sizeof(halEnterBmpsRsp));
17705
17706 //Used to print debug message
17707 halStatus = halEnterBmpsRsp.status;
17708 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
17709 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
17710 }
17711 else
17712 {
17713 halStatus = *((eHalStatus*)pEventData->pEventData);
17714 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17715 }
17716
17717 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017718
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017719 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
17720 * Other module states are taken care by PMC.
17721 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
17722 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017723 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
17724 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017725
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070017727 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
17728 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017729 /* Call Back is not required as we are putting the DXE in FULL
17730 * and riva is already in FULL (BMPS RSP Failed)*/
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017731 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17732 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17733 {
17734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17735 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17736 WDI_ASSERT(0);
17737 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017738 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070017739 }
17740
Jeff Johnson295189b2012-06-20 16:38:30 -070017741 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017742 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017743
Jeff Johnsone7245742012-09-05 17:12:55 -070017744 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017745}/*WDI_ProcessEnterBmpsRsp*/
17746
17747/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017748 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017750
17751 @param pWDICtx: pointer to the WLAN DAL context
17752 pEventData: pointer to the event information structure
17753
Jeff Johnson295189b2012-06-20 16:38:30 -070017754 @see
17755 @return Result of the function call
17756*/
17757WDI_Status
17758WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017759(
Jeff Johnson295189b2012-06-20 16:38:30 -070017760 WDI_ControlBlockType* pWDICtx,
17761 WDI_EventInfoType* pEventData
17762)
17763{
Jeff Johnson295189b2012-06-20 16:38:30 -070017764 eHalStatus halStatus;
17765 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017766 tHalExitBmpsRspParams halExitBmpsRsp;
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017767 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
17768 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17770
17771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017773 -------------------------------------------------------------------------*/
17774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17775 ( NULL == pEventData->pEventData))
17776 {
17777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017779 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017780 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017781 }
17782
17783 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
17784
17785 /*-------------------------------------------------------------------------
17786 Extract response and send it to UMAC
17787 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017788
17789 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17790 {
17791 wpalMemoryCopy( &halExitBmpsRsp,
17792 pEventData->pEventData,
17793 sizeof(halExitBmpsRsp));
17794
17795 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
17796 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
17797 }
17798 else
17799 {
17800 halStatus = *((eHalStatus*)pEventData->pEventData);
17801 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17802 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017803
17804 // notify DTS that we are entering Full power
Madan Mohan Koyyalamudiedbc6112012-12-12 14:01:38 -080017805 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17806 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17807 {
17808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
17809 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state\n", wptStatus);
17810 WDI_ASSERT(0);
17811 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017812 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
17813
17814 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017815 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017816
Jeff Johnsone7245742012-09-05 17:12:55 -070017817 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017818}/*WDI_ProcessExitBmpsRsp*/
17819
17820/**
17821 @brief Process Enter UAPSD Rsp function (called when a response
17822 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017823
17824 @param pWDICtx: pointer to the WLAN DAL context
17825 pEventData: pointer to the event information structure
17826
Jeff Johnson295189b2012-06-20 16:38:30 -070017827 @see
17828 @return Result of the function call
17829*/
17830WDI_Status
17831WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017832(
Jeff Johnson295189b2012-06-20 16:38:30 -070017833 WDI_ControlBlockType* pWDICtx,
17834 WDI_EventInfoType* pEventData
17835)
17836{
Jeff Johnson295189b2012-06-20 16:38:30 -070017837 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017838 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070017839 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017840 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
17841
Jeff Johnson295189b2012-06-20 16:38:30 -070017842 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17843
17844 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017845 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017846 -------------------------------------------------------------------------*/
17847 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17848 ( NULL == pEventData->pEventData))
17849 {
17850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017851 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017852 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017853 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017854 }
17855
17856 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
17857
17858 /*-------------------------------------------------------------------------
17859 Extract response and send it to UMAC
17860 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017861 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17862 {
17863 wpalMemoryCopy( &halEnterUapsdRsp,
17864 pEventData->pEventData,
17865 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070017866
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017867 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
17868 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
17869 }
17870 else
17871 {
17872 halStatus = *((eHalStatus*)pEventData->pEventData);
17873 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17874 }
17875
17876 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070017877 {
17878 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
17879 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
17880 // the traffic to decide when to suspend the trigger frames when there is no traffic
17881 // activity on the trigger enabled ACs
17882 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
17883
17884#ifdef WLAN_PERF
17885 // Increment the BD signature to refresh the fast path BD utilization
17886 pWDICtx->uBdSigSerialNum++;
17887#endif
17888 }
17889
17890 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017891 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017892
Jeff Johnsone7245742012-09-05 17:12:55 -070017893 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017894}/*WDI_ProcessEnterUapsdRsp*/
17895
17896/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017897 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070017898 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017899
17900 @param pWDICtx: pointer to the WLAN DAL context
17901 pEventData: pointer to the event information structure
17902
Jeff Johnson295189b2012-06-20 16:38:30 -070017903 @see
17904 @return Result of the function call
17905*/
17906WDI_Status
17907WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017908(
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 WDI_ControlBlockType* pWDICtx,
17910 WDI_EventInfoType* pEventData
17911)
17912{
Jeff Johnson295189b2012-06-20 16:38:30 -070017913 eHalStatus halStatus;
17914 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017915 tHalExitUapsdRspParams halExitUapsdRsp;
17916 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070017917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17918
17919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017921 -------------------------------------------------------------------------*/
17922 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17923 ( NULL == pEventData->pEventData))
17924 {
17925 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017926 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017927 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017928 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017929 }
17930
17931 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
17932
17933 /*-------------------------------------------------------------------------
17934 Extract response and send it to UMAC
17935 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017936 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
17937 {
17938 wpalMemoryCopy( &halExitUapsdRsp,
17939 pEventData->pEventData,
17940 sizeof(halExitUapsdRsp));
17941
17942 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
17943 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
17944 }
17945 else
17946 {
17947 halStatus = *((eHalStatus*)pEventData->pEventData);
17948 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
17949 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017950 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
17951 // directly instead of the FW WQ.
17952 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
17953
17954#ifdef WLAN_PERF
17955 // Increment the BD signature to refresh the fast path BD utilization
17956 pWDICtx->uBdSigSerialNum++;
17957#endif
17958
17959 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070017960 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070017961
Jeff Johnsone7245742012-09-05 17:12:55 -070017962 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017963}/*WDI_ProcessExitUapsdRsp*/
17964
17965/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017966 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017967 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017968
17969 @param pWDICtx: pointer to the WLAN DAL context
17970 pEventData: pointer to the event information structure
17971
Jeff Johnson295189b2012-06-20 16:38:30 -070017972 @see
17973 @return Result of the function call
17974*/
17975WDI_Status
17976WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017977(
Jeff Johnson295189b2012-06-20 16:38:30 -070017978 WDI_ControlBlockType* pWDICtx,
17979 WDI_EventInfoType* pEventData
17980)
17981{
17982 WDI_Status wdiStatus;
17983 eHalStatus halStatus;
17984 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
17985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17986
17987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017989 -------------------------------------------------------------------------*/
17990 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17991 ( NULL == pEventData->pEventData))
17992 {
17993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017997 }
17998
17999 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
18000
18001 /*-------------------------------------------------------------------------
18002 Extract response and send it to UMAC
18003 -------------------------------------------------------------------------*/
18004 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018005 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018006
18007 /*Notify UMAC*/
18008 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18009
Jeff Johnsone7245742012-09-05 17:12:55 -070018010 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018011}/*WDI_ProcessSetUapsdAcParamsRsp*/
18012
18013/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018014 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018015 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018016
18017 @param pWDICtx: pointer to the WLAN DAL context
18018 pEventData: pointer to the event information structure
18019
Jeff Johnson295189b2012-06-20 16:38:30 -070018020 @see
18021 @return Result of the function call
18022*/
18023WDI_Status
18024WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018025(
Jeff Johnson295189b2012-06-20 16:38:30 -070018026 WDI_ControlBlockType* pWDICtx,
18027 WDI_EventInfoType* pEventData
18028)
18029{
18030 WDI_Status wdiStatus;
18031 eHalStatus halStatus;
18032 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
18033 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18034
18035 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018036 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018037 -------------------------------------------------------------------------*/
18038 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18039 ( NULL == pEventData->pEventData))
18040 {
18041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018042 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018043 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018044 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018045 }
18046
18047 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
18048
18049 /*-------------------------------------------------------------------------
18050 Extract response and send it to UMAC
18051 -------------------------------------------------------------------------*/
18052 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018053 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018054
18055 /*Notify UMAC*/
18056 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
18057
Jeff Johnsone7245742012-09-05 17:12:55 -070018058 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018059}/*WDI_ProcessUpdateUapsdParamsRsp*/
18060
18061/**
18062 @brief Process Configure RXP filter Rsp function (called when a
18063 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_ProcessConfigureRxpFilterRsp
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{
18078 WDI_Status wdiStatus;
18079 eHalStatus halStatus;
18080 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
18081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18082
18083 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018084 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018085 -------------------------------------------------------------------------*/
18086 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18087 ( NULL == pEventData->pEventData))
18088 {
18089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018090 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018091 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018093 }
18094
18095 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
18096
18097 /*-------------------------------------------------------------------------
18098 Extract response and send it to UMAC
18099 -------------------------------------------------------------------------*/
18100 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018101 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018102
18103 /*Notify UMAC*/
18104 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18105
Jeff Johnsone7245742012-09-05 17:12:55 -070018106 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018107}/*WDI_ProcessConfigureRxpFilterRsp*/
18108
18109/**
18110 @brief Process Set beacon filter Rsp function (called when a
18111 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018112
18113 @param pWDICtx: pointer to the WLAN DAL context
18114 pEventData: pointer to the event information structure
18115
Jeff Johnson295189b2012-06-20 16:38:30 -070018116 @see
18117 @return Result of the function call
18118*/
18119WDI_Status
18120WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018121(
Jeff Johnson295189b2012-06-20 16:38:30 -070018122 WDI_ControlBlockType* pWDICtx,
18123 WDI_EventInfoType* pEventData
18124)
18125{
18126 WDI_Status wdiStatus;
18127 eHalStatus halStatus;
18128 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
18129 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18130
18131 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018132 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018133 -------------------------------------------------------------------------*/
18134 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18135 ( NULL == pEventData->pEventData))
18136 {
18137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018138 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018139 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018141 }
18142
18143 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
18144
18145 /*-------------------------------------------------------------------------
18146 Extract response and send it to UMAC
18147 -------------------------------------------------------------------------*/
18148 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018149 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018150
18151 /*Notify UMAC*/
18152 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18153
Jeff Johnsone7245742012-09-05 17:12:55 -070018154 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018155}/*WDI_ProcessSetBeaconFilterRsp*/
18156
18157/**
18158 @brief Process remove beacon filter Rsp function (called when a
18159 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018160
18161 @param pWDICtx: pointer to the WLAN DAL context
18162 pEventData: pointer to the event information structure
18163
Jeff Johnson295189b2012-06-20 16:38:30 -070018164 @see
18165 @return Result of the function call
18166*/
18167WDI_Status
18168WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018169(
Jeff Johnson295189b2012-06-20 16:38:30 -070018170 WDI_ControlBlockType* pWDICtx,
18171 WDI_EventInfoType* pEventData
18172)
18173{
18174 WDI_Status wdiStatus;
18175 eHalStatus halStatus;
18176 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
18177 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18178
18179 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018180 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018181 -------------------------------------------------------------------------*/
18182 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18183 ( NULL == pEventData->pEventData))
18184 {
18185 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018186 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018189 }
18190
18191 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
18192
18193 /*-------------------------------------------------------------------------
18194 Extract response and send it to UMAC
18195 -------------------------------------------------------------------------*/
18196 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018197 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018198
18199 /*Notify UMAC*/
18200 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
18201
Jeff Johnsone7245742012-09-05 17:12:55 -070018202 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018203}/*WDI_ProcessRemBeaconFilterRsp*/
18204
18205/**
18206 @brief Process set RSSI thresholds Rsp function (called when a
18207 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018208
18209 @param pWDICtx: pointer to the WLAN DAL context
18210 pEventData: pointer to the event information structure
18211
Jeff Johnson295189b2012-06-20 16:38:30 -070018212 @see
18213 @return Result of the function call
18214*/
18215WDI_Status
18216WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018217(
Jeff Johnson295189b2012-06-20 16:38:30 -070018218 WDI_ControlBlockType* pWDICtx,
18219 WDI_EventInfoType* pEventData
18220)
18221{
18222 WDI_Status wdiStatus;
18223 eHalStatus halStatus;
18224 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
18225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18226
18227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018229 -------------------------------------------------------------------------*/
18230 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18231 ( NULL == pEventData->pEventData))
18232 {
18233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018237 }
18238
18239 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
18240
18241 /*-------------------------------------------------------------------------
18242 Extract response and send it to UMAC
18243 -------------------------------------------------------------------------*/
18244 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018245 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018246
18247 /*Notify UMAC*/
18248 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
18249
Jeff Johnsone7245742012-09-05 17:12:55 -070018250 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018251}/*WDI_ProcessSetRSSIThresoldsRsp*/
18252
18253/**
18254 @brief Process host offload Rsp function (called when a
18255 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018256
18257 @param pWDICtx: pointer to the WLAN DAL context
18258 pEventData: pointer to the event information structure
18259
Jeff Johnson295189b2012-06-20 16:38:30 -070018260 @see
18261 @return Result of the function call
18262*/
18263WDI_Status
18264WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018265(
Jeff Johnson295189b2012-06-20 16:38:30 -070018266 WDI_ControlBlockType* pWDICtx,
18267 WDI_EventInfoType* pEventData
18268)
18269{
18270 WDI_Status wdiStatus;
18271 eHalStatus halStatus;
18272 WDI_HostOffloadCb wdiHostOffloadCb;
18273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18274
18275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018277 -------------------------------------------------------------------------*/
18278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18279 ( NULL == pEventData->pEventData))
18280 {
18281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018285 }
18286
18287 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
18288
18289 /*-------------------------------------------------------------------------
18290 Extract response and send it to UMAC
18291 -------------------------------------------------------------------------*/
18292 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018293 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018294
18295 /*Notify UMAC*/
18296 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
18297
Jeff Johnsone7245742012-09-05 17:12:55 -070018298 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018299}/*WDI_ProcessHostOffloadRsp*/
18300
18301/**
18302 @brief Process keep alive Rsp function (called when a
18303 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018304
18305 @param pWDICtx: pointer to the WLAN DAL context
18306 pEventData: pointer to the event information structure
18307
Jeff Johnson295189b2012-06-20 16:38:30 -070018308 @see
18309 @return Result of the function call
18310*/
18311WDI_Status
18312WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018313(
Jeff Johnson295189b2012-06-20 16:38:30 -070018314 WDI_ControlBlockType* pWDICtx,
18315 WDI_EventInfoType* pEventData
18316)
18317{
18318 WDI_Status wdiStatus;
18319 eHalStatus halStatus;
18320 WDI_KeepAliveCb wdiKeepAliveCb;
18321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18323 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
18324
18325
18326 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018327 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018328 -------------------------------------------------------------------------*/
18329 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18330 ( NULL == pEventData->pEventData))
18331 {
18332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018334 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018335 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018336 }
18337
Jeff Johnsone7245742012-09-05 17:12:55 -070018338 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
18339
Jeff Johnson295189b2012-06-20 16:38:30 -070018340 /*-------------------------------------------------------------------------
18341 Extract response and send it to UMAC
18342 -------------------------------------------------------------------------*/
18343 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018344 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018345
18346 /*Notify UMAC*/
18347 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
18348
Jeff Johnsone7245742012-09-05 17:12:55 -070018349 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018350}/*WDI_ProcessKeepAliveRsp*/
18351
18352/**
18353 @brief Process wowl add ptrn Rsp function (called when a
18354 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018355
18356 @param pWDICtx: pointer to the WLAN DAL context
18357 pEventData: pointer to the event information structure
18358
Jeff Johnson295189b2012-06-20 16:38:30 -070018359 @see
18360 @return Result of the function call
18361*/
18362WDI_Status
18363WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018364(
Jeff Johnson295189b2012-06-20 16:38:30 -070018365 WDI_ControlBlockType* pWDICtx,
18366 WDI_EventInfoType* pEventData
18367)
18368{
Jeff Johnson295189b2012-06-20 16:38:30 -070018369 eHalStatus halStatus;
18370 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018371 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
18372 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
18373
Jeff Johnson295189b2012-06-20 16:38:30 -070018374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18375
18376 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018377 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 -------------------------------------------------------------------------*/
18379 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18380 ( NULL == pEventData->pEventData))
18381 {
18382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018383 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018384 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018385 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018386 }
18387
18388 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
18389
18390 /*-------------------------------------------------------------------------
18391 Extract response and send it to UMAC
18392 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018393 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18394 {
18395 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
18396 pEventData->pEventData,
18397 sizeof(halAddWowlBcastPtrRsp));
18398
18399 wdiWowlAddBcPtrRsp.wdiStatus =
18400 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
18401 }
18402 else
18403 {
18404 halStatus = *((eHalStatus*)pEventData->pEventData);
18405 wdiWowlAddBcPtrRsp.wdiStatus =
18406 WDI_HAL_2_WDI_STATUS(halStatus);
18407 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018408
18409 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018410 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018411
Jeff Johnsone7245742012-09-05 17:12:55 -070018412 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018413}/*WDI_ProcessWowlAddBcPtrnRsp*/
18414
18415/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018416 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018417 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018418
18419 @param pWDICtx: pointer to the WLAN DAL context
18420 pEventData: pointer to the event information structure
18421
Jeff Johnson295189b2012-06-20 16:38:30 -070018422 @see
18423 @return Result of the function call
18424*/
18425WDI_Status
18426WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018427(
Jeff Johnson295189b2012-06-20 16:38:30 -070018428 WDI_ControlBlockType* pWDICtx,
18429 WDI_EventInfoType* pEventData
18430)
18431{
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 eHalStatus halStatus;
18433 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018434 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
18435 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18437
18438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 -------------------------------------------------------------------------*/
18441 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18442 ( NULL == pEventData->pEventData))
18443 {
18444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018448 }
18449
18450 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
18451
18452 /*-------------------------------------------------------------------------
18453 Extract response and send it to UMAC
18454 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018455 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18456 {
18457 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
18458 pEventData->pEventData,
18459 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070018460
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018461 wdiWowlDelBcstPtrRsp.wdiStatus =
18462 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
18463 }
18464 else
18465 {
18466 halStatus = *((eHalStatus*)pEventData->pEventData);
18467 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
18468 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018469 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018470 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018471
Jeff Johnsone7245742012-09-05 17:12:55 -070018472 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018473}/*WDI_ProcessWowlDelBcPtrnRsp*/
18474
18475/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018476 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018477 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018478
18479 @param pWDICtx: pointer to the WLAN DAL context
18480 pEventData: pointer to the event information structure
18481
Jeff Johnson295189b2012-06-20 16:38:30 -070018482 @see
18483 @return Result of the function call
18484*/
18485WDI_Status
18486WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018487(
Jeff Johnson295189b2012-06-20 16:38:30 -070018488 WDI_ControlBlockType* pWDICtx,
18489 WDI_EventInfoType* pEventData
18490)
18491{
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 eHalStatus halStatus;
18493 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018494 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
18495 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18497
18498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018499 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018500 -------------------------------------------------------------------------*/
18501 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18502 ( NULL == pEventData->pEventData))
18503 {
18504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018505 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018508 }
18509
18510 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
18511
18512 /*-------------------------------------------------------------------------
18513 Extract response and send it to UMAC
18514 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018515 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18516 {
18517 wpalMemoryCopy( &halEnterWowlRspParams,
18518 (wpt_uint8*)pEventData->pEventData,
18519 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018520
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018521 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
18522 wdiwowlEnterRsp.status =
18523 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
18524 }
18525 else
18526 {
18527 halStatus = *((eHalStatus*)pEventData->pEventData);
18528 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18529 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018530 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018531 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018532
Jeff Johnsone7245742012-09-05 17:12:55 -070018533 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018534}/*WDI_ProcessWowlEnterRsp*/
18535
18536/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018537 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018538 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018539
18540 @param pWDICtx: pointer to the WLAN DAL context
18541 pEventData: pointer to the event information structure
18542
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 @see
18544 @return Result of the function call
18545*/
18546WDI_Status
18547WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018548(
Jeff Johnson295189b2012-06-20 16:38:30 -070018549 WDI_ControlBlockType* pWDICtx,
18550 WDI_EventInfoType* pEventData
18551)
18552{
Jeff Johnson295189b2012-06-20 16:38:30 -070018553 eHalStatus halStatus;
18554 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018555 tHalExitWowlRspParams halExitWowlRspParams;
18556 WDI_WowlExitRspParamsType wdiWowlExitRsp;
18557
Jeff Johnson295189b2012-06-20 16:38:30 -070018558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18559
18560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018562 -------------------------------------------------------------------------*/
18563 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18564 ( NULL == pEventData->pEventData))
18565 {
18566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018567 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018570 }
18571
18572 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
18573
18574 /*-------------------------------------------------------------------------
18575 Extract response and send it to UMAC
18576 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018577 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
18578 {
18579 wpalMemoryCopy( &halExitWowlRspParams,
18580 pEventData->pEventData,
18581 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070018582
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018583 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
18584 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
18585
18586 }
18587 else
18588 {
18589 halStatus = *((eHalStatus*)pEventData->pEventData);
18590 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
18591 }
Jeff Johnson295189b2012-06-20 16:38:30 -070018592 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070018593 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018594
Jeff Johnsone7245742012-09-05 17:12:55 -070018595 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018596}/*WDI_ProcessWowlExitRsp*/
18597
18598/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018599 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070018600 (called when a response is being received over the bus
18601 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018602
18603 @param pWDICtx: pointer to the WLAN DAL context
18604 pEventData: pointer to the event information structure
18605
Jeff Johnson295189b2012-06-20 16:38:30 -070018606 @see
18607 @return Result of the function call
18608*/
18609WDI_Status
18610WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018611(
Jeff Johnson295189b2012-06-20 16:38:30 -070018612 WDI_ControlBlockType* pWDICtx,
18613 WDI_EventInfoType* pEventData
18614)
18615{
18616 WDI_Status wdiStatus;
18617 eHalStatus halStatus;
18618 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
18619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18620
18621 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018622 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018623 -------------------------------------------------------------------------*/
18624 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18625 ( NULL == pEventData->pEventData))
18626 {
18627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018628 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018630 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018631 }
18632
18633 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
18634
18635 /*-------------------------------------------------------------------------
18636 Extract response and send it to UMAC
18637 -------------------------------------------------------------------------*/
18638 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018639 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018640
18641 /*Notify UMAC*/
18642 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
18643
Jeff Johnsone7245742012-09-05 17:12:55 -070018644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018645}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
18646
18647
18648/**
18649 @brief Process Nv download(called when a response
18650 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070018651
18652 @param pWDICtx: pointer to the WLAN DAL context
18653 pEventData: pointer to the event information structure
18654
Jeff Johnson295189b2012-06-20 16:38:30 -070018655 @see
18656 @return Result of the function call
18657*/
18658WDI_Status
18659WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018660(
Jeff Johnson295189b2012-06-20 16:38:30 -070018661 WDI_ControlBlockType* pWDICtx,
18662 WDI_EventInfoType* pEventData
18663)
18664{
18665
18666 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
18667 tHalNvImgDownloadRspParams halNvDownloadRsp;
18668 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
18669
18670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018672 -------------------------------------------------------------------------*/
18673 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18674 ( NULL == pEventData->pEventData))
18675 {
18676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018677 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018678 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018679 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018680 }
18681
18682 /*-------------------------------------------------------------------------
18683 Extract response and send it to UMAC
18684 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018685 wpalMemoryCopy( &halNvDownloadRsp,
18686 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018687 sizeof(halNvDownloadRsp));
18688
18689 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
18690
18691 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070018692 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
18693 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070018694 {
18695 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070018696 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070018697 }
18698 else
18699 {
18700 /*Reset the Nv related global information in WDI context information */
18701 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
18702 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
18703 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
18704 /*call WDA callback function for last fragment */
18705 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
18706 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
18707 }
18708
Jeff Johnsone7245742012-09-05 17:12:55 -070018709 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018710}
18711#ifdef WLAN_FEATURE_VOWIFI_11R
18712/**
18713 @brief Process Add TSpec Rsp function (called when a response
18714 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018715
18716 @param pWDICtx: pointer to the WLAN DAL context
18717 pEventData: pointer to the event information structure
18718
Jeff Johnson295189b2012-06-20 16:38:30 -070018719 @see
18720 @return Result of the function call
18721*/
18722WDI_Status
18723WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018724(
Jeff Johnson295189b2012-06-20 16:38:30 -070018725 WDI_ControlBlockType* pWDICtx,
18726 WDI_EventInfoType* pEventData
18727)
18728{
18729 WDI_Status wdiStatus;
18730 tAggrAddTsRspParams aggrAddTsRsp;
18731 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
18732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18733
18734 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018735 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018736 -------------------------------------------------------------------------*/
18737 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18738 ( NULL == pEventData->pEventData))
18739 {
18740 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018741 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018742 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018743 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018744 }
18745
18746 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18747
18748 /*-------------------------------------------------------------------------
18749 Extract response and send it to UMAC
18750 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018751 wpalMemoryCopy( &aggrAddTsRsp,
18752 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018753 sizeof(aggrAddTsRsp));
18754
18755 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070018756 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070018757
18758 /*Notify UMAC*/
18759 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18760
Jeff Johnsone7245742012-09-05 17:12:55 -070018761 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018762}/*WDI_ProcessAddTSpecRsp*/
18763#endif /* WLAN_FEATURE_VOWIFI_11R */
18764
18765/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018766 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018767 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018768
18769 @param pWDICtx: pointer to the WLAN DAL context
18770 pEventData: pointer to the event information structure
18771
Jeff Johnson295189b2012-06-20 16:38:30 -070018772 @see
18773 @return Result of the function call
18774*/
18775WDI_Status
18776WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018777(
Jeff Johnson295189b2012-06-20 16:38:30 -070018778 WDI_ControlBlockType* pWDICtx,
18779 WDI_EventInfoType* pEventData
18780)
18781{
18782 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
18783 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
18784 tHalHostResumeRspParams hostResumeRspMsg;
18785 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18786
18787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018788 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018789 -------------------------------------------------------------------------*/
18790 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18791 ( NULL == pEventData->pEventData))
18792 {
18793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018797 }
18798
18799 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
18800
18801 /*-------------------------------------------------------------------------
18802 Extract response and send it to UMAC
18803 -------------------------------------------------------------------------*/
18804
Jeff Johnsone7245742012-09-05 17:12:55 -070018805 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070018806 (wpt_uint8*)pEventData->pEventData,
18807 sizeof(hostResumeRspMsg));
18808
Jeff Johnsone7245742012-09-05 17:12:55 -070018809 wdiResumeRspParams.wdiStatus =
18810 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018811
18812 /*Notify UMAC*/
18813 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
18814
18815 return WDI_STATUS_SUCCESS;
18816}
18817
18818/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018819 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070018820 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018821
18822 @param pWDICtx: pointer to the WLAN DAL context
18823 pEventData: pointer to the event information structure
18824
Jeff Johnson295189b2012-06-20 16:38:30 -070018825 @see
18826 @return Result of the function call
18827*/
18828WDI_Status
18829WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018830(
Jeff Johnson295189b2012-06-20 16:38:30 -070018831 WDI_ControlBlockType* pWDICtx,
18832 WDI_EventInfoType* pEventData
18833)
18834{
18835 WDI_Status wdiStatus;
18836 eHalStatus halStatus;
18837 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
18838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18839
18840 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018841 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018842 -------------------------------------------------------------------------*/
18843 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18844 ( NULL == pEventData->pEventData))
18845 {
18846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018847 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018850 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018851
18852 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070018853
18854 /*-------------------------------------------------------------------------
18855 Extract response and send it to UMAC
18856 -------------------------------------------------------------------------*/
18857 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018858 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018859
18860 /*Notify UMAC*/
18861 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18862
Jeff Johnsone7245742012-09-05 17:12:55 -070018863 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018864}/*WDI_ProcessSetTxPerTrackingRsp*/
18865
18866/*==========================================================================
18867 Indications from HAL
18868 ==========================================================================*/
18869/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018870 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070018871 indication of this kind is being received over the bus
18872 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018873
18874 @param pWDICtx: pointer to the WLAN DAL context
18875 pEventData: pointer to the event information structure
18876
Jeff Johnson295189b2012-06-20 16:38:30 -070018877 @see
18878 @return Result of the function call
18879*/
18880WDI_Status
18881WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018882(
Jeff Johnson295189b2012-06-20 16:38:30 -070018883 WDI_ControlBlockType* pWDICtx,
18884 WDI_EventInfoType* pEventData
18885)
18886{
18887 WDI_LowLevelIndType wdiInd;
18888 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
18889 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18890
18891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018893 -------------------------------------------------------------------------*/
18894 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18895 ( NULL == pEventData->pEventData))
18896 {
18897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018898 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018901 }
18902
18903 /*-------------------------------------------------------------------------
18904 Extract indication and send it to UMAC
18905 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018906 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
18907 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018908 sizeof(tHalRSSINotification));
18909
18910 /*Fill in the indication parameters*/
18911 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
18912 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
18913 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
18914 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
18915 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
18916 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
18917 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
18918 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
18919 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
18920 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
18921 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
18922 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
18923 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Madan Mohan Koyyalamudi313a5932012-12-12 15:59:44 -080018924 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
18925 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070018926
ltimariu034f7d62013-01-24 18:54:33 -080018927 if ( pWDICtx->wdiLowLevelIndCB )
18928 {
18929 /*Notify UMAC of indication*/
18930 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18931 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018932
18933 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018934}/*WDI_ProcessLowRSSIInd*/
18935
18936
18937/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018938 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018939 an indication of this kind is being received over the
18940 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018941
18942 @param pWDICtx: pointer to the WLAN DAL context
18943 pEventData: pointer to the event information structure
18944
Jeff Johnson295189b2012-06-20 16:38:30 -070018945 @see
18946 @return Result of the function call
18947*/
18948WDI_Status
18949WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070018950(
Jeff Johnson295189b2012-06-20 16:38:30 -070018951 WDI_ControlBlockType* pWDICtx,
18952 WDI_EventInfoType* pEventData
18953)
18954{
18955 WDI_Status wdiStatus;
18956 eHalStatus halStatus;
18957 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018958 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070018959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18960
18961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018962 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018963 -------------------------------------------------------------------------*/
18964 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18965 ( NULL == pEventData->pEventData))
18966 {
18967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018968 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018971 }
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018972 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070018973 /*-------------------------------------------------------------------------
18974 Extract indication and send it to UMAC
18975 -------------------------------------------------------------------------*/
18976 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
18977 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018978 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018979
18980 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018981 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala949300d2013-02-27 19:50:05 -080018982 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
18983 halMissedBeaconIndParams->bssIdx;
ltimariu034f7d62013-01-24 18:54:33 -080018984 if ( pWDICtx->wdiLowLevelIndCB )
18985 {
18986 /*Notify UMAC*/
18987 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
18988 }
Jeff Johnsone7245742012-09-05 17:12:55 -070018989
18990 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018991}/*WDI_ProcessMissedBeaconInd*/
18992
18993
18994/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018995 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070018996 an indication of this kind is being received over the
18997 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018998
18999 @param pWDICtx: pointer to the WLAN DAL context
19000 pEventData: pointer to the event information structure
19001
Jeff Johnson295189b2012-06-20 16:38:30 -070019002 @see
19003 @return Result of the function call
19004*/
19005WDI_Status
19006WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019007(
Jeff Johnson295189b2012-06-20 16:38:30 -070019008 WDI_ControlBlockType* pWDICtx,
19009 WDI_EventInfoType* pEventData
19010)
19011{
19012 WDI_Status wdiStatus;
19013 eHalStatus halStatus;
19014 WDI_LowLevelIndType wdiInd;
19015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19016
19017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 -------------------------------------------------------------------------*/
19020 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19021 ( NULL == pEventData->pEventData))
19022 {
19023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019027 }
19028
19029 /*-------------------------------------------------------------------------
19030 Extract indication and send it to UMAC
19031 -------------------------------------------------------------------------*/
19032 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19033 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019034 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019035
19036 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019037 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019038 /* ! TO DO - fill in from HAL struct:
19039 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
19040
ltimariu034f7d62013-01-24 18:54:33 -080019041 if ( pWDICtx->wdiLowLevelIndCB )
19042 {
19043 /*Notify UMAC*/
19044 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19045 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019046
19047 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019048}/*WDI_ProcessUnkAddrFrameInd*/
19049
19050
19051/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019052 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070019053 indication of this kind is being received over the bus
19054 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019055
19056 @param pWDICtx: pointer to the WLAN DAL context
19057 pEventData: pointer to the event information structure
19058
Jeff Johnson295189b2012-06-20 16:38:30 -070019059 @see
19060 @return Result of the function call
19061*/
19062WDI_Status
19063WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019064(
Jeff Johnson295189b2012-06-20 16:38:30 -070019065 WDI_ControlBlockType* pWDICtx,
19066 WDI_EventInfoType* pEventData
19067)
19068{
19069 WDI_LowLevelIndType wdiInd;
19070 tpSirMicFailureInd pHalMicFailureInd;
19071
19072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19073
19074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019075 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019076 -------------------------------------------------------------------------*/
19077 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19078 ( NULL == pEventData->pEventData))
19079 {
19080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019081 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019085
Jeff Johnson295189b2012-06-20 16:38:30 -070019086 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
19087 /*-------------------------------------------------------------------------
19088 Extract indication and send it to UMAC
19089 -------------------------------------------------------------------------*/
19090
19091 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019092 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019093 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
19094 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
19095 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
19096 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
19097 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
19098 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
19099 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
19100 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019101 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070019103 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070019106 pHalMicFailureInd->info.keyId;
19107 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
19108 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
19109 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
19110 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariu034f7d62013-01-24 18:54:33 -080019111
19112 if ( pWDICtx->wdiLowLevelIndCB )
19113 {
19114 /*Notify UMAC*/
19115 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19116 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019117
19118 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019119}/*WDI_ProcessMicFailureInd*/
19120
19121
19122/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019123 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 an indication of this kind is being received over the
19125 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019126
19127 @param pWDICtx: pointer to the WLAN DAL context
19128 pEventData: pointer to the event information structure
19129
Jeff Johnson295189b2012-06-20 16:38:30 -070019130 @see
19131 @return Result of the function call
19132*/
19133WDI_Status
19134WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019135(
Jeff Johnson295189b2012-06-20 16:38:30 -070019136 WDI_ControlBlockType* pWDICtx,
19137 WDI_EventInfoType* pEventData
19138)
19139{
19140 WDI_Status wdiStatus;
19141 eHalStatus halStatus;
19142 WDI_LowLevelIndType wdiInd;
19143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19144
19145 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019146 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019147 -------------------------------------------------------------------------*/
19148 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19149 ( NULL == pEventData->pEventData))
19150 {
19151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019152 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019155 }
19156
19157 /*-------------------------------------------------------------------------
19158 Extract indication and send it to UMAC
19159 -------------------------------------------------------------------------*/
19160
19161 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
19162 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019163 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019164
19165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19166 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070019167
Jeff Johnson295189b2012-06-20 16:38:30 -070019168 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019169 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
19170 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019171
ltimariu034f7d62013-01-24 18:54:33 -080019172 if ( pWDICtx->wdiLowLevelIndCB )
19173 {
19174 /*Notify UMAC*/
19175 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19176 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019177
19178 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019179}/*WDI_ProcessFatalErrorInd*/
19180
19181/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019182 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019183 an indication of this kind is being received over the
19184 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019185
19186 @param pWDICtx: pointer to the WLAN DAL context
19187 pEventData: pointer to the event information structure
19188
Jeff Johnson295189b2012-06-20 16:38:30 -070019189 @see
19190 @return Result of the function call
19191*/
19192WDI_Status
19193WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019194(
Jeff Johnson295189b2012-06-20 16:38:30 -070019195 WDI_ControlBlockType* pWDICtx,
19196 WDI_EventInfoType* pEventData
19197)
19198{
19199 tDeleteStaContextParams halDelSTACtx;
19200 WDI_LowLevelIndType wdiInd;
19201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19202
19203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019204 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019205 -------------------------------------------------------------------------*/
19206 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19207 ( NULL == pEventData->pEventData))
19208 {
19209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019210 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 }
19214
19215 /*-------------------------------------------------------------------------
19216 Extract indication and send it to UMAC
19217 -------------------------------------------------------------------------*/
19218
19219 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019220 wpalMemoryCopy( &halDelSTACtx,
19221 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019222 sizeof(halDelSTACtx));
19223
19224 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019225 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070019226
19227 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
19228 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
19229 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
19230 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
19231
Jeff Johnsone7245742012-09-05 17:12:55 -070019232 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070019233 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019234 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019235 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070019236 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
19237 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070019238
ltimariu034f7d62013-01-24 18:54:33 -080019239 if ( pWDICtx->wdiLowLevelIndCB )
19240 {
19241 /*Notify UMAC*/
19242 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19243 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019244
19245 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019246}/*WDI_ProcessDelSTAInd*/
19247
19248/**
19249*@brief Process Coex Indication function (called when
19250 an indication of this kind is being received over the
19251 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019252
19253 @param pWDICtx: pointer to the WLAN DAL context
19254 pEventData: pointer to the event information structure
19255
Jeff Johnson295189b2012-06-20 16:38:30 -070019256 @see
19257 @return Result of the function call
19258*/
19259WDI_Status
19260WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019261(
Jeff Johnson295189b2012-06-20 16:38:30 -070019262 WDI_ControlBlockType* pWDICtx,
19263 WDI_EventInfoType* pEventData
19264)
19265{
19266 WDI_LowLevelIndType wdiInd;
19267 tCoexIndMsg halCoexIndMsg;
19268 wpt_uint32 index;
19269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19270
19271 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019272 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019273 -------------------------------------------------------------------------*/
19274 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19275 ( NULL == pEventData->pEventData ))
19276 {
19277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019278 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019279 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070019280 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019281 }
19282
19283 /*-------------------------------------------------------------------------
19284 Extract indication and send it to UMAC
19285 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019286 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
19287 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019288 sizeof(halCoexIndMsg.coexIndParams) );
19289
19290 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019291 wdiInd.wdiIndicationType = WDI_COEX_IND;
19292 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070019293 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
19294 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019295 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070019296 }
19297
19298 // DEBUG
19299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19300 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070019301 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
19302 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
19303 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
19304 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
19305 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070019306
ltimariu034f7d62013-01-24 18:54:33 -080019307 if ( pWDICtx->wdiLowLevelIndCB )
19308 {
19309 /*Notify UMAC*/
19310 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19311 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019312
19313 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019314}/*WDI_ProcessCoexInd*/
19315
19316/**
19317*@brief Process Tx Complete Indication function (called when
19318 an indication of this kind is being received over the
19319 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019320
19321 @param pWDICtx: pointer to the WLAN DAL context
19322 pEventData: pointer to the event information structure
19323
Jeff Johnson295189b2012-06-20 16:38:30 -070019324 @see
19325 @return Result of the function call
19326*/
19327WDI_Status
19328WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019329(
Jeff Johnson295189b2012-06-20 16:38:30 -070019330 WDI_ControlBlockType* pWDICtx,
19331 WDI_EventInfoType* pEventData
19332)
19333{
19334 WDI_LowLevelIndType wdiInd;
19335 tTxComplIndMsg halTxComplIndMsg;
19336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19337
19338 /*-------------------------------------------------------------------------
19339 Sanity check
19340 -------------------------------------------------------------------------*/
19341 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19342 ( NULL == pEventData->pEventData ))
19343 {
19344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019346 WDI_ASSERT( 0 );
19347 return WDI_STATUS_E_FAILURE;
19348 }
19349
19350 /*-------------------------------------------------------------------------
19351 Extract indication and send it to UMAC
19352 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019353 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
19354 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019355 sizeof(halTxComplIndMsg.txComplParams) );
19356
19357 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019358 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
19359 wdiInd.wdiIndicationData.tx_complete_status
19360 = halTxComplIndMsg.txComplParams.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070019361
ltimariu034f7d62013-01-24 18:54:33 -080019362 if ( pWDICtx->wdiLowLevelIndCB )
19363 {
19364 /*Notify UMAC*/
19365 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19366 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019367
19368 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019369}/*WDI_ProcessTxCompleteInd*/
19370
Jeff Johnson295189b2012-06-20 16:38:30 -070019371/**
Viral Modi9dc288a2012-12-10 13:09:21 -080019372*@brief Process Noa Start Indication function (called when
19373 an indication of this kind is being received over the
19374 bus from HAL)
19375
19376 @param pWDICtx: pointer to the WLAN DAL context
19377 pEventData: pointer to the event information structure
19378
19379 @see
19380 @return Result of the function call
19381*/
19382WDI_Status
19383WDI_ProcessP2pNoaStartInd
19384(
19385 WDI_ControlBlockType* pWDICtx,
19386 WDI_EventInfoType* pEventData
19387)
19388{
19389 WDI_LowLevelIndType wdiInd;
19390 tNoaStartIndMsg halNoaStartIndMsg;
19391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19392
19393 /*-------------------------------------------------------------------------
19394 Sanity check
19395 -------------------------------------------------------------------------*/
19396 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19397 ( NULL == pEventData->pEventData ))
19398 {
19399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19400 "%s: Invalid parameters", __func__);
19401 WDI_ASSERT( 0 );
19402 return WDI_STATUS_E_FAILURE;
19403 }
19404
19405 /*-------------------------------------------------------------------------
19406 Extract indication and send it to UMAC
19407 -------------------------------------------------------------------------*/
19408 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
19409 pEventData->pEventData,
19410 sizeof(halNoaStartIndMsg.noaStartIndParams) );
19411
19412 /*Fill in the indication parameters*/
19413 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
19414
19415 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
19416 = halNoaStartIndMsg.noaStartIndParams.status;
19417
19418 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
19419 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
19420
19421 /*Notify UMAC*/
19422 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19423
19424 return WDI_STATUS_SUCCESS;
19425}/*WDI_ProcessNoaAttrInd*/
19426
19427/**
Jeff Johnson295189b2012-06-20 16:38:30 -070019428*@brief Process Noa Attr Indication function (called when
19429 an indication of this kind is being received over the
19430 bus from HAL)
19431
19432 @param pWDICtx: pointer to the WLAN DAL context
19433 pEventData: pointer to the event information structure
19434
19435 @see
19436 @return Result of the function call
19437*/
19438WDI_Status
19439WDI_ProcessP2pNoaAttrInd
19440(
19441 WDI_ControlBlockType* pWDICtx,
19442 WDI_EventInfoType* pEventData
19443)
19444{
19445 WDI_LowLevelIndType wdiInd;
19446 tNoaAttrIndMsg halNoaAttrIndMsg;
19447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19448
19449 /*-------------------------------------------------------------------------
19450 Sanity check
19451 -------------------------------------------------------------------------*/
19452 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19453 ( NULL == pEventData->pEventData ))
19454 {
19455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019456 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019457 WDI_ASSERT( 0 );
19458 return WDI_STATUS_E_FAILURE;
19459 }
19460
19461 /*-------------------------------------------------------------------------
19462 Extract indication and send it to UMAC
19463 -------------------------------------------------------------------------*/
19464 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
19465 pEventData->pEventData,
19466 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
19467
19468 /*Fill in the indication parameters*/
19469 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070019470
Jeff Johnson295189b2012-06-20 16:38:30 -070019471 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
19472 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070019473
Jeff Johnson295189b2012-06-20 16:38:30 -070019474 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
19475 = halNoaAttrIndMsg.noaAttrIndParams.index;
19476 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
19477 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
19478 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
19479 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070019480
Jeff Johnson295189b2012-06-20 16:38:30 -070019481 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
19482 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
19483 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
19484 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
19485 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
19486 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
19487 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
19488 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070019489
Jeff Johnson295189b2012-06-20 16:38:30 -070019490 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
19491 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
19492 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
19493 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
19494 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
19495 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
19496 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
19497 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
19498
ltimariu034f7d62013-01-24 18:54:33 -080019499 if ( pWDICtx->wdiLowLevelIndCB )
19500 {
19501 /*Notify UMAC*/
19502 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19503 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019504
19505 return WDI_STATUS_SUCCESS;
19506}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019507
19508/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019509 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070019510 an indication of this kind is being received over the
19511 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019512
19513 @param pWDICtx: pointer to the WLAN DAL context
19514 pEventData: pointer to the event information structure
19515
Jeff Johnson295189b2012-06-20 16:38:30 -070019516 @see
19517 @return Result of the function call
19518*/
19519WDI_Status
19520WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070019521(
Jeff Johnson295189b2012-06-20 16:38:30 -070019522 WDI_ControlBlockType* pWDICtx,
19523 WDI_EventInfoType* pEventData
19524)
19525{
19526 WDI_LowLevelIndType wdiInd;
19527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070019528
Jeff Johnson295189b2012-06-20 16:38:30 -070019529 /*-------------------------------------------------------------------------
19530 Extract indication and send it to UMAC
19531 -------------------------------------------------------------------------*/
19532 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019533 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
19534
ltimariu034f7d62013-01-24 18:54:33 -080019535 if ( pWDICtx->wdiLowLevelIndCB )
19536 {
19537 /*Notify UMAC*/
19538 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
19539 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019540
Jeff Johnsone7245742012-09-05 17:12:55 -070019541 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019542}/*WDI_ProcessTxPerHitInd*/
19543
Jeff Johnson295189b2012-06-20 16:38:30 -070019544/**
19545 @brief WDI_ProcessFTMCommandReq
19546 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019547
19548 @param pWDICtx: pointer to the WLAN DAL context
19549 pEventData: pointer to the event information structure
19550
Jeff Johnson295189b2012-06-20 16:38:30 -070019551 @see
19552 @return Result of the function call
19553*/
19554WDI_Status
19555WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019556(
Jeff Johnson295189b2012-06-20 16:38:30 -070019557 WDI_ControlBlockType* pWDICtx,
19558 WDI_EventInfoType* pEventData
19559)
19560{
19561 WDI_FTMCommandReqType *ftmCommandReq = NULL;
19562 wpt_uint8 *ftmCommandBuffer = NULL;
19563 wpt_uint16 dataOffset;
19564 wpt_uint16 bufferSize;
19565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019566 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019567 -------------------------------------------------------------------------*/
19568 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19569 ( NULL == pEventData->pEventData))
19570
19571 {
19572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019576 }
19577
19578 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
19579
19580 /* Get MSG Buffer */
19581 WDI_GetMessageBuffer(pWDICtx,
19582 WDI_FTM_CMD_REQ,
19583 ftmCommandReq->bodyLength,
19584 &ftmCommandBuffer,
19585 &dataOffset,
19586 &bufferSize);
19587
19588 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
19589 ftmCommandReq->FTMCommandBody,
19590 ftmCommandReq->bodyLength);
19591
19592 /* Send MSG */
19593 return WDI_SendMsg(pWDICtx,
19594 ftmCommandBuffer,
19595 bufferSize,
19596 pEventData->pCBfnc,
19597 pEventData->pUserData,
19598 WDI_FTM_CMD_RESP);
19599}
19600
19601/**
19602 @brief WDI_ProcessFTMCommandRsp
19603 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070019604
19605 @param pWDICtx: pointer to the WLAN DAL context
19606 pEventData: pointer to the event information structure
19607
Jeff Johnson295189b2012-06-20 16:38:30 -070019608 @see
19609 @return Result of the function call
19610*/
19611WDI_Status
19612WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019613(
Jeff Johnson295189b2012-06-20 16:38:30 -070019614 WDI_ControlBlockType* pWDICtx,
19615 WDI_EventInfoType* pEventData
19616)
19617{
19618 WDI_FTMCommandRspCb ftmCMDRspCb;
19619 tProcessPttRspParams *ftmCMDRspData = NULL;
19620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19621
19622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019623 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019624 -------------------------------------------------------------------------*/
19625 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19626 ( NULL == pEventData->pEventData))
19627 {
19628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019629 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019630 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019631 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 }
19633
19634 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
19635
19636 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
19637
Jeff Johnsone7245742012-09-05 17:12:55 -070019638 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
19639 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019640 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
19641
19642 /*Notify UMAC*/
19643 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
19644
Jeff Johnsone7245742012-09-05 17:12:55 -070019645 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019646}
Jeff Johnson295189b2012-06-20 16:38:30 -070019647/**
19648 @brief WDI_ProcessHalDumpCmdReq
19649 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070019650
19651 @param pWDICtx: pointer to the WLAN DAL context
19652 pEventData: pointer to the event information structure
19653
Jeff Johnson295189b2012-06-20 16:38:30 -070019654 @see
19655 @return Result of the function call
19656*/
19657WDI_Status
19658WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070019659(
Jeff Johnson295189b2012-06-20 16:38:30 -070019660 WDI_ControlBlockType* pWDICtx,
19661 WDI_EventInfoType* pEventData
19662)
19663{
19664 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
19665 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
19666 wpt_uint16 usDataOffset = 0;
19667 wpt_uint16 usSendSize = 0;
19668 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019669 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070019670
19671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019672 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019673 -------------------------------------------------------------------------*/
19674 if (( NULL == pEventData ) ||
19675 ( NULL == pEventData->pEventData) ||
19676 ( NULL == pEventData->pCBfnc ))
19677 {
19678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019679 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019681 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019682 }
19683
19684 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
19685 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
19686
19687 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019688 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019689 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070019690 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019691 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070019692 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019693 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070019694 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019695 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070019696 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070019698
Jeff Johnson295189b2012-06-20 16:38:30 -070019699 /*-----------------------------------------------------------------------
19700 Get message buffer
19701 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019702 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070019703 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
19704 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070019705 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070019706 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
19707 {
19708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19709 "Unable to get send buffer in HAL Dump Command req %x %x %x",
19710 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
19711 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019712 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019713 }
19714
Jeff Johnsone7245742012-09-05 17:12:55 -070019715 wpalMemoryCopy( pSendBuffer+usDataOffset,
19716 &halDumpCmdReqMsg.dumpCmdReqParams,
19717 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019718
19719 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070019720 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019721
19722 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019723 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070019724 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019725 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
19726 wdiHALDumpCmdRspCb, pEventData->pUserData,
19727 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070019728}
19729
19730/**
19731 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019732 Process hal Dump Command Response from HAL, simply route to HDD
19733
19734 @param pWDICtx: pointer to the WLAN DAL context
19735 pEventData: pointer to the event information structure
19736
Jeff Johnson295189b2012-06-20 16:38:30 -070019737 @see
19738 @return Result of the function call
19739*/
19740WDI_Status
19741WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019742(
Jeff Johnson295189b2012-06-20 16:38:30 -070019743 WDI_ControlBlockType* pWDICtx,
19744 WDI_EventInfoType* pEventData
19745)
19746{
19747 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019748 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070019749 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
19750
19751 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019752 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019753 -------------------------------------------------------------------------*/
19754 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19755 ( NULL == pEventData->pEventData))
19756 {
19757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019761 }
19762
Jeff Johnsone7245742012-09-05 17:12:55 -070019763 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070019764
19765 /*Initialize the WDI Response structure */
19766 wdiHALDumpCmdRsp.usBufferLen = 0;
19767 wdiHALDumpCmdRsp.pBuffer = NULL;
19768
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019769 wpalMemoryCopy( &halDumpCmdRspParams,
19770 pEventData->pEventData,
19771 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070019772
19773 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019774 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019775
19776 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019777 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070019778 {
19779 /* Copy the response data */
Gopichand Nakkalaab4786d2013-01-07 15:01:01 -080019780 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
19781 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
19782
19783 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
19784 &halDumpCmdRspParams.rspBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070019785 sizeof(wdiHALDumpCmdRsp.usBufferLen));
19786 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019787
Jeff Johnson295189b2012-06-20 16:38:30 -070019788 /*Notify UMAC*/
19789 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
19790
19791 if(wdiHALDumpCmdRsp.pBuffer != NULL)
19792 {
19793 /* Free the allocated buffer */
19794 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
19795 }
19796 return WDI_STATUS_SUCCESS;
19797}
19798
19799/*==========================================================================
19800 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070019801
Jeff Johnson295189b2012-06-20 16:38:30 -070019802 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070019803 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070019804==========================================================================*/
19805/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019806 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019807 when it wishes to send up a notification like the ones
19808 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070019809
Jeff Johnson295189b2012-06-20 16:38:30 -070019810 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019811
19812 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019813 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070019814 wctsNotifyCBData: the callback data of the user
19815
Jeff Johnson295189b2012-06-20 16:38:30 -070019816 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019817
19818 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019819*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019820void
Jeff Johnson295189b2012-06-20 16:38:30 -070019821WDI_NotifyMsgCTSCB
19822(
Jeff Johnsone7245742012-09-05 17:12:55 -070019823 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019824 WCTS_NotifyEventType wctsEvent,
19825 void* wctsNotifyCBData
19826)
19827{
Jeff Johnsone7245742012-09-05 17:12:55 -070019828 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19830
19831 if (NULL == pWDICtx )
19832 {
19833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019834 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019835 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019836 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019837 }
19838
19839 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19840 {
19841 /* callback presumably occurred after close */
19842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019843 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019844 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019845 }
19846
19847 if ( WCTS_EVENT_OPEN == wctsEvent )
19848 {
19849 /*Flag must be set atomically as it is checked from incoming request
19850 functions*/
19851 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019852 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019853
19854 /*Nothing to do - so try to dequeue any pending request that may have
19855 occurred while we were trying to establish this*/
19856 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070019857 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070019858 }
Jeff Johnsone7245742012-09-05 17:12:55 -070019859 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070019860 {
19861 /*Flag must be set atomically as it is checked from incoming request
19862 functions*/
19863 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070019864 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019865
19866 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019867 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070019868 wpalMutexRelease(&pWDICtx->wptMutex);
19869
19870 /*Notify that the Control Channel is closed */
19871 wpalEventSet(&pWDICtx->wctsActionEvent);
19872 }
19873
19874}/*WDI_NotifyMsgCTSCB*/
19875
19876
19877/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019878 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070019879 when it wishes to send up a packet received over the
19880 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070019881
Jeff Johnson295189b2012-06-20 16:38:30 -070019882 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070019883
19884 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070019885 pMsg: the packet
19886 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070019887 wctsRxMsgCBData: the callback data of the user
19888
Jeff Johnson295189b2012-06-20 16:38:30 -070019889 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070019890
19891 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070019892*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019893void
19894WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070019895(
Jeff Johnsone7245742012-09-05 17:12:55 -070019896 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070019897 void* pMsg,
19898 wpt_uint32 uLen,
19899 void* wctsRxMsgCBData
19900)
19901{
Jeff Johnsone7245742012-09-05 17:12:55 -070019902 tHalMsgHeader *pHalMsgHeader;
19903 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070019904 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
19905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19906
19907 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019908 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019909 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019910 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070019911 ( uLen < sizeof(tHalMsgHeader)))
19912 {
19913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019914 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019915 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019916 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019917 }
19918
19919 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
19920 {
19921 /* callback presumably occurred after close */
19922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019923 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019924 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019925 }
19926
Jeff Johnsone7245742012-09-05 17:12:55 -070019927 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070019928 context - so no serialization is necessary here
19929 ! - revisit this assumption */
19930
19931 pHalMsgHeader = (tHalMsgHeader *)pMsg;
19932
19933 if ( uLen != pHalMsgHeader->msgLen )
19934 {
19935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19936 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070019937 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
19938 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070019939 }
19940
19941 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
19942
19943 /*The message itself starts after the header*/
19944 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
19945 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
19946 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
19947 wdiEventData.pUserData = gWDICb.pRspCBUserData;
19948
19949
19950 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
19951 {
19952 /*Stop the timer as the response was received */
19953 /*!UT - check for potential race conditions between stop and response */
19954 wpalTimerStop(&pWDICtx->wptResponseTimer);
19955 }
19956 /* Check if we receive a response message which is not expected */
19957 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
19958 {
19959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19960 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
19961 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070019962 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070019963 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
19964 pWDICtx->wdiExpectedResponse);
19965 /* WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT); */
19966 return;
19967 }
19968
19969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19970 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
19971
19972 /*Post response event to the state machine*/
19973 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
19974
19975}/*WDI_RXMsgCTSCB*/
19976
19977
19978/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019979 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070019980========================================================================*/
19981
19982/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019983 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070019984 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070019985
Jeff Johnson295189b2012-06-20 16:38:30 -070019986 @param pWDICtx - pointer to the control block
19987
19988 @return Result of the function call
19989*/
19990WPT_INLINE WDI_Status
19991WDI_CleanCB
19992(
19993 WDI_ControlBlockType* pWDICtx
19994)
19995{
19996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
19997
19998 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019999 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070020000
Jeff Johnsone7245742012-09-05 17:12:55 -070020001 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
20003 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
20004
20005 WDI_ResetAssocSessions( pWDICtx );
20006
20007 return WDI_STATUS_SUCCESS;
20008}/*WDI_CleanCB*/
20009
20010
20011/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020012 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020013
Jeff Johnsone7245742012-09-05 17:12:55 -070020014
20015 @param pWDICtx: pointer to the WLAN DAL context
20016 pEventData: pointer to the event information structure
20017
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 @see
20019 @return Result of the function call
20020*/
20021WPT_INLINE WDI_Status
20022WDI_ProcessRequest
20023(
20024 WDI_ControlBlockType* pWDICtx,
20025 WDI_EventInfoType* pEventData
20026)
20027{
20028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20029
Jeff Johnsone7245742012-09-05 17:12:55 -070020030 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070020031 already checked these pointers*/
20032
20033 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
20034 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020035 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20037 "Calling request processing function for req %s (%d) %x",
20038 WDI_getReqMsgString(pEventData->wdiRequest),
20039 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
20040 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
20041 }
20042 else
20043 {
20044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020045 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020046 pEventData->wdiRequest);
20047 return WDI_STATUS_E_NOT_IMPLEMENT;
20048 }
20049}/*WDI_ProcessRequest*/
20050
20051
20052/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070020054 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070020055 prefixes it with a send message header
20056
20057 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020058 wdiReqType: type of the request being sent
20059 uBufferLen: message buffer len
20060 pMsgBuffer: resulting allocated buffer
20061 pusDataOffset: offset in the buffer where the caller
20062 can start copying its message data
20063 puBufferSize: the resulting buffer size (offset+buff
20064 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070020065
Jeff Johnson295189b2012-06-20 16:38:30 -070020066 @see
20067 @return Result of the function call
20068*/
20069WDI_Status
20070WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070020071(
20072 WDI_ControlBlockType* pWDICtx,
20073 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070020074 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070020075 wpt_uint8** pMsgBuffer,
20076 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 wpt_uint16* pusBufferSize
20078)
20079{
20080 tHalMsgHeader halMsgHeader;
20081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20082
Jeff Johnsone7245742012-09-05 17:12:55 -070020083 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070020084 again*/
20085
20086 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020087 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070020088 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020089 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070020090 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
20091 if ( NULL == *pMsgBuffer )
20092 {
20093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20094 "Unable to allocate message buffer for req %s (%d)",
20095 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070020096 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070020097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020098 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020099 }
20100
20101 /*-------------------------------------------------------------------------
20102 Fill in the message header
20103 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020104 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
20105 /* Fill msgVersion */
20106#ifdef WLAN_FEATURE_11AC
20107 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020108 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070020109 else
20110#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020111 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070020112
Jeff Johnsone7245742012-09-05 17:12:55 -070020113 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
20114 *pusDataOffset = sizeof(halMsgHeader);
20115 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
20116
20117 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020118}/*WDI_GetMessageBuffer*/
20119
20120
20121/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070020123 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070020124 the CB
20125
20126 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020127 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020128
Jeff Johnson295189b2012-06-20 16:38:30 -070020129 usSendSize size of the buffer to be sent
20130 pRspCb: response callback - save in the WDI
20131 CB
20132 pUserData: user data associated with the
20133 callback
20134 wdiExpectedResponse: the code of the response that is
20135 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070020136
Jeff Johnson295189b2012-06-20 16:38:30 -070020137 @see
20138 @return Result of the function call
20139*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020140WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020141WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070020142(
20143 WDI_ControlBlockType* pWDICtx,
20144 wpt_uint8* pSendBuffer,
20145 wpt_uint32 usSendSize,
20146 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070020147 void* pUserData,
20148 WDI_ResponseEnumType wdiExpectedResponse
20149)
20150{
Jeff Johnsond13512a2012-07-17 11:42:19 -070020151 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020152 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070020153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20154
20155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020156 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070020157 ------------------------------------------------------------------------*/
20158 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020159 pWDICtx->pfncRspCB = pRspCb;
20160 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020161
20162 /*-----------------------------------------------------------------------
20163 Call the CTS to send this message over - free message afterwards
20164 - notify transport failure
20165 Note: CTS is reponsible for freeing the message buffer.
20166 -----------------------------------------------------------------------*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020167 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
20168 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
20169 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020172 "Failed to send message over the bus - catastrophic failure");
20173
Jeff Johnsond13512a2012-07-17 11:42:19 -070020174 wdiStatus = WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020175 }
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020176 else
20177 {
20178 /* even when message was placed in CTS deferred Q, we will treat it
20179 success but log this info
20180 */
20181 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
20182 {
20183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20184 "WDI_SendMsg: message placed in CTS deferred Q, expected "
20185 "response %s (%d)",
20186 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
20187 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020188 WDI_ASSERT(0);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020189 }
20190 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020191
Jeff Johnsond13512a2012-07-17 11:42:19 -070020192 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020193 if ( NULL != pWDICtx->wdiReqStatusCB )
20194 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070020195 /*Inform originator whether request went through or not*/
20196 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
20197 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070020198 pWDICtx->wdiReqStatusCB = NULL;
20199 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070020200 callback(wdiStatus, callbackContext);
20201
20202 /*For WDI requests which have registered a request callback,
20203 inform the WDA caller of the same via setting the return value
20204 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
20205 end up repeating the functonality in the req callback for the
20206 WDI_STATUS_E_FAILURE case*/
20207 if (wdiStatus == WDI_STATUS_E_FAILURE)
20208 wdiStatus = WDI_STATUS_PENDING;
Jeff Johnson295189b2012-06-20 16:38:30 -070020209 }
20210
Jeff Johnsond13512a2012-07-17 11:42:19 -070020211 if ( wdiStatus == WDI_STATUS_SUCCESS )
20212 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020213 /*Start timer for the expected response */
20214 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020215
20216 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020217 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070020218 }
20219 else
20220 {
Jeff Johnson1920a722012-12-10 14:28:09 -080020221 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070020222 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20223 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020224
Jeff Johnsond13512a2012-07-17 11:42:19 -070020225 return wdiStatus;
20226
Jeff Johnson295189b2012-06-20 16:38:30 -070020227}/*WDI_SendMsg*/
20228
20229
20230
20231/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020232 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020233 the bus using the control transport and saves some info
20234 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070020235
20236 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 pSendBuffer: buffer to be sent
20238 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070020239
Jeff Johnson295189b2012-06-20 16:38:30 -070020240 @see
20241 @return Result of the function call
20242*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020243WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070020244WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070020245(
20246 WDI_ControlBlockType* pWDICtx,
20247 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070020248 wpt_uint32 usSendSize
20249)
20250{
20251 wpt_uint32 uStatus ;
20252 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20253
20254 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020255 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 Note: CTS is reponsible for freeing the message buffer.
20257 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020258 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070020259 (void*)pSendBuffer, usSendSize );
20260
20261 /*Inform Upper MAC about the outcome of the request*/
20262 if ( NULL != pWDICtx->wdiReqStatusCB )
20263 {
20264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20265 "Send indication status : %d", uStatus);
20266
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020267 /* even if CTS placed indication into its deferred Q, we treat it
20268 * as success and let CTS drain its queue as per smd interrupt to CTS
20269 */
20270 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 -070020271 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020272 }
20273
20274 /*If sending of the message failed - it is considered catastrophic and
20275 indicates an error with the device*/
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020276 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
20277 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
20278
Jeff Johnson295189b2012-06-20 16:38:30 -070020279 {
20280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020281 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070020282
20283 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
20284 return WDI_STATUS_E_FAILURE;
20285 }
20286
Jeff Johnsone7245742012-09-05 17:12:55 -070020287 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020288}/*WDI_SendIndication*/
20289
20290
20291/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020292 @brief WDI_DetectedDeviceError - called internally by DAL when
20293 it has detected a failure in the device
20294
20295 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070020296 usErrorCode: error code detected by WDI or received
20297 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070020298
Jeff Johnson295189b2012-06-20 16:38:30 -070020299 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070020300 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020301*/
20302void
20303WDI_DetectedDeviceError
20304(
20305 WDI_ControlBlockType* pWDICtx,
20306 wpt_uint16 usErrorCode
20307)
20308{
20309 WDI_LowLevelIndType wdiInd;
20310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
20311
20312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20313 "Device Error detected code: %d - transitioning to stopped state",
20314 usErrorCode);
20315
20316 wpalMutexAcquire(&pWDICtx->wptMutex);
20317
20318 WDI_STATableStop(pWDICtx);
20319
20320 WDI_ResetAssocSessions(pWDICtx);
20321
20322 /*Set the expected state transition to stopped - because the device
20323 experienced a failure*/
20324 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
20325
20326 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020327 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070020328
Jeff Johnsone7245742012-09-05 17:12:55 -070020329 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070020330
20331 /*TO DO: - there should be an attempt to reset the device here*/
20332
20333 wpalMutexRelease(&pWDICtx->wptMutex);
20334
20335 /*------------------------------------------------------------------------
20336 Notify UMAC if a handler is registered
20337 ------------------------------------------------------------------------*/
20338 if (pWDICtx->wdiLowLevelIndCB)
20339 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020340 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
20341 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020342
20343 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
20344 }
20345}/*WDI_DetectedDeviceError*/
20346
20347/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020348 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070020349 we started on send message has expire - this should
20350 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070020351 reply - trigger catastrophic failure
20352 @param
20353
Jeff Johnson295189b2012-06-20 16:38:30 -070020354 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070020355
20356 @see
20357 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070020358*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020359void
Jeff Johnson295189b2012-06-20 16:38:30 -070020360WDI_ResponseTimerCB
20361(
20362 void *pUserData
20363)
20364{
20365 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
20366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20367
20368 if (NULL == pWDICtx )
20369 {
20370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020373 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020374 }
20375
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020376 /*cache current timestamp for debugging */
Gopichand Nakkala0f662fa2012-12-23 08:30:59 -080020377 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020378
20379 /* If response timer is running at this time that means this timer
20380 * event is not for the last request but rather last-to-last request and
20381 * this timer event has come after we recevied respone for last-to-last
20382 * message
20383 */
20384 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
20385 {
20386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20387 "WDI_ResponseTimerCB: timer in running state on timer event, "
20388 "ignore tmr event, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20389 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
20390 return;
20391 }
20392
Jeff Johnson295189b2012-06-20 16:38:30 -070020393 if ( WDI_MAX_RESP != pWDICtx->wdiExpectedResponse )
20394 {
20395
Madan Mohan Koyyalamudibf771072012-11-27 18:50:02 +053020396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070020397 "Timeout occurred while waiting for %s (%d) message from device "
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020398 " - catastrophic failure, timeStampTmrStart: %ld, timeStampTmrExp: %ld",
Jeff Johnson295189b2012-06-20 16:38:30 -070020399 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020400 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20401 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020402 /* WDI timeout means Riva is not responding or SMD communication to Riva
20403 * is not happening. The only possible way to recover from this error
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020404 * is to initiate SSR from APPS
20405 * There is also an option to re-enable wifi, which will eventually
20406 * trigger SSR
20407 */
20408#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070020409 wpalWcnssResetIntr();
20410 /* if this timer fires, it means Riva did not receive the FIQ */
20411 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070020412#else
20413 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20414 wpalWlanReload();
20415#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070020416 }
20417 else
20418 {
20419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalab1fe40e2012-12-21 15:28:36 -080020420 "Timeout occurred but not waiting for any response %d "
20421 "timeStampTmrStart: %ld, timeStampTmrExp: %ld",
20422 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
20423 pWDICtx->uTimeStampRspTmrExp);
Jeff Johnson295189b2012-06-20 16:38:30 -070020424 }
20425
20426 return;
20427
20428}/*WDI_ResponseTimerCB*/
20429
20430
20431/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020432 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070020433
Jeff Johnsone7245742012-09-05 17:12:55 -070020434
20435 @param pWDICtx: pointer to the WLAN DAL context
20436 pEventData: pointer to the event information structure
20437
Jeff Johnson295189b2012-06-20 16:38:30 -070020438 @see
20439 @return Result of the function call
20440*/
20441WPT_INLINE WDI_Status
20442WDI_ProcessResponse
20443(
20444 WDI_ControlBlockType* pWDICtx,
20445 WDI_EventInfoType* pEventData
20446)
20447{
20448 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20449
Jeff Johnsone7245742012-09-05 17:12:55 -070020450 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070020451 already checked these pointers
20452 ! - revisit this assumption */
20453 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
20454 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070020455 {
Jeff Johnson295189b2012-06-20 16:38:30 -070020456 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070020457 "Calling response processing function for resp %s (%d) %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070020458 WDI_getRespMsgString(pEventData->wdiResponse),
20459 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
20460 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
20461 }
20462 else
20463 {
20464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020465 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070020466 pEventData->wdiResponse);
20467 return WDI_STATUS_E_NOT_IMPLEMENT;
20468 }
20469}/*WDI_ProcessResponse*/
20470
20471
20472/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070020473 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070020474=========================================================================*/
20475
20476/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020477 @brief Utility function used by the DAL Core to help queue a
20478 request that cannot be processed right away.
20479 @param
20480
Jeff Johnson295189b2012-06-20 16:38:30 -070020481 pWDICtx: - pointer to the WDI control block
20482 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020483 queued
20484
20485 @see
20486 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020487*/
20488WDI_Status
20489WDI_QueuePendingReq
20490(
20491 WDI_ControlBlockType* pWDICtx,
20492 WDI_EventInfoType* pEventData
20493)
20494{
Jeff Johnsone7245742012-09-05 17:12:55 -070020495 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020496 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070020497 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20499
20500 if ( NULL == pEventDataQueue )
20501 {
20502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020503 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070020504 WDI_ASSERT(0);
20505 return WDI_STATUS_MEM_FAILURE;
20506 }
20507
20508 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20509 pEventDataQueue->pUserData = pEventData->pUserData;
20510 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20511 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020512 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020513
20514 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
20515 {
20516 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070020517
Jeff Johnson295189b2012-06-20 16:38:30 -070020518 if ( NULL == pEventInfo )
20519 {
20520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020521 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070020522 WDI_ASSERT(0);
20523 wpalMemoryFree(pEventDataQueue);
20524 return WDI_STATUS_MEM_FAILURE;
20525 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020526
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20528
20529 }
20530 pEventDataQueue->pEventData = pEventInfo;
20531
20532 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020533 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020534
Jeff Johnsone7245742012-09-05 17:12:55 -070020535 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020536
20537 return WDI_STATUS_SUCCESS;
20538}/*WDI_QueuePendingReq*/
20539
20540/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020541 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070020542 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070020543 @param
20544
20545 pMsg - pointer to the message
20546
20547 @see
20548 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020549*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020550void
Jeff Johnson295189b2012-06-20 16:38:30 -070020551WDI_PALCtrlMsgCB
20552(
20553 wpt_msg *pMsg
20554)
20555{
20556 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070020557 WDI_ControlBlockType* pWDICtx = NULL;
20558 WDI_Status wdiStatus;
20559 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020560 void* pUserData;
20561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20562
20563 if (( NULL == pMsg )||
20564 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
20565 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
20566 {
20567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020568 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020570 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070020571 }
20572
20573 /*Transition back to the state that we had before serialization
20574 - serialization transitions us to BUSY to stop any incomming requests
20575 ! TO DO L: possible race condition here if a request comes in between the
20576 state transition and the post function*/
20577
Jeff Johnsone7245742012-09-05 17:12:55 -070020578 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Jeff Johnson295189b2012-06-20 16:38:30 -070020579
20580 /*-----------------------------------------------------------------------
20581 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070020582 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070020583 -----------------------------------------------------------------------*/
20584 switch ( pEventData->wdiRequest )
20585 {
20586
Jeff Johnsone7245742012-09-05 17:12:55 -070020587 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070020588 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
20589 break;
20590
Jeff Johnson295189b2012-06-20 16:38:30 -070020591 case WDI_NV_DOWNLOAD_REQ:
20592 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
20593 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
20594 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
20595 {
20596 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020597 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020598 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20599 }
20600 else
20601 {
20602 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
20603 }
20604
20605 break;
20606
20607 default:
20608 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
20609 break;
20610 }/*switch ( pEventData->wdiRequest )*/
20611
20612 if ( WDI_STATUS_SUCCESS != wdiStatus )
20613 {
20614 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
20615
20616 if ( NULL != pfnReqStatusCB )
20617 {
20618 /*Fail the request*/
20619 pfnReqStatusCB( wdiStatus, pUserData);
20620 }
20621 }
20622
20623 /* Free data - that was allocated when queueing*/
20624 if( pEventData != NULL )
20625 {
20626 if( pEventData->pEventData != NULL )
20627 {
20628 wpalMemoryFree(pEventData->pEventData);
20629 }
20630 wpalMemoryFree(pEventData);
20631 }
20632
20633 if( pMsg != NULL )
20634 {
20635 wpalMemoryFree(pMsg);
20636 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020637
Jeff Johnson295189b2012-06-20 16:38:30 -070020638}/*WDI_PALCtrlMsgCB*/
20639
20640/**
20641 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070020642 and schedule for execution a pending request
20643 @param
20644
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 pWDICtx: - pointer to the WDI control block
20646 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070020647 queued
20648
20649 @see
20650 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020651*/
20652WDI_Status
20653WDI_DequeuePendingReq
20654(
20655 WDI_ControlBlockType* pWDICtx
20656)
20657{
Jeff Johnsone7245742012-09-05 17:12:55 -070020658 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070020659 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070020661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20662
Jeff Johnsone7245742012-09-05 17:12:55 -070020663 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020664
20665 if ( NULL == pNode )
20666 {
20667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020668 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020669 return WDI_STATUS_SUCCESS;
20670 }
20671
20672 /*The node actually points to the 1st element inside the Event Data struct -
20673 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020674 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020675
20676 /*Serialize processing in the control thread
20677 !TO DO: - check to see if these are all the messages params that need
20678 to be filled in*/
20679 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
20680
20681 if ( NULL == palMsg )
20682 {
20683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070020684 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070020685 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020686 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020688 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070020689 palMsg->callback = WDI_PALCtrlMsgCB;
20690 palMsg->ptr = pEventData;
20691
20692 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020693 palMsg->val = pWDICtx->uGlobalState;
20694
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 /*Transition back to BUSY as we need to handle a queued request*/
20696 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070020697
Jeff Johnson295189b2012-06-20 16:38:30 -070020698 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
20699
20700 return WDI_STATUS_PENDING;
20701}/*WDI_DequeuePendingReq*/
20702
20703
20704/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020705 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020706 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020707 away.- The assoc requests will be queued by BSSID
20708 @param
20709
Jeff Johnson295189b2012-06-20 16:38:30 -070020710 pWDICtx: - pointer to the WDI control block
20711 pEventData: pointer to the evnt info that needs to be queued
20712 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070020713
20714 @see
20715 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020716*/
20717WDI_Status
20718WDI_QueueNewAssocRequest
20719(
20720 WDI_ControlBlockType* pWDICtx,
20721 WDI_EventInfoType* pEventData,
20722 wpt_macAddr macBSSID
20723)
20724{
Jeff Johnsone7245742012-09-05 17:12:55 -070020725 wpt_uint8 i;
20726 WDI_BSSSessionType* pSession = NULL;
20727 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020728 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 void* pEventInfo;
20730 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070020732
Jeff Johnsone7245742012-09-05 17:12:55 -070020733
20734 /*------------------------------------------------------------------------
20735 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 ------------------------------------------------------------------------*/
20737 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
20738 {
20739 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
20740 {
20741 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020742 pSession = &pWDICtx->aBSSSessions[i];
20743 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070020744 }
20745 }
20746
20747 if ( i >= WDI_MAX_BSS_SESSIONS )
20748 {
20749 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020751 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020752
Jeff Johnson295189b2012-06-20 16:38:30 -070020753 /*------------------------------------------------------------------------
20754 Fill in the BSSID for this session and set the usage flag
20755 ------------------------------------------------------------------------*/
20756 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070020757 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020758
20759 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020760 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020761 ------------------------------------------------------------------------*/
20762 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20763 if ( NULL == pEventDataQueue )
20764 {
20765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020766 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 WDI_ASSERT(0);
20768 return WDI_STATUS_MEM_FAILURE;
20769 }
20770
20771 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
20772 if ( NULL == pSessionIdElement )
20773 {
20774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020775 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 WDI_ASSERT(0);
20777 wpalMemoryFree(pEventDataQueue);
20778 return WDI_STATUS_MEM_FAILURE;
20779 }
20780
20781 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20782 if ( NULL == pEventInfo )
20783 {
20784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020785 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 WDI_ASSERT(0);
20787 wpalMemoryFree(pSessionIdElement);
20788 wpalMemoryFree(pEventDataQueue);
20789 return WDI_STATUS_MEM_FAILURE;
20790 }
20791
20792 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20793 pEventDataQueue->pUserData = pEventData->pUserData;
20794 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20795 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020796 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020797
20798 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20799 pEventDataQueue->pEventData = pEventInfo;
20800
20801 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020802 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020803
20804 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020805 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020806
Jeff Johnsone7245742012-09-05 17:12:55 -070020807 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020808
20809 /*We need to maintain a separate list that keeps track of the order in which
20810 the new assoc requests are being queued such that we can start processing
20811 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020812 pSessionIdElement->ucIndex = i;
20813 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020814
20815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20816 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Jeff Johnsone7245742012-09-05 17:12:55 -070020817 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020818
20819 /*Return pending as this is what the status of the request is since it has
20820 been queued*/
20821 return WDI_STATUS_PENDING;
20822}/*WDI_QueueNewAssocRequest*/
20823
20824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020825 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020826 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070020827 away.- The assoc requests will be queued by BSSID
20828 @param
20829
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 pWDICtx: - pointer to the WDI control block
20831 pSession: - session in which to queue
20832 pEventData: pointer to the event info that needs to be
20833 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070020834
20835 @see
20836 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020837*/
20838WDI_Status
20839WDI_QueueAssocRequest
20840(
20841 WDI_ControlBlockType* pWDICtx,
20842 WDI_BSSSessionType* pSession,
20843 WDI_EventInfoType* pEventData
20844)
20845{
Jeff Johnsone7245742012-09-05 17:12:55 -070020846 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020847 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070020848 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070020849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020850
20851 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020852 Sanity check
20853 ------------------------------------------------------------------------*/
20854 if (( NULL == pSession ) || ( NULL == pWDICtx ))
20855 {
20856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020857 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020858
Jeff Johnsone7245742012-09-05 17:12:55 -070020859 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 }
20861
20862 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020863 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070020864 ------------------------------------------------------------------------*/
20865 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
20866 if ( NULL == pEventDataQueue )
20867 {
20868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020869 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020870 WDI_ASSERT(0);
20871 return WDI_STATUS_MEM_FAILURE;
20872 }
20873
20874 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
20875 if ( NULL == pEventInfo )
20876 {
20877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20878 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020879 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020880 WDI_ASSERT(0);
20881 wpalMemoryFree(pEventDataQueue);
20882 return WDI_STATUS_MEM_FAILURE;
20883 }
20884
20885 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
20886 pEventDataQueue->pUserData = pEventData->pUserData;
20887 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
20888 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070020889 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 pEventDataQueue->pEventData = pEventInfo;
20891
20892 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
20893
20894 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020895 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070020896
20897 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020899
Jeff Johnsone7245742012-09-05 17:12:55 -070020900 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020901
20902 /*The result of this operation is pending because the request has been
20903 queued and it will be processed at a later moment in time */
20904 return WDI_STATUS_PENDING;
20905}/*WDI_QueueAssocRequest*/
20906
20907/**
20908 @brief Utility function used by the DAL Core to help dequeue
20909 an association request that was pending
20910 The request will be queued up in front of the main
20911 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070020912 @param
20913
Jeff Johnson295189b2012-06-20 16:38:30 -070020914 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070020915
20916
20917 @see
20918 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070020919*/
20920WDI_Status
20921WDI_DequeueAssocRequest
20922(
20923 WDI_ControlBlockType* pWDICtx
20924)
20925{
Jeff Johnsone7245742012-09-05 17:12:55 -070020926 wpt_list_node* pNode = NULL;
20927 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070020928 WDI_BSSSessionType* pSession;
20929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070020930
20931 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 Sanity check
20933 ------------------------------------------------------------------------*/
20934 if ( NULL == pWDICtx )
20935 {
20936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020938
Jeff Johnsone7245742012-09-05 17:12:55 -070020939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020940 }
20941
20942 /*------------------------------------------------------------------------
20943 An association has been completed => a new association can occur
20944 Check to see if there are any pending associations ->
20945 If so , transfer all the pending requests into the busy queue for
20946 processing
20947 These requests have arrived prior to the requests in the busy queue
20948 (bc they needed to be processed in order to be placed in this queue)
20949 => they will be placed at the front of the busy queue
20950 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020951 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020952
20953 if ( NULL == pNode )
20954 {
20955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070020956 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070020957 return WDI_STATUS_SUCCESS;
20958 }
20959
20960 /*The node actually points to the 1st element inside the Session Id struct -
20961 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020962 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070020963
20964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
20965 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
20966
20967 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
20968 {
20969 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070020970
Jeff Johnson295189b2012-06-20 16:38:30 -070020971 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070020972 the front of the main waiting queue for subsequent execution*/
20973 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020974 while ( NULL != pNode )
20975 {
20976 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020977 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
20978 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070020979 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020980 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020981 }
20982 else
20983 {
20984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070020985 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070020986 WPAL_ASSERT(0);
20987 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070020988 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020989 }
Jeff Johnsone7245742012-09-05 17:12:55 -070020990
Jeff Johnson295189b2012-06-20 16:38:30 -070020991 /*Clean this up as it is no longer needed in order to prevent memory leak*/
20992 wpalMemoryFree(pSessionIdElement);
20993 return WDI_STATUS_SUCCESS;
20994}/*WDI_DequeueAssocRequest*/
20995
20996/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020997 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070020998 pending requests - all req cb will be called with
20999 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070021000 @param
21001
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070021003
21004 @see
21005 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070021006*/
21007WDI_Status
21008WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070021009(
Jeff Johnson295189b2012-06-20 16:38:30 -070021010 WDI_ControlBlockType* pWDICtx
21011)
21012{
Jeff Johnsone7245742012-09-05 17:12:55 -070021013 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021014 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070021015 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021016 void* pUserData;
21017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21018
Jeff Johnsone7245742012-09-05 17:12:55 -070021019 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070021020
21021 /*------------------------------------------------------------------------
21022 Go through all the requests and fail them - this will only be called
21023 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070021024 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070021025 ------------------------------------------------------------------------*/
21026 while( pNode )
21027 {
21028 /*The node actually points to the 1st element inside the Event Data struct -
21029 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021030 pEventDataQueue = (WDI_EventInfoType*)pNode;
21031
Jeff Johnson295189b2012-06-20 16:38:30 -070021032 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
21033 if ( NULL != pfnReqStatusCB )
21034 {
21035 /*Fail the request*/
21036 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
21037 }
21038 /* Free data - that was allocated when queueing */
21039 if ( pEventDataQueue->pEventData != NULL )
21040 {
21041 wpalMemoryFree(pEventDataQueue->pEventData);
21042 }
21043 wpalMemoryFree(pEventDataQueue);
21044
21045 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
21046 {
21047 break;
21048 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021049 }
21050
Jeff Johnson295189b2012-06-20 16:38:30 -070021051 return WDI_STATUS_SUCCESS;
21052}/*WDI_ClearPendingRequests*/
21053
21054/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021055 @brief Helper routine used to init the BSS Sessions in the WDI control block
21056
21057
21058 @param pWDICtx: pointer to the WLAN DAL context
21059
Jeff Johnson295189b2012-06-20 16:38:30 -070021060 @see
21061*/
21062void
21063WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021064(
Jeff Johnson295189b2012-06-20 16:38:30 -070021065 WDI_ControlBlockType* pWDICtx
21066)
21067{
Jeff Johnsone7245742012-09-05 17:12:55 -070021068 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21070
21071 /*-------------------------------------------------------------------------
21072 No Sanity check
21073 -------------------------------------------------------------------------*/
21074 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21075 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021076 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021077 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
21078 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
21079 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
21080 }
21081}/*WDI_ResetAssocSessions*/
21082
21083/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021084 @brief Helper routine used to find a session based on the BSSID
21085
21086
21087 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021088 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070021089 pSession: pointer to the session (if found)
21090
Jeff Johnson295189b2012-06-20 16:38:30 -070021091 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021092 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021093*/
21094wpt_uint8
21095WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021096(
Jeff Johnson295189b2012-06-20 16:38:30 -070021097 WDI_ControlBlockType* pWDICtx,
21098 wpt_macAddr macBSSID,
21099 WDI_BSSSessionType** ppSession
21100)
21101{
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021103 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21104
21105 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021106 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 -------------------------------------------------------------------------*/
21108 if ( NULL == ppSession )
21109 {
21110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021111 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021112 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021113 }
21114
Jeff Johnsone7245742012-09-05 17:12:55 -070021115 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021116
Jeff Johnsone7245742012-09-05 17:12:55 -070021117 /*------------------------------------------------------------------------
21118 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021119 ------------------------------------------------------------------------*/
21120 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21121 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070021122 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
21123 (eWLAN_PAL_TRUE ==
21124 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
21125 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070021126 {
21127 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021128 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021129 return i;
21130 }
21131 }
21132
Jeff Johnsone7245742012-09-05 17:12:55 -070021133 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021134}/*WDI_FindAssocSession*/
21135
21136/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021137 @brief Helper routine used to find a session based on the BSSID
21138
21139
21140 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 ucBSSIdx: BSS Index of the session
21142 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021143
Jeff Johnson295189b2012-06-20 16:38:30 -070021144 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021145 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021146*/
21147wpt_uint8
21148WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021149(
Jeff Johnson295189b2012-06-20 16:38:30 -070021150 WDI_ControlBlockType* pWDICtx,
21151 wpt_uint16 ucBSSIdx,
21152 WDI_BSSSessionType** ppSession
21153)
21154{
Jeff Johnsone7245742012-09-05 17:12:55 -070021155 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21157
21158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021160 -------------------------------------------------------------------------*/
21161 if ( NULL == ppSession )
21162 {
21163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021164 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021165 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021166 }
21167
Jeff Johnsone7245742012-09-05 17:12:55 -070021168 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021169
Jeff Johnsone7245742012-09-05 17:12:55 -070021170 /*------------------------------------------------------------------------
21171 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 ------------------------------------------------------------------------*/
21173 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21174 {
21175 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
21176 {
21177 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021178 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021179 return i;
21180 }
21181 }
21182
Jeff Johnsone7245742012-09-05 17:12:55 -070021183 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021184}/*WDI_FindAssocSessionByBSSIdx*/
21185
21186/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021187 @brief Helper routine used to find a session based on the BSSID
21188
21189
21190 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070021191 ucBSSIdx: BSS Index of the session
21192 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070021193
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021195 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021196*/
21197wpt_uint8
21198WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070021199(
Jeff Johnson295189b2012-06-20 16:38:30 -070021200 WDI_ControlBlockType* pWDICtx,
21201 wpt_uint16 usIdx,
21202 WDI_BSSSessionType** ppSession
21203)
21204{
21205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21206
21207 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021208 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021209 -------------------------------------------------------------------------*/
21210 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
21211 {
21212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021213 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021214 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021215 }
21216
21217 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021218 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070021219
21220 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021221
Jeff Johnson295189b2012-06-20 16:38:30 -070021222}/*WDI_FindAssocSessionByBSSIdx*/
21223
21224/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021225 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021226 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021227
21228
21229 @param pWDICtx: pointer to the WLAN DAL context
21230 pSession: pointer to the session (if found)
21231
Jeff Johnson295189b2012-06-20 16:38:30 -070021232 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021233 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021234*/
21235wpt_uint8
21236WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070021237(
Jeff Johnson295189b2012-06-20 16:38:30 -070021238 WDI_ControlBlockType* pWDICtx,
21239 WDI_BSSSessionType** ppSession
21240)
21241{
Jeff Johnsone7245742012-09-05 17:12:55 -070021242 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21244 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021245 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 -------------------------------------------------------------------------*/
21247 if ( NULL == ppSession )
21248 {
21249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021250 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021251 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021252 }
21253
Jeff Johnsone7245742012-09-05 17:12:55 -070021254 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070021255
Jeff Johnsone7245742012-09-05 17:12:55 -070021256 /*------------------------------------------------------------------------
21257 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070021258 ------------------------------------------------------------------------*/
21259 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21260 {
21261 if ( ! pWDICtx->aBSSSessions[i].bInUse )
21262 {
21263 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021264 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070021265 return i;
21266 }
21267 }
21268
Jeff Johnsone7245742012-09-05 17:12:55 -070021269 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070021270}/*WDI_FindEmptySession*/
21271
21272
21273/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021274 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070021275 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070021276
21277
21278 @param pWDICtx: pointer to the WLAN DAL context
21279
Jeff Johnson295189b2012-06-20 16:38:30 -070021280 @see
21281 @return Number of sessions in use
21282*/
21283wpt_uint8
21284WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070021285(
Jeff Johnson295189b2012-06-20 16:38:30 -070021286 WDI_ControlBlockType* pWDICtx
21287)
21288{
Jeff Johnsone7245742012-09-05 17:12:55 -070021289 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070021290 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021291
21292 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070021293 Count all sessions in use
21294 ------------------------------------------------------------------------*/
21295 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
21296 {
21297 if ( pWDICtx->aBSSSessions[i].bInUse )
21298 {
21299 ucCount++;
21300 }
21301 }
21302
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070021304}/*WDI_GetActiveSessionsCount*/
21305
21306/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021307 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070021308 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070021309
21310
21311 @param pWDICtx: pointer to the WLAN DAL context
21312 pSession: pointer to the session (if found)
21313
Jeff Johnson295189b2012-06-20 16:38:30 -070021314 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021315 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070021316*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021317void
Jeff Johnson295189b2012-06-20 16:38:30 -070021318WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070021319(
Jeff Johnson295189b2012-06-20 16:38:30 -070021320 WDI_ControlBlockType* pWDICtx,
21321 WDI_BSSSessionType* ppSession
21322)
21323{
21324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021325 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021326 -------------------------------------------------------------------------*/
21327 if ( NULL == ppSession )
21328 {
21329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021330 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070021331 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021332 }
21333
Jeff Johnsone7245742012-09-05 17:12:55 -070021334 /*------------------------------------------------------------------------
21335 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070021336 ------------------------------------------------------------------------*/
21337 wpal_list_destroy(&ppSession->wptPendingQueue);
21338 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070021339 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
21340 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021341 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
21342 wpal_list_init(&ppSession->wptPendingQueue);
21343
21344}/*WDI_DeleteSession*/
21345
21346/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021347 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070021348 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070021349 @param
21350
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 WDI_AddStaParams: - pointer to the WDI Add STA params
21352 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070021353
21354 @see
21355 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070021356*/
21357void
21358WDI_AddBcastSTAtoSTATable
21359(
21360 WDI_ControlBlockType* pWDICtx,
21361 WDI_AddStaParams * staParams,
21362 wpt_uint16 usBcastStaIdx
21363)
21364{
21365 WDI_AddStaParams wdiAddSTAParam = {0};
21366 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
21367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
21368
21369 /*---------------------------------------------------------------------
21370 Sanity check
21371 ---------------------------------------------------------------------*/
21372 if ( NULL == staParams )
21373 {
21374 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021375 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021376
Jeff Johnsone7245742012-09-05 17:12:55 -070021377 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 }
21379
21380 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
21381 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
21382 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
21383 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
21384 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
21385 wdiAddSTAParam.dpuSig = staParams->dpuSig;
21386 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
21387 WDI_MAC_ADDR_LEN );
21388 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
21389 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
21390 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
21391 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
21392 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
21393 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
21394 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070021395
Jeff Johnson295189b2012-06-20 16:38:30 -070021396 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
21397}
21398
21399/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021400 @brief NV blob will be divided into fragments of size 4kb and
21401 Sent to HAL
21402
21403 @param pWDICtx: pointer to the WLAN DAL context
21404 pEventData: pointer to the event information structure
21405
Jeff Johnson295189b2012-06-20 16:38:30 -070021406 @see
21407 @return Result of the function call
21408 */
21409
21410WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070021411(
Jeff Johnson295189b2012-06-20 16:38:30 -070021412 WDI_ControlBlockType* pWDICtx,
21413 WDI_EventInfoType* pEventData
21414)
21415{
21416
21417 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
21418 wpt_uint8* pSendBuffer = NULL;
21419 wpt_uint16 usDataOffset = 0;
21420 wpt_uint16 usSendSize = 0;
21421 wpt_uint16 usCurrentFragmentSize =0;
21422 wpt_uint8* pSrcBuffer = NULL;
21423 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
21424 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21425
21426 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
21427 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
21428 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
21429
Jeff Johnsone7245742012-09-05 17:12:55 -070021430 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070021431 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
21432
21433 /* Update the current Fragment Number */
21434 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
21435
21436 /*Update the HAL REQ structure */
21437 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
21438 halNvImgDownloadParam.nvImageReqParams.fragNumber =
21439 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
21440
21441 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070021442 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070021443 image will be sent to HAL*/
21444
Jeff Johnsone7245742012-09-05 17:12:55 -070021445 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070021446 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021448 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070021449 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070021450 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
21451 usCurrentFragmentSize = FRAGMENT_SIZE;
21452
21453 /*Update the HAL REQ structure */
21454 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
21455 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
21456
21457 }
21458 else
Jeff Johnsone7245742012-09-05 17:12:55 -070021459 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021460 usCurrentFragmentSize = FRAGMENT_SIZE;
21461
21462 /*Update the HAL REQ structure */
21463 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
21464 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
21465 }
21466
21467 /*-----------------------------------------------------------------------
21468 Get message buffer
21469 -----------------------------------------------------------------------*/
21470 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
21471 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
21472 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070021473 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070021474 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
21475 {
21476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21477 "Unable to get send buffer in NV Download req %x %x ",
21478 pEventData, pwdiNvDownloadReqParams);
21479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021481 }
21482
21483 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070021484 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070021485 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
21486
21487 /* Appending the NV image fragment */
21488 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
21489 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
21490 usCurrentFragmentSize);
21491
21492 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070021493 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021494
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
21496 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021497 WDI_NV_DOWNLOAD_RESP);
21498
21499}
Jeff Johnsone7245742012-09-05 17:12:55 -070021500/*============================================================================
21501 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070021502 ============================================================================*/
21503/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021504 @brief Helper routine used to find a session based on the BSSID
21505 @param pContext: pointer to the WLAN DAL context
21506 @param pDPContext: pointer to the Datapath context
21507
Jeff Johnson295189b2012-06-20 16:38:30 -070021508 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021509 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070021510*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021511WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021512WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
21513{
21514 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21515
21516 pCB->pDPContext = pDPContext;
21517 return;
21518}
21519
21520/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021521 @brief Helper routine used to find a session based on the BSSID
21522
21523
21524 @param pContext: pointer to the WLAN DAL context
21525
Jeff Johnson295189b2012-06-20 16:38:30 -070021526 @see
21527 @return pointer to Datapath context
21528*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021529WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021530WDI_DS_GetDatapathContext (void *pContext)
21531{
21532 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21533 return pCB->pDPContext;
21534}
21535/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021536 @brief Helper routine used to find a session based on the BSSID
21537
21538
21539 @param pContext: pointer to the WLAN DAL context
21540 @param pDTDriverContext: pointer to the Transport Driver context
21541
Jeff Johnson295189b2012-06-20 16:38:30 -070021542 @see
21543 @return void
21544*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021545WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070021546WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
21547{
21548 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
21549
21550 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021551 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070021552}
21553
21554/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021555 @brief Helper routine used to find a session based on the BSSID
21556
21557
21558 @param pWDICtx: pointer to the WLAN DAL context
21559
Jeff Johnson295189b2012-06-20 16:38:30 -070021560 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070021561 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070021562*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021563WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070021564WDT_GetTransportDriverContext (void *pContext)
21565{
21566 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070021567 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070021568}
21569
Jeff Johnsone7245742012-09-05 17:12:55 -070021570/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070021571 Helper inline converters
21572 ============================================================================*/
21573/*Convert WDI driver type into HAL driver type*/
21574WPT_STATIC WPT_INLINE WDI_Status
21575WDI_HAL_2_WDI_STATUS
21576(
21577 eHalStatus halStatus
21578)
21579{
Jeff Johnsone7245742012-09-05 17:12:55 -070021580 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021581 the chances of getting inlined*/
21582 switch( halStatus )
21583 {
21584 case eHAL_STATUS_SUCCESS:
21585 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21586 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
21587 return WDI_STATUS_SUCCESS;
21588 case eHAL_STATUS_FAILURE:
21589 return WDI_STATUS_E_FAILURE;
21590 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070021591 return WDI_STATUS_MEM_FAILURE;
21592 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070021593 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021594 default:
21595 return WDI_STATUS_DEV_INTERNAL_FAILURE;
21596 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021597
Jeff Johnsone7245742012-09-05 17:12:55 -070021598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021599}/*WDI_HAL_2_WDI_STATUS*/
21600
21601/*Convert WDI request type into HAL request type*/
21602WPT_STATIC WPT_INLINE tHalHostMsgType
21603WDI_2_HAL_REQ_TYPE
21604(
21605 WDI_RequestEnumType wdiReqType
21606)
21607{
Jeff Johnsone7245742012-09-05 17:12:55 -070021608 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021609 the chances of getting inlined*/
21610 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070021611 {
Jeff Johnson295189b2012-06-20 16:38:30 -070021612 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021613 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021615 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021616 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021617 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021618 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021619 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021620 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021621 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021622 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021623 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021624 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021625 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021626 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021627 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021628 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021629 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021630 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021631 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021632 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021633 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021634 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021635 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021636 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021637 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021638 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021639 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021640 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021641 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021642 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021643 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021644 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021645 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021646 return WLAN_HAL_RMV_STAKEY_REQ;
21647 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021648 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021649 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021650 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021651 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021652 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021653 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021654 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021655 case WDI_DEL_BA_REQ:
21656 return WLAN_HAL_DEL_BA_REQ;
21657#ifdef FEATURE_WLAN_CCX
21658 case WDI_TSM_STATS_REQ:
21659 return WLAN_HAL_TSM_STATS_REQ;
21660#endif
21661 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021662 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021663 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021664 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021665 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021666 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021667 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021670 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021671 case WDI_ADD_BA_SESSION_REQ:
21672 return WLAN_HAL_ADD_BA_SESSION_REQ;
21673 case WDI_TRIGGER_BA_REQ:
21674 return WLAN_HAL_TRIGGER_BA_REQ;
21675 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021676 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021677 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021678 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021679 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
21680 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
21681 case WDI_SET_MAX_TX_POWER_REQ:
21682 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
schangd82195a2013-03-13 18:41:24 -070021683 case WDI_SET_TX_POWER_REQ:
21684 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
21686 return WLAN_HAL_SET_P2P_GONOA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021687 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021688 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021689 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021690 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021691 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021692 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021693 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021694 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021695 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021696 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021697 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021698 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021699 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021700 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021701 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021702 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021703 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021704 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021705 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021706 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021707 case WDI_REM_BEACON_FILTER_REQ:
21708 return WLAN_HAL_REM_BCN_FILTER_REQ;
21709 case WDI_SET_RSSI_THRESHOLDS_REQ:
21710 return WLAN_HAL_SET_RSSI_THRESH_REQ;
21711 case WDI_HOST_OFFLOAD_REQ:
21712 return WLAN_HAL_HOST_OFFLOAD_REQ;
21713 case WDI_WOWL_ADD_BC_PTRN_REQ:
21714 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
21715 case WDI_WOWL_DEL_BC_PTRN_REQ:
21716 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
21717 case WDI_WOWL_ENTER_REQ:
21718 return WLAN_HAL_ENTER_WOWL_REQ;
21719 case WDI_WOWL_EXIT_REQ:
21720 return WLAN_HAL_EXIT_WOWL_REQ;
21721 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
21722 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
21723 case WDI_NV_DOWNLOAD_REQ:
21724 return WLAN_HAL_DOWNLOAD_NV_REQ;
21725 case WDI_FLUSH_AC_REQ:
21726 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
21727 case WDI_BTAMP_EVENT_REQ:
21728 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
21729#ifdef WLAN_FEATURE_VOWIFI_11R
21730 case WDI_AGGR_ADD_TS_REQ:
21731 return WLAN_HAL_AGGR_ADD_TS_REQ;
21732#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070021733 case WDI_FTM_CMD_REQ:
21734 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021735 case WDI_ADD_STA_SELF_REQ:
21736 return WLAN_HAL_ADD_STA_SELF_REQ;
21737 case WDI_DEL_STA_SELF_REQ:
21738 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070021739#ifdef FEATURE_OEM_DATA_SUPPORT
21740 case WDI_START_OEM_DATA_REQ:
21741 return WLAN_HAL_START_OEM_DATA_REQ;
21742#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021743 case WDI_HOST_RESUME_REQ:
21744 return WLAN_HAL_HOST_RESUME_REQ;
21745 case WDI_HOST_SUSPEND_IND:
21746 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi28260002013-01-10 21:56:05 -080021747 case WDI_TRAFFIC_STATS_IND:
21748 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctota96bb432013-03-18 10:26:30 -070021749#ifdef WLAN_FEATURE_11W
21750 case WDI_EXCLUDE_UNENCRYPTED_IND:
21751 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
21752#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021753 case WDI_KEEP_ALIVE_REQ:
21754 return WLAN_HAL_KEEP_ALIVE_REQ;
21755
21756#ifdef FEATURE_WLAN_SCAN_PNO
21757 case WDI_SET_PREF_NETWORK_REQ:
21758 return WLAN_HAL_SET_PREF_NETWORK_REQ;
21759 case WDI_SET_RSSI_FILTER_REQ:
21760 return WLAN_HAL_SET_RSSI_FILTER_REQ;
21761 case WDI_UPDATE_SCAN_PARAMS_REQ:
21762 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
21763#endif // FEATURE_WLAN_SCAN_PNO
21764 case WDI_SET_TX_PER_TRACKING_REQ:
21765 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
21766#ifdef WLAN_FEATURE_PACKET_FILTERING
21767 case WDI_8023_MULTICAST_LIST_REQ:
21768 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
21769 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070021770 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021771 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
21772 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
21773 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
21774 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
21775#endif // WLAN_FEATURE_PACKET_FILTERING
21776 case WDI_HAL_DUMP_CMD_REQ:
21777 return WLAN_HAL_DUMP_COMMAND_REQ;
21778#ifdef WLAN_FEATURE_GTK_OFFLOAD
21779 case WDI_GTK_OFFLOAD_REQ:
21780 return WLAN_HAL_GTK_OFFLOAD_REQ;
21781 case WDI_GTK_OFFLOAD_GETINFO_REQ:
21782 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
21783#endif /* WLAN_FEATURE_GTK_OFFLOAD */
21784
21785 case WDI_INIT_SCAN_CON_REQ:
21786 return WLAN_HAL_INIT_SCAN_CON_REQ;
21787 case WDI_SET_POWER_PARAMS_REQ:
21788 return WLAN_HAL_SET_POWER_PARAMS_REQ;
21789 case WDI_SET_TM_LEVEL_REQ:
21790 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
21791 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
21792 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070021793#ifdef WLAN_FEATURE_11AC
21794 case WDI_UPDATE_VHT_OP_MODE_REQ:
21795 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
21796#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080021797 case WDI_GET_ROAM_RSSI_REQ:
21798 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070021799 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070021800 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070021801 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021802
Jeff Johnson295189b2012-06-20 16:38:30 -070021803}/*WDI_2_HAL_REQ_TYPE*/
21804
21805/*Convert WDI response type into HAL response type*/
21806WPT_STATIC WPT_INLINE WDI_ResponseEnumType
21807HAL_2_WDI_RSP_TYPE
21808(
21809 tHalHostMsgType halMsg
21810)
21811{
Jeff Johnsone7245742012-09-05 17:12:55 -070021812 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 the chances of getting inlined*/
21814 switch( halMsg )
21815 {
21816 case WLAN_HAL_START_RSP:
21817 return WDI_START_RESP;
21818 case WLAN_HAL_STOP_RSP:
21819 return WDI_STOP_RESP;
21820 case WLAN_HAL_INIT_SCAN_RSP:
21821 return WDI_INIT_SCAN_RESP;
21822 case WLAN_HAL_START_SCAN_RSP:
21823 return WDI_START_SCAN_RESP;
21824 case WLAN_HAL_END_SCAN_RSP:
21825 return WDI_END_SCAN_RESP;
21826 case WLAN_HAL_FINISH_SCAN_RSP:
21827 return WDI_FINISH_SCAN_RESP;
21828 case WLAN_HAL_CONFIG_STA_RSP:
21829 return WDI_CONFIG_STA_RESP;
21830 case WLAN_HAL_DELETE_STA_RSP:
21831 return WDI_DEL_STA_RESP;
21832 case WLAN_HAL_CONFIG_BSS_RSP:
21833 return WDI_CONFIG_BSS_RESP;
21834 case WLAN_HAL_DELETE_BSS_RSP:
21835 return WDI_DEL_BSS_RESP;
21836 case WLAN_HAL_JOIN_RSP:
21837 return WDI_JOIN_RESP;
21838 case WLAN_HAL_POST_ASSOC_RSP:
21839 return WDI_POST_ASSOC_RESP;
21840 case WLAN_HAL_SET_BSSKEY_RSP:
21841 return WDI_SET_BSS_KEY_RESP;
21842 case WLAN_HAL_SET_STAKEY_RSP:
21843 return WDI_SET_STA_KEY_RESP;
21844 case WLAN_HAL_RMV_BSSKEY_RSP:
21845 return WDI_RMV_BSS_KEY_RESP;
21846 case WLAN_HAL_RMV_STAKEY_RSP:
21847 return WDI_RMV_STA_KEY_RESP;
21848 case WLAN_HAL_SET_BCASTKEY_RSP:
21849 return WDI_SET_STA_BCAST_KEY_RESP;
21850 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
21851 // return WDI_RMV_STA_BCAST_KEY_RESP;
21852 case WLAN_HAL_ADD_TS_RSP:
21853 return WDI_ADD_TS_RESP;
21854 case WLAN_HAL_DEL_TS_RSP:
21855 return WDI_DEL_TS_RESP;
21856 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
21857 return WDI_UPD_EDCA_PRMS_RESP;
21858 case WLAN_HAL_ADD_BA_RSP:
21859 return WDI_ADD_BA_RESP;
21860 case WLAN_HAL_DEL_BA_RSP:
21861 return WDI_DEL_BA_RESP;
21862#ifdef FEATURE_WLAN_CCX
21863 case WLAN_HAL_TSM_STATS_RSP:
21864 return WDI_TSM_STATS_RESP;
21865#endif
21866 case WLAN_HAL_CH_SWITCH_RSP:
21867 return WDI_CH_SWITCH_RESP;
21868 case WLAN_HAL_SET_LINK_ST_RSP:
21869 return WDI_SET_LINK_ST_RESP;
21870 case WLAN_HAL_GET_STATS_RSP:
21871 return WDI_GET_STATS_RESP;
21872 case WLAN_HAL_UPDATE_CFG_RSP:
21873 return WDI_UPDATE_CFG_RESP;
21874 case WLAN_HAL_ADD_BA_SESSION_RSP:
21875 return WDI_ADD_BA_SESSION_RESP;
21876 case WLAN_HAL_TRIGGER_BA_RSP:
21877 return WDI_TRIGGER_BA_RESP;
21878 case WLAN_HAL_UPDATE_BEACON_RSP:
21879 return WDI_UPD_BCON_PRMS_RESP;
21880 case WLAN_HAL_SEND_BEACON_RSP:
21881 return WDI_SND_BCON_RESP;
21882 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
21883 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
21884 /*Indications*/
21885 case WLAN_HAL_RSSI_NOTIFICATION_IND:
21886 return WDI_HAL_RSSI_NOTIFICATION_IND;
21887 case WLAN_HAL_MISSED_BEACON_IND:
21888 return WDI_HAL_MISSED_BEACON_IND;
21889 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
21890 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
21891 case WLAN_HAL_MIC_FAILURE_IND:
21892 return WDI_HAL_MIC_FAILURE_IND;
21893 case WLAN_HAL_FATAL_ERROR_IND:
21894 return WDI_HAL_FATAL_ERROR_IND;
21895 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
21896 return WDI_HAL_DEL_STA_IND;
21897 case WLAN_HAL_COEX_IND:
21898 return WDI_HAL_COEX_IND;
21899 case WLAN_HAL_OTA_TX_COMPL_IND:
21900 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021901 case WLAN_HAL_P2P_NOA_ATTR_IND:
21902 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modi9dc288a2012-12-10 13:09:21 -080021903 case WLAN_HAL_P2P_NOA_START_IND:
21904 return WDI_HAL_P2P_NOA_START_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021905 case WLAN_HAL_TX_PER_HIT_IND:
21906 return WDI_HAL_TX_PER_HIT_IND;
21907 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
21908 return WDI_SET_MAX_TX_POWER_RESP;
schangd82195a2013-03-13 18:41:24 -070021909 case WLAN_HAL_SET_TX_POWER_RSP:
21910 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021911 case WLAN_HAL_SET_P2P_GONOA_RSP:
21912 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021913 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021914 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021915 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021916 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021917 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021918 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021919 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021920 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021921 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021922 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021923 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021924 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021925 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021926 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021927 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021928 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021929 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021930 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021931 case WLAN_HAL_ADD_BCN_FILTER_RSP:
21932 return WDI_SET_BEACON_FILTER_RESP;
21933 case WLAN_HAL_REM_BCN_FILTER_RSP:
21934 return WDI_REM_BEACON_FILTER_RESP;
21935 case WLAN_HAL_SET_RSSI_THRESH_RSP:
21936 return WDI_SET_RSSI_THRESHOLDS_RESP;
21937 case WLAN_HAL_HOST_OFFLOAD_RSP:
21938 return WDI_HOST_OFFLOAD_RESP;
21939 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
21940 return WDI_WOWL_ADD_BC_PTRN_RESP;
21941 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
21942 return WDI_WOWL_DEL_BC_PTRN_RESP;
21943 case WLAN_HAL_ENTER_WOWL_RSP:
21944 return WDI_WOWL_ENTER_RESP;
21945 case WLAN_HAL_EXIT_WOWL_RSP:
21946 return WDI_WOWL_EXIT_RESP;
21947 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
21948 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
21949 case WLAN_HAL_DOWNLOAD_NV_RSP:
21950 return WDI_NV_DOWNLOAD_RESP;
21951 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
21952 return WDI_FLUSH_AC_RESP;
21953 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
21954 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021955 case WLAN_HAL_PROCESS_PTT_RSP:
21956 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 case WLAN_HAL_ADD_STA_SELF_RSP:
21958 return WDI_ADD_STA_SELF_RESP;
21959case WLAN_HAL_DEL_STA_SELF_RSP:
21960 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070021961#ifdef FEATURE_OEM_DATA_SUPPORT
21962 case WLAN_HAL_START_OEM_DATA_RSP:
21963 return WDI_START_OEM_DATA_RESP;
21964#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070021965 case WLAN_HAL_HOST_RESUME_RSP:
21966 return WDI_HOST_RESUME_RESP;
21967 case WLAN_HAL_KEEP_ALIVE_RSP:
21968 return WDI_KEEP_ALIVE_RESP;
21969#ifdef FEATURE_WLAN_SCAN_PNO
21970 case WLAN_HAL_SET_PREF_NETWORK_RSP:
21971 return WDI_SET_PREF_NETWORK_RESP;
21972 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070021973 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070021974 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
21975 return WDI_UPDATE_SCAN_PARAMS_RESP;
21976 case WLAN_HAL_PREF_NETW_FOUND_IND:
21977 return WDI_HAL_PREF_NETWORK_FOUND_IND;
21978#endif // FEATURE_WLAN_SCAN_PNO
21979 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
21980 return WDI_SET_TX_PER_TRACKING_RESP;
21981#ifdef WLAN_FEATURE_PACKET_FILTERING
21982 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
21983 return WDI_8023_MULTICAST_LIST_RESP;
21984 case WLAN_HAL_SET_PACKET_FILTER_RSP:
21985 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
21986 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
21987 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
21988 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
21989 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
21990#endif // WLAN_FEATURE_PACKET_FILTERING
21991
21992 case WLAN_HAL_DUMP_COMMAND_RSP:
21993 return WDI_HAL_DUMP_CMD_RESP;
21994 case WLAN_HAL_SET_POWER_PARAMS_RSP:
21995 return WDI_SET_POWER_PARAMS_RESP;
21996#ifdef WLAN_FEATURE_VOWIFI_11R
21997 case WLAN_HAL_AGGR_ADD_TS_RSP:
21998 return WDI_AGGR_ADD_TS_RESP;
21999#endif
22000
22001#ifdef WLAN_FEATURE_GTK_OFFLOAD
22002 case WLAN_HAL_GTK_OFFLOAD_RSP:
22003 return WDI_GTK_OFFLOAD_RESP;
22004 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
22005 return WDI_GTK_OFFLOAD_GETINFO_RESP;
22006#endif /* WLAN_FEATURE_GTK_OFFLOAD */
22007#ifdef WLAN_WAKEUP_EVENTS
22008 case WLAN_HAL_WAKE_REASON_IND:
22009 return WDI_HAL_WAKE_REASON_IND;
22010#endif // WLAN_WAKEUP_EVENTS
22011
22012 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
22013 return WDI_SET_TM_LEVEL_RESP;
22014 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
22015 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070022016#ifdef WLAN_FEATURE_11AC
22017 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
22018 return WDI_UPDATE_VHT_OP_MODE_RESP;
22019#endif
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022020#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22021 case WLAN_HAL_GET_ROAM_RSSI_RSP:
22022 return WDI_GET_ROAM_RSSI_RESP;
22023#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022024 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070022025 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022026 }
22027
22028}/*HAL_2_WDI_RSP_TYPE*/
22029
22030
22031/*Convert WDI driver type into HAL driver type*/
22032WPT_STATIC WPT_INLINE tDriverType
22033WDI_2_HAL_DRV_TYPE
22034(
22035 WDI_DriverType wdiDriverType
22036)
22037{
Jeff Johnsone7245742012-09-05 17:12:55 -070022038 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022039 the chances of getting inlined*/
22040 switch( wdiDriverType )
22041 {
22042 case WDI_DRIVER_TYPE_PRODUCTION:
22043 return eDRIVER_TYPE_PRODUCTION;
22044 case WDI_DRIVER_TYPE_MFG:
22045 return eDRIVER_TYPE_MFG;
22046 case WDI_DRIVER_TYPE_DVT:
22047 return eDRIVER_TYPE_DVT;
22048 }
22049
Jeff Johnsone7245742012-09-05 17:12:55 -070022050 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022051}/*WDI_2_HAL_DRV_TYPE*/
22052
22053
22054/*Convert WDI stop reason into HAL stop reason*/
22055WPT_STATIC WPT_INLINE tHalStopType
22056WDI_2_HAL_STOP_REASON
22057(
22058 WDI_StopType wdiDriverType
22059)
22060{
Jeff Johnsone7245742012-09-05 17:12:55 -070022061 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022062 the chances of getting inlined*/
22063 switch( wdiDriverType )
22064 {
22065 case WDI_STOP_TYPE_SYS_RESET:
22066 return HAL_STOP_TYPE_SYS_RESET;
22067 case WDI_DRIVER_TYPE_MFG:
22068 return WDI_STOP_TYPE_SYS_DEEP_SLEEP;
22069 case WDI_STOP_TYPE_RF_KILL:
22070 return HAL_STOP_TYPE_RF_KILL;
22071 }
22072
Jeff Johnsone7245742012-09-05 17:12:55 -070022073 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022074}/*WDI_2_HAL_STOP_REASON*/
22075
22076
22077/*Convert WDI scan mode type into HAL scan mode type*/
22078WPT_STATIC WPT_INLINE eHalSysMode
22079WDI_2_HAL_SCAN_MODE
22080(
22081 WDI_ScanMode wdiScanMode
22082)
22083{
Jeff Johnsone7245742012-09-05 17:12:55 -070022084 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022085 the chances of getting inlined*/
22086 switch( wdiScanMode )
22087 {
22088 case WDI_SCAN_MODE_NORMAL:
22089 return eHAL_SYS_MODE_NORMAL;
22090 case WDI_SCAN_MODE_LEARN:
22091 return eHAL_SYS_MODE_LEARN;
22092 case WDI_SCAN_MODE_SCAN:
22093 return eHAL_SYS_MODE_SCAN;
22094 case WDI_SCAN_MODE_PROMISC:
22095 return eHAL_SYS_MODE_PROMISC;
22096 case WDI_SCAN_MODE_SUSPEND_LINK:
22097 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070022098 case WDI_SCAN_MODE_ROAM_SCAN:
22099 return eHAL_SYS_MODE_ROAM_SCAN;
22100 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
22101 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070022102 }
22103
Jeff Johnsone7245742012-09-05 17:12:55 -070022104 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022105}/*WDI_2_HAL_SCAN_MODE*/
22106
22107/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022108WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070022109WDI_2_HAL_SEC_CH_OFFSET
22110(
22111 WDI_HTSecondaryChannelOffset wdiSecChOffset
22112)
22113{
Jeff Johnsone7245742012-09-05 17:12:55 -070022114 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 the chances of getting inlined*/
22116 switch( wdiSecChOffset )
22117 {
22118 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022119 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070022121 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070022122 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070022123 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
22124#ifdef WLAN_FEATURE_11AC
22125 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22126 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22127 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22128 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22129 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22130 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22131 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22132 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22133 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22134 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22135 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22136 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22137 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22138 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22139#endif
22140 default:
22141 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022142 }
22143
Jeff Johnsone7245742012-09-05 17:12:55 -070022144 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070022145}/*WDI_2_HAL_SEC_CH_OFFSET*/
22146
22147/*Convert WDI BSS type into HAL BSS type*/
22148WPT_STATIC WPT_INLINE tSirBssType
22149WDI_2_HAL_BSS_TYPE
22150(
22151 WDI_BssType wdiBSSType
22152)
22153{
Jeff Johnsone7245742012-09-05 17:12:55 -070022154 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 the chances of getting inlined*/
22156 switch( wdiBSSType )
22157 {
22158 case WDI_INFRASTRUCTURE_MODE:
22159 return eSIR_INFRASTRUCTURE_MODE;
22160 case WDI_INFRA_AP_MODE:
22161 return eSIR_INFRA_AP_MODE;
22162 case WDI_IBSS_MODE:
22163 return eSIR_IBSS_MODE;
22164 case WDI_BTAMP_STA_MODE:
22165 return eSIR_BTAMP_STA_MODE;
22166 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070022167 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022168 case WDI_BSS_AUTO_MODE:
22169 return eSIR_AUTO_MODE;
22170 }
22171
Jeff Johnsone7245742012-09-05 17:12:55 -070022172 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022173}/*WDI_2_HAL_BSS_TYPE*/
22174
22175/*Convert WDI NW type into HAL NW type*/
22176WPT_STATIC WPT_INLINE tSirNwType
22177WDI_2_HAL_NW_TYPE
22178(
22179 WDI_NwType wdiNWType
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 switch( wdiNWType )
22185 {
22186 case WDI_11A_NW_TYPE:
22187 return eSIR_11A_NW_TYPE;
22188 case WDI_11B_NW_TYPE:
22189 return eSIR_11B_NW_TYPE;
22190 case WDI_11G_NW_TYPE:
22191 return eSIR_11G_NW_TYPE;
22192 case WDI_11N_NW_TYPE:
22193 return eSIR_11N_NW_TYPE;
22194 }
22195
Jeff Johnsone7245742012-09-05 17:12:55 -070022196 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022197}/*WDI_2_HAL_NW_TYPE*/
22198
22199/*Convert WDI chanel bonding type into HAL cb type*/
22200WPT_STATIC WPT_INLINE ePhyChanBondState
22201WDI_2_HAL_CB_STATE
22202(
22203 WDI_PhyChanBondState wdiCbState
22204)
22205{
Jeff Johnsone7245742012-09-05 17:12:55 -070022206 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022207 the chances of getting inlined*/
22208 switch ( wdiCbState )
22209 {
22210 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
22211 return PHY_SINGLE_CHANNEL_CENTERED;
22212 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
22213 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
22214 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
22215 return PHY_DOUBLE_CHANNEL_CENTERED;
22216 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
22217 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070022218#ifdef WLAN_FEATURE_11AC
22219 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
22220 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
22221 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
22222 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
22223 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
22224 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
22225 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
22226 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
22227 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
22228 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
22229 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
22230 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
22231 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
22232 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
22233#endif
22234 case WDI_MAX_CB_STATE:
22235 default:
22236 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022237 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022238
Jeff Johnson295189b2012-06-20 16:38:30 -070022239 return PHY_CHANNEL_BONDING_STATE_MAX;
22240}/*WDI_2_HAL_CB_STATE*/
22241
22242/*Convert WDI chanel bonding type into HAL cb type*/
22243WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
22244WDI_2_HAL_HT_OPER_MODE
22245(
22246 WDI_HTOperatingMode wdiHTOperMode
22247)
22248{
Jeff Johnsone7245742012-09-05 17:12:55 -070022249 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022250 the chances of getting inlined*/
22251 switch ( wdiHTOperMode )
22252 {
22253 case WDI_HT_OP_MODE_PURE:
22254 return eSIR_HT_OP_MODE_PURE;
22255 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
22256 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
22257 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
22258 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
22259 case WDI_HT_OP_MODE_MIXED:
22260 return eSIR_HT_OP_MODE_MIXED;
22261 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022262
Jeff Johnson295189b2012-06-20 16:38:30 -070022263 return eSIR_HT_OP_MODE_MAX;
22264}/*WDI_2_HAL_HT_OPER_MODE*/
22265
22266/*Convert WDI mimo PS type into HAL mimo PS type*/
22267WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
22268WDI_2_HAL_MIMO_PS
22269(
22270 WDI_HTMIMOPowerSaveState wdiHTOperMode
22271)
22272{
Jeff Johnsone7245742012-09-05 17:12:55 -070022273 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022274 the chances of getting inlined*/
22275 switch ( wdiHTOperMode )
22276 {
22277 case WDI_HT_MIMO_PS_STATIC:
22278 return eSIR_HT_MIMO_PS_STATIC;
22279 case WDI_HT_MIMO_PS_DYNAMIC:
22280 return eSIR_HT_MIMO_PS_DYNAMIC;
22281 case WDI_HT_MIMO_PS_NA:
22282 return eSIR_HT_MIMO_PS_NA;
22283 case WDI_HT_MIMO_PS_NO_LIMIT:
22284 return eSIR_HT_MIMO_PS_NO_LIMIT;
22285 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022286
Jeff Johnson295189b2012-06-20 16:38:30 -070022287 return eSIR_HT_MIMO_PS_MAX;
22288}/*WDI_2_HAL_MIMO_PS*/
22289
22290/*Convert WDI ENC type into HAL ENC type*/
22291WPT_STATIC WPT_INLINE tAniEdType
22292WDI_2_HAL_ENC_TYPE
22293(
22294 WDI_EncryptType wdiEncType
22295)
22296{
Jeff Johnsone7245742012-09-05 17:12:55 -070022297 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022298 the chances of getting inlined*/
22299 switch ( wdiEncType )
22300 {
22301 case WDI_ENCR_NONE:
22302 return eSIR_ED_NONE;
22303
22304 case WDI_ENCR_WEP40:
22305 return eSIR_ED_WEP40;
22306
22307 case WDI_ENCR_WEP104:
22308 return eSIR_ED_WEP104;
22309
22310 case WDI_ENCR_TKIP:
22311 return eSIR_ED_TKIP;
22312
22313 case WDI_ENCR_CCMP:
22314 return eSIR_ED_CCMP;
22315
22316 case WDI_ENCR_AES_128_CMAC:
22317 return eSIR_ED_AES_128_CMAC;
22318#if defined(FEATURE_WLAN_WAPI)
22319 case WDI_ENCR_WPI:
22320 return eSIR_ED_WPI;
22321#endif
22322 default:
22323 return eSIR_ED_NOT_IMPLEMENTED;
22324 }
22325
22326}/*WDI_2_HAL_ENC_TYPE*/
22327
22328/*Convert WDI WEP type into HAL WEP type*/
22329WPT_STATIC WPT_INLINE tAniWepType
22330WDI_2_HAL_WEP_TYPE
22331(
22332 WDI_WepType wdiWEPType
22333)
22334{
Jeff Johnsone7245742012-09-05 17:12:55 -070022335 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022336 the chances of getting inlined*/
22337 switch ( wdiWEPType )
22338 {
22339 case WDI_WEP_STATIC:
22340 return eSIR_WEP_STATIC;
22341
22342 case WDI_WEP_DYNAMIC:
22343 return eSIR_WEP_DYNAMIC;
22344 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022345
Jeff Johnson295189b2012-06-20 16:38:30 -070022346 return eSIR_WEP_MAX;
22347}/*WDI_2_HAL_WEP_TYPE*/
22348
22349WPT_STATIC WPT_INLINE tSirLinkState
22350WDI_2_HAL_LINK_STATE
22351(
22352 WDI_LinkStateType wdiLinkState
22353)
22354{
Jeff Johnsone7245742012-09-05 17:12:55 -070022355 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022356 the chances of getting inlined*/
22357 switch ( wdiLinkState )
22358 {
22359 case WDI_LINK_IDLE_STATE:
22360 return eSIR_LINK_IDLE_STATE;
22361
22362 case WDI_LINK_PREASSOC_STATE:
22363 return eSIR_LINK_PREASSOC_STATE;
22364
22365 case WDI_LINK_POSTASSOC_STATE:
22366 return eSIR_LINK_POSTASSOC_STATE;
22367
22368 case WDI_LINK_AP_STATE:
22369 return eSIR_LINK_AP_STATE;
22370
22371 case WDI_LINK_IBSS_STATE:
22372 return eSIR_LINK_IBSS_STATE;
22373
22374 case WDI_LINK_BTAMP_PREASSOC_STATE:
22375 return eSIR_LINK_BTAMP_PREASSOC_STATE;
22376
22377 case WDI_LINK_BTAMP_POSTASSOC_STATE:
22378 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
22379
22380 case WDI_LINK_BTAMP_AP_STATE:
22381 return eSIR_LINK_BTAMP_AP_STATE;
22382
22383 case WDI_LINK_BTAMP_STA_STATE:
22384 return eSIR_LINK_BTAMP_STA_STATE;
22385
22386 case WDI_LINK_LEARN_STATE:
22387 return eSIR_LINK_LEARN_STATE;
22388
22389 case WDI_LINK_SCAN_STATE:
22390 return eSIR_LINK_SCAN_STATE;
22391
22392 case WDI_LINK_FINISH_SCAN_STATE:
22393 return eSIR_LINK_FINISH_SCAN_STATE;
22394
22395 case WDI_LINK_INIT_CAL_STATE:
22396 return eSIR_LINK_INIT_CAL_STATE;
22397
22398 case WDI_LINK_FINISH_CAL_STATE:
22399 return eSIR_LINK_FINISH_CAL_STATE;
22400
Jeff Johnson295189b2012-06-20 16:38:30 -070022401 case WDI_LINK_LISTEN_STATE:
22402 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022403
22404 default:
22405 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070022406 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022407}
22408
Jeff Johnsone7245742012-09-05 17:12:55 -070022409/*Translate a STA Context from WDI into HAL*/
22410WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070022411void
22412WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070022413(
Jeff Johnson295189b2012-06-20 16:38:30 -070022414 tConfigStaParams* phalConfigSta,
22415 WDI_ConfigStaReqInfoType* pwdiConfigSta
22416)
22417{
22418 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070022419#ifdef WLAN_FEATURE_11AC
22420 /* Get the Version 1 Handler */
22421 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
22422 if (WDI_getFwWlanFeatCaps(DOT11AC))
22423 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022424 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070022425 }
22426#endif
22427 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022428 the chances of getting inlined*/
22429
Jeff Johnsone7245742012-09-05 17:12:55 -070022430 wpalMemoryCopy(phalConfigSta->bssId,
22431 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
22432
22433 wpalMemoryCopy(phalConfigSta->staMac,
22434 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070022435
22436 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
22437 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
22438 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
22439 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
22440 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
22441 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
22442 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
22443 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
22444 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
22445 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
22446 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
22447 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
22448 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
22449 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
22450 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
22451 phalConfigSta->action = pwdiConfigSta->wdiAction;
22452 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
22453 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
22454 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
22455 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
22456 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
22457 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
22458 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Jeff Johnsone7245742012-09-05 17:12:55 -070022459
Jeff Johnson295189b2012-06-20 16:38:30 -070022460 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
22461
Jeff Johnsone7245742012-09-05 17:12:55 -070022462 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070022463 pwdiConfigSta->wdiSupportedRates.opRateMode;
22464 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
22465 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022466 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022467 pwdiConfigSta->wdiSupportedRates.llbRates[i];
22468 }
22469 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
22470 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022471 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022472 pwdiConfigSta->wdiSupportedRates.llaRates[i];
22473 }
22474 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
22475 {
22476 phalConfigSta->supportedRates.aniLegacyRates[i] =
22477 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
22478 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
22481 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
22482 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
22485 }
22486 phalConfigSta->supportedRates.rxHighestDataRate =
22487 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
22488
Jeff Johnsone7245742012-09-05 17:12:55 -070022489#ifdef WLAN_FEATURE_11AC
22490 if(phalConfigSta_V1 != NULL)
22491 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022492 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
22493 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
22494 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
22495 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070022496 }
22497#endif
22498
Jeff Johnson295189b2012-06-20 16:38:30 -070022499 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070022500
Jeff Johnsone7245742012-09-05 17:12:55 -070022501#ifdef WLAN_FEATURE_11AC
22502 if(phalConfigSta_V1 != NULL)
22503 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022504 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
22505 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi31f9ebe2013-01-17 12:51:24 -080022506 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Gopichand Nakkalab7ed0a62013-01-04 11:41:02 -080022507 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
22508 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
22509
Jeff Johnsone7245742012-09-05 17:12:55 -070022510 }
22511#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022512}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070022513
22514/*Translate a Rate set info from WDI into HAL*/
22515WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070022516WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070022517(
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 tSirMacRateSet* pHalRateSet,
22519 WDI_RateSet* pwdiRateSet
22520)
22521{
Jeff Johnsone7245742012-09-05 17:12:55 -070022522 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070022523 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22524
22525 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
22526 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
22527
22528 for ( i = 0; i < pHalRateSet->numRates; i++ )
22529 {
22530 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
22531 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022532
Jeff Johnson295189b2012-06-20 16:38:30 -070022533}/*WDI_CopyWDIRateSetToHALRateSet*/
22534
22535
22536/*Translate an EDCA Parameter Record from WDI into HAL*/
22537WPT_STATIC WPT_INLINE void
22538WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070022539(
Jeff Johnson295189b2012-06-20 16:38:30 -070022540 tSirMacEdcaParamRecord* phalEdcaParam,
22541 WDI_EdcaParamRecord* pWDIEdcaParam
22542)
22543{
Jeff Johnsone7245742012-09-05 17:12:55 -070022544 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 the chances of getting inlined*/
22546
22547 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
22548 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
22549 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
22550 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
22551
22552 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
22553 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
22554 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
22555}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
22556
22557
22558/*Copy a management frame header from WDI fmt into HAL fmt*/
22559WPT_STATIC WPT_INLINE void
22560WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
22561(
22562 tSirMacMgmtHdr* pmacMgmtHdr,
22563 WDI_MacMgmtHdr* pwdiMacMgmtHdr
22564)
22565{
22566 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
22567 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
22568 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
22569 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
22570 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
22571 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
22572 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
22573 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
22574 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
22575 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
22576 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
22577
22578 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
22579 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
22580
Jeff Johnsone7245742012-09-05 17:12:55 -070022581 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070022582 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022583 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070022585 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070022586 pwdiMacMgmtHdr->bssId, 6);
22587
22588 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
22589 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
22590 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
22591
22592}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
22593
22594
22595/*Copy config bss parameters from WDI fmt into HAL fmt*/
22596WPT_STATIC WPT_INLINE void
22597WDI_CopyWDIConfigBSSToHALConfigBSS
22598(
22599 tConfigBssParams* phalConfigBSS,
22600 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
22601)
22602{
22603
22604 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070022605#ifdef WLAN_FEATURE_11AC
22606 /* Get the Version 1 Handler */
22607 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
22608 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022609 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070022610#endif
22611
Jeff Johnson295189b2012-06-20 16:38:30 -070022612 wpalMemoryCopy( phalConfigBSS->bssId,
22613 pwdiConfigBSS->macBSSID,
22614 WDI_MAC_ADDR_LEN);
22615
22616#ifdef HAL_SELF_STA_PER_BSS
22617 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
22618 pwdiConfigBSS->macSelfAddr,
22619 WDI_MAC_ADDR_LEN);
22620#endif
22621
22622 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
22623
22624 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
22625 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
22626
Jeff Johnsone7245742012-09-05 17:12:55 -070022627 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070022628 pwdiConfigBSS->ucShortSlotTimeSupported;
22629 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
22630 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
22631 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
22632 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
22633 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070022634 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070022635 pwdiConfigBSS->ucTXOPProtectionFullSupport;
22636 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
22637 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
22638 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
22639 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
22640 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
22641 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
22642 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
22643 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
22644 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
22645 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
22646
Jeff Johnsone7245742012-09-05 17:12:55 -070022647 phalConfigBSS->htOperMode =
22648 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070022649
22650 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
22651 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
22652 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
22653 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
22654
22655#ifdef WLAN_FEATURE_VOWIFI
22656 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
22657#endif
22658
22659 /*! Used 32 as magic number because that is how the ssid is declared inside the
22660 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070022661 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070022662 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
22663 pwdiConfigBSS->wdiSSID.ucLength : 32;
22664 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070022665 pwdiConfigBSS->wdiSSID.sSSID,
22666 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070022667
22668 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
22669 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070022670
Jeff Johnson295189b2012-06-20 16:38:30 -070022671 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
22672 &pwdiConfigBSS->wdiRateSet);
22673
22674 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
22675
22676 if(phalConfigBSS->edcaParamsValid)
22677 {
22678 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
22679 &pwdiConfigBSS->wdiBEEDCAParams);
22680 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
22681 &pwdiConfigBSS->wdiBKEDCAParams);
22682 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
22683 &pwdiConfigBSS->wdiVIEDCAParams);
22684 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
22685 &pwdiConfigBSS->wdiVOEDCAParams);
22686 }
22687
Jeff Johnsone7245742012-09-05 17:12:55 -070022688 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070022689
22690 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
22691
22692#ifdef WLAN_FEATURE_VOWIFI_11R
22693
Jeff Johnsone7245742012-09-05 17:12:55 -070022694 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070022696
Jeff Johnson295189b2012-06-20 16:38:30 -070022697 if( phalConfigBSS->extSetStaKeyParamValid )
22698 {
22699 /*-----------------------------------------------------------------------
22700 Copy the STA Key parameters into the HAL message
22701 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022702 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022703 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
22704
Jeff Johnsone7245742012-09-05 17:12:55 -070022705 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070022706 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
22707
22708 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
22709
22710 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
22711
22712 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
22713
Jeff Johnson295189b2012-06-20 16:38:30 -070022714 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
22715 keyIndex++)
22716 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022717 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022718 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
22719 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
22720 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
22721 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
22722 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
22723 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070022724 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070022725 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022726 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070022727 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070022728 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070022729 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
22730 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070022731 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070022732 WDI_MAX_KEY_LENGTH);
22733 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022734 }
22735 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
22736 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022737 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070022738 sizeof(phalConfigBSS->extSetStaKeyParam) );
22739 }
22740
22741#endif /*WLAN_FEATURE_VOWIFI_11R*/
22742
Jeff Johnsone7245742012-09-05 17:12:55 -070022743#ifdef WLAN_FEATURE_11AC
22744 if(phalConfigBSS_V1 != NULL)
22745 {
22746 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
22747 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
22748 }
22749#endif
22750
Jeff Johnson295189b2012-06-20 16:38:30 -070022751}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
22752
22753
Jeff Johnsone7245742012-09-05 17:12:55 -070022754/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070022755 pointed to by user data */
22756WPT_STATIC WPT_INLINE void
22757WDI_ExtractRequestCBFromEvent
22758(
22759 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070022760 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070022761 void** ppUserData
22762)
22763{
22764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22765 switch ( pEvent->wdiRequest )
22766 {
22767 case WDI_START_REQ:
22768 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22769 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
22770 break;
22771 case WDI_STOP_REQ:
22772 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22773 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
22774 break;
22775 case WDI_INIT_SCAN_REQ:
22776 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22777 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
22778 break;
22779 case WDI_START_SCAN_REQ:
22780 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22781 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
22782 break;
22783 case WDI_END_SCAN_REQ:
22784 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22785 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
22786 break;
22787 case WDI_FINISH_SCAN_REQ:
22788 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22789 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
22790 break;
22791 case WDI_JOIN_REQ:
22792 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22793 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
22794 break;
22795 case WDI_CONFIG_BSS_REQ:
22796 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22797 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
22798 break;
22799 case WDI_DEL_BSS_REQ:
22800 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22801 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
22802 break;
22803 case WDI_POST_ASSOC_REQ:
22804 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22805 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
22806 break;
22807 case WDI_DEL_STA_REQ:
22808 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22809 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
22810 break;
22811 case WDI_DEL_STA_SELF_REQ:
22812 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22813 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
22814 break;
22815
22816 case WDI_SET_BSS_KEY_REQ:
22817 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22818 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22819 break;
22820 case WDI_RMV_BSS_KEY_REQ:
22821 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22822 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
22823 break;
22824 case WDI_SET_STA_KEY_REQ:
22825 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22826 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22827 break;
22828 case WDI_RMV_STA_KEY_REQ:
22829 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22830 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
22831 break;
22832 case WDI_ADD_TS_REQ:
22833 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22834 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
22835 break;
22836 case WDI_DEL_TS_REQ:
22837 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22838 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
22839 break;
22840 case WDI_UPD_EDCA_PRMS_REQ:
22841 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22842 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
22843 break;
22844 case WDI_ADD_BA_SESSION_REQ:
22845 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22846 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
22847 break;
22848 case WDI_DEL_BA_REQ:
22849 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22850 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
22851 break;
22852#ifdef FEATURE_WLAN_CCX
22853 case WDI_TSM_STATS_REQ:
22854 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22855 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
22856 break;
22857#endif
22858 case WDI_CH_SWITCH_REQ:
22859 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22860 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
22861 break;
22862 case WDI_CONFIG_STA_REQ:
22863 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22864 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
22865 break;
22866 case WDI_SET_LINK_ST_REQ:
22867 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22868 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
22869 break;
22870 case WDI_GET_STATS_REQ:
22871 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22872 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
22873 break;
Srinivas Girigowda2471d832013-01-25 13:33:11 -080022874#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_CCX || defined(FEATURE_WLAN_LFR)
22875 case WDI_GET_ROAM_RSSI_REQ:
22876 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22877 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
22878 break;
22879#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070022880 case WDI_UPDATE_CFG_REQ:
22881 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22882 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
22883 break;
22884 case WDI_ADD_BA_REQ:
22885 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22886 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
22887 break;
22888 case WDI_TRIGGER_BA_REQ:
22889 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22890 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
22891 break;
22892 case WDI_UPD_BCON_PRMS_REQ:
22893 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22894 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
22895 break;
22896 case WDI_SND_BCON_REQ:
22897 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22898 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
22899 break;
22900 case WDI_ENTER_BMPS_REQ:
22901 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22902 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22903 break;
22904 case WDI_EXIT_BMPS_REQ:
22905 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22906 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
22907 break;
22908 case WDI_ENTER_UAPSD_REQ:
22909 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22910 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22911 break;
22912 case WDI_UPDATE_UAPSD_PARAM_REQ:
22913 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22914 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
22915 break;
22916 case WDI_CONFIGURE_RXP_FILTER_REQ:
22917 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22918 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
22919 break;
22920 case WDI_SET_BEACON_FILTER_REQ:
22921 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22922 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
22923 break;
22924 case WDI_REM_BEACON_FILTER_REQ:
22925 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22926 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022927 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022928 case WDI_SET_RSSI_THRESHOLDS_REQ:
22929 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22930 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
22931 break;
22932 case WDI_HOST_OFFLOAD_REQ:
22933 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22934 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
22935 break;
22936 case WDI_WOWL_ADD_BC_PTRN_REQ:
22937 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22938 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22939 break;
22940 case WDI_WOWL_DEL_BC_PTRN_REQ:
22941 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22942 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
22943 break;
22944 case WDI_WOWL_ENTER_REQ:
22945 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22946 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
22947 break;
22948 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
22949 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22950 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
22951 break;
22952 case WDI_FLUSH_AC_REQ:
22953 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22954 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
22955 break;
22956 case WDI_BTAMP_EVENT_REQ:
22957 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22958 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
22959 break;
22960 case WDI_KEEP_ALIVE_REQ:
22961 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22962 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
22963 break;
22964 case WDI_SET_TX_PER_TRACKING_REQ:
22965 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22966 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyyae39194c2013-03-08 10:15:42 -080022967 break;
22968 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
22969 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22970 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
22971 break;
22972 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
22973 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22974 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
22975 break;
22976 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
22977 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
22978 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
22979 break;
22980
Jeff Johnson295189b2012-06-20 16:38:30 -070022981 default:
22982 *ppfnReqCB = NULL;
22983 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070022984 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070022985 }
22986}/*WDI_ExtractRequestCBFromEvent*/
22987
22988
22989/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022990 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070022991 frame xtl is enabled for a particular STA.
22992
22993 WDI_PostAssocReq must have been called.
22994
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 @param uSTAIdx: STA index
22996
Jeff Johnson295189b2012-06-20 16:38:30 -070022997 @see WDI_PostAssocReq
22998 @return Result of the function call
22999*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023000wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070023001WDI_IsHwFrameTxTranslationCapable
23002(
23003 wpt_uint8 uSTAIdx
23004)
23005{
Jeff Johnsone7245742012-09-05 17:12:55 -070023006 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070023007 uma value*/
23008 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023009 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023010 ------------------------------------------------------------------------*/
23011 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23012 {
23013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23014 "WDI API call before module is initialized - Fail request");
23015
Jeff Johnsone7245742012-09-05 17:12:55 -070023016 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023017 }
23018
Gopichand Nakkalaba261272013-01-03 15:45:56 -080023019#ifdef WLAN_SOFTAP_VSTA_FEATURE
23020 if (IS_VSTA_IDX(uSTAIdx))
23021 {
23022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23023 "STA %d is a Virtual STA, "
23024 "HW frame translation disabled", uSTAIdx);
23025 return eWLAN_PAL_FALSE;
23026 }
23027#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070023028
Jeff Johnson295189b2012-06-20 16:38:30 -070023029 return gWDICb.bFrameTransEnabled;
23030}/*WDI_IsHwFrameTxTranslationCapable*/
23031
23032#ifdef FEATURE_WLAN_SCAN_PNO
23033/**
23034 @brief WDI_SetPreferredNetworkList
23035
Jeff Johnsone7245742012-09-05 17:12:55 -070023036 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023037 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023038
Jeff Johnson295189b2012-06-20 16:38:30 -070023039 wdiPNOScanCb: callback for passing back the response
23040 of the Set PNO operation received from the
23041 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023042
Jeff Johnson295189b2012-06-20 16:38:30 -070023043 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023044 callback
23045
Jeff Johnson295189b2012-06-20 16:38:30 -070023046 @return Result of the function call
23047*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023048WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023049WDI_SetPreferredNetworkReq
23050(
23051 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23052 WDI_PNOScanCb wdiPNOScanCb,
23053 void* pUserData
23054)
23055{
23056 WDI_EventInfoType wdiEventData = {{0}};
23057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23058
23059 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023060 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023061 ------------------------------------------------------------------------*/
23062 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23063 {
23064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23065 "WDI API call before module is initialized - Fail request");
23066
Jeff Johnsone7245742012-09-05 17:12:55 -070023067 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023068 }
23069
23070 /*------------------------------------------------------------------------
23071 Fill in Event data and post to the Main FSM
23072 ------------------------------------------------------------------------*/
23073 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023074 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023075 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023076 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 wdiEventData.pUserData = pUserData;
23078
23079 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23080}
23081
23082
23083/**
23084 @brief WDI_SetRssiFilterReq
23085
Jeff Johnsone7245742012-09-05 17:12:55 -070023086 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023088
Jeff Johnson295189b2012-06-20 16:38:30 -070023089 wdiRssiFilterCb: callback for passing back the response
23090 of the Set RSSI Filter operation received from the
23091 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023092
Jeff Johnson295189b2012-06-20 16:38:30 -070023093 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023094 callback
23095
Jeff Johnson295189b2012-06-20 16:38:30 -070023096 @return Result of the function call
23097*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023098WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023099WDI_SetRssiFilterReq
23100(
23101 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
23102 WDI_RssiFilterCb wdiRssiFilterCb,
23103 void* pUserData
23104)
23105{
23106 WDI_EventInfoType wdiEventData = {{0}};
23107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23108
23109 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023110 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023111 ------------------------------------------------------------------------*/
23112 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23113 {
23114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23115 "WDI API call before module is initialized - Fail request");
23116
Jeff Johnsone7245742012-09-05 17:12:55 -070023117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023118 }
23119
23120 /*------------------------------------------------------------------------
23121 Fill in Event data and post to the Main FSM
23122 ------------------------------------------------------------------------*/
23123 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023124 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023125 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070023126 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023127 wdiEventData.pUserData = pUserData;
23128
23129 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23130}/*WDI_SetRssiFilterReq*/
23131
23132/**
23133 @brief WDI_UpdateScanParamsReq
23134
Jeff Johnsone7245742012-09-05 17:12:55 -070023135 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070023136 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070023137
Jeff Johnson295189b2012-06-20 16:38:30 -070023138 wdiUpdateScanParamsCb: callback for passing back the response
23139 of the Set PNO operation received from the
23140 device
Jeff Johnsone7245742012-09-05 17:12:55 -070023141
Jeff Johnson295189b2012-06-20 16:38:30 -070023142 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070023143 callback
23144
Jeff Johnson295189b2012-06-20 16:38:30 -070023145 @return Result of the function call
23146*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023147WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023148WDI_UpdateScanParamsReq
23149(
23150 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
23151 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
23152 void* pUserData
23153)
23154{
23155 WDI_EventInfoType wdiEventData = {{0}};
23156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23157
23158 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023159 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070023160 ------------------------------------------------------------------------*/
23161 if ( eWLAN_PAL_FALSE == gWDIInitialized )
23162 {
23163 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23164 "WDI API call before module is initialized - Fail request");
23165
Jeff Johnsone7245742012-09-05 17:12:55 -070023166 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070023167 }
23168
23169 /*------------------------------------------------------------------------
23170 Fill in Event data and post to the Main FSM
23171 ------------------------------------------------------------------------*/
23172 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070023173 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023174 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070023175 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070023176 wdiEventData.pUserData = pUserData;
23177
23178 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
23179}
23180
23181/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023182 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023183 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023184
23185 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023186 pwdiPNOScanReqParams: pointer to the info received
23187 from upper layers
23188 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023189 and its size
23190
Jeff Johnson295189b2012-06-20 16:38:30 -070023191 @return Result of the function call
23192*/
23193
23194WDI_Status
23195WDI_PackPreferredNetworkList
23196(
23197 WDI_ControlBlockType* pWDICtx,
23198 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23199 wpt_uint8** ppSendBuffer,
23200 wpt_uint16* pSize
23201)
23202{
Jeff Johnsone7245742012-09-05 17:12:55 -070023203 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023204 wpt_uint16 usDataOffset = 0;
23205 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023206 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023207 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023208 /*-----------------------------------------------------------------------
23209 Get message buffer
23210 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023211 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023212 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023214 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 {
23216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23217 "Unable to get send buffer in Set PNO req %x ",
23218 pwdiPNOScanReqParams);
23219 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
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023223 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
23224
Jeff Johnson295189b2012-06-20 16:38:30 -070023225 /*-------------------------------------------------------------------------
23226 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23227 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023228 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023229 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023230 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023231 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23232
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023233 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023234 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023235 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023236 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023237 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23238
23239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023240 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023241 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23242 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23243 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23244
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023245 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 {
23247 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023248 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023249 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23250
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023251 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023252 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023253 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023254
23255 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023256 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023257 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023258
23259 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023260 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023261 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023262
Jeff Johnsone7245742012-09-05 17:12:55 -070023263 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023264 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023265 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070023266 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
23267 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23268 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
23269 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023270
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023271 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023272 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023273 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023274
23275 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023276 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023277 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23278
23279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023281 pPrefNetwListParams->aNetworks[i].ssId.length,
23282 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023283 }
23284
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023285 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023286 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023287 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23288 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23289 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23290
23291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023292 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023293 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023294 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23295 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23296
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023297 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023298 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023299 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023300 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023301 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023302 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23303 }
23304
23305 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023306 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023307 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23308 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23309 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023310 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023311
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023312 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023313 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023314 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023315
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023316 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023317 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23318 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23319 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023320 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023321
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023322 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023323 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023324 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023325
23326 /*Set the output values*/
23327 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023328 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023329
23330 return WDI_STATUS_SUCCESS;
23331}/*WDI_PackPreferredNetworkList*/
23332
23333/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023334 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070023335 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070023336
23337 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023338 pwdiPNOScanReqParams: pointer to the info received
23339 from upper layers
23340 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023341 and its size
23342
Jeff Johnson295189b2012-06-20 16:38:30 -070023343 @return Result of the function call
23344*/
23345
23346WDI_Status
23347WDI_PackPreferredNetworkListNew
23348(
23349 WDI_ControlBlockType* pWDICtx,
23350 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
23351 wpt_uint8** ppSendBuffer,
23352 wpt_uint16* pSize
23353)
23354{
Jeff Johnsone7245742012-09-05 17:12:55 -070023355 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023356 wpt_uint16 usDataOffset = 0;
23357 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023358 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023359 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023360
23361 /*-----------------------------------------------------------------------
23362 Get message buffer
23363 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023365 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070023366 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023367 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 {
23369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23370 "Unable to get send buffer in Set PNO req %x ",
23371 pwdiPNOScanReqParams);
23372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023374 }
23375
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023376 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
23377
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 /*-------------------------------------------------------------------------
23379 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
23380 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023381 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070023382 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023383 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070023384 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
23385
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023386 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023387 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023388 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070023389 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070023390 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
23391
23392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023393 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070023394 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
23395 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
23396 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
23397
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023398 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023399 {
23400 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023401 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070023402 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
23403
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023404 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023405 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023406 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070023407
23408 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023409 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070023410 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070023411
23412 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023413 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070023414 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070023415
23416 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023417 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070023418 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070023419
Jeff Johnsone7245742012-09-05 17:12:55 -070023420 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070023421 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023422 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070023423 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
23424
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023425 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070023426 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023427 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070023428
23429 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023430 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070023431 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
23432
23433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023434 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023435 pPrefNetwListParams->aNetworks[i].ssId.length,
23436 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 }
23438
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023439 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070023440 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070023441 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
23442 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
23443 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
23444
23445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070023446 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023447 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070023448 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
23449 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
23450
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023451 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023453 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070023454 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023455 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070023456 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
23457 }
23458
23459 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023460 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023461 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
23462 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23463 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023464 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023465
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023466 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023467 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023468 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023469
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023470 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070023471 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
23472 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
23473 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070023474 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023475
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023476 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070023477 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070023478 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070023479
Jeff Johnson295189b2012-06-20 16:38:30 -070023480
23481 /*Set the output values*/
23482 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070023483 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070023484
23485 return WDI_STATUS_SUCCESS;
23486}/*WDI_PackPreferredNetworkListNew*/
23487
23488/**
23489 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023490
23491 @param pWDICtx: pointer to the WLAN DAL context
23492 pEventData: pointer to the event information structure
23493
Jeff Johnson295189b2012-06-20 16:38:30 -070023494 @return Result of the function call
23495*/
23496WDI_Status
23497WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023498(
Jeff Johnson295189b2012-06-20 16:38:30 -070023499 WDI_ControlBlockType* pWDICtx,
23500 WDI_EventInfoType* pEventData
23501)
23502{
23503 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
23504 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023505 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023506 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023507 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023508
23509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023510 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023511 -------------------------------------------------------------------------*/
23512 if (( NULL == pEventData ) ||
23513 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
23514 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
23515 {
23516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023520 }
23521
23522 /*-------------------------------------------------------------------------
23523 Pack the PNO request structure based on version
23524 -------------------------------------------------------------------------*/
23525 if ( pWDICtx->wdiPNOVersion > 0 )
23526 {
23527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023528 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023529 pWDICtx->wdiPNOVersion);
23530
23531 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
23532 &pSendBuffer, &usSendSize);
23533 }
23534 else
23535 {
23536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023537 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070023538 pWDICtx->wdiPNOVersion);
23539
23540 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
23541 &pSendBuffer, &usSendSize);
23542 }
23543
23544 if (( WDI_STATUS_SUCCESS != wdiStatus )||
23545 ( NULL == pSendBuffer )||( 0 == usSendSize ))
23546 {
23547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023548 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023550 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023551 }
23552
23553 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023554 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023555
23556 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023557 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023558 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023559 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23560 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023561}
23562
23563/**
23564 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070023565
23566 @param pWDICtx: pointer to the WLAN DAL context
23567 pEventData: pointer to the event information structure
23568
Jeff Johnson295189b2012-06-20 16:38:30 -070023569 @see
23570 @return Result of the function call
23571*/
23572WDI_Status
23573WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023574(
Jeff Johnson295189b2012-06-20 16:38:30 -070023575 WDI_ControlBlockType* pWDICtx,
23576 WDI_EventInfoType* pEventData
23577)
23578{
23579 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
23580 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023581 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023582 wpt_uint16 usDataOffset = 0;
23583 wpt_uint16 usSendSize = 0;
23584 wpt_uint8 ucRssiThreshold;
23585
23586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 -------------------------------------------------------------------------*/
23589 if (( NULL == pEventData ) ||
23590 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
23591 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
23592 {
23593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023597 }
23598
23599 /*-----------------------------------------------------------------------
23600 Get message buffer
23601 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023603 sizeof(ucRssiThreshold),
23604 &pSendBuffer, &usDataOffset, &usSendSize))||
23605 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
23606 {
23607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23608 "Unable to get send buffer in Set PNO req %x %x %x",
23609 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
23610 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023611 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023612 }
23613
23614 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
23615
Jeff Johnsone7245742012-09-05 17:12:55 -070023616 wpalMemoryCopy( pSendBuffer+usDataOffset,
23617 &ucRssiThreshold,
23618 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070023619
23620 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023621 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023622
23623 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023624 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023625 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023626 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23627 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023628}
23629
23630
23631/**
23632 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070023633
23634 @param pWDICtx: pointer to the WLAN DAL context
23635 pEventData: pointer to the event information structure
23636
Jeff Johnson295189b2012-06-20 16:38:30 -070023637 @see
23638 @return Result of the function call
23639*/
23640WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023641WDI_PackUpdateScanParamsReq
23642(
23643 WDI_ControlBlockType* pWDICtx,
23644 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23645 wpt_uint8** ppSendBuffer,
23646 wpt_uint16* pSize
23647)
23648{
23649 wpt_uint8* pSendBuffer = NULL;
23650 wpt_uint16 usDataOffset = 0;
23651 wpt_uint16 usSendSize = 0;
23652 tUpdateScanParams updateScanParams = {0};
23653
23654
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023656 "Begin WDI Update Scan Parameters Old Style Params");
23657 /*-----------------------------------------------------------------------
23658 Get message buffer
23659 -----------------------------------------------------------------------*/
23660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23661 sizeof(updateScanParams),
23662 &pSendBuffer, &usDataOffset, &usSendSize))||
23663 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23664 {
23665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23666 "Unable to get send buffer in Update Scan Params req %x",
23667 pwdiUpdateScanParams);
23668 WDI_ASSERT(0);
23669 return WDI_STATUS_E_FAILURE;
23670 }
23671
23672 //
23673 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23674 //
23675
23676 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23677 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23678
23679 updateScanParams.ucChannelCount =
23680 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23681 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
23682 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23683 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
23684
23685 wpalMemoryCopy( updateScanParams.aChannels,
23686 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23687 updateScanParams.ucChannelCount);
23688
23689
23690 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23691 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23692 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23693 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23694 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23695
23696 wpalMemoryCopy( pSendBuffer+usDataOffset,
23697 &updateScanParams,
23698 sizeof(updateScanParams));
23699
23700 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23701 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23702
Varun Reddy Yeturu9163b672013-02-11 14:05:06 -080023703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023704 "End Update Scan Parameters Old Style");
23705
23706 /*Set the output values*/
23707 *ppSendBuffer = pSendBuffer;
23708 *pSize = usSendSize;
23709
23710 return WDI_STATUS_SUCCESS;
23711}
23712
23713/**
23714 @brief Process Update Scan Params function
23715
23716 @param pWDICtx: pointer to the WLAN DAL context
23717 pEventData: pointer to the event information structure
23718
23719 @see
23720 @return Result of the function call
23721*/
23722WDI_Status
23723WDI_PackUpdateScanParamsReqEx
23724(
23725 WDI_ControlBlockType* pWDICtx,
23726 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
23727 wpt_uint8** ppSendBuffer,
23728 wpt_uint16* pSize
23729)
23730{
23731 wpt_uint8* pSendBuffer = NULL;
23732 wpt_uint16 usDataOffset = 0;
23733 wpt_uint16 usSendSize = 0;
23734 tUpdateScanParamsEx updateScanParams = {0};
23735
23736
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023737 /*-----------------------------------------------------------------------
23738 Get message buffer
23739 -----------------------------------------------------------------------*/
23740 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
23741 sizeof(updateScanParams),
23742 &pSendBuffer, &usDataOffset, &usSendSize))||
23743 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
23744 {
23745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23746 "Unable to get send buffer in Update Scan Params Ex req %x",
23747 pwdiUpdateScanParams);
23748 WDI_ASSERT(0);
23749 return WDI_STATUS_E_FAILURE;
23750 }
23751
23752 //
23753 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23754 //
23755
23756 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
23757 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
23758
23759 updateScanParams.ucChannelCount =
23760 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
23761 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
23762 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
23763 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
23764
23765 wpalMemoryCopy( updateScanParams.aChannels,
23766 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
23767 updateScanParams.ucChannelCount);
23768
23769
23770 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
23771 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
23772 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
23773 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
23774 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
23775
23776 wpalMemoryCopy( pSendBuffer+usDataOffset,
23777 &updateScanParams,
23778 sizeof(updateScanParams));
23779
23780 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
23781 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
23782
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023783 /*Set the output values*/
23784 *ppSendBuffer = pSendBuffer;
23785 *pSize = usSendSize;
23786
23787 return WDI_STATUS_SUCCESS;
23788}
23789
23790/**
23791 @brief Process Update Scan Params function
23792
23793 @param pWDICtx: pointer to the WLAN DAL context
23794 pEventData: pointer to the event information structure
23795
23796 @see
23797 @return Result of the function call
23798*/
23799WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023800WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070023801(
Jeff Johnson295189b2012-06-20 16:38:30 -070023802 WDI_ControlBlockType* pWDICtx,
23803 WDI_EventInfoType* pEventData
23804)
23805{
23806 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
23807 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023808 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023809 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023810 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070023811
23812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023814 -------------------------------------------------------------------------*/
23815 if (( NULL == pEventData ) ||
23816 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
23817 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
23818 {
23819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023820 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023821 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023822 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023823 }
23824
23825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23826 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070023827
23828 //
23829 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
23830 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023831 if ( pWDICtx->wlanVersion.revision < 1 )
23832 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023833 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023834 &pSendBuffer, &usSendSize);
23835 }
23836 else
23837 {
Madan Mohan Koyyalamudi1f11a392012-12-27 17:31:42 -080023838 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
23839 &pSendBuffer, &usSendSize);
23840 }
23841
23842 if(WDI_STATUS_SUCCESS != wdiStatus)
23843 {
23844 //memory allocation failed
23845 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023846 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023847
Jeff Johnson295189b2012-06-20 16:38:30 -070023848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023849 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023850 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023851 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053023852 wdiUpdateScanParamsCb, pEventData->pUserData,
23853 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023854}
23855
23856/**
23857 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070023858
23859 @param pWDICtx: pointer to the WLAN DAL context
23860 pEventData: pointer to the event information structure
23861
Jeff Johnson295189b2012-06-20 16:38:30 -070023862 @see
23863 @return Result of the function call
23864*/
23865WDI_Status
23866WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070023867(
Jeff Johnson295189b2012-06-20 16:38:30 -070023868 WDI_ControlBlockType* pWDICtx,
23869 WDI_EventInfoType* pEventData
23870)
23871{
23872 WDI_LowLevelIndType wdiInd;
23873 tPrefNetwFoundInd prefNetwFoundInd = {{0}};
23874
23875
23876 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023877 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023878 -------------------------------------------------------------------------*/
23879 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23880 ( NULL == pEventData->pEventData ))
23881 {
23882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023883 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023884 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070023885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023886 }
23887
23888 /*-------------------------------------------------------------------------
23889 Extract indication and send it to UMAC
23890 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023891 wpalMemoryCopy( (void *)&prefNetwFoundInd.prefNetwFoundParams,
23892 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070023893 sizeof(tPrefNetwFoundParams));
23894
23895 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023896 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070023897
23898 wpalMemoryZero(wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,32);
23899
Jeff Johnsone7245742012-09-05 17:12:55 -070023900 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070023901 (prefNetwFoundInd.prefNetwFoundParams.ssId.length < 31 )?
Jeff Johnsone7245742012-09-05 17:12:55 -070023902 prefNetwFoundInd.prefNetwFoundParams.ssId.length : 31;
Jeff Johnson295189b2012-06-20 16:38:30 -070023903
Jeff Johnsone7245742012-09-05 17:12:55 -070023904 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23905 prefNetwFoundInd.prefNetwFoundParams.ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070023906 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
23907
23908 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi =
23909 prefNetwFoundInd.prefNetwFoundParams.rssi;
23910
23911 // DEBUG
23912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23913 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%x) data (SSID=%s, RSSI=%d)",
23914 wdiInd.wdiIndicationType,
23915 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
23916 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
23917
ltimariu034f7d62013-01-24 18:54:33 -080023918 if ( pWDICtx->wdiLowLevelIndCB )
23919 {
23920 /*Notify UMAC*/
23921 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
23922 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023923
23924 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023925}
23926
23927/**
23928 @brief Process PNO Rsp function (called when a
23929 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023930
23931 @param pWDICtx: pointer to the WLAN DAL context
23932 pEventData: pointer to the event information structure
23933
Jeff Johnson295189b2012-06-20 16:38:30 -070023934 @see
23935 @return Result of the function call
23936*/
23937WDI_Status
23938WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023939(
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 WDI_ControlBlockType* pWDICtx,
23941 WDI_EventInfoType* pEventData
23942)
23943{
23944 WDI_Status wdiStatus;
23945 eHalStatus halStatus;
23946 WDI_PNOScanCb wdiPNOScanCb = NULL;
23947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23948
23949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023951 -------------------------------------------------------------------------*/
23952 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23953 ( NULL == pEventData->pEventData ))
23954 {
23955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023959 }
23960
23961
Jeff Johnsone7245742012-09-05 17:12:55 -070023962 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023963
23964 /*-------------------------------------------------------------------------
23965 Extract response and send it to UMAC
23966 -------------------------------------------------------------------------*/
23967 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070023968 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070023969
23970 /*Notify UMAC*/
23971 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
23972
Jeff Johnsone7245742012-09-05 17:12:55 -070023973 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023974}/*WDI_ProcessSetPreferredNetworkRsp*/
23975
23976/**
23977 @brief Process RSSI Filter Rsp function (called when a
23978 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070023979
23980 @param pWDICtx: pointer to the WLAN DAL context
23981 pEventData: pointer to the event information structure
23982
Jeff Johnson295189b2012-06-20 16:38:30 -070023983 @see
23984 @return Result of the function call
23985*/
23986WDI_Status
23987WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023988(
Jeff Johnson295189b2012-06-20 16:38:30 -070023989 WDI_ControlBlockType* pWDICtx,
23990 WDI_EventInfoType* pEventData
23991)
23992{
23993 WDI_Status wdiStatus;
23994 eHalStatus halStatus;
23995 WDI_RssiFilterCb wdiRssiFilterCb;
23996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23997
23998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024000 -------------------------------------------------------------------------*/
24001 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24002 ( NULL == pEventData->pEventData ))
24003 {
24004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024008 }
24009
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024011
24012 /*-------------------------------------------------------------------------
24013 Extract response and send it to UMAC
24014 -------------------------------------------------------------------------*/
24015 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070024016 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024017
24018 /*Notify UMAC*/
24019 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
24020
Jeff Johnsone7245742012-09-05 17:12:55 -070024021 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024022}/*WDI_ProcessSetRssiFilterRsp*/
24023
24024/**
24025 @brief Process Update Scan Params Rsp function (called when a
24026 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024027
24028 @param pWDICtx: pointer to the WLAN DAL context
24029 pEventData: pointer to the event information structure
24030
Jeff Johnson295189b2012-06-20 16:38:30 -070024031 @see
24032 @return Result of the function call
24033*/
24034WDI_Status
24035WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024036(
Jeff Johnson295189b2012-06-20 16:38:30 -070024037 WDI_ControlBlockType* pWDICtx,
24038 WDI_EventInfoType* pEventData
24039)
24040{
24041 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070024042 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024044 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24046
24047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024049 -------------------------------------------------------------------------*/
24050 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24051 ( NULL == pEventData->pEventData ))
24052 {
24053 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024054 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024056 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024057 }
24058
24059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024060 "Process UPD scan params ptr : %x", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024061
Jeff Johnsone7245742012-09-05 17:12:55 -070024062 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024063
24064 /*-------------------------------------------------------------------------
24065 Extract response and send it to UMAC
24066 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024067 wpalMemoryCopy( (void *)&halUpdScanParams.status,
24068 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024069 sizeof(halUpdScanParams.status));
24070
24071 uStatus = halUpdScanParams.status;
24072
24073 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070024074 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024075
24076 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024077 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070024078
Jeff Johnsone7245742012-09-05 17:12:55 -070024079 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070024080
24081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024082 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 halUpdScanParams.status);
24084
24085 /*Notify UMAC*/
24086 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
24087
Jeff Johnsone7245742012-09-05 17:12:55 -070024088 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024089}
24090#endif // FEATURE_WLAN_SCAN_PNO
24091
24092#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070024093WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024094WDI_8023MulticastListReq
24095(
24096 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
24097 WDI_8023MulticastListCb wdi8023MulticastListCallback,
24098 void* pUserData
24099)
24100{
24101 WDI_EventInfoType wdiEventData;
24102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24103
24104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024105 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024106
24107 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024108 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024109 ------------------------------------------------------------------------*/
24110 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24111 {
24112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24113 "WDI API call before module is initialized - Fail request");
24114
Jeff Johnsone7245742012-09-05 17:12:55 -070024115 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024116 }
24117
24118 /*------------------------------------------------------------------------
24119 Fill in Event data and post to the Main FSM
24120 ------------------------------------------------------------------------*/
24121 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024122 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024123 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024124 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024125 wdiEventData.pUserData = pUserData;
24126
24127 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24128}
24129
Jeff Johnsone7245742012-09-05 17:12:55 -070024130WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024131WDI_ReceiveFilterSetFilterReq
24132(
24133 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
24134 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
24135 void* pUserData
24136)
24137{
24138 WDI_EventInfoType wdiEventData;
24139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24140
24141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024142 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024143
24144 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024145 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024146 ------------------------------------------------------------------------*/
24147 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24148 {
24149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24150 "WDI API call before module is initialized - Fail request");
24151
Jeff Johnsone7245742012-09-05 17:12:55 -070024152 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024153 }
24154
24155 /*------------------------------------------------------------------------
24156 Fill in Event data and post to the Main FSM
24157 ------------------------------------------------------------------------*/
24158 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024159 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
24160 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Maa450e8a2013-03-18 18:05:27 -070024161 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24162 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070024163 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024164 wdiEventData.pUserData = pUserData;
24165
24166
24167 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24168}
24169
Jeff Johnsone7245742012-09-05 17:12:55 -070024170WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024171WDI_FilterMatchCountReq
24172(
24173 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
24174 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
24175 void* pUserData
24176)
24177{
24178 WDI_EventInfoType wdiEventData;
24179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24180
24181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024182 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024183
24184 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024185 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024186 ------------------------------------------------------------------------*/
24187 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24188 {
24189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24190 "WDI API call before module is initialized - Fail request");
24191
Jeff Johnsone7245742012-09-05 17:12:55 -070024192 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024193 }
24194
24195 /*------------------------------------------------------------------------
24196 Fill in Event data and post to the Main FSM
24197 ------------------------------------------------------------------------*/
24198 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024199 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024200 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024201 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024202 wdiEventData.pUserData = pUserData;
24203
24204
24205 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24206}
24207
Jeff Johnsone7245742012-09-05 17:12:55 -070024208WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070024209WDI_ReceiveFilterClearFilterReq
24210(
24211 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
24212 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
24213 void* pUserData
24214)
24215{
24216 WDI_EventInfoType wdiEventData;
24217 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24218
24219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024220 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024221
24222 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024223 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070024224 ------------------------------------------------------------------------*/
24225 if ( eWLAN_PAL_FALSE == gWDIInitialized )
24226 {
24227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24228 "WDI API call before module is initialized - Fail request");
24229
Jeff Johnsone7245742012-09-05 17:12:55 -070024230 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070024231 }
24232
24233 /*------------------------------------------------------------------------
24234 Fill in Event data and post to the Main FSM
24235 ------------------------------------------------------------------------*/
24236 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024237 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024238 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070024239 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070024240 wdiEventData.pUserData = pUserData;
24241
24242
24243 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
24244}
24245
24246/**
24247 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024248
24249 @param pWDICtx: pointer to the WLAN DAL context
24250 pEventData: pointer to the event information structure
24251
Jeff Johnson295189b2012-06-20 16:38:30 -070024252 @see
24253 @return Result of the function call
24254*/
24255WDI_Status
24256WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024257(
Jeff Johnson295189b2012-06-20 16:38:30 -070024258 WDI_ControlBlockType* pWDICtx,
24259 WDI_EventInfoType* pEventData
24260)
24261{
24262 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
24263 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024264 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 wpt_uint16 usDataOffset = 0;
24266 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024267 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024269 wpt_uint8 ucCurrentBSSSesIdx = 0;
24270 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024271
24272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024273 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024274
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024275 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
24276 if( NULL == pRcvFltMcAddrListType )
24277 {
24278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24279 "Failed to alloc in WDI_Process8023MulticastListReq");
24280 return WDI_STATUS_E_FAILURE;
24281 }
24282
Jeff Johnson295189b2012-06-20 16:38:30 -070024283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024285 -------------------------------------------------------------------------*/
24286 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024287 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024289 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024290 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
24291 {
24292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024293 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024294 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024296 return WDI_STATUS_E_FAILURE;
24297 }
24298
24299 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24300 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
24301 &pBSSSes);
24302 if ( NULL == pBSSSes )
24303 {
24304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024305 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024306 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070024307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 }
24309
24310 /*-----------------------------------------------------------------------
24311 Get message buffer
24312 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024313 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24314 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024315 sizeof(tHalRcvFltMcAddrListType),
24316 &pSendBuffer, &usDataOffset, &usSendSize))||
24317 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
24318 {
24319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24320 "Unable to get send buffer in "
24321 "WDI_Process8023MulticastListReq() %x %x %x",
24322 pEventData, pwdiFltPktSetMcListReqParamsType,
24323 wdi8023MulticastListCb);
24324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024326 }
24327
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024328 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070024329 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024330 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070024331 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024332 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070024333 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
24334 sizeof(tSirMacAddr));
24335 }
24336
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024337 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024338 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024339 pRcvFltMcAddrListType,
24340 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070024341
24342 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024343 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024344
24345
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070024346 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070024347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024348 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024349 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024350 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024351 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024352 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024353}
24354
24355/**
24356 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024357
24358 @param pWDICtx: pointer to the WLAN DAL context
24359 pEventData: pointer to the event information structure
24360
Jeff Johnson295189b2012-06-20 16:38:30 -070024361 @see
24362 @return Result of the function call
24363*/
24364WDI_Status
24365WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024366(
Jeff Johnson295189b2012-06-20 16:38:30 -070024367 WDI_ControlBlockType* pWDICtx,
24368 WDI_EventInfoType* pEventData
24369)
24370{
24371 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
24372 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024373 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024374 wpt_uint16 usDataOffset = 0;
24375 wpt_uint16 usSendSize = 0;
24376 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024377 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024378 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070024379 wpt_uint8 ucCurrentBSSSesIdx = 0;
24380 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024381 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
24382 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070024383
24384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024385 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024386
24387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 -------------------------------------------------------------------------*/
24390 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024391 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070024392 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024393 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024394 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
24395 {
24396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024399 return WDI_STATUS_E_FAILURE;
24400 }
24401
24402 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24403 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
24404 &pBSSSes);
24405 if ( NULL == pBSSSes )
24406 {
24407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024408 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 }
24411
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024412 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
24413 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024414
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024415 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
24416 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24417 * sizeof(tHalSessionizedRcvPktFilterCfgType));
24418
24419 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
24420 usSessRcvPktFilterCfgSize);
24421
24422 if(NULL == pSessRcvPktFilterCfg)
24423 {
24424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24425 "%s: Failed to allocate memory for "
24426 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024427 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024428 WDI_ASSERT(0);
24429 return WDI_STATUS_E_FAILURE;
24430 }
24431
24432 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
24433
24434 /*-----------------------------------------------------------------------
24435 Get message buffer
24436 -----------------------------------------------------------------------*/
24437
24438 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
24439 usSessRcvPktFilterCfgSize,
24440 &pSendBuffer, &usDataOffset, &usSendSize))||
24441 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
24442 {
24443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24444 "Unable to get send buffer in "
24445 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24446 pEventData, pwdiSetRcvPktFilterReqInfo,
24447 wdiReceiveFilterSetFilterCb);
24448 WDI_ASSERT(0);
24449 wpalMemoryFree(pSessRcvPktFilterCfg);
24450 return WDI_STATUS_E_FAILURE;
24451 }
24452
24453 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24454 "UsData Off %d UsSend %d cfg %d",usDataOffset,
24455 usSendSize,pSessRcvPktFilterCfg);
24456
24457 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24458 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24459 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24460 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
24461
24462 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
24463
24464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24465 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
24466 pSessRcvPktFilterCfg->filterType);
24467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24468 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
24469 pSessRcvPktFilterCfg->coleasceTime);
24470
24471 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
24472 {
24473 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
24474 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24475 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
24476 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24477 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
24478 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24479 pSessRcvPktFilterCfg->paramsData[i].dataLength =
24480 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
24481
24482 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
24483 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24484 8);
24485 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
24486 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24487 8);
24488
24489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24490 "Out:Proto %d Comp Flag %d \n",
24491 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
24492 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
24493
24494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24495 "Data Offset %d Data Len %d\n",
24496 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
24497 pSessRcvPktFilterCfg->paramsData[i].dataLength);
24498
24499 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24500 "CData: %d:%d:%d:%d:%d:%d\n",
24501 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
24502 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
24503 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
24504 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
24505 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
24506 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
24507
24508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24509 "MData: %d:%d:%d:%d:%d:%d\n",
24510 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
24511 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
24512 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
24513 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
24514 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
24515 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
24516 }
24517
24518 wpalMemoryCopy( pSendBuffer+usDataOffset,
24519 pSessRcvPktFilterCfg,
24520 usSessRcvPktFilterCfgSize);
24521
24522
24523 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24524 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
24525
24526 wpalMemoryFree(pSessRcvPktFilterCfg);
24527
24528 }
24529 /*If SLM_SESSIONIZATION is not supported then do this */
24530 else
24531 {
24532 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
24533 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
24534 * sizeof(tHalRcvPktFilterParams));
24535
24536 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070024537 usRcvPktFilterCfgSize);
24538
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024539 if(NULL == pRcvPktFilterCfg)
24540 {
24541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24542 "%s: Failed to allocate memory for "
24543 "tHalRcvPktFilterCfgType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024544 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024545 WDI_ASSERT(0);
24546 return WDI_STATUS_E_FAILURE;
24547 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024548
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024549 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024550
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024551 /*-----------------------------------------------------------------------
24552 Get message buffer
24553 -----------------------------------------------------------------------*/
24554 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024555 usRcvPktFilterCfgSize,
24556 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024557 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
24558 {
24559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070024560 "Unable to get send buffer in "
24561 "WDI_ProcessReceiveFilterSetFilterReq() %x %x %x",
24562 pEventData, pwdiSetRcvPktFilterReqInfo,
24563 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024564 WDI_ASSERT(0);
24565 wpalMemoryFree(pRcvPktFilterCfg);
24566 return WDI_STATUS_E_FAILURE;
24567 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024568
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024570 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070024571 usSendSize,usRcvPktFilterCfgSize);
24572
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024573 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
24574 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
24575 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
24576 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070024577
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070024579 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070024580 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024582 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070024583 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070024584
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024585 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
24586 {
24587 pRcvPktFilterCfg->paramsData[i].protocolLayer =
24588 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
24589 pRcvPktFilterCfg->paramsData[i].cmpFlag =
24590 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
24591 pRcvPktFilterCfg->paramsData[i].dataOffset =
24592 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
24593 pRcvPktFilterCfg->paramsData[i].dataLength =
24594 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070024595
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024596 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024597 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
24598 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024599 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070024600 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
24601 8);
24602
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070024604 "Out:Proto %d Comp Flag %d \n",
Jeff Johnsone7245742012-09-05 17:12:55 -070024605 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070024606 pRcvPktFilterCfg->paramsData[i].cmpFlag);
24607
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24609 "Data Offset %d Data Len %d\n",
24610 pRcvPktFilterCfg->paramsData[i].dataOffset,
24611 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070024612
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024613 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24614 "CData: %d:%d:%d:%d:%d:%d\n",
24615 pRcvPktFilterCfg->paramsData[i].compareData[0],
24616 pRcvPktFilterCfg->paramsData[i].compareData[1],
24617 pRcvPktFilterCfg->paramsData[i].compareData[2],
24618 pRcvPktFilterCfg->paramsData[i].compareData[3],
24619 pRcvPktFilterCfg->paramsData[i].compareData[4],
24620 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070024621
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24623 "MData: %d:%d:%d:%d:%d:%d\n",
24624 pRcvPktFilterCfg->paramsData[i].dataMask[0],
24625 pRcvPktFilterCfg->paramsData[i].dataMask[1],
24626 pRcvPktFilterCfg->paramsData[i].dataMask[2],
24627 pRcvPktFilterCfg->paramsData[i].dataMask[3],
24628 pRcvPktFilterCfg->paramsData[i].dataMask[4],
24629 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
24630 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024631
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024632 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070024633 pRcvPktFilterCfg,
24634 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070024635
24636
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024637 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
24638 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024639
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024641 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024642 wpalMemoryFree(pRcvPktFilterCfg);
24643 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024645 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024646 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024647 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024648 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024649 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024650}
24651
24652/**
24653 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024654
24655 @param pWDICtx: pointer to the WLAN DAL context
24656 pEventData: pointer to the event information structure
24657
Jeff Johnson295189b2012-06-20 16:38:30 -070024658 @see
24659 @return Result of the function call
24660*/
24661WDI_Status
24662WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024663(
Jeff Johnson295189b2012-06-20 16:38:30 -070024664 WDI_ControlBlockType* pWDICtx,
24665 WDI_EventInfoType* pEventData
24666)
24667{
24668 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
24669 NULL;
24670 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
24671 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024672 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024673 wpt_uint16 usDataOffset = 0;
24674 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024675 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
24676 wpt_uint8 ucCurrentBSSSesIdx = 0;
24677 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024678
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 == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024686 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070024687 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024688 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024689 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
24690 {
24691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024695 }
24696
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024697 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
24698 pwdiRcvFltPktMatchCntReqParamsType->bssId,
24699 &pBSSSes);
24700 if ( NULL == pBSSSes )
24701 {
24702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024703 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024704 return WDI_STATUS_E_FAILURE;
24705 }
24706
Jeff Johnson295189b2012-06-20 16:38:30 -070024707 /*-----------------------------------------------------------------------
24708 Get message buffer
24709 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024710 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
24711 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024712 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070024713 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024714 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070024715 {
24716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24717 "Unable to get send buffer in "
24718 "WDI_ProcessFilterMatchCountReq() %x %x %x",
24719 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
24720 wdiFilterMatchCountCb);
24721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024723 }
24724
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024725 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
24726 wpalMemoryCopy( pSendBuffer+usDataOffset,
24727 &rcvFltPktMatchCntReqParam,
24728 sizeof(rcvFltPktMatchCntReqParam));
24729
Jeff Johnson295189b2012-06-20 16:38:30 -070024730 //
24731 // Don't need to fill send buffer other than header
24732 //
24733 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024734 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024735
24736
24737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024738 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024739 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024740 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24741 wdiFilterMatchCountCb,
24742 pEventData->pUserData,
24743 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024744}
24745
24746/**
24747 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070024748
24749 @param pWDICtx: pointer to the WLAN DAL context
24750 pEventData: pointer to the event information structure
24751
Jeff Johnson295189b2012-06-20 16:38:30 -070024752 @see
24753 @return Result of the function call
24754*/
24755WDI_Status
24756WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024757(
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 WDI_ControlBlockType* pWDICtx,
24759 WDI_EventInfoType* pEventData
24760)
Jeff Johnsone7245742012-09-05 17:12:55 -070024761{
Jeff Johnson295189b2012-06-20 16:38:30 -070024762 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
24763 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024764 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024765 wpt_uint16 usDataOffset = 0;
24766 wpt_uint16 usSendSize = 0;
24767 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024768 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024769 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024770
24771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024772 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024773
24774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024775 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024776 -------------------------------------------------------------------------*/
24777 if (( NULL == pEventData ) ||
24778 ( NULL == (pwdiRcvFltPktClearReqParamsType =
24779 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070024780 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070024781 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
24782 {
24783 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024784 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024785 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024786 return WDI_STATUS_E_FAILURE;
24787 }
24788
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024789 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024790 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
24791 &pBSSSes);
24792 if ( NULL == pBSSSes )
24793 {
24794 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024795 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024797 }
24798
24799 /*-----------------------------------------------------------------------
24800 Get message buffer
24801 -----------------------------------------------------------------------*/
24802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070024803 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024804 sizeof(tHalRcvFltPktClearParam),
24805 &pSendBuffer, &usDataOffset, &usSendSize))||
24806 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
24807 {
24808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
24809 "Unable to get send buffer in "
24810 "WDI_ProcessReceiveFilterClearFilterReq() %x %x %x",
24811 pEventData, pwdiRcvFltPktClearReqParamsType,
24812 wdiRcvFltPktClearFilterCb);
24813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024815 }
24816
24817
24818 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024819 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070024820 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070024821 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070024822
Jeff Johnsone7245742012-09-05 17:12:55 -070024823 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
24824 wpalMemoryCopy( pSendBuffer+usDataOffset,
24825 &rcvFltPktClearParam,
24826 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070024827
24828 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024829 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024830
24831
24832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024833 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070024836 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070024837 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070024838}
24839
24840/**
24841 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024842
24843 @param pWDICtx: pointer to the WLAN DAL context
24844 pEventData: pointer to the event information structure
24845
Jeff Johnson295189b2012-06-20 16:38:30 -070024846 @see
24847 @return Result of the function call
24848*/
24849WDI_Status
24850WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024851(
Jeff Johnson295189b2012-06-20 16:38:30 -070024852 WDI_ControlBlockType* pWDICtx,
24853 WDI_EventInfoType* pEventData
24854)
24855{
Jeff Johnson295189b2012-06-20 16:38:30 -070024856 eHalStatus halStatus;
24857 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024858 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
24859 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24861
24862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024863 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024864
24865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024867 -------------------------------------------------------------------------*/
24868 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24869 ( NULL == pEventData->pEventData ))
24870 {
24871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024875 }
24876
Jeff Johnsone7245742012-09-05 17:12:55 -070024877 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024878
24879 /*-------------------------------------------------------------------------
24880 Extract response and send it to UMAC
24881 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024882 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24883 {
24884 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
24885 pEventData->pEventData,
24886 sizeof(halRcvFltPktSetMcListRsp));
24887
24888 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
24889 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
24890 wdiRcvFltPktSetMcListRspInfo.bssIdx =
24891 halRcvFltPktSetMcListRsp.bssIdx;
24892 }
24893 else
24894 {
24895 halStatus = *((eHalStatus*)pEventData->pEventData);
24896 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24897 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024898
24899 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024900 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024901
Jeff Johnsone7245742012-09-05 17:12:55 -070024902 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024903}
24904
24905/**
24906 @brief Process Set Rsp function (called when a
24907 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070024908
24909 @param pWDICtx: pointer to the WLAN DAL context
24910 pEventData: pointer to the event information structure
24911
Jeff Johnson295189b2012-06-20 16:38:30 -070024912 @see
24913 @return Result of the function call
24914*/
24915WDI_Status
24916WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024917(
Jeff Johnson295189b2012-06-20 16:38:30 -070024918 WDI_ControlBlockType* pWDICtx,
24919 WDI_EventInfoType* pEventData
24920)
24921{
Jeff Johnson295189b2012-06-20 16:38:30 -070024922 eHalStatus halStatus;
24923 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024924 tHalSetPktFilterRspParams halSetPktFilterRspParams;
24925 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24927
24928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024929 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024930
24931 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024932 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024933 -------------------------------------------------------------------------*/
24934 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24935 ( NULL == pEventData->pEventData ))
24936 {
24937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024941 }
24942
24943 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070024944 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024945
24946 /*-------------------------------------------------------------------------
24947 Extract response and send it to UMAC
24948 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024949 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
24950 {
24951 wpalMemoryCopy( &halSetPktFilterRspParams,
24952 pEventData->pEventData,
24953 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070024954
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024955 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
24956 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
24957 }
24958 else
24959 {
24960 halStatus = *((eHalStatus*)pEventData->pEventData);
24961 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
24962 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024963 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024964 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070024965
Jeff Johnsone7245742012-09-05 17:12:55 -070024966 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024967}
24968
24969/**
24970 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070024971
24972 @param pWDICtx: pointer to the WLAN DAL context
24973 pEventData: pointer to the event information structure
24974
Jeff Johnson295189b2012-06-20 16:38:30 -070024975 @see
24976 @return Result of the function call
24977*/
24978WDI_Status
24979WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070024980(
Jeff Johnson295189b2012-06-20 16:38:30 -070024981 WDI_ControlBlockType* pWDICtx,
24982 WDI_EventInfoType* pEventData
24983)
24984{
Jeff Johnson295189b2012-06-20 16:38:30 -070024985 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070024986 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070024987 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
24988 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070024989
24990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24991
24992 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024993 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024994
24995 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024996 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024997 -------------------------------------------------------------------------*/
24998 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
24999 ( NULL == pEventData->pEventData ))
25000 {
25001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025002 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025005 }
25006
Jeff Johnsone7245742012-09-05 17:12:55 -070025007 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025008
25009 /*-------------------------------------------------------------------------
25010 Extract response and send it to UMAC
25011 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025012 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25013 {
25014 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
25015 pEventData->pEventData,
25016 sizeof(halRcvFltrPktMatachRsp));
25017
25018 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
25019 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
25020 }
25021 else
25022 {
25023 halStatus = *((eHalStatus*)pEventData->pEventData);
25024 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25025 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025026
25027 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025028 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025029
Jeff Johnsone7245742012-09-05 17:12:55 -070025030 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025031}
25032
25033/**
25034 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070025035
25036 @param pWDICtx: pointer to the WLAN DAL context
25037 pEventData: pointer to the event information structure
25038
Jeff Johnson295189b2012-06-20 16:38:30 -070025039 @see
25040 @return Result of the function call
25041*/
25042WDI_Status
25043WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025044(
Jeff Johnson295189b2012-06-20 16:38:30 -070025045 WDI_ControlBlockType* pWDICtx,
25046 WDI_EventInfoType* pEventData
25047)
25048{
Jeff Johnson295189b2012-06-20 16:38:30 -070025049 eHalStatus halStatus;
25050 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025051 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
25052 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070025053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25054
25055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025056 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025057
25058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025060 -------------------------------------------------------------------------*/
25061 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25062 ( NULL == pEventData->pEventData ))
25063 {
25064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025065 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025066 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025068 }
25069
25070 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070025071 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025072
25073 /*-------------------------------------------------------------------------
25074 Extract response and send it to UMAC
25075 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025076 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25077 {
25078 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
25079 pEventData->pEventData,
25080 sizeof(halRcvFltPktClearRspMsg));
25081
25082 wdiRcvFltPktClearRspParamsType.wdiStatus =
25083 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
25084 wdiRcvFltPktClearRspParamsType.bssIdx =
25085 halRcvFltPktClearRspMsg.bssIdx;
25086 }
25087 else
25088 {
25089 halStatus = *((eHalStatus*)pEventData->pEventData);
25090 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25091 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025092
25093 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025094 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025095
Jeff Johnsone7245742012-09-05 17:12:55 -070025096 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025097}
25098#endif // WLAN_FEATURE_PACKET_FILTERING
25099
25100/**
25101 @brief Process Shutdown Rsp function
25102 There is no shutdown response comming from HAL
25103 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070025104
Jeff Johnson295189b2012-06-20 16:38:30 -070025105 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070025106 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025107
25108 @see
25109 @return Result of the function call
25110*/
25111WDI_Status
25112WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025113(
Jeff Johnson295189b2012-06-20 16:38:30 -070025114 WDI_ControlBlockType* pWDICtx,
25115 WDI_EventInfoType* pEventData
25116)
25117{
25118 /*There is no shutdown response comming from HAL - function just kept for
25119 simmetry */
25120 WDI_ASSERT(0);
25121 return WDI_STATUS_SUCCESS;
25122}/*WDI_ProcessShutdownRsp*/
25123
25124/**
25125 @brief WDI_SetPowerParamsReq
25126
Jeff Johnsone7245742012-09-05 17:12:55 -070025127 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070025128 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070025129
Jeff Johnson295189b2012-06-20 16:38:30 -070025130 wdiPowerParamsCb: callback for passing back the response
25131 of the Set Power Params operation received from the
25132 device
Jeff Johnsone7245742012-09-05 17:12:55 -070025133
Jeff Johnson295189b2012-06-20 16:38:30 -070025134 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070025135 callback
25136
Jeff Johnson295189b2012-06-20 16:38:30 -070025137 @return Result of the function call
25138*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025139WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070025140WDI_SetPowerParamsReq
25141(
25142 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
25143 WDI_SetPowerParamsCb wdiPowerParamsCb,
25144 void* pUserData
25145)
25146{
25147 WDI_EventInfoType wdiEventData;
25148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25149
25150 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025151 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025152 ------------------------------------------------------------------------*/
25153 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25154 {
25155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25156 "WDI API call before module is initialized - Fail request");
25157
Jeff Johnsone7245742012-09-05 17:12:55 -070025158 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025159 }
25160
25161 /*------------------------------------------------------------------------
25162 Fill in Event data and post to the Main FSM
25163 ------------------------------------------------------------------------*/
25164 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025165 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025166 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070025167 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070025168 wdiEventData.pUserData = pUserData;
25169
25170 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25171}/*WDI_SetPowerParamsReq*/
25172
25173/**
25174 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070025175
25176 @param pWDICtx: pointer to the WLAN DAL context
25177 pEventData: pointer to the event information structure
25178
Jeff Johnson295189b2012-06-20 16:38:30 -070025179 @see
25180 @return Result of the function call
25181*/
25182WDI_Status
25183WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070025184(
Jeff Johnson295189b2012-06-20 16:38:30 -070025185 WDI_ControlBlockType* pWDICtx,
25186 WDI_EventInfoType* pEventData
25187)
25188{
25189 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
25190 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025191 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025192 wpt_uint16 usDataOffset = 0;
25193 wpt_uint16 usSendSize = 0;
25194 tSetPowerParamsType powerParams;
25195
25196 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025197 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025198 -------------------------------------------------------------------------*/
25199 if (( NULL == pEventData ) ||
25200 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
25201 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
25202 {
25203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025204 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025205 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025207 }
25208
25209 /*-----------------------------------------------------------------------
25210 Get message buffer
25211 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025212 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070025213 sizeof(powerParams),
25214 &pSendBuffer, &usDataOffset, &usSendSize))||
25215 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
25216 {
25217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25218 "Unable to get send buffer in Set PNO req %x %x %x",
25219 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
25220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025222 }
25223
25224 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070025225 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070025226 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
25227
25228 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025229 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070025230 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
25231
25232 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025233 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070025234 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
25235
25236 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070025237 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070025238 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
25239
25240 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070025241 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070025242 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
25243
25244 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070025245 powerParams.uBETInterval =
25246 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070025247
Jeff Johnsone7245742012-09-05 17:12:55 -070025248
25249 wpalMemoryCopy( pSendBuffer+usDataOffset,
25250 &powerParams,
25251 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025252
25253 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070025254 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070025255
25256 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025257 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070025258 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025259 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25260 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070025261}
25262
25263/**
25264 @brief Process Power Params Rsp function (called when a
25265 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070025266
25267 @param pWDICtx: pointer to the WLAN DAL context
25268 pEventData: pointer to the event information structure
25269
Jeff Johnson295189b2012-06-20 16:38:30 -070025270 @see
25271 @return Result of the function call
25272*/
25273WDI_Status
25274WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070025275(
Jeff Johnson295189b2012-06-20 16:38:30 -070025276 WDI_ControlBlockType* pWDICtx,
25277 WDI_EventInfoType* pEventData
25278)
25279{
25280 WDI_Status wdiStatus;
25281 eHalStatus halStatus;
25282 WDI_SetPowerParamsCb wdiPowerParamsCb;
25283 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25284
25285 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025286 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070025287 -------------------------------------------------------------------------*/
25288 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25289 ( NULL == pEventData->pEventData ))
25290 {
25291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025292 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025293 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070025294 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025295 }
25296
Jeff Johnsone7245742012-09-05 17:12:55 -070025297 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070025298
25299 /*-------------------------------------------------------------------------
25300 Extract response and send it to UMAC
25301 -------------------------------------------------------------------------*/
25302 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070025303 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070025304
25305 /*Notify UMAC*/
25306 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25307
Jeff Johnsone7245742012-09-05 17:12:55 -070025308 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070025309}/*WDI_ProcessSetPowerParamsRsp*/
25310
25311#ifdef WLAN_FEATURE_GTK_OFFLOAD
25312/**
25313 @brief WDI_GTKOffloadReq will be called when the upper MAC
25314 wants to set GTK Rekey Counter while in power save. Upon
25315 the call of this API the WLAN DAL will pack and send a
25316 HAL GTK offload request message to the lower RIVA
25317 sub-system if DAL is in state STARTED.
25318
25319 In state BUSY this request will be queued. Request won't
25320 be allowed in any other state.
25321
25322 WDI_PostAssocReq must have been called.
25323
25324 @param pwdiGtkOffloadParams: the GTK offload as specified
25325 by the Device Interface
25326
25327 wdiGtkOffloadCb: callback for passing back the response
25328 of the GTK offload operation received from the device
25329
25330 pUserData: user data will be passed back with the
25331 callback
25332
25333 @see WDI_PostAssocReq
25334 @return Result of the function call
25335*/
25336WDI_Status
25337WDI_GTKOffloadReq
25338(
25339 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
25340 WDI_GtkOffloadCb wdiGtkOffloadCb,
25341 void* pUserData
25342)
25343{
25344 WDI_EventInfoType wdiEventData = {0};
25345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25346
25347 /*------------------------------------------------------------------------
25348 Sanity Check
25349 ------------------------------------------------------------------------*/
25350 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25351 {
25352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25353 "WDI API call before module is initialized - Fail request");
25354
25355 return WDI_STATUS_E_NOT_ALLOWED;
25356 }
25357
25358 /*------------------------------------------------------------------------
25359 Fill in Event data and post to the Main FSM
25360 ------------------------------------------------------------------------*/
25361 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
25362 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070025363 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070025364 wdiEventData.pCBfnc = wdiGtkOffloadCb;
25365 wdiEventData.pUserData = pUserData;
25366
25367 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25368}
25369
25370
25371/**
25372 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
25373 MAC wants to get GTK Rekey Counter while in power save.
25374 Upon the call of this API the WLAN DAL will pack and
25375 send a HAL GTK offload request message to the lower RIVA
25376 sub-system if DAL is in state STARTED.
25377
25378 In state BUSY this request will be queued. Request won't
25379 be allowed in any other state.
25380
25381 WDI_PostAssocReq must have been called.
25382
25383 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
25384 Information Message as specified by the
25385 Device Interface
25386
25387 wdiGtkOffloadGetInfoCb: callback for passing back the
25388 response of the GTK offload operation received from the
25389 device
25390
25391 pUserData: user data will be passed back with the
25392 callback
25393
25394 @see WDI_PostAssocReq
25395 @return Result of the function call
25396*/
25397WDI_Status
25398WDI_GTKOffloadGetInfoReq
25399(
25400 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
25401 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
25402 void* pUserData
25403)
25404{
25405 WDI_EventInfoType wdiEventData = {0};
25406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25407
25408 /*------------------------------------------------------------------------
25409 Sanity Check
25410 ------------------------------------------------------------------------*/
25411 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25412 {
25413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25414 "WDI API call before module is initialized - Fail request");
25415
25416 return WDI_STATUS_E_NOT_ALLOWED;
25417 }
25418
25419 /*------------------------------------------------------------------------
25420 Fill in Event data and post to the Main FSM
25421 ------------------------------------------------------------------------*/
25422 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
25423 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
25424 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
25425 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
25426 wdiEventData.pUserData = pUserData;
25427
25428 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
25429}
25430
25431
25432/**
25433 @brief Process set GTK Offload Request function
25434
25435 @param pWDICtx: pointer to the WLAN DAL context
25436 pEventData: pointer to the event information structure
25437
25438 @see
25439 @return Result of the function call
25440*/
25441WDI_Status
25442WDI_ProcessGTKOffloadReq
25443(
25444 WDI_ControlBlockType* pWDICtx,
25445 WDI_EventInfoType* pEventData
25446)
25447{
25448 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
25449 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
25450 wpt_uint8* pSendBuffer = NULL;
25451 wpt_uint16 usDataOffset = 0;
25452 wpt_uint16 usSendSize = 0;
25453 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025454 wpt_uint8 ucCurrentSessionId = 0;
25455 WDI_BSSSessionType* pBSSSes = NULL;
25456
Jeff Johnson295189b2012-06-20 16:38:30 -070025457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25458
25459 /*-------------------------------------------------------------------------
25460 Sanity check
25461 -------------------------------------------------------------------------*/
25462 if (( NULL == pEventData ) ||
25463 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
25464 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
25465 {
25466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025467 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025468 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025469 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025470 }
25471
25472 /*-----------------------------------------------------------------------
25473 Get message buffer
25474 -----------------------------------------------------------------------*/
25475 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
25476 sizeof(gtkOffloadReqParams),
25477 &pSendBuffer, &usDataOffset, &usSendSize))||
25478 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
25479 {
25480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25481 "Unable to get send buffer in GTK offload req %x %x %x",
25482 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
25483 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025484 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025485 }
25486
25487 //
25488 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
25489 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025490 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25491 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
25492 &pBSSSes);
25493 if ( NULL == pBSSSes )
25494 {
25495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025496 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025497 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025498 }
25499
25500 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
25501
Jeff Johnson295189b2012-06-20 16:38:30 -070025502 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
25503 // Copy KCK
25504 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
25505 // Copy KEK
25506 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
25507 // Copy KeyReplayCounter
25508 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
25509
25510 wpalMemoryCopy( pSendBuffer+usDataOffset,
25511 &gtkOffloadReqParams,
25512 sizeof(gtkOffloadReqParams));
25513
25514 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
25515 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
25516
25517 /*-------------------------------------------------------------------------
25518 Send Get STA Request to HAL
25519 -------------------------------------------------------------------------*/
25520 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25521 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025522
25523fail:
25524 // Release the message buffer so we don't leak
25525 wpalMemoryFree(pSendBuffer);
25526
25527failRequest:
25528 //WDA should have failure check to avoid the memory leak
25529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025530}
25531
25532
25533/**
25534 @brief Process GTK Offload Get Information Request function
25535
25536 @param pWDICtx: pointer to the WLAN DAL context
25537 pEventData: pointer to the event information structure
25538
25539 @see
25540 @return Result of the function call
25541*/
25542WDI_Status
25543WDI_ProcessGTKOffloadGetInfoReq
25544(
25545 WDI_ControlBlockType* pWDICtx,
25546 WDI_EventInfoType* pEventData
25547)
25548{
25549 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
25550 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
25551 wpt_uint8* pSendBuffer = NULL;
25552 wpt_uint16 usDataOffset = 0;
25553 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025554 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
25555 wpt_uint8 ucCurrentSessionId = 0;
25556 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070025557
25558 /*-------------------------------------------------------------------------
25559 Sanity check
25560 -------------------------------------------------------------------------*/
25561 if (( NULL == pEventData ) ||
25562 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
25563 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
25564 {
25565 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025566 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025567 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025568 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025569 }
25570
25571 /*-----------------------------------------------------------------------
25572 Get message buffer
25573 -----------------------------------------------------------------------*/
25574 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025575 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070025576 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025577 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams)))
Jeff Johnson295189b2012-06-20 16:38:30 -070025578 {
25579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25580 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %x %x %x",
25581 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
25582 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025583 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070025584 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025585 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
25586 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
25587 &pBSSSes);
25588 if ( NULL == pBSSSes )
25589 {
25590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025591 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025592 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025593 }
25594 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070025595
25596 //
25597 // Don't need to fill send buffer other than header
25598 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025599 wpalMemoryCopy( pSendBuffer+usDataOffset,
25600 &halGtkOffloadGetInfoReqParams,
25601 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025602
25603 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
25604 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
25605
25606 /*-------------------------------------------------------------------------
25607 Send Get STA Request to HAL
25608 -------------------------------------------------------------------------*/
25609 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25610 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli10bf4c22013-02-12 11:23:46 -080025611fail:
25612 // Release the message buffer so we don't leak
25613 wpalMemoryFree(pSendBuffer);
25614
25615failRequest:
25616 //WDA should have failure check to avoid the memory leak
25617 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025618}
25619
25620/**
25621 @brief Process host offload Rsp function (called when a
25622 response is being received over the bus from HAL)
25623
25624 @param pWDICtx: pointer to the WLAN DAL context
25625 pEventData: pointer to the event information structure
25626
25627 @see
25628 @return Result of the function call
25629*/
25630WDI_Status
25631WDI_ProcessGtkOffloadRsp
25632(
25633 WDI_ControlBlockType* pWDICtx,
25634 WDI_EventInfoType* pEventData
25635)
25636{
Jeff Johnson295189b2012-06-20 16:38:30 -070025637 eHalStatus halStatus;
25638 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025639 tHalGtkOffloadRspParams halGtkOffloadRspParams;
25640 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25642
25643 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
25644
25645 /*-------------------------------------------------------------------------
25646 Sanity check
25647 -------------------------------------------------------------------------*/
25648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25649 ( NULL == pEventData->pEventData))
25650 {
25651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025653 WDI_ASSERT(0);
25654 return WDI_STATUS_E_FAILURE;
25655 }
25656
25657 /*-------------------------------------------------------------------------
25658 Extract response and send it to UMAC
25659 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025660 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25661 {
25662 wpalMemoryCopy( &halGtkOffloadRspParams,
25663 pEventData->pEventData,
25664 sizeof(halGtkOffloadRspParams));
25665
25666 wdiGtkOffloadRsparams.ulStatus =
25667 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.status);
25668 wdiGtkOffloadRsparams.bssIdx =
25669 halGtkOffloadRspParams.bssIdx;
25670 }
25671 else
25672 {
25673 halStatus = *((eHalStatus*)pEventData->pEventData);
25674 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25675 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025676
25677 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025678 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025679
25680 return WDI_STATUS_SUCCESS;
25681}
25682
25683/**
25684 @brief Process GTK Offload Get Information Response 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_ProcessGTKOffloadGetInfoRsp
25694(
25695 WDI_ControlBlockType* pWDICtx,
25696 WDI_EventInfoType* pEventData
25697)
25698{
Jeff Johnson295189b2012-06-20 16:38:30 -070025699 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070025700 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025701 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
25702 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070025703
25704 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25705
25706 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
25707
25708 /*-------------------------------------------------------------------------
25709 Sanity check
25710 -------------------------------------------------------------------------*/
25711 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25712 ( NULL == pEventData->pEventData ))
25713 {
25714 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025715 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025716 WDI_ASSERT(0);
25717 return WDI_STATUS_E_FAILURE;
25718 }
25719
25720 /*-------------------------------------------------------------------------
25721 Extract response and send it to UMAC
25722 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025723 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
25724 {
25725 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
25726 pEventData->pEventData,
25727 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070025728
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025729 wdiGtkOffloadGetInfoRsparams.ulStatus =
25730 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.status);
25731 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
25732 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
25733 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
25734 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
25735 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
25736 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
25737 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
25738 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
25739 wdiGtkOffloadGetInfoRsparams.bssIdx =
25740 halGtkOffloadGetInfoRspParams.bssIdx;
25741 }
25742 else
25743 {
25744 halStatus = *((eHalStatus*)pEventData->pEventData);
25745 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25746 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025747 /*Notify UMAC*/
25748 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
25749 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070025750 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025751
25752 return WDI_STATUS_SUCCESS;
25753}
25754#endif // WLAN_FEATURE_GTK_OFFLOAD
25755
25756#ifdef WLAN_WAKEUP_EVENTS
25757WDI_Status
25758WDI_ProcessWakeReasonInd
25759(
25760 WDI_ControlBlockType* pWDICtx,
25761 WDI_EventInfoType* pEventData
25762)
25763{
25764 WDI_LowLevelIndType *pWdiInd;
25765 tpWakeReasonParams pWakeReasonParams;
25766 wpt_uint32 allocSize = 0;
25767
25768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025769 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025770
25771 /*-------------------------------------------------------------------------
25772 Sanity check
25773 -------------------------------------------------------------------------*/
25774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25775 ( NULL == pEventData->pEventData ))
25776 {
25777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025778 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025779 WDI_ASSERT( 0 );
25780 return WDI_STATUS_E_FAILURE;
25781 }
25782
25783 /*-------------------------------------------------------------------------
25784 Extract indication and send it to UMAC
25785 -------------------------------------------------------------------------*/
25786 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
25787
25788 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
25789
25790 //Allocate memory for WDI_WakeReasonIndType structure
25791 pWdiInd = wpalMemoryAllocate(allocSize) ;
25792
25793 if(NULL == pWdiInd)
25794 {
25795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25796 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %x %x %x ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025797 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070025798 WDI_ASSERT(0);
25799 return WDI_STATUS_E_FAILURE;
25800 }
25801
25802 wpalMemoryZero(pWdiInd, allocSize);
25803
25804 /* Fill in the indication parameters*/
25805 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
25806 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
25807 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
25808 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
25809 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
25810 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
25811 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
25812 &(pWakeReasonParams->aDataStart[0]),
25813 pWakeReasonParams->ulStoredDataLen);
25814
ltimariu034f7d62013-01-24 18:54:33 -080025815
25816 if ( pWDICtx->wdiLowLevelIndCB )
25817 {
25818 /*Notify UMAC*/
25819 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
25820 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025821
25822 //Free memory allocated for WDI_WakeReasonIndType structure
25823 wpalMemoryFree(pWdiInd);
25824
25825 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025826 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025827
25828 return WDI_STATUS_SUCCESS;
25829}
25830#endif // WLAN_WAKEUP_EVENTS
25831
25832void WDI_GetWcnssCompiledApiVersion
25833(
25834 WDI_WlanVersionType *pWcnssApiVersion
25835)
25836{
25837 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
25838 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
25839 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
25840 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
25841}
25842
25843/**
25844 @brief Process Set TM Level Rsp function (called when a
25845 response is being received over the bus from HAL)
25846
25847 @param pWDICtx: pointer to the WLAN DAL context
25848 pEventData: pointer to the event information structure
25849
25850 @see
25851 @return Result of the function call
25852*/
25853WDI_Status
25854WDI_ProcessSetTmLevelRsp
25855(
25856 WDI_ControlBlockType* pWDICtx,
25857 WDI_EventInfoType* pEventData
25858)
25859{
25860 WDI_Status wdiStatus;
25861 eHalStatus halStatus;
25862 WDI_SetTmLevelCb wdiSetTmLevelCb;
25863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25864
25865 /*-------------------------------------------------------------------------
25866 Sanity check
25867 -------------------------------------------------------------------------*/
25868 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
25869 ( NULL == pEventData->pEventData ))
25870 {
25871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025873 WDI_ASSERT(0);
25874 return WDI_STATUS_E_FAILURE;
25875 }
25876
25877 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
25878
25879 /*-------------------------------------------------------------------------
25880 Extract response and send it to UMAC
25881 -------------------------------------------------------------------------*/
25882 halStatus = *((eHalStatus*)pEventData->pEventData);
25883 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
25884
25885 /*Notify UMAC*/
25886 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
25887
25888 return WDI_STATUS_SUCCESS;
25889}/*WDI_ProcessSetTmLevelRsp*/
25890
25891/**
25892 @brief Process Set Thermal Mitigation level Changed request
25893
25894 @param pWDICtx: pointer to the WLAN DAL context
25895 pEventData: pointer to the event information structure
25896
25897 @see
25898 @return Result of the function call
25899*/
25900WDI_Status
25901WDI_ProcessSetTmLevelReq
25902(
25903 WDI_ControlBlockType* pWDICtx,
25904 WDI_EventInfoType* pEventData
25905)
25906{
25907 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
25908 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
25909 wpt_uint8* pSendBuffer = NULL;
25910 wpt_uint16 usDataOffset = 0;
25911 wpt_uint16 usSendSize = 0;
25912 tSetThermalMitgationType halTmMsg;
25913
25914 /*-------------------------------------------------------------------------
25915 Sanity check
25916 -------------------------------------------------------------------------*/
25917 if (( NULL == pEventData ) ||
25918 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
25919 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
25920 {
25921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070025922 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070025923 WDI_ASSERT(0);
25924 return WDI_STATUS_E_FAILURE;
25925 }
25926
25927 /*-----------------------------------------------------------------------
25928 Get message buffer
25929 -----------------------------------------------------------------------*/
25930 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
25931 sizeof(halTmMsg),
25932 &pSendBuffer, &usDataOffset, &usSendSize))||
25933 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
25934 {
25935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25936 "Unable to get send buffer in Set PNO req %x %x %x",
25937 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
25938 WDI_ASSERT(0);
25939 return WDI_STATUS_E_FAILURE;
25940 }
25941
25942 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
25943 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
25944
25945 wpalMemoryCopy( pSendBuffer+usDataOffset,
25946 &halTmMsg,
25947 sizeof(halTmMsg));
25948
25949 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
25950 pWDICtx->pfncRspCB = NULL;
25951 /*-------------------------------------------------------------------------
25952 Send Get STA Request to HAL
25953 -------------------------------------------------------------------------*/
25954 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
25955 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
25956}
25957
25958/* Fill the value from the global features enabled array to the global capabilities
25959 * bitmap struct
25960 */
25961static void
25962FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
25963{
25964 wpt_int8 i;
25965 for (i=0; i<len; i++)
25966 {
25967 setFeatCaps(fCaps, enabledFeat[i]);
25968 }
25969}
25970
25971/**
25972 @brief WDI_featureCapsExchangeReq
25973 Post feature capability bitmap exchange event.
25974 Host will send its own capability to FW in this req and
25975 expect FW to send its capability back as a bitmap in Response
25976
25977 @param
25978
25979 wdiFeatureCapsExchangeCb: callback called on getting the response.
25980 It is kept to mantain similarity between WDI reqs and if needed, can
25981 be used in future. Currently, It is set to NULL
25982
25983 pUserData: user data will be passed back with the
25984 callback
25985
25986 @see
25987 @return Result of the function call
25988*/
25989WDI_Status
25990WDI_featureCapsExchangeReq
25991(
25992 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
25993 void* pUserData
25994)
25995{
25996 WDI_EventInfoType wdiEventData;
25997 wpt_int32 fCapsStructSize;
25998
25999 /*------------------------------------------------------------------------
26000 Sanity Check
26001 ------------------------------------------------------------------------*/
26002 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26003 {
26004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26005 "WDI API call before module is initialized - Fail request");
26006
26007 return WDI_STATUS_E_NOT_ALLOWED;
26008 }
26009
26010 /* Allocate memory separately for global variable carrying FW caps */
26011 fCapsStructSize = sizeof(tWlanFeatCaps);
26012 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26013 if ( NULL == gpHostWlanFeatCaps )
26014 {
26015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26016 "Cannot allocate memory for host capability info\n");
26017 WDI_ASSERT(0);
26018 return WDI_STATUS_MEM_FAILURE;
26019 }
26020
26021 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
26022
26023 /*------------------------------------------------------------------------
26024 Fill in Event data and post to the Main FSM
26025 ------------------------------------------------------------------------*/
26026 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
26027 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Jeff Johnsone7245742012-09-05 17:12:55 -070026028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26029 "Host caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026030 gpHostWlanFeatCaps->featCaps[0],
26031 gpHostWlanFeatCaps->featCaps[1],
26032 gpHostWlanFeatCaps->featCaps[2],
26033 gpHostWlanFeatCaps->featCaps[3]
26034 );
26035
26036 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
26037 wdiEventData.pEventData = gpHostWlanFeatCaps;
26038 wdiEventData.uEventDataSize = fCapsStructSize;
26039 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
26040 wdiEventData.pUserData = pUserData;
26041
26042 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26043}
26044
26045/**
Yathishd8713192012-12-10 14:21:35 -080026046 @brief Disable Active mode offload in Host
26047
26048 @param void
26049 @see
26050 @return void
26051*/
26052void
26053WDI_disableCapablityFeature(wpt_uint8 feature_index)
26054{
26055 supportEnabledFeatures[feature_index] = 0;
26056 return;
26057}
26058
26059/**
Jeff Johnson295189b2012-06-20 16:38:30 -070026060 @brief Process Host-FW Capability Exchange Request function
26061
26062 @param pWDICtx: pointer to the WLAN DAL context
26063 pEventData: pointer to the event information structure
26064
26065 @see
26066 @return Result of the function call
26067*/
26068WDI_Status
26069WDI_ProcessFeatureCapsExchangeReq
26070(
26071 WDI_ControlBlockType* pWDICtx,
26072 WDI_EventInfoType* pEventData
26073)
26074{
26075 wpt_uint8* pSendBuffer = NULL;
26076 wpt_uint16 usDataOffset = 0;
26077 wpt_uint16 usSendSize = 0;
26078 wpt_uint16 usLen = 0;
26079
26080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26081
26082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026083 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026084
26085 /*-------------------------------------------------------------------------
26086 Sanity check
26087 -------------------------------------------------------------------------*/
26088 /* Call back function is NULL since not required for cap exchange req */
26089 if (( NULL == pEventData ) ||
26090 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
26091 {
26092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026094 WDI_ASSERT(0);
26095 return WDI_STATUS_E_FAILURE;
26096 }
26097
26098 /*-----------------------------------------------------------------------
26099 Get message buffer
26100 -----------------------------------------------------------------------*/
26101 usLen = sizeof(tWlanFeatCaps);
26102
26103 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
26104 WDI_FEATURE_CAPS_EXCHANGE_REQ,
26105 usLen,
26106 &pSendBuffer, &usDataOffset, &usSendSize))||
26107 ( usSendSize < (usDataOffset + usLen )))
26108 {
26109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
26110 "Unable to get send buffer in feat caps exchange req %x %x",
26111 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
26112 WDI_ASSERT(0);
26113 return WDI_STATUS_E_FAILURE;
26114 }
26115
26116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026117 "Host Caps - %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026118 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
26119 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
26120 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
26121 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
26122 );
26123
26124 /* Copy host caps after the offset in the send buffer */
26125 wpalMemoryCopy( pSendBuffer+usDataOffset,
26126 (tWlanFeatCaps *)pEventData->pEventData,
26127 usLen);
26128
26129 /*-------------------------------------------------------------------------
26130 Send Start Request to HAL
26131 -------------------------------------------------------------------------*/
26132 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26133 (WDI_StartRspCb)pEventData->pCBfnc,
26134 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
26135
26136}/*WDI_ProcessFeatureCapsExchangeReq*/
26137
26138/**
26139 @brief Process Host-FW Capability Exchange Response function
26140
26141 @param pWDICtx: pointer to the WLAN DAL context
26142 pEventData: pointer to the event information structure
26143
26144 @see
26145 @return Result of the function call
26146*/
26147WDI_Status
26148WDI_ProcessFeatureCapsExchangeRsp
26149(
26150 WDI_ControlBlockType* pWDICtx,
26151 WDI_EventInfoType* pEventData
26152)
26153{
26154 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
26155 wpt_int32 fCapsStructSize;
26156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26157
26158 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026159 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026160
26161 /*-------------------------------------------------------------------------
26162 Sanity check
26163 -------------------------------------------------------------------------*/
26164 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26165 ( NULL == pEventData->pEventData ))
26166 {
26167 /* It will go here when riva is old (doesn't understand this msg) and host is new */
26168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026170 WDI_ASSERT(0);
26171 return WDI_STATUS_E_FAILURE;
26172 }
26173
26174 /* Allocate memory separately for global variable carrying FW caps */
26175 fCapsStructSize = sizeof(tWlanFeatCaps);
26176 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
26177 if ( NULL == gpFwWlanFeatCaps )
26178 {
26179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26180 "Cannot allocate memory for host capability info\n");
26181 WDI_ASSERT(0);
26182 return WDI_STATUS_MEM_FAILURE;
26183 }
26184
26185 /*-------------------------------------------------------------------------
26186 Unpack HAL Response Message - the header was already extracted by the
26187 main Response Handling procedure
26188 -------------------------------------------------------------------------*/
26189 /*-------------------------------------------------------------------------
26190 Extract response and send it to UMAC
26191 -------------------------------------------------------------------------*/
26192
26193 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
26194 fCapsStructSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070026195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26196 "FW caps %x %x %x %x\n",
Jeff Johnson295189b2012-06-20 16:38:30 -070026197 gpFwWlanFeatCaps->featCaps[0],
26198 gpFwWlanFeatCaps->featCaps[1],
26199 gpFwWlanFeatCaps->featCaps[2],
26200 gpFwWlanFeatCaps->featCaps[3]
26201 );
Jeff Johnson295189b2012-06-20 16:38:30 -070026202 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
26203
26204 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
26205 if (wdiFeatureCapsExchangeCb != NULL)
26206 wdiFeatureCapsExchangeCb(NULL, NULL);
26207
26208 return WDI_STATUS_SUCCESS;
26209}
26210
Mohit Khanna4a70d262012-09-11 16:30:12 -070026211#ifdef WLAN_FEATURE_11AC
26212WDI_Status
26213WDI_ProcessUpdateVHTOpModeRsp
26214(
26215 WDI_ControlBlockType* pWDICtx,
26216 WDI_EventInfoType* pEventData
26217)
26218{
26219 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26220 WDI_Status wdiStatus;
26221 eHalStatus halStatus;
26222
26223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26224
26225 /*-------------------------------------------------------------------------
26226 Sanity check
26227 -------------------------------------------------------------------------*/
26228 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26229 ( NULL == pEventData->pEventData))
26230 {
26231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026232 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026233 WDI_ASSERT(0);
26234 return WDI_STATUS_E_FAILURE;
26235 }
26236 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
26237
26238 /*-------------------------------------------------------------------------
26239 Extract response and send it to UMAC
26240 -------------------------------------------------------------------------*/
26241 halStatus = *((eHalStatus*)pEventData->pEventData);
26242 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26243
26244 /*Notify UMAC*/
26245 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
26246
26247 return WDI_STATUS_SUCCESS;
26248}
26249#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026250/**
26251 @brief WDI_getHostWlanFeatCaps
26252 WDI API that returns whether the feature passed to it as enum value in
26253 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
26254 variable storing host capability bitmap to find this. This can be used by
26255 other moduels to decide certain things like call different APIs based on
26256 whether a particular feature is supported.
26257
26258 @param
26259
26260 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
26261
26262 @see
26263 @return
26264 0 - if the feature is NOT supported in host
26265 any non-zero value - if the feature is SUPPORTED in host.
26266*/
26267wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
26268{
26269 wpt_uint8 featSupported = 0;
26270 if (gpHostWlanFeatCaps != NULL)
26271 {
26272 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
26273 }
26274 else
26275 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026277 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026278 }
26279 return featSupported;
26280}
26281
26282/**
26283 @brief WDI_getFwWlanFeatCaps
26284 WDI API that returns whether the feature passed to it as enum value in
26285 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
26286 variable storing host capability bitmap to find this. This can be used by
26287 other moduels to decide certain things like call different APIs based on
26288 whether a particular feature is supported.
26289
26290 @param
26291
26292 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
26293 in wlan_hal_msg.h.
26294
26295 @see
26296 @return
26297 0 - if the feature is NOT supported in FW
26298 any non-zero value - if the feature is SUPPORTED in FW.
26299*/
26300wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
26301{
26302 wpt_uint8 featSupported = 0;
26303 if (gpFwWlanFeatCaps != NULL)
26304 {
26305 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
26306 }
26307 else
26308 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070026310 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070026311 }
26312 return featSupported;
26313}
Mohit Khanna4a70d262012-09-11 16:30:12 -070026314
26315#ifdef WLAN_FEATURE_11AC
26316WDI_Status
26317WDI_ProcessUpdateVHTOpModeReq
26318(
26319 WDI_ControlBlockType* pWDICtx,
26320 WDI_EventInfoType* pEventData
26321)
26322{
26323 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
26324 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
26325 wpt_uint8* pSendBuffer = NULL;
26326 wpt_uint16 usDataOffset = 0;
26327 wpt_uint16 usSendSize = 0;
26328
26329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26330
26331 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026332 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026333
26334 /*-------------------------------------------------------------------------
26335 Sanity check
26336 -------------------------------------------------------------------------*/
26337 if (( NULL == pEventData ) ||
26338 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
26339 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
26340 {
26341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026342 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070026343 WDI_ASSERT(0);
26344 return WDI_STATUS_E_FAILURE;
26345 }
26346
26347 /*-----------------------------------------------------------------------
26348 Get message buffer
26349 -----------------------------------------------------------------------*/
26350 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
26351 sizeof(WDI_UpdateVHTOpMode),
26352 &pSendBuffer, &usDataOffset, &usSendSize))||
26353 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
26354 {
26355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26356 "Unable to get send buffer in update vht opMode req");
26357 WDI_ASSERT(0);
26358 return WDI_STATUS_E_FAILURE;
26359 }
26360
26361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26362 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d\n", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
26363
26364 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
26365 sizeof(WDI_UpdateVHTOpMode));
26366
26367 /*-------------------------------------------------------------------------
26368 Send Start Request to HAL
26369 -------------------------------------------------------------------------*/
26370 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26371 wdiVHTOpModeCb,
26372 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
26373
26374}
26375
26376WDI_Status
26377WDI_UpdateVHTOpModeReq
26378(
26379 WDI_UpdateVHTOpMode *pData,
26380 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
26381 void* pUserData
26382)
26383{
26384 WDI_EventInfoType wdiEventData;
26385
26386 /*------------------------------------------------------------------------
26387 Sanity Check
26388 ------------------------------------------------------------------------*/
26389 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26390 {
26391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26392 "WDI API call before module is initialized - Fail request");
26393
26394 return WDI_STATUS_E_NOT_ALLOWED;
26395 }
26396
26397 /*------------------------------------------------------------------------
26398 Fill in Event data and post to the Main FSM
26399 ------------------------------------------------------------------------*/
26400 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
26401 wdiEventData.pEventData = pData;
26402 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
26403 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
26404 wdiEventData.pUserData = pUserData;
26405
26406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26407 "pData->opMode=%d, pData->staId=%d\n", pData->opMode, pData->staId);
26408
26409 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26410
26411}
26412#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026413
26414/**
26415 @brief WDI_TransportChannelDebug -
26416 Display DXE Channel debugging information
26417 User may request to display DXE channel snapshot
26418 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070026419
Jeff Johnsonbf9616f2012-12-10 13:34:59 -080026420 @param displaySnapshot : Display DXE snapshot option
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026421 @param enableStallDetect : Enable stall detect feature
26422 This feature will take effect to data performance
26423 Not integrate till fully verification
26424 @see
26425 @return none
26426*/
26427void WDI_TransportChannelDebug
26428(
26429 wpt_boolean displaySnapshot,
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026430 wpt_boolean toggleStallDetect
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026431)
26432{
Madan Mohan Koyyalamudi24a00f92012-10-22 15:21:02 -070026433 WDTS_ChannelDebug(displaySnapshot, toggleStallDetect);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070026434 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070026435}
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026436/**
26437 @brief WDI_SsrTimerCB
26438 Callback function for SSR timer, if this is called then the graceful
26439 shutdown for Riva did not happen.
26440
26441 @param pUserData : user data to timer
26442
26443 @see
26444 @return none
26445*/
26446void
26447WDI_SsrTimerCB
26448(
26449 void *pUserData
26450)
26451{
26452 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
26453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26454
26455 if (NULL == pWDICtx )
26456 {
26457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026458 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070026459 WDI_ASSERT(0);
26460 return;
26461 }
26462 wpalRivaSubystemRestart();
26463
26464 return;
26465
26466}/*WDI_SsrTimerCB*/